@maestro_io/maestro-web-sdk 2.0.1 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/MaestroEventDelegate.d.ts +4 -0
  2. package/dist/components/atoms/BaseButton/BaseButton.d.ts +2 -4
  3. package/dist/components/atoms/Image/index.d.ts +5 -1
  4. package/dist/components/atoms/Rive/index.d.ts +89 -0
  5. package/dist/components/atoms/SvgIcon/BetGeneralIcon.d.ts +4 -0
  6. package/dist/components/atoms/SvgIcon/BetsWarningIcon.d.ts +7 -0
  7. package/dist/components/atoms/SvgIcon/CheckmarkIcon.d.ts +4 -0
  8. package/dist/components/atoms/SvgIcon/CollapseIcon.d.ts +4 -0
  9. package/dist/components/atoms/SvgIcon/ExpandIcon.d.ts +4 -0
  10. package/dist/components/atoms/SvgIcon/FlameIcon.d.ts +7 -0
  11. package/dist/components/atoms/SvgIcon/Icon.d.ts +10 -0
  12. package/dist/components/atoms/SvgIcon/MobilePhoneIcon.d.ts +7 -0
  13. package/dist/components/atoms/SvgIcon/TimesIcon.d.ts +4 -0
  14. package/dist/components/core/OverlayContainer.d.ts +3 -0
  15. package/dist/components/core/PanelManager/PanelManager.d.ts +1 -0
  16. package/dist/components/core/ScrollableContainer/FocusableItem.d.ts +6 -0
  17. package/dist/components/core/ScrollableContainer/ScrollableContainer.d.ts +75 -0
  18. package/dist/components/core/ScrollableContainer/index.d.ts +2 -0
  19. package/dist/components/molecules/ActionButton/ActionButton.d.ts +5 -8
  20. package/dist/components/molecules/Overlay/Overlay.d.ts +35 -0
  21. package/dist/components/molecules/Overlay/index.d.ts +2 -0
  22. package/dist/components/molecules/PanelNavButton/PanelNavButton.d.ts +40 -91
  23. package/dist/components/molecules/SegmentButton/SegmentButton.d.ts +6 -7
  24. package/dist/components/organisms/PanelNavigation/PanelNavigation.d.ts +7 -0
  25. package/dist/components/organisms/SegmentController/SegmentController.d.ts +19 -5
  26. package/dist/components/organisms/SegmentController/index.d.ts +2 -1
  27. package/dist/external/AxiosNetworkClient.d.ts +8 -3
  28. package/dist/external/LocalStorageCacheManager.d.ts +63 -8
  29. package/dist/external/mocks/MockExternalNetworkClient.d.ts +90 -0
  30. package/dist/external/ports/cacheManager.d.ts +3 -1
  31. package/dist/external/ports/networkClient.d.ts +1 -1
  32. package/dist/external/spatial-navigation/spatialNavigation.d.ts +13 -22
  33. package/dist/external/spatial-navigation/utils.d.ts +5 -0
  34. package/dist/external/spatial-navigation/withFocusable.d.ts +12 -17
  35. package/dist/index.d.ts +22 -11
  36. package/dist/interfaces/IMaestroEvent.d.ts +9 -0
  37. package/dist/interfaces/IMaestroEventDelegate.d.ts +17 -0
  38. package/dist/interfaces/IMaestroManager.d.ts +33 -20
  39. package/dist/maestro-web-sdk.umd.js +10 -1
  40. package/dist/maestro-web-sdk.umd.js.map +1 -1
  41. package/dist/models/IWinningBet.d.ts +7 -0
  42. package/dist/modules/bets/interfaces/IBets.d.ts +190 -0
  43. package/dist/modules/bets/mocks.d.ts +2 -0
  44. package/dist/modules/bets/view/BetsView.d.ts +23 -0
  45. package/dist/modules/bets/view/HotProps/HotPropsView.d.ts +53 -0
  46. package/dist/modules/bets/view/SixPack/SixPackView.d.ts +20 -0
  47. package/dist/modules/bets/view/TabLoadFailureView.d.ts +46 -0
  48. package/dist/modules/bets/view/UserBets/BetResult/BetResult.d.ts +6 -0
  49. package/dist/modules/bets/view/UserBets/BetsCard/BetsCard.d.ts +53 -0
  50. package/dist/modules/bets/view/UserBets/BetsCard/BetsCardEvent.d.ts +24 -0
  51. package/dist/modules/bets/view/UserBets/BetsCard/BetsCardFooter.d.ts +7 -0
  52. package/dist/modules/bets/view/UserBets/Boost/Boost.d.ts +7 -0
  53. package/dist/modules/bets/view/UserBets/OutcomeBadge/OutcomeBadge.d.ts +7 -0
  54. package/dist/modules/bets/view/UserBets/Parlay/Parlay.d.ts +8 -0
  55. package/dist/modules/bets/view/UserBets/Straight/Straight.d.ts +7 -0
  56. package/dist/modules/bets/view/UserBets/Teaser/Teaser.d.ts +7 -0
  57. package/dist/modules/bets/view/UserBets/UserBetsView.d.ts +26 -0
  58. package/dist/modules/bets/view/components/Bet/Bet.d.ts +62 -0
  59. package/dist/modules/bets/view/components/BetPill/BetPill.d.ts +6 -0
  60. package/dist/modules/bets/view/components/BetsCard/BetsCard.d.ts +10 -0
  61. package/dist/modules/bets/view/components/BetsCard/BetsCardHeader.d.ts +16 -0
  62. package/dist/modules/bets/view/components/GamblingDisclaimer/GamblingDisclaimer.d.ts +8 -0
  63. package/dist/modules/bets/view/components/LocationWarning/LocationWarning.d.ts +10 -0
  64. package/dist/modules/bets/view/components/PromoCodeBanner/PromoCodeBanner.d.ts +22 -0
  65. package/dist/modules/bets/view/components/PromoCodeBanner/index.d.ts +2 -0
  66. package/dist/modules/bets/view-model/BetsViewModel.d.ts +179 -0
  67. package/dist/modules/key-plays/view/KeyPlayCardView.d.ts +28 -102
  68. package/dist/modules/key-plays/view/KeyPlaysView.d.ts +1 -4
  69. package/dist/services/BetsService.d.ts +61 -0
  70. package/dist/services/NetworkManager/NetworkManager.d.ts +131 -0
  71. package/dist/services/NetworkManager/errors.d.ts +17 -0
  72. package/dist/types/OverlayTypes.d.ts +43 -0
  73. package/dist/view-models/MaestroEventViewModel.d.ts +5 -1
  74. package/dist/view-models/OverlayViewModel.d.ts +33 -0
  75. package/dist/view-models/index.d.ts +2 -0
  76. package/package.json +9 -18
  77. package/dist/components/molecules/ScrollableGradient/ScrollableGradient.d.ts +0 -11
  78. package/dist/components/molecules/ScrollableGradient/index.d.ts +0 -2
  79. package/dist/helpers/withRemoteControl.d.ts +0 -47
  80. package/dist/services/NetworkManager.d.ts +0 -13
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://MaestroWebSDK/webpack/universalModuleDefinition","webpack://MaestroWebSDK/webpack/bootstrap","webpack://MaestroWebSDK/external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"preact/compat\",\"amd\":\"react\"}","webpack://MaestroWebSDK/./src/helpers/Observable.ts","webpack://MaestroWebSDK/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://MaestroWebSDK/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://MaestroWebSDK/./node_modules/css-loader/dist/runtime/api.js","webpack://MaestroWebSDK/./src/external/spatial-navigation/index.ts","webpack://MaestroWebSDK/./node_modules/prop-types/index.js","webpack://MaestroWebSDK/./src/external/spatial-navigation/measureLayout.ts","webpack://MaestroWebSDK/./src/external/spatial-navigation/visualDebugger.ts","webpack://MaestroWebSDK/./src/external/spatial-navigation/spatialNavigation.ts","webpack://MaestroWebSDK/./src/external/spatial-navigation/utils.ts","webpack://MaestroWebSDK/./src/modules/key-plays/view-model/KeyPlaysViewModel.ts","webpack://MaestroWebSDK/./src/view-models/MaestroEventViewModel.ts","webpack://MaestroWebSDK/./src/view-models/ViewModel.ts","webpack://MaestroWebSDK/./src/view-models/index.ts","webpack://MaestroWebSDK/./src/external/ReactRenderer.tsx","webpack://MaestroWebSDK/./src/index.tsx","webpack://MaestroWebSDK/external {\"root\":\"ReactDOM\",\"commonjs2\":\"react-dom\",\"commonjs\":\"preact/compat\",\"amd\":\"react-dom\"}","webpack://MaestroWebSDK/./src/models/IPanel.ts","webpack://MaestroWebSDK/./src/view-models/PanelManagerViewModel.ts","webpack://MaestroWebSDK/./src/components/core/App/App.styles.css","webpack://MaestroWebSDK/./src/components/core/PanelManager/PanelManager.styles.css","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlaysView.styles.css","webpack://MaestroWebSDK/./src/components/molecules/ScrollableGradient/ScrollableGradient.styles.css","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlayCardView.styles.css","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlayErrorStateView.styles.css","webpack://MaestroWebSDK/./src/components/molecules/ActionButton/ActionButton.styles.css","webpack://MaestroWebSDK/./src/components/organisms/PanelNavigation/PanelNavigation.styles.css","webpack://MaestroWebSDK/./src/components/molecules/PanelNavButton/PanelNavButton.styles.css","webpack://MaestroWebSDK/./src/external/spatial-navigation/withFocusable.ts","webpack://MaestroWebSDK/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://MaestroWebSDK/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://MaestroWebSDK/./src/components/core/PanelManager/PanelManager.styles.css?19b3","webpack://MaestroWebSDK/./src/components/atoms/BaseButton/BaseButton.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/KeyPlaysIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/PlayIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/BetsIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/StatsIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/FantasyIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/WarningIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/Icon.tsx","webpack://MaestroWebSDK/./src/components/molecules/PanelNavButton/PanelNavButton.styles.css?a32d","webpack://MaestroWebSDK/./src/helpers/withRemoteControl.tsx","webpack://MaestroWebSDK/./src/components/molecules/PanelNavButton/PanelNavButton.tsx","webpack://MaestroWebSDK/./src/components/molecules/PanelNavButton/index.ts","webpack://MaestroWebSDK/./src/components/organisms/PanelNavigation/PanelNavigation.styles.css?c470","webpack://MaestroWebSDK/./src/helpers/deliver-focus.ts","webpack://MaestroWebSDK/./src/components/organisms/PanelNavigation/PanelNavigation.tsx","webpack://MaestroWebSDK/./src/components/organisms/PanelNavigation/index.ts","webpack://MaestroWebSDK/./src/components/atoms/Image/index.tsx","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlayCardView.styles.css?8b72","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/index.ts","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlayCardScoreTagView.tsx","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlayCardView.tsx","webpack://MaestroWebSDK/./src/modules/key-plays/constants.ts","webpack://MaestroWebSDK/./src/components/molecules/ScrollableGradient/ScrollableGradient.styles.css?21bd","webpack://MaestroWebSDK/./src/components/molecules/ScrollableGradient/ScrollableGradient.tsx","webpack://MaestroWebSDK/./src/components/molecules/ScrollableGradient/index.ts","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlaysView.styles.css?8543","webpack://MaestroWebSDK/./src/components/atoms/BaseButton/index.ts","webpack://MaestroWebSDK/./src/components/molecules/ActionButton/ActionButton.styles.css?1741","webpack://MaestroWebSDK/./src/components/molecules/ActionButton/ActionButton.tsx","webpack://MaestroWebSDK/./src/components/molecules/ActionButton/index.ts","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlayErrorStateView.styles.css?72fb","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlayErrorStateView.tsx","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlaysView.tsx","webpack://MaestroWebSDK/./src/components/core/PanelManager/PanelManager.tsx","webpack://MaestroWebSDK/./src/components/core/PanelManager/index.tsx","webpack://MaestroWebSDK/./src/models/ITheme.ts","webpack://MaestroWebSDK/./src/services/ThemeManager/constants.ts","webpack://MaestroWebSDK/./src/components/core/App/App.styles.css?e712","webpack://MaestroWebSDK/./src/components/core/App/App.tsx","webpack://MaestroWebSDK/./src/components/core/App/index.ts"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE__0__","__WEBPACK_EXTERNAL_MODULE__9__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Observable","constructor","initialValue","_defineProperty","_value","newValue","notify","subscribe","listener","listeners","push","filter","forEach","memo","isOldIE","Boolean","window","document","all","atob","getTarget","target","styleTarget","querySelector","HTMLIFrameElement","contentDocument","head","e","stylesInDom","getIndexByIdentifier","identifier","result","length","modulesToDom","list","options","idCountMap","identifiers","item","id","base","count","concat","index","obj","css","media","sourceMap","references","updater","addStyle","insertStyleElement","style","createElement","attributes","nonce","keys","setAttribute","insert","Error","appendChild","textStore","replaceText","replacement","join","applyToSingletonTag","remove","styleSheet","cssText","cssNode","createTextNode","childNodes","removeChild","insertBefore","applyToTag","removeAttribute","btoa","unescape","encodeURIComponent","JSON","stringify","firstChild","singleton","singletonCounter","update","styleIndex","parentNode","removeStyleElement","newObj","lastIdentifiers","newList","toString","newLastIdentifiers","_i","_index","splice","_slicedToArray","arr","Array","isArray","_arrayWithHoles","iterator","_s","_e","_arr","_n","_d","next","done","err","_iterableToArrayLimit","minLen","_arrayLikeToArray","slice","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","len","arr2","_item","content","cssMapping","base64","data","sourceMapping","sourceURLs","sources","map","source","sourceRoot","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","destroy","pause","resume","setFocus","init","setKeyMap","SpatialNavigation","getRect","node","offsetParent","height","offsetHeight","width","offsetWidth","left","offsetLeft","top","offsetTop","nodeType","scrollLeft","scrollTop","measureLayout","callback","relativeNode","relativeRect","hasDOM","WIDTH","innerWidth","HEIGHT","innerHeight","VisualDebugger","debugCtx","createCanvas","layoutsCtx","zIndex","canvas","ctx","getContext","body","clear","clearRect","clearLayouts","drawLayout","layout","focusKey","parentFocusKey","strokeStyle","strokeRect","font","fillStyle","fillText","drawPoint","x","y","color","size","lineWidth","ROOT_FOCUS_KEY","DEFAULT_KEY_MAP","DEBUG_FN_COLORS","THROTTLE_OPTIONS","leading","trailing","throttle","func","wait","timeout","previous","args","now","Date","remaining","clearTimeout","apply","setTimeout","sortBy","array","iteratee","sort","a","b","aValue","bValue","first","findKey","predicate","find","difference","values","includes","isVertical","isIncremental","isSibling","itemX","itemY","itemWidth","itemHeight","coordinate","itemSize","direction","refCorners","siblingCorners","isVerticalDirection","refA","refB","siblingA","siblingB","refCoordinateA","refCoordinateB","siblingCoordinateA","siblingCoordinateB","thresholdDistance","Math","max","min","abs","distancesToCompare","sortSiblingsByPriority","siblings","currentLayout","_focusKey","getRefCorners","aCorners","bCorners","aIsAdjacentSlice","isAdjacentSlice","bIsAdjacentSlice","aPrimaryAxisFunction","getPrimaryAxisDistance","getSecondaryAxisDistance","bPrimaryAxisFunction","aSecondaryAxisFunction","bSecondaryAxisFunction","aPrimaryAxisDistance","bPrimaryAxisDistance","focusableComponents","parentsHavingFocusedChild","enabled","nativeMode","throttleKeypresses","pressedKeys","paused","keyDownEventListener","keyUpEventListener","keyMap","debug","visualDebugger","logIndex","onKeyEvent","updateAllLayouts","navigateByDirection","visualDebug","Number","isInteger","bindEventHandlers","startDrawLayouts","draw","requestAnimationFrame","_this$visualDebugger","entries","component","_this$visualDebugger2","unbindEventHandlers","getEventType","keyCode","getKeyMap","code","addEventListener","keyDownHandler","event","eventType","preventDefault","stopPropagation","details","onEnterPress","_this$visualDebugger3","onArrowPress","log","_this$keyDownEventLis","_this$keyDownEventLis2","cancel","onEnterRelease","removeEventListener","_component$onEnterPre","focusable","onEnterPressHandler","_component$onEnterRel","onEnterReleaseHandler","_component$onArrowPre","onArrowPressHandler","validDirections","smartNavigate","_this$visualDebugger4","fromParentFocusKey","layoutUpdated","currentComponent","undefined","updateLayout","isIncrementalDirection","currentCutoffCoordinate","getCutoffCoordinate","siblingCutoffCoordinate","sortedSiblings","nextComponent","saveLastFocusedChildKey","lastFocusedChildKey","functionName","debugString","rest","console","getNextFocusKey","targetFocusKey","targetComponent","trackChildren","children","preferredChildFocusKey","forgetLastFocusedChild","isParticipatingFocusableComponent","childKey","childrenClosestToOrigin","getChildClosestToOrigin","addFocusable","onBecameFocusedHandler","onBecameBlurredHandler","onUpdateFocus","onUpdateHasFocusedChild","autoRestoreFocus","blockNavigationOut","removeFocusable","componentToRemove","Reflect","deleteProperty","parentComponent","isFocused","getNodeLayoutByFocusKey","setCurrentFocusedKey","newFocusKey","isFocusableComponent","_oldComponent$onUpdat","_oldComponent$onBecam","oldComponent","_newComponent$onUpdat","_newComponent$onBecam","newComponent","updateParentsHasFocusedChild","parents","currentParentFocusKey","parentsToRemoveFlag","parentsToAddFlag","_parentComponent$onUp","onIntermediateNodeBecameBlurred","_parentComponent$onUp2","onIntermediateNodeBecameFocused","updateParentsLastFocusedChild","_this$focusableCompon","_this$focusableCompon2","_this$focusableCompon3","_this$focusableCompon4","lastFocusedKey","updateFocusable","isNativeMode","getFocusableComponents","getFocusableComponentsByParentFocusKey","KeyPlaysViewModel","isCurrentlyPlaying","currentlyPlayingClipIndex","items","parseNetworkResponse","cleanErrors","errorState","allItems","atIndex","SDK","getMaestroEventViewModel","delegate","playClip","response","teams","entities","team","athletes","athlete","homeTeam","homeAway","awayTeam","section","sections","keyPlay","playTeam","teamImageUrl","logoRef","playerImageUrl","headshot","thumbnailImageUrl","thumbnailType","thumbnail","homeScore","awayScore","homeTeamScore","scoringPlay","parseInt","awayTeamScore","keyPlayData","random","substring","description","homeTeamName","shortName","awayTeamName","clipID","title","sectionTitle","existingSection","reduce","acc","forKeyPlayAtIndex","handleKeyPlayLoadFailure","newFailedClips","failedClips","loadFailureStatus","clearLoadFailureStatus","mevm","userRequestedNewKeyPlaysData","MaestroEventViewModel","_isLoading","_error","setLoading","loading","setError","error","eventId","super","_eventId","deinit","updateKeyPlaysData","keyPlaysViewModel","setKeyPlays","startFocusManagement","Promise","resolve","didStartPlayingClip","lastPlayedClipIndex","currentClipPlaybackProgress","didStopPlayingClip","didFailToPlayClip","didUpdatePlaybackProgressOfClip","to","didShowPanel","isShowingPanel","didShowOverlay","didHideOverlay","currentEventDoesNotSupportKeyPlays","getCurrentEventID","getCurrentlyPlayingClipIndex","getLastPlayedClipIndex","getCurrentClipPlaybackProgress","getKeyPlaysCount","_title","_isLive","_isShowingPanel","MaestroViewModels","eventViewModel","panelManagerViewModel","PanelManagerViewModel","ReactRenderer","Map","viewModels","fromEventId","renderer","getRenderer","App","default","PanelManager","render","React","unmount","renderersMap","delete","has","el","getElementById","ReactDOM","unmountComponentAtNode","set","AUTHORIZED_CLIENTS","MaestroWebSDK","eventID","isAuthorizedClient","maestroEventViewModel","userDidStopWatchingEvent","authenticateUser","_","__","deauthenticateUser","instance","configure","configParams","siteID","setSiteID","jwt","setJwt","info","getSiteID","getJwt","setUserID","userID","getUserID","setViewModels","renderPanel","getInstance","MaestroPanelType","KEY_PLAYS","STATS","FANTASY","BETS","_panels","_currentPanel","_newlyFocusedPanel","getIndex","forPanelType","panels","findIndex","getPanelType","currentIndex","currentPanel","___CSS_LOADER_EXPORT___","noop","withFocusable","configForgetLastFocusedChild","configTrackChildren","configAutoRestoreFocus","configBlockNavigationOut","WrappedComponent","_WithFocusable","Component","prefix","realFocusKey","props","substr","focused","hasFocusedChild","state","setState","onBecameFocused","onBecameBlurred","getChildContext","componentDidMount","domNode","findDOMNode","componentDidUpdate","componentWillUnmount","filteredProps","omit","stealFocus","PropTypes","string","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","bool","number","symbol","any","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","locals","ButtonStyle","borderRadius","display","justifyContent","alignItems","cursor","border","BaseButton","_extends","KeyPlaysIcon","viewBox","fill","xmlns","PlayIcon","fillRule","clipRule","BetsIcon","StatsIcon","clipPath","FantasyIcon","WarningIcon","iconImports","keyPlays","play","bets","stats","fantasy","warning","Skeleton","Icon","iconName","IconComponent","withRemoteControl","onBackPressed","onLeftPressed","remoteControlActive","active","prevProps","handleKeyDown","cleanup","PanelNavButton","buttonRef","className","data-focused","ref","deliverFocus","eventVm","dataset","PanelNavigationButton","itemFocused","buttonElement","fn","handleBecameFocused","onEnter","handleBecameBlurred","handleLeftPressed","setButtonRef","PanelNavigation","Image","alt","ScoreCard","KeyPlayCardView","failedClip","src","crossOrigin","vm","failedClipListener","setRef","isPlaying","playbackProgress","isScoring","renderImage","WithRemoteControlKeyPlayCard","KeyPlayCard","ScrollableGradient","scrolled","ActionButton","UnpopulatedEvent","UnsupportedEvent","opacity","transform","SimpleTabLoadFailure","borderColor","TabLoadFailure","KeyPlayErrorStateView","onRetry","KeyPlays","_this$vm$currentClipP","_this$vm$currentlyPla","async","playKeyPlay","container","containerRect","getBoundingClientRect","nodeRect","indexes","refsMap","hasOutside","rect","bottom","rawSections","playbackIndex","playbackProgressUnsub","playbackIndexUnsub","itemsUnsub","sectionIndex","absoluteIndex","vmItem","handlePlayClip","handleItemFocus","KeyPlaysWithErrorState","errorStateUnsub","handleRetry","PANELS_MAP","KeyPlaysView","activePanel","unsubscribe","currentPanelObservable","PANEL_ITEMS","DARK_THEME","_id","button","textCapitalization","colors","accentPrimary","accentSecondary","accentTertiary","surface1","surface2","surface3","surface4","surface5","surface6","highlightPrimary","highlightSecondary","highlightTertiary","alertConfirmation","alertWarning","alertError","text100","text200","text300","text400","text500","creator","type","owner","typography","headline","documentElement","setProperty","removeProperty"],"mappings":"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","file":"maestro-web-sdk.umd.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"MaestroWebSDK\", [\"react\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MaestroWebSDK\"] = factory(require(\"preact/compat\"), require(\"preact/compat\"));\n\telse\n\t\troot[\"MaestroWebSDK\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__0__, __WEBPACK_EXTERNAL_MODULE__9__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\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\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","/**\n * Basic observable implementation for view models\n */\nexport class Observable<T> {\n private listeners: ((value: T) => void)[] = [];\n private _value: T;\n\n constructor(initialValue: T) {\n this._value = initialValue;\n }\n\n get value(): T {\n return this._value;\n }\n\n set value(newValue: T) {\n this._value = newValue;\n this.notify();\n }\n\n subscribe(listener: (value: T) => void): () => void {\n this.listeners.push(listener);\n\n // Return unsubscribe function\n return () => {\n this.listeners = this.listeners.filter((l) => l !== listener);\n };\n }\n\n private notify(): void {\n this.listeners.forEach((listener) => listener(this._value));\n }\n}\n","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","import withFocusable, { WithFocusableProps } from './withFocusable';\nimport SpatialNavigation, { InitOptions, KeyMap } from './spatialNavigation';\n\nconst { destroy, pause, resume, setFocus, init, setKeyMap } = SpatialNavigation;\n\nexport { withFocusable, init, setKeyMap, destroy, pause, resume, setFocus };\nexport type { InitOptions, KeyMap, WithFocusableProps };\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","const ELEMENT_NODE = 1;\n\nconst getRect = (node: any) => {\n let { offsetParent } = node;\n const height = node.offsetHeight;\n const width = node.offsetWidth;\n let left = node.offsetLeft;\n let top = node.offsetTop;\n\n while (offsetParent && offsetParent.nodeType === ELEMENT_NODE) {\n left += offsetParent.offsetLeft - offsetParent.scrollLeft;\n top += offsetParent.offsetTop - offsetParent.scrollTop;\n ({ offsetParent } = offsetParent);\n }\n\n return {\n height,\n left,\n top,\n width,\n };\n};\n\nconst measureLayout = (\n node: any,\n callback: (\n x: number,\n y: number,\n width: number,\n height: number,\n left: number,\n top: number\n ) => void\n) => {\n const relativeNode = node && node.parentNode;\n\n if (relativeNode) {\n const relativeRect = getRect(relativeNode);\n const { height, left, top, width } = getRect(node);\n const x = left - relativeRect.left;\n const y = top - relativeRect.top;\n\n callback(x, y, width, height, left, top);\n }\n};\n\nexport default measureLayout;\n","// We'll make VisualDebugger no-op for any environments lacking a DOM (e.g. SSR and React Native non-web platforms).\nconst hasDOM = typeof window !== 'undefined' && window.document;\n\nconst WIDTH = hasDOM ? window.innerWidth : 0;\nconst HEIGHT = hasDOM ? window.innerHeight : 0;\n\ninterface Layout {\n left: number;\n top: number;\n width: number;\n height: number;\n}\n\nclass VisualDebugger {\n private debugCtx: CanvasRenderingContext2D | null;\n private layoutsCtx: CanvasRenderingContext2D | null;\n\n constructor() {\n if (hasDOM) {\n this.debugCtx = VisualDebugger.createCanvas('sn-debug', 1010);\n this.layoutsCtx = VisualDebugger.createCanvas('sn-layouts', 1000);\n } else {\n this.debugCtx = null;\n this.layoutsCtx = null;\n }\n }\n\n static createCanvas(id: string, zIndex: number): CanvasRenderingContext2D {\n const canvas = (document.querySelector(`#${id}`) ||\n document.createElement('canvas')) as HTMLCanvasElement;\n\n canvas.setAttribute('id', id);\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error('Could not get 2d context from canvas');\n }\n\n canvas.style.cssText = `position: fixed; top: 0; left: 0; z-index: ${zIndex}`;\n\n document.body.appendChild(canvas);\n\n canvas.width = WIDTH;\n canvas.height = HEIGHT;\n\n return ctx;\n }\n\n clear(): void {\n if (!hasDOM || !this.debugCtx) {\n return;\n }\n this.debugCtx.clearRect(0, 0, WIDTH, HEIGHT);\n }\n\n clearLayouts(): void {\n if (!hasDOM || !this.layoutsCtx) {\n return;\n }\n this.layoutsCtx.clearRect(0, 0, WIDTH, HEIGHT);\n }\n\n drawLayout(layout: Layout, focusKey: string, parentFocusKey: string): void {\n if (!hasDOM || !this.layoutsCtx) {\n return;\n }\n this.layoutsCtx.strokeStyle = 'green';\n this.layoutsCtx.strokeRect(\n layout.left,\n layout.top,\n layout.width,\n layout.height\n );\n this.layoutsCtx.font = '8px monospace';\n this.layoutsCtx.fillStyle = 'red';\n this.layoutsCtx.fillText(focusKey, layout.left, layout.top + 10);\n this.layoutsCtx.fillText(parentFocusKey, layout.left, layout.top + 25);\n this.layoutsCtx.fillText(\n `left: ${layout.left}`,\n layout.left,\n layout.top + 40\n );\n this.layoutsCtx.fillText(\n `top: ${layout.top}`,\n layout.left,\n layout.top + 55\n );\n }\n\n drawPoint(\n x: number,\n y: number,\n color: string = 'blue',\n size: number = 10\n ): void {\n if (!hasDOM || !this.debugCtx) {\n return;\n }\n this.debugCtx.strokeStyle = color;\n this.debugCtx.lineWidth = 3;\n this.debugCtx.strokeRect(x - size / 2, y - size / 2, size, size);\n }\n}\n\nexport default VisualDebugger;\n","import measureLayout from './measureLayout';\nimport { Direction, Layout } from './utils';\nimport { DIRECTION_DOWN, KEY_ENTER } from './utils';\nimport { DIRECTION_LEFT, DIRECTION_RIGHT, DIRECTION_UP } from './utils';\nimport VisualDebugger from './visualDebugger';\n\nexport const ROOT_FOCUS_KEY = 'SN:ROOT';\n\nconst ADJACENT_SLICE_THRESHOLD = 0.2;\n\n/**\n * Adjacent slice is 5 times more important than diagonal\n */\nconst ADJACENT_SLICE_WEIGHT = 5;\nconst DIAGONAL_SLICE_WEIGHT = 1;\n\n/**\n * Main coordinate distance is 5 times more important\n */\nconst MAIN_COORDINATE_WEIGHT = 5;\n\nexport type KeyType = Direction | typeof KEY_ENTER;\n\nexport interface KeyMap {\n [key: string]: number;\n}\n\nconst DEFAULT_KEY_MAP: KeyMap = {\n [DIRECTION_LEFT]: 37,\n [DIRECTION_UP]: 38,\n [DIRECTION_RIGHT]: 39,\n [DIRECTION_DOWN]: 40,\n [KEY_ENTER]: 13,\n};\n\nconst DEBUG_FN_COLORS = ['#0FF', '#FF0', '#F0F'];\n\nconst THROTTLE_OPTIONS = {\n leading: true,\n trailing: false,\n};\n\ninterface FocusableComponent {\n focusKey: string;\n node: HTMLElement;\n parentFocusKey: string | null;\n onEnterPressHandler?: (details: {\n pressedKeys: Record<string, number>;\n }) => void;\n onEnterReleaseHandler?: () => void;\n onArrowPressHandler?: (\n direction: Direction,\n details: { pressedKeys: Record<string, number> }\n ) => boolean | void;\n onBecameFocusedHandler?: (layout: Layout, details: any) => void;\n onBecameBlurredHandler?: (layout: Layout, details: any) => void;\n onUpdateFocus?: (isFocused: boolean) => void;\n onUpdateHasFocusedChild?: (hasFocusedChild: boolean) => void;\n forgetLastFocusedChild?: boolean;\n trackChildren?: boolean;\n lastFocusedChildKey: string | null;\n preferredChildFocusKey?: string;\n focusable: boolean;\n blockNavigationOut?: boolean;\n autoRestoreFocus?: boolean;\n layout: Layout;\n layoutUpdated: boolean;\n}\n\ninterface Corner {\n x: number;\n y: number;\n}\n\ninterface RefCorners {\n a: Corner;\n b: Corner;\n}\n\nexport interface InitOptions {\n debug?: boolean;\n visualDebug?: boolean;\n nativeMode?: boolean;\n throttle?: number;\n throttleKeypresses?: boolean;\n}\n\ninterface AddFocusableOptions {\n focusKey: string;\n node: HTMLElement;\n parentFocusKey: string | null;\n onEnterPressHandler?: (details: {\n pressedKeys: Record<string, number>;\n }) => void;\n onEnterReleaseHandler?: () => void;\n onArrowPressHandler?: (\n direction: Direction,\n details: { pressedKeys: Record<string, number> }\n ) => boolean | void;\n onBecameFocusedHandler?: (layout: Layout, details: any) => void;\n onBecameBlurredHandler?: (layout: Layout, details: any) => void;\n forgetLastFocusedChild?: boolean;\n trackChildren?: boolean;\n onUpdateFocus?: (isFocused: boolean) => void;\n onUpdateHasFocusedChild?: (hasFocusedChild: boolean) => void;\n preferredChildFocusKey?: string;\n autoRestoreFocus?: boolean;\n focusable?: boolean;\n blockNavigationOut?: boolean;\n}\n\ninterface UpdateFocusableOptions {\n node?: HTMLElement;\n preferredChildFocusKey?: string;\n focusable?: boolean;\n blockNavigationOut?: boolean;\n}\n\nexport const getChildClosestToOrigin = (\n children: FocusableComponent[]\n): FocusableComponent => {\n const childrenClosestToOrigin = sortBy(\n children,\n ({ layout }) => Math.abs(layout.left) + Math.abs(layout.top)\n );\n\n return first(childrenClosestToOrigin) as FocusableComponent;\n};\n\nconst throttle = <T extends (...args: any[]) => any>(\n func: T,\n wait: number,\n options: { leading?: boolean; trailing?: boolean } = {}\n): T => {\n let timeout: number | null = null;\n let previous = 0;\n const { leading = true, trailing = true } = options;\n\n return function (this: any, ...args: Parameters<T>) {\n const now = Date.now();\n if (!previous && !leading) previous = now;\n const remaining = wait - (now - previous);\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(this, args);\n } else if (!timeout && trailing) {\n timeout = window.setTimeout(() => {\n previous = leading ? Date.now() : 0;\n timeout = null;\n func.apply(this, args);\n }, remaining);\n }\n } as T;\n};\n\nconst sortBy = <T>(array: T[], iteratee: (item: T) => number | string): T[] =>\n [...array].sort((a, b) => {\n const aValue = iteratee(a);\n const bValue = iteratee(b);\n return aValue < bValue ? -1 : aValue > bValue ? 1 : 0;\n });\n\nconst first = <T>(array: T[]): T | undefined => array[0];\n\nconst findKey = <T extends Record<string, any>>(\n object: T,\n predicate: (value: any) => boolean\n): string | undefined =>\n Object.keys(object).find((key) => predicate(object[key]));\n\nconst difference = <T>(array: T[], values: T[]): T[] =>\n array.filter((x) => !values.includes(x));\n\nconst forEach = <T>(\n array: T[],\n iteratee: (item: T, index: number) => void\n): void => array.forEach(iteratee);\n\n/* eslint-disable no-nested-ternary */\nclass SpatialNavigation {\n private focusableComponents: Record<string, FocusableComponent>;\n private focusKey: string | null;\n private parentsHavingFocusedChild: string[];\n private enabled: boolean;\n private nativeMode: boolean;\n private throttle: number;\n private throttleKeypresses: boolean;\n private pressedKeys: Record<string, number>;\n private paused: boolean;\n private keyDownEventListener: ((event: KeyboardEvent) => void) | null;\n private keyUpEventListener: ((event: KeyboardEvent) => void) | null;\n private keyMap: KeyMap;\n private debug: boolean;\n private visualDebugger: VisualDebugger | null;\n private logIndex: number;\n\n /**\n * Used to determine the coordinate that will be used to filter items that are over the \"edge\"\n */\n static getCutoffCoordinate(\n isVertical: boolean,\n isIncremental: boolean,\n isSibling: boolean,\n layout: Layout\n ): number {\n const itemX = layout.left;\n const itemY = layout.top;\n const itemWidth = layout.width;\n const itemHeight = layout.height;\n\n const coordinate = isVertical ? itemY : itemX;\n const itemSize = isVertical ? itemHeight : itemWidth;\n\n return isIncremental\n ? isSibling\n ? coordinate\n : coordinate + itemSize\n : isSibling\n ? coordinate + itemSize\n : coordinate;\n }\n\n /**\n * Returns two corners (a and b) coordinates that are used as a reference points\n * Where \"a\" is always leftmost and topmost corner, and \"b\" is rightmost bottommost corner\n */\n static getRefCorners(\n direction: Direction,\n isSibling: boolean,\n layout: Layout\n ): RefCorners {\n const itemX = layout.left;\n const itemY = layout.top;\n const itemWidth = layout.width;\n const itemHeight = layout.height;\n\n const result: RefCorners = {\n a: {\n x: 0,\n y: 0,\n },\n b: {\n x: 0,\n y: 0,\n },\n };\n\n switch (direction) {\n case DIRECTION_UP: {\n const y = isSibling ? itemY + itemHeight : itemY;\n\n result.a = {\n x: itemX,\n y,\n };\n\n result.b = {\n x: itemX + itemWidth,\n y,\n };\n\n break;\n }\n\n case DIRECTION_DOWN: {\n const y = isSibling ? itemY : itemY + itemHeight;\n\n result.a = {\n x: itemX,\n y,\n };\n\n result.b = {\n x: itemX + itemWidth,\n y,\n };\n\n break;\n }\n\n case DIRECTION_LEFT: {\n const x = isSibling ? itemX + itemWidth : itemX;\n\n result.a = {\n x,\n y: itemY,\n };\n\n result.b = {\n x,\n y: itemY + itemHeight,\n };\n\n break;\n }\n\n case DIRECTION_RIGHT: {\n const x = isSibling ? itemX : itemX + itemWidth;\n\n result.a = {\n x,\n y: itemY,\n };\n\n result.b = {\n x,\n y: itemY + itemHeight,\n };\n\n break;\n }\n\n default:\n break;\n }\n\n return result;\n }\n\n /**\n * Calculates if the sibling node is intersecting enough with the ref node by the secondary coordinate\n */\n static isAdjacentSlice(\n refCorners: RefCorners,\n siblingCorners: RefCorners,\n isVerticalDirection: boolean\n ): boolean {\n const { a: refA, b: refB } = refCorners;\n const { a: siblingA, b: siblingB } = siblingCorners;\n const coordinate = isVerticalDirection ? 'x' : 'y';\n\n const refCoordinateA = refA[coordinate];\n const refCoordinateB = refB[coordinate];\n const siblingCoordinateA = siblingA[coordinate];\n const siblingCoordinateB = siblingB[coordinate];\n\n const thresholdDistance =\n (refCoordinateB - refCoordinateA) * ADJACENT_SLICE_THRESHOLD;\n\n const intersectionLength = Math.max(\n 0,\n Math.min(refCoordinateB, siblingCoordinateB) -\n Math.max(refCoordinateA, siblingCoordinateA)\n );\n\n return intersectionLength >= thresholdDistance;\n }\n\n static getPrimaryAxisDistance(\n refCorners: RefCorners,\n siblingCorners: RefCorners,\n isVerticalDirection: boolean\n ): number {\n const { a: refA } = refCorners;\n const { a: siblingA } = siblingCorners;\n const coordinate = isVerticalDirection ? 'y' : 'x';\n\n return Math.abs(siblingA[coordinate] - refA[coordinate]);\n }\n\n static getSecondaryAxisDistance(\n refCorners: RefCorners,\n siblingCorners: RefCorners,\n isVerticalDirection: boolean\n ): number {\n const { a: refA, b: refB } = refCorners;\n const { a: siblingA, b: siblingB } = siblingCorners;\n const coordinate = isVerticalDirection ? 'x' : 'y';\n\n const refCoordinateA = refA[coordinate];\n const refCoordinateB = refB[coordinate];\n const siblingCoordinateA = siblingA[coordinate];\n const siblingCoordinateB = siblingB[coordinate];\n\n const distancesToCompare = [];\n\n distancesToCompare.push(Math.abs(siblingCoordinateA - refCoordinateA));\n distancesToCompare.push(Math.abs(siblingCoordinateA - refCoordinateB));\n distancesToCompare.push(Math.abs(siblingCoordinateB - refCoordinateA));\n distancesToCompare.push(Math.abs(siblingCoordinateB - refCoordinateB));\n\n return Math.min(...distancesToCompare);\n }\n\n /**\n * Inspired by: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS_for_TV/TV_remote_control_navigation#Algorithm_design\n * Ref Corners are the 2 corners of the current component in the direction of navigation\n * They used as a base to measure adjacent slices\n */\n sortSiblingsByPriority(\n siblings: FocusableComponent[],\n currentLayout: Layout,\n direction: Direction,\n _focusKey: string\n ): FocusableComponent[] {\n const isVerticalDirection =\n direction === DIRECTION_DOWN || direction === DIRECTION_UP;\n\n const refCorners = SpatialNavigation.getRefCorners(\n direction,\n false,\n currentLayout\n );\n\n return [...siblings].sort(\n (a: FocusableComponent, b: FocusableComponent) => {\n const aCorners = SpatialNavigation.getRefCorners(\n direction,\n true,\n a.layout\n );\n const bCorners = SpatialNavigation.getRefCorners(\n direction,\n true,\n b.layout\n );\n\n const aIsAdjacentSlice = SpatialNavigation.isAdjacentSlice(\n refCorners,\n aCorners,\n isVerticalDirection\n );\n const bIsAdjacentSlice = SpatialNavigation.isAdjacentSlice(\n refCorners,\n bCorners,\n isVerticalDirection\n );\n\n const aPrimaryAxisFunction = aIsAdjacentSlice\n ? SpatialNavigation.getPrimaryAxisDistance\n : SpatialNavigation.getSecondaryAxisDistance;\n const bPrimaryAxisFunction = bIsAdjacentSlice\n ? SpatialNavigation.getPrimaryAxisDistance\n : SpatialNavigation.getSecondaryAxisDistance;\n\n const aSecondaryAxisFunction = aIsAdjacentSlice\n ? SpatialNavigation.getSecondaryAxisDistance\n : SpatialNavigation.getPrimaryAxisDistance;\n const bSecondaryAxisFunction = bIsAdjacentSlice\n ? SpatialNavigation.getSecondaryAxisDistance\n : SpatialNavigation.getPrimaryAxisDistance;\n\n const aPrimaryAxisDistance = aPrimaryAxisFunction(\n refCorners,\n aCorners,\n isVerticalDirection\n );\n const bPrimaryAxisDistance = bPrimaryAxisFunction(\n refCorners,\n bCorners,\n isVerticalDirection\n );\n\n const aSecondaryAxisDistance = aSecondaryAxisFunction(\n refCorners,\n aCorners,\n isVerticalDirection\n );\n const bSecondaryAxisDistance = bSecondaryAxisFunction(\n refCorners,\n bCorners,\n isVerticalDirection\n );\n\n const aTotalDistancePoints =\n aPrimaryAxisDistance * MAIN_COORDINATE_WEIGHT +\n aSecondaryAxisDistance;\n const bTotalDistancePoints =\n bPrimaryAxisDistance * MAIN_COORDINATE_WEIGHT +\n bSecondaryAxisDistance;\n\n const aPriority =\n (aTotalDistancePoints + 1) /\n (aIsAdjacentSlice ? ADJACENT_SLICE_WEIGHT : DIAGONAL_SLICE_WEIGHT);\n const bPriority =\n (bTotalDistancePoints + 1) /\n (bIsAdjacentSlice ? ADJACENT_SLICE_WEIGHT : DIAGONAL_SLICE_WEIGHT);\n\n return aPriority - bPriority;\n }\n );\n }\n\n constructor() {\n this.focusableComponents = {};\n this.focusKey = null;\n this.parentsHavingFocusedChild = [];\n this.enabled = false;\n this.nativeMode = false;\n this.throttle = 0;\n this.throttleKeypresses = false;\n this.pressedKeys = {};\n this.paused = false;\n this.keyDownEventListener = null;\n this.keyUpEventListener = null;\n this.keyMap = DEFAULT_KEY_MAP;\n this.debug = false;\n this.visualDebugger = null;\n this.logIndex = 0;\n\n this.onKeyEvent = this.onKeyEvent.bind(this);\n this.pause = this.pause.bind(this);\n this.resume = this.resume.bind(this);\n this.setFocus = this.setFocus.bind(this);\n this.updateAllLayouts = this.updateAllLayouts.bind(this);\n this.navigateByDirection = this.navigateByDirection.bind(this);\n this.init = this.init.bind(this);\n this.setKeyMap = this.setKeyMap.bind(this);\n }\n\n init({\n debug = false,\n visualDebug = false,\n nativeMode = false,\n throttle = 0,\n throttleKeypresses = false,\n }: InitOptions = {}) {\n if (!this.enabled) {\n this.enabled = true;\n this.nativeMode = nativeMode;\n this.throttleKeypresses = throttleKeypresses;\n this.debug = debug;\n\n if (!this.nativeMode) {\n if (Number.isInteger(throttle) && throttle > 0) {\n this.throttle = throttle;\n }\n this.bindEventHandlers();\n if (visualDebug) {\n this.visualDebugger = new VisualDebugger();\n this.startDrawLayouts();\n }\n }\n }\n }\n\n startDrawLayouts(): void {\n const draw = () => {\n requestAnimationFrame(() => {\n this.visualDebugger?.clearLayouts();\n Object.entries(this.focusableComponents).forEach(\n ([focusKey, component]) => {\n this.visualDebugger?.drawLayout(\n component.layout,\n focusKey,\n component.parentFocusKey!\n );\n }\n );\n draw();\n });\n };\n\n draw();\n }\n\n destroy(): void {\n if (this.enabled) {\n this.enabled = false;\n this.nativeMode = false;\n this.throttle = 0;\n this.throttleKeypresses = false;\n this.focusKey = null;\n this.parentsHavingFocusedChild = [];\n this.focusableComponents = {};\n this.paused = false;\n this.keyMap = DEFAULT_KEY_MAP;\n\n this.unbindEventHandlers();\n }\n }\n\n getEventType(keyCode: number): KeyType | undefined {\n return findKey(this.getKeyMap(), (code) => keyCode === code) as\n | KeyType\n | undefined;\n }\n\n bindEventHandlers(): void {\n if (typeof window !== 'undefined' && window.addEventListener) {\n const keyDownHandler = (event: KeyboardEvent) => {\n if (this.paused === true) {\n return;\n }\n\n if (this.debug) {\n this.logIndex += 1;\n }\n\n const eventType = this.getEventType(event.keyCode);\n\n if (!eventType) {\n return;\n }\n\n this.pressedKeys[eventType] = this.pressedKeys[eventType]\n ? this.pressedKeys[eventType] + 1\n : 1;\n\n event.preventDefault();\n event.stopPropagation();\n\n const details = {\n pressedKeys: this.pressedKeys,\n };\n\n if (eventType === KEY_ENTER && this.focusKey) {\n this.onEnterPress(details);\n return;\n }\n\n const preventDefaultNavigation =\n this.onArrowPress(eventType as Direction, details) === false;\n\n if (preventDefaultNavigation) {\n this.log('keyDownEventListener', 'default navigation prevented');\n this.visualDebugger?.clear();\n } else {\n this.onKeyEvent(event);\n }\n };\n\n this.keyDownEventListener = this.throttle\n ? throttle(keyDownHandler, this.throttle, THROTTLE_OPTIONS)\n : keyDownHandler;\n\n this.keyUpEventListener = (event: KeyboardEvent) => {\n const eventType = this.getEventType(event.keyCode);\n\n if (eventType) {\n delete this.pressedKeys[eventType];\n }\n\n if (this.throttle && !this.throttleKeypresses) {\n // @ts-ignore\n this.keyDownEventListener?.cancel?.();\n }\n\n if (eventType === KEY_ENTER && this.focusKey) {\n this.onEnterRelease();\n }\n };\n\n window.addEventListener('keyup', this.keyUpEventListener);\n window.addEventListener('keydown', this.keyDownEventListener);\n }\n }\n\n unbindEventHandlers(): void {\n if (typeof window !== 'undefined' && window.removeEventListener) {\n window.removeEventListener('keydown', this.keyDownEventListener!);\n this.keyDownEventListener = null;\n\n if (this.throttle) {\n window.removeEventListener('keyup', this.keyUpEventListener!);\n this.keyUpEventListener = null;\n }\n }\n }\n\n onEnterPress(details: { pressedKeys: Record<string, number> }): void {\n const component = this.focusableComponents[this.focusKey!];\n\n if (!component) {\n this.log('onEnterPress', 'noComponent');\n return;\n }\n\n if (!component.focusable) {\n this.log('onEnterPress', 'componentNotFocusable');\n return;\n }\n\n component.onEnterPressHandler?.(details);\n }\n\n onEnterRelease(): void {\n const component = this.focusableComponents[this.focusKey!];\n\n if (!component) {\n this.log('onEnterRelease', 'noComponent');\n return;\n }\n\n if (!component.focusable) {\n this.log('onEnterRelease', 'componentNotFocusable');\n return;\n }\n\n component.onEnterReleaseHandler?.();\n }\n\n onArrowPress(\n direction: Direction,\n details: { pressedKeys: Record<string, number> }\n ): boolean | void {\n const component = this.focusableComponents[this.focusKey!];\n\n if (!component) {\n this.log('onArrowPress', 'noComponent');\n return undefined;\n }\n\n return component.onArrowPressHandler?.(direction, details);\n }\n\n navigateByDirection(\n direction: Direction,\n details: Record<string, any> = {}\n ): void {\n if (this.paused === true) {\n return;\n }\n\n const validDirections = [\n DIRECTION_DOWN,\n DIRECTION_UP,\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n ];\n\n if (validDirections.includes(direction)) {\n this.log('navigateByDirection', 'direction', direction);\n this.smartNavigate(direction, null, details);\n } else {\n this.log(\n 'navigateByDirection',\n `Invalid direction. You passed: \\`${direction}\\`, but you can use only these: `,\n validDirections\n );\n }\n }\n\n onKeyEvent(event: KeyboardEvent): void {\n this.visualDebugger?.clear();\n\n const direction = findKey(\n this.getKeyMap(),\n (code: number) => event.keyCode === code\n );\n\n if (direction) {\n this.smartNavigate(direction as Direction, null, { event });\n }\n }\n\n smartNavigate(\n direction: Direction,\n fromParentFocusKey: string | null,\n details: Record<string, any>\n ): void {\n this.log('smartNavigate', 'direction', direction);\n this.log('smartNavigate', 'fromParentFocusKey', fromParentFocusKey);\n this.log('smartNavigate', 'this.focusKey', this.focusKey);\n\n if (!this.nativeMode && !fromParentFocusKey) {\n Object.values(this.focusableComponents).forEach((component) => {\n component.layoutUpdated = false;\n });\n }\n\n const currentComponent = this.focusableComponents[\n fromParentFocusKey || this.focusKey!\n ];\n\n this.log(\n 'smartNavigate',\n 'currentComponent',\n currentComponent ? currentComponent.focusKey : undefined,\n currentComponent ? currentComponent.node : undefined\n );\n\n if (currentComponent) {\n this.updateLayout(currentComponent.focusKey);\n const { parentFocusKey, focusKey, layout } = currentComponent;\n\n const isVerticalDirection =\n direction === DIRECTION_DOWN || direction === DIRECTION_UP;\n const isIncrementalDirection =\n direction === DIRECTION_DOWN || direction === DIRECTION_RIGHT;\n\n const currentCutoffCoordinate = SpatialNavigation.getCutoffCoordinate(\n isVerticalDirection,\n isIncrementalDirection,\n false,\n layout\n );\n\n /**\n * Get only the siblings with the coords on the way of our moving direction\n */\n const siblings = Object.values(this.focusableComponents).filter(\n (component) => {\n if (\n component.parentFocusKey === parentFocusKey &&\n component.focusable\n ) {\n this.updateLayout(component.focusKey);\n const siblingCutoffCoordinate = SpatialNavigation.getCutoffCoordinate(\n isVerticalDirection,\n isIncrementalDirection,\n true,\n component.layout\n );\n\n return isIncrementalDirection\n ? siblingCutoffCoordinate >= currentCutoffCoordinate\n : siblingCutoffCoordinate <= currentCutoffCoordinate;\n }\n\n return false;\n }\n ) as FocusableComponent[];\n\n if (this.debug) {\n this.log('smartNavigate', 'siblings', siblings);\n }\n\n if (siblings.length > 0) {\n const sortedSiblings = this.sortSiblingsByPriority(\n siblings,\n layout,\n direction,\n focusKey\n );\n\n if (this.debug) {\n this.log('smartNavigate', 'sortedSiblings', sortedSiblings);\n }\n\n const nextComponent = sortedSiblings[0];\n\n if (nextComponent) {\n this.setFocus(nextComponent.focusKey, details);\n }\n } else {\n this.log('smartNavigate', 'noSiblings');\n\n if (parentFocusKey) {\n this.smartNavigate(direction, parentFocusKey, details);\n }\n }\n }\n }\n\n saveLastFocusedChildKey(\n component: FocusableComponent | undefined,\n focusKey: string\n ): void {\n if (component) {\n this.log(\n 'saveLastFocusedChildKey',\n `${component.focusKey} lastFocusedChildKey set`,\n focusKey\n );\n component.lastFocusedChildKey = focusKey;\n }\n }\n\n log(functionName: string, debugString: string, ...rest: any[]): void {\n if (this.debug) {\n console.log(\n `%c${functionName}%c${debugString}`,\n `background: ${\n DEBUG_FN_COLORS[this.logIndex % DEBUG_FN_COLORS.length]\n }; color: black; padding: 1px 5px;`,\n 'background: #333; color: #BADA55; padding: 1px 5px;',\n ...rest\n );\n }\n }\n\n getNextFocusKey(targetFocusKey: string): string {\n this.log('getNextFocusKey', 'targetFocusKey', targetFocusKey);\n\n const targetComponent = this.focusableComponents[targetFocusKey];\n\n if (!targetComponent) {\n return targetFocusKey;\n }\n\n const { trackChildren } = targetComponent;\n\n if (!trackChildren) {\n return targetFocusKey;\n }\n\n const children = Object.values(this.focusableComponents).filter(\n (component) =>\n component.parentFocusKey === targetFocusKey && component.focusable\n ) as FocusableComponent[];\n\n if (children.length === 0) {\n return targetFocusKey;\n }\n\n const { lastFocusedChildKey, preferredChildFocusKey } = targetComponent;\n\n /**\n * First of all trying to focus last focused child\n */\n if (\n lastFocusedChildKey &&\n !targetComponent.forgetLastFocusedChild &&\n this.isParticipatingFocusableComponent(lastFocusedChildKey)\n ) {\n this.log(\n 'getNextFocusKey',\n 'lastFocusedChildKey will be focused',\n lastFocusedChildKey\n );\n\n return this.getNextFocusKey(lastFocusedChildKey);\n }\n\n /**\n * If there is no lastFocusedChild, trying to focus the preferred focused key\n */\n if (\n preferredChildFocusKey &&\n this.isParticipatingFocusableComponent(preferredChildFocusKey)\n ) {\n this.log(\n 'getNextFocusKey',\n 'preferredChildFocusKey will be focused',\n preferredChildFocusKey\n );\n\n return this.getNextFocusKey(preferredChildFocusKey);\n }\n\n /**\n * Otherwise, trying to focus something by coordinates\n */\n children.forEach((component) => this.updateLayout(component.focusKey));\n const { focusKey: childKey } = getChildClosestToOrigin(children);\n\n this.log('getNextFocusKey', 'childKey will be focused', childKey);\n\n return this.getNextFocusKey(childKey);\n }\n\n addFocusable({\n focusKey,\n node,\n parentFocusKey,\n onEnterPressHandler,\n onEnterReleaseHandler,\n onArrowPressHandler,\n onBecameFocusedHandler,\n onBecameBlurredHandler,\n forgetLastFocusedChild,\n trackChildren,\n onUpdateFocus,\n onUpdateHasFocusedChild,\n preferredChildFocusKey,\n autoRestoreFocus,\n focusable = true,\n blockNavigationOut,\n }: AddFocusableOptions): void {\n this.focusableComponents[focusKey] = {\n focusKey,\n node,\n parentFocusKey,\n onEnterPressHandler,\n onEnterReleaseHandler,\n onArrowPressHandler,\n onBecameFocusedHandler,\n onBecameBlurredHandler,\n onUpdateFocus,\n onUpdateHasFocusedChild,\n forgetLastFocusedChild,\n trackChildren,\n lastFocusedChildKey: null,\n preferredChildFocusKey,\n focusable,\n blockNavigationOut,\n autoRestoreFocus,\n layout: {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n node,\n },\n layoutUpdated: false,\n };\n\n if (this.nativeMode) {\n return;\n }\n\n this.updateLayout(focusKey);\n\n /**\n * If for some reason this component was already focused before it was added, call the update\n */\n if (focusKey === this.focusKey) {\n this.setFocus(focusKey);\n }\n }\n\n removeFocusable({ focusKey }: { focusKey: string }): void {\n const componentToRemove = this.focusableComponents[focusKey];\n\n if (componentToRemove) {\n const { parentFocusKey } = componentToRemove;\n\n Reflect.deleteProperty(this.focusableComponents, focusKey);\n\n const parentComponent = this.focusableComponents[parentFocusKey!];\n const isFocused = focusKey === this.focusKey;\n\n /**\n * If the component was stored as lastFocusedChild, clear lastFocusedChildKey from parent\n */\n parentComponent &&\n parentComponent.lastFocusedChildKey === focusKey &&\n (parentComponent.lastFocusedChildKey = null);\n\n if (this.nativeMode) {\n return;\n }\n\n /**\n * If the component was also focused at this time, focus another one\n */\n if (isFocused && parentComponent && parentComponent.autoRestoreFocus) {\n this.setFocus(parentFocusKey!);\n }\n }\n }\n\n getNodeLayoutByFocusKey(focusKey: string): Layout | null {\n const component = this.focusableComponents[focusKey];\n\n if (component) {\n this.updateLayout(component.focusKey);\n\n return component.layout;\n }\n\n return null;\n }\n\n setCurrentFocusedKey(\n newFocusKey: string,\n details: Record<string, any>\n ): void {\n if (\n this.isFocusableComponent(this.focusKey!) &&\n newFocusKey !== this.focusKey\n ) {\n const oldComponent = this.focusableComponents[this.focusKey!];\n const parentComponent = this.focusableComponents[\n oldComponent.parentFocusKey!\n ];\n\n this.saveLastFocusedChildKey(parentComponent, this.focusKey!);\n\n oldComponent.onUpdateFocus?.(false);\n oldComponent.onBecameBlurredHandler?.(\n this.getNodeLayoutByFocusKey(this.focusKey!)!,\n details\n );\n }\n\n this.focusKey = newFocusKey;\n\n if (this.isFocusableComponent(this.focusKey)) {\n const newComponent = this.focusableComponents[this.focusKey];\n\n newComponent.onUpdateFocus?.(true);\n newComponent.onBecameFocusedHandler?.(\n this.getNodeLayoutByFocusKey(this.focusKey)!,\n details\n );\n }\n }\n\n updateParentsHasFocusedChild(\n focusKey: string,\n details: Record<string, any>\n ): void {\n const parents: string[] = [];\n\n let currentComponent = this.focusableComponents[focusKey];\n\n /**\n * Recursively iterate the tree up and find all the parents' focus keys\n */\n while (currentComponent) {\n const { parentFocusKey } = currentComponent;\n\n const parentComponent = this.focusableComponents[parentFocusKey!];\n\n if (parentComponent) {\n const { focusKey: currentParentFocusKey } = parentComponent;\n\n parents.push(currentParentFocusKey);\n }\n\n currentComponent = parentComponent;\n }\n\n const parentsToRemoveFlag = difference(\n this.parentsHavingFocusedChild,\n parents\n );\n const parentsToAddFlag = difference(\n parents,\n this.parentsHavingFocusedChild\n );\n\n forEach(parentsToRemoveFlag, (parentFocusKey) => {\n const parentComponent = this.focusableComponents[parentFocusKey];\n\n parentComponent &&\n parentComponent.trackChildren &&\n parentComponent.onUpdateHasFocusedChild?.(false);\n this.onIntermediateNodeBecameBlurred(parentFocusKey, details);\n });\n\n forEach(parentsToAddFlag, (parentFocusKey) => {\n const parentComponent = this.focusableComponents[parentFocusKey];\n\n parentComponent &&\n parentComponent.trackChildren &&\n parentComponent.onUpdateHasFocusedChild?.(true);\n this.onIntermediateNodeBecameFocused(parentFocusKey, details);\n });\n\n this.parentsHavingFocusedChild = parents;\n }\n\n updateParentsLastFocusedChild(focusKey: string): void {\n let currentComponent = this.focusableComponents[focusKey];\n\n /**\n * Recursively iterate the tree up and update all the parent's lastFocusedChild\n */\n while (currentComponent) {\n const { parentFocusKey } = currentComponent;\n\n const parentComponent = this.focusableComponents[parentFocusKey!];\n\n if (parentComponent) {\n this.saveLastFocusedChildKey(\n parentComponent,\n currentComponent.focusKey\n );\n }\n\n currentComponent = parentComponent;\n }\n }\n\n getKeyMap(): KeyMap {\n return this.keyMap;\n }\n\n setKeyMap(keyMap: KeyMap): void {\n this.keyMap = {\n ...this.getKeyMap(),\n ...keyMap,\n };\n }\n\n isFocusableComponent(focusKey: string): boolean {\n return !!this.focusableComponents[focusKey];\n }\n\n /**\n * Checks whether the focusableComponent is actually participating in spatial navigation (in other words, is a\n * 'focusable' focusableComponent). Seems less confusing than calling it isFocusableFocusableComponent()\n */\n isParticipatingFocusableComponent(focusKey: string): boolean {\n return (\n this.isFocusableComponent(focusKey) &&\n this.focusableComponents[focusKey].focusable\n );\n }\n\n onIntermediateNodeBecameFocused(\n focusKey: string,\n details: Record<string, any>\n ): void {\n this.isParticipatingFocusableComponent(focusKey) &&\n this.focusableComponents[focusKey].onBecameFocusedHandler?.(\n this.getNodeLayoutByFocusKey(focusKey)!,\n details\n );\n }\n\n onIntermediateNodeBecameBlurred(\n focusKey: string,\n details: Record<string, any>\n ): void {\n this.isParticipatingFocusableComponent(focusKey) &&\n this.focusableComponents[focusKey].onBecameBlurredHandler?.(\n this.getNodeLayoutByFocusKey(focusKey)!,\n details\n );\n }\n\n pause(): void {\n this.paused = true;\n }\n\n resume(): void {\n this.paused = false;\n }\n\n setFocus(targetFocusKey: string, details: Record<string, any> = {}): void {\n const lastFocusedKey = this.focusKey;\n const newFocusKey = this.getNextFocusKey(targetFocusKey);\n\n this.log('setFocus', 'newFocusKey', newFocusKey);\n\n this.setCurrentFocusedKey(newFocusKey, details);\n this.updateParentsHasFocusedChild(newFocusKey, details);\n this.updateParentsLastFocusedChild(lastFocusedKey!);\n }\n\n updateAllLayouts(): void {\n if (this.nativeMode) {\n return;\n }\n\n Object.entries(this.focusableComponents).forEach(([focusKey]) => {\n this.updateLayout(focusKey);\n });\n }\n\n updateLayout(focusKey: string): void {\n const component = this.focusableComponents[focusKey];\n\n if (!component || this.nativeMode || component.layoutUpdated) {\n return;\n }\n\n const { node } = component;\n\n measureLayout(\n node,\n (\n x: number,\n y: number,\n width: number,\n height: number,\n left: number,\n top: number\n ) => {\n component.layout = {\n x,\n y,\n width,\n height,\n left,\n top,\n node,\n };\n }\n );\n }\n\n updateFocusable(\n focusKey: string,\n {\n node,\n preferredChildFocusKey,\n focusable,\n blockNavigationOut,\n }: UpdateFocusableOptions\n ): void {\n if (this.nativeMode) {\n return;\n }\n\n const component = this.focusableComponents[focusKey];\n\n if (component) {\n component.preferredChildFocusKey = preferredChildFocusKey;\n component.focusable = focusable ?? component.focusable;\n component.blockNavigationOut = blockNavigationOut;\n\n if (node) {\n component.node = node;\n }\n }\n }\n\n isNativeMode(): boolean {\n return this.nativeMode;\n }\n\n getFocusableComponents(): FocusableComponent[] {\n return Object.values(this.focusableComponents) as FocusableComponent[];\n }\n\n getFocusableComponentsByParentFocusKey(\n parentFocusKey: string\n ): FocusableComponent[] {\n return Object.values(this.focusableComponents).filter(\n (component) => component.parentFocusKey === parentFocusKey\n ) as FocusableComponent[];\n }\n}\n\n/**\n * Export singleton\n */\nexport default new SpatialNavigation();\n","export const DIRECTION_LEFT = 'left';\nexport const DIRECTION_RIGHT = 'right';\nexport const DIRECTION_UP = 'up';\nexport const DIRECTION_DOWN = 'down';\nexport const KEY_ENTER = 'enter';\n\nexport type Direction =\n | typeof DIRECTION_LEFT\n | typeof DIRECTION_RIGHT\n | typeof DIRECTION_UP\n | typeof DIRECTION_DOWN;\n\nexport interface Layout {\n x: number;\n y: number;\n width: number;\n height: number;\n left: number;\n top: number;\n node: HTMLElement;\n}\n","import SDK from '@/index';\nimport IMaestroKeyPlaysResponse from '../interfaces/IKeyPlaysResponse';\nimport IKeyPlay, {\n KeyPlayLoadFailureStatus,\n KeyPlaysErrorState,\n} from '../interfaces/IKeyPlays';\nimport { Observable } from '@/helpers/Observable';\n\ntype KeyPlayItem = {\n title: string;\n items: IKeyPlay[];\n};\n\nclass KeyPlaysViewModel {\n currentlyPlayingClipIndex = new Observable<number | null>(null);\n lastPlayedClipIndex = new Observable<number | null>(null);\n currentClipPlaybackProgress = new Observable<number | null>(null);\n errorState = new Observable<KeyPlaysErrorState | null>('unpopulatedEvent');\n failedClips = new Observable<{ [key: string]: KeyPlayLoadFailureStatus }>({});\n items = new Observable<KeyPlayItem[]>([]);\n\n isCurrentlyPlaying(index: number): boolean {\n return index === this.currentlyPlayingClipIndex.value;\n }\n\n async setKeyPlays(items: IMaestroKeyPlaysResponse | null): Promise<void> {\n if (items === null) {\n this.errorState.value = 'tabLoadFailure';\n return;\n }\n\n this.items.value = this.parseNetworkResponse(items);\n this.cleanErrors();\n }\n\n private cleanErrors() {\n if (this.errorState.value === 'tabLoadFailure') {\n this.errorState.value = null;\n }\n\n if (this.errorState.value === 'unpopulatedEvent' && this.allItems.length) {\n this.errorState.value = null;\n }\n\n if (!this.allItems.length) {\n this.errorState.value = 'unpopulatedEvent';\n }\n }\n\n async playKeyPlay(atIndex: number): Promise<void> {\n const mevm = SDK.getMaestroEventViewModel();\n mevm.delegate.playClip(atIndex);\n }\n\n parseNetworkResponse(response: IMaestroKeyPlaysResponse): KeyPlayItem[] {\n const teams = Object.values(response.entities.team);\n const athletes = Object.values(response.entities.athlete);\n const homeTeam = teams.find((team) => team.homeAway === 'home');\n const awayTeam = teams.find((team) => team.homeAway === 'away');\n\n if (!homeTeam || !awayTeam) {\n console.log('Could not find home or away team');\n return [];\n }\n\n const items: IKeyPlay[] = [];\n const result: KeyPlayItem[] = [];\n\n for (const section of response.sections) {\n for (const keyPlay of section.items) {\n const playTeam = keyPlay.team\n ? teams.find((team) => team.id === keyPlay.team)\n : undefined;\n const athlete = keyPlay.athlete\n ? athletes.find((a) => a.id === keyPlay.athlete)\n : undefined;\n\n const teamImageUrl = playTeam ? playTeam.logoRef : undefined;\n const playerImageUrl = athlete ? athlete.headshot : undefined;\n const thumbnailImageUrl =\n keyPlay.thumbnailType !== 'headshot' ? keyPlay.thumbnail : undefined;\n\n const homeScore = keyPlay.homeScore ? keyPlay.homeScore : '0';\n const awayScore = keyPlay.awayScore ? keyPlay.awayScore : '0';\n const homeTeamScore = keyPlay.scoringPlay\n ? parseInt(homeScore)\n : undefined;\n const awayTeamScore = keyPlay.scoringPlay\n ? parseInt(awayScore)\n : undefined;\n\n const randomId = Math.random().toString(36).substring(2, 15);\n const keyPlayData: IKeyPlay = {\n id: randomId,\n description: keyPlay.description ? keyPlay.description : '',\n homeTeamName: homeTeam ? homeTeam.shortName : '',\n awayTeamName: awayTeam ? awayTeam.shortName : '',\n homeTeamScore,\n awayTeamScore,\n clipID: keyPlay.clipID,\n teamImageUrl,\n playerImageUrl,\n thumbnailImageUrl,\n section: section.title,\n };\n\n items.push(keyPlayData);\n }\n\n // Only add the section if it has items\n if (items.length) {\n const sectionTitle = section.title;\n const existingSection = result.find(\n (item) => item.title === sectionTitle\n );\n\n if (existingSection) {\n existingSection.items.push(...items);\n } else {\n result.push({\n title: sectionTitle,\n items: [...items],\n });\n }\n\n // Reset items for the next section\n items.length = 0;\n }\n }\n\n return result;\n }\n\n get allItems() {\n return this.items.value.reduce((acc, section) => {\n return acc.concat(section.items);\n }, [] as IKeyPlay[]);\n }\n\n clipID(forKeyPlayAtIndex: number): string | undefined {\n const item = this.allItems[forKeyPlayAtIndex];\n if (!item) {\n return undefined;\n }\n return this.allItems[forKeyPlayAtIndex].clipID;\n }\n\n handleKeyPlayLoadFailure(forKeyPlayAtIndex: number): void {\n const clipID = this.clipID(forKeyPlayAtIndex);\n if (clipID) {\n const newFailedClips = this.failedClips.value;\n newFailedClips[clipID] = 'recentFailure';\n\n this.failedClips.value = newFailedClips;\n\n setTimeout(() => {\n if (this.loadFailureStatus(forKeyPlayAtIndex) === 'recentFailure') {\n const newFailedClips = this.failedClips.value;\n newFailedClips[clipID] = 'nonRecentFailure';\n this.failedClips.value = newFailedClips;\n }\n }, 5000);\n }\n }\n\n loadFailureStatus(forKeyPlayAtIndex: number): KeyPlayLoadFailureStatus {\n const clipID = this.clipID(forKeyPlayAtIndex);\n const newFailedClips = this.failedClips.value;\n if (!newFailedClips) {\n return 'noFailure';\n }\n return clipID ? this.failedClips.value[clipID] : 'noFailure';\n }\n\n clearLoadFailureStatus(forKeyPlayAtIndex: number): void {\n const clipID = this.clipID(forKeyPlayAtIndex);\n if (clipID && this.failedClips) {\n this.failedClips.value = {\n ...this.failedClips.value,\n [clipID]: 'noFailure',\n };\n }\n }\n\n async userRequestedNewKeyPlaysData() {\n const mevm = SDK.getMaestroEventViewModel();\n await mevm.delegate.userRequestedNewKeyPlaysData();\n }\n}\n\nexport default KeyPlaysViewModel;\n","import IMaestroEventDelegate from '../interfaces/IMaestroEventDelegate';\nimport IMaestroEvent from '../interfaces/IMaestroEvent';\nimport { Observable } from '../helpers/Observable';\nimport { ViewModel } from './ViewModel';\nimport KeyPlaysViewModel from '../modules/key-plays/view-model/KeyPlaysViewModel';\nimport {\n setFocus,\n pause,\n resume,\n init,\n destroy,\n} from '@/external/spatial-navigation';\nimport IMaestroKeyPlaysResponse from '../modules/key-plays/interfaces/IKeyPlaysResponse';\n\nexport class MaestroEventViewModel extends ViewModel implements IMaestroEvent {\n private _eventId = new Observable('');\n private _title = new Observable('');\n private _isLive = new Observable<boolean>(false);\n private _isShowingPanel = new Observable(false);\n delegate: IMaestroEventDelegate;\n keyPlaysViewModel = new KeyPlaysViewModel();\n\n constructor(eventId: string = '', delegate: IMaestroEventDelegate) {\n super();\n this._eventId.value = eventId;\n this.delegate = delegate;\n init();\n }\n\n deinit() {\n destroy();\n }\n\n updateKeyPlaysData(data: IMaestroKeyPlaysResponse | null): Promise<void> {\n return this.keyPlaysViewModel.setKeyPlays(data);\n }\n\n startFocusManagement(): Promise<void> {\n setFocus('');\n resume();\n setTimeout(() => {\n setFocus('PANEL_NAV_BUTTON_0');\n }, 0);\n\n return Promise.resolve();\n }\n\n didStartPlayingClip(index: number) {\n this.keyPlaysViewModel.lastPlayedClipIndex.value = index;\n this.keyPlaysViewModel.currentClipPlaybackProgress.value = 0;\n this.keyPlaysViewModel.currentlyPlayingClipIndex.value = index;\n this.keyPlaysViewModel.clearLoadFailureStatus(index);\n }\n\n didStopPlayingClip(index: number): void {\n this.keyPlaysViewModel.lastPlayedClipIndex.value = index;\n this.keyPlaysViewModel.currentlyPlayingClipIndex.value = null;\n this.keyPlaysViewModel.currentClipPlaybackProgress.value = null;\n }\n\n didFailToPlayClip(index: number): void {\n this.keyPlaysViewModel.handleKeyPlayLoadFailure(index);\n }\n\n didUpdatePlaybackProgressOfClip(index: number, to: number): void {\n this.keyPlaysViewModel.currentClipPlaybackProgress.value = to;\n this.keyPlaysViewModel.clearLoadFailureStatus(index);\n }\n\n didShowPanel(): Promise<void> {\n this.isShowingPanel = true;\n // Analytics call ?\n return Promise.resolve();\n }\n\n async didHidePanel(): Promise<void> {\n this.isShowingPanel = false;\n pause();\n\n // Analytics call?\n }\n\n didShowOverlay(): Promise<void> {\n throw new Error('Method not implemented.');\n }\n didHideOverlay(): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n currentEventDoesNotSupportKeyPlays(): void {\n this.keyPlaysViewModel.errorState.value = 'unsupportedEvent';\n }\n\n getCurrentEventID() {\n return this.eventId.value;\n }\n\n getCurrentlyPlayingClipIndex() {\n return this.keyPlaysViewModel.currentlyPlayingClipIndex.value;\n }\n\n getLastPlayedClipIndex() {\n return this.keyPlaysViewModel.lastPlayedClipIndex.value;\n }\n\n getCurrentClipPlaybackProgress() {\n return this.keyPlaysViewModel.currentClipPlaybackProgress.value;\n }\n\n getKeyPlaysCount() {\n return this.keyPlaysViewModel.allItems.length;\n }\n\n get eventId(): Observable<string> {\n return this._eventId;\n }\n\n get title(): Observable<string> {\n return this._title;\n }\n\n get isLive(): Observable<boolean> {\n return this._isLive;\n }\n\n get isShowingPanel(): boolean {\n return this._isShowingPanel.value;\n }\n\n set isShowingPanel(value: boolean) {\n this._isShowingPanel.value = value;\n }\n}\n","import { Observable } from '../helpers/Observable';\n\n/**\n * Base view model that implements reactive properties\n */\nexport abstract class ViewModel {\n private _isLoading = new Observable<boolean>(false);\n private _error = new Observable<string | null>(null);\n\n get isLoading(): Observable<boolean> {\n return this._isLoading;\n }\n\n get error(): Observable<string | null> {\n return this._error;\n }\n\n protected setLoading(loading: boolean): void {\n this._isLoading.value = loading;\n }\n\n protected setError(error: string | null): void {\n this._error.value = error;\n }\n}\n","import { MaestroEventViewModel } from './MaestroEventViewModel';\nimport { PanelManagerViewModel } from './PanelManagerViewModel';\nimport IMaestroEventDelegate from '../interfaces/IMaestroEventDelegate';\nimport KeyPlaysViewModel from '../modules/key-plays/view-model/KeyPlaysViewModel';\n\n/**\n * Aggregates all View Models\n */\nexport class MaestroViewModels {\n readonly eventViewModel: MaestroEventViewModel;\n readonly panelManagerViewModel: PanelManagerViewModel;\n readonly keyPlaysViewModel: KeyPlaysViewModel;\n\n constructor(eventViewModel: MaestroEventViewModel) {\n this.eventViewModel = eventViewModel;\n this.panelManagerViewModel = new PanelManagerViewModel();\n this.keyPlaysViewModel = new KeyPlaysViewModel();\n }\n\n /**\n * Creates view models from an event ID\n */\n static async fromEventId(\n eventId: string,\n delegate: IMaestroEventDelegate\n ): Promise<MaestroViewModels | null> {\n try {\n const eventViewModel = new MaestroEventViewModel(eventId, delegate);\n\n return new MaestroViewModels(eventViewModel);\n } catch (error) {\n console.error('Error creating view models from event ID', error);\n return null;\n }\n }\n}\n","import { type IRenderer } from './ports/renderer';\nimport { MaestroViewModels } from '@/view-models';\nimport type IMaestroEventDelegate from '@/interfaces/IMaestroEventDelegate';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\ntype Renderer = {\n render: (children: React.ReactNode) => void;\n unmount: () => void;\n};\n\nclass ReactRenderer implements IRenderer {\n private renderersMap: Map<string, Renderer> = new Map();\n public viewModels: MaestroViewModels | null = null;\n\n /**\n * Sets the view models for the renderer\n * @param eventId The event ID to create view models for\n * @param delegate The event delegate to use\n */\n async setViewModels(\n eventId: string,\n delegate?: IMaestroEventDelegate\n ): Promise<MaestroViewModels | null> {\n try {\n if (!delegate) {\n console.error('No event delegate provided');\n return null;\n }\n this.viewModels = await MaestroViewModels.fromEventId(eventId, delegate);\n return this.viewModels;\n } catch (error) {\n console.error('Error creating view models from event ID', error);\n return null;\n }\n }\n\n /**\n * Renders the panel manager\n * @param id The element ID to render in\n * @param options Options for rendering including height and width\n */\n async renderPanel(id: string) {\n const renderer = await this.getRenderer(id);\n\n if (!this.viewModels) {\n throw new Error('Cannot render panel manager: No view models set');\n }\n\n const App = require('../components/core/App').default;\n const PanelManager = require('../components/core/PanelManager').default;\n\n renderer.render(\n <App>\n <PanelManager />\n </App>\n );\n\n return () => {\n renderer.unmount();\n this.renderersMap.delete(id);\n };\n }\n\n /**\n * @description Get the render function and renderer for the MaestroWebSDK. Useful to configure the renderer and fonts before rendering the component.\n * @param {string} id - The id of the element to render the component in.\n * @param {{ height: number; width: number }} options - The height and width of the component.\n */\n private async getRenderer(id: string): Promise<Renderer> {\n if (this.renderersMap.has(id)) {\n return this.renderersMap.get(id)!;\n }\n\n const el = document.getElementById(id);\n if (!el) {\n throw new Error(`Element with id ${id} not found`);\n }\n\n const renderer: Renderer = {\n render: (children) => {\n ReactDOM.render(children as any, el);\n },\n unmount: () => {\n ReactDOM.unmountComponentAtNode(el);\n },\n };\n\n this.renderersMap.set(id, renderer);\n return renderer;\n }\n}\n\nexport default ReactRenderer;\n","import ReactRenderer from './external/ReactRenderer';\nimport { IRenderer } from './external/ports/renderer';\nimport IMaestroEventDelegate from './interfaces/IMaestroEventDelegate';\nimport IMaestroManager, { SDKConfigParams } from './interfaces/IMaestroManager';\nimport IMaestroEvent from './interfaces/IMaestroEvent';\nimport { MaestroEventViewModel } from './view-models/MaestroEventViewModel';\nimport type IMaestroKeyPlaysResponse from './modules/key-plays/interfaces/IKeyPlaysResponse';\n\nexport {\n type IMaestroEventDelegate,\n type IMaestroEvent,\n type IMaestroKeyPlaysResponse,\n};\n\nconst AUTHORIZED_CLIENTS = ['664b9c57d59a7a431542d814'];\n\nexport type Environment = 'development' | 'staging' | 'production';\n\n/**\n * Main SDK class that serves as the entry point for the Maestro TV SDK\n * Follows a singleton pattern similar to the Swift implementation\n */\nclass MaestroWebSDK implements IMaestroManager {\n private static instance: MaestroWebSDK;\n private renderer: IRenderer;\n private siteID?: string;\n private jwt?: string;\n private userID?: string;\n private maestroEventViewModel: MaestroEventViewModel | null = null;\n\n private constructor(renderer: IRenderer) {\n this.renderer = renderer;\n }\n\n async userDidStartWatchingEvent(\n eventID: string,\n delegate: IMaestroEventDelegate\n ): Promise<IMaestroEvent> {\n if (!this.isAuthorizedClient) {\n throw new Error('Unauthorized use of SDK');\n }\n\n this.maestroEventViewModel = new MaestroEventViewModel(eventID, delegate);\n return this.maestroEventViewModel;\n }\n\n userDidStopWatchingEvent(eventId: string): void {\n console.log('stop watching event', eventId);\n if (this.maestroEventViewModel) {\n this.maestroEventViewModel.deinit();\n this.maestroEventViewModel = null;\n }\n }\n\n authenticateUser(_: string, __: string): Promise<void> {\n throw new Error('Method not implemented');\n }\n\n deauthenticateUser(): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n /**\n * @description Returns the MaestroWebSDK instance\n * @returns {MaestroWebSDK} - The MaestroWebSDK instance\n */\n public static getInstance() {\n if (!MaestroWebSDK.instance) {\n const renderer = new ReactRenderer();\n MaestroWebSDK.instance = new MaestroWebSDK(renderer);\n }\n return MaestroWebSDK.instance;\n }\n\n configure(configParams: SDKConfigParams) {\n if (configParams.siteID) {\n this.setSiteID(configParams.siteID);\n }\n\n if (configParams.jwt) {\n this.setJwt(configParams.jwt);\n }\n\n console.info('MaestroWebSDK configured', configParams);\n }\n\n /**\n * Checks if this is an authorized client based on siteID\n */\n public get isAuthorizedClient(): boolean {\n const siteID = this.getSiteID();\n return Boolean(siteID && AUTHORIZED_CLIENTS.includes(siteID));\n }\n\n /**\n * Sets the site ID for the SDK\n * @param siteID The site ID to set\n */\n public setSiteID(siteID?: string) {\n this.siteID = siteID;\n }\n\n public getSiteID() {\n return this.siteID;\n }\n\n /**\n * Sets the JWT token for authentication\n * @param jwt The JWT token to set\n */\n public setJwt(jwt: string): void {\n this.jwt = jwt;\n }\n\n public getJwt(): string | undefined {\n return this.jwt;\n }\n\n /**\n * Sets the user ID for the SDK\n * @param userID The user ID to set\n */\n public setUserID(userID: string): void {\n this.userID = userID;\n }\n\n public getUserID(): string | undefined {\n return this.userID;\n }\n\n /**\n * Gets the event view model\n * @returns The current event view model\n */\n public getMaestroEventViewModel(): MaestroEventViewModel {\n if (!this.maestroEventViewModel) {\n throw new Error('No Maestro Event View Model set');\n }\n\n return this.maestroEventViewModel;\n }\n\n async renderPanel(id: string) {\n if (!this.renderer.viewModels) {\n if (!this.maestroEventViewModel) {\n throw new Error('No Maestro Event View Model set.');\n }\n let eventId = 'default-event-id';\n if (id) {\n eventId = id;\n }\n await this.renderer.setViewModels(\n eventId,\n this.maestroEventViewModel.delegate\n );\n }\n return this.renderer.renderPanel(id);\n }\n}\n\nconst SDK = MaestroWebSDK.getInstance();\nexport default SDK;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__9__;","export const MaestroPanelType = {\n KEY_PLAYS: 'keyPlays',\n STATS: 'stats',\n FANTASY: 'fantasy',\n BETS: 'bets',\n} as const;\n\nexport type MaestroPanelType =\n (typeof MaestroPanelType)[keyof typeof MaestroPanelType];\n\nexport interface PanelTypeInfo {\n id: MaestroPanelType;\n name: string;\n imageNamePrefix: string;\n usesSectionHeaders: boolean;\n iconName: string;\n}\n\n// The mapping information for each panel type\nexport const PANEL_TYPE_INFO: Record<MaestroPanelType, PanelTypeInfo> = {\n [MaestroPanelType.KEY_PLAYS]: {\n id: MaestroPanelType.KEY_PLAYS,\n name: 'Key Plays',\n imageNamePrefix: 'Key-Plays',\n usesSectionHeaders: true,\n iconName: 'keyPlays' as string,\n },\n [MaestroPanelType.STATS]: {\n id: MaestroPanelType.STATS,\n name: 'Stats',\n imageNamePrefix: 'Stats',\n usesSectionHeaders: false,\n iconName: 'stats' as string,\n },\n [MaestroPanelType.FANTASY]: {\n id: MaestroPanelType.FANTASY,\n name: 'Fantasy',\n imageNamePrefix: 'Fantasy',\n usesSectionHeaders: false,\n iconName: 'fantasy' as string,\n },\n [MaestroPanelType.BETS]: {\n id: MaestroPanelType.BETS,\n name: 'Bets',\n imageNamePrefix: 'Bets',\n usesSectionHeaders: false,\n iconName: 'bets' as string,\n },\n};\n\n// Helper methods similar to Swift extension methods\nexport const getPanelName = (panelType: MaestroPanelType): string => {\n return PANEL_TYPE_INFO[panelType].name;\n};\n\nexport const getImageNamePrefix = (panelType: MaestroPanelType): string => {\n return PANEL_TYPE_INFO[panelType].imageNamePrefix;\n};\n\nexport const usesSectionHeaders = (panelType: MaestroPanelType): boolean => {\n return PANEL_TYPE_INFO[panelType].usesSectionHeaders;\n};\n\nexport const getIconName = (panelType: MaestroPanelType): string => {\n return PANEL_TYPE_INFO[panelType].iconName;\n};\n\nexport const getAllPanelTypes = (): MaestroPanelType[] => {\n return Object.values(MaestroPanelType);\n};\n","import { Observable } from '../helpers/Observable';\nimport { MaestroPanelType } from '../models/IPanel';\n\nexport class PanelManagerViewModel {\n private _panels = new Observable<MaestroPanelType[]>([\n MaestroPanelType.KEY_PLAYS,\n MaestroPanelType.STATS,\n MaestroPanelType.FANTASY,\n MaestroPanelType.BETS,\n ]);\n\n private _currentPanel = new Observable<MaestroPanelType>(\n MaestroPanelType.KEY_PLAYS\n );\n private _newlyFocusedPanel = new Observable<MaestroPanelType | null>(null);\n\n // Getter for panels\n get panels(): MaestroPanelType[] {\n return this._panels.value;\n }\n\n // Getter for panels observable\n get panelsObservable(): Observable<MaestroPanelType[]> {\n return this._panels;\n }\n\n // Getter for currentPanel\n get currentPanel(): MaestroPanelType {\n return this._currentPanel.value;\n }\n\n // Setter for currentPanel\n set currentPanel(value: MaestroPanelType) {\n this._currentPanel.value = value;\n }\n\n // Getter for currentPanel as Observable\n get currentPanelObservable(): Observable<MaestroPanelType> {\n return this._currentPanel;\n }\n\n // Getter for newlyFocusedPanel\n get newlyFocusedPanel(): MaestroPanelType | null {\n return this._newlyFocusedPanel.value;\n }\n\n // Setter for newlyFocusedPanel\n set newlyFocusedPanel(value: MaestroPanelType | null) {\n this._newlyFocusedPanel.value = value;\n }\n\n // Get the index of a specific panel type\n getIndex(forPanelType: MaestroPanelType): number | null {\n const index = this.panels.findIndex((p) => p === forPanelType);\n return index !== -1 ? index : null;\n }\n\n // Get the panel type at a specific index\n getPanelType(atIndex: number): MaestroPanelType | null {\n return this.panels[atIndex] || null;\n }\n\n // Computed property for panel to the left\n get panelTypeToLeft(): MaestroPanelType | null {\n const currentIndex = this.getIndex(this.currentPanel);\n if (currentIndex === null || currentIndex === 0) return null;\n return this.getPanelType(currentIndex - 1);\n }\n\n // Computed property for panel to the right\n get panelTypeToRight(): MaestroPanelType | null {\n const currentIndex = this.getIndex(this.currentPanel);\n if (currentIndex === null || currentIndex === this.panels.length - 1)\n return null;\n return this.getPanelType(currentIndex + 1);\n }\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* Warning: Do not play with :root */\\n.sdk-wrapper {\\n font-family: Arial, Helvetica, sans-serif;\\n color: var(--sdk-text100);\\n}\\n\\n.T01 {\\n font-size: 1.125rem;\\n font-weight: normal;\\n line-height: 1.5rem;\\n}\\n\\n.T02 {\\n font-size: 1.125rem;\\n font-weight: bold;\\n line-height: 1.5rem;\\n}\\n\\n.T05_ALT {\\n font-size: 1.313rem;\\n font-weight: bold;\\n line-height: 1.75rem;\\n}\\n\\n.T10 {\\n font-size: 1.438rem;\\n font-weight: bold;\\n line-height: 2rem;\\n}\\n\\n.T20 {\\n font-size: 1.688rem;\\n font-weight: 500;\\n line-height: 2.25rem;\\n}\\n\\n.T30 {\\n font-size: 1.813rem;\\n font-weight: bold;\\n line-height: 2.25rem;\\n}\\n\\n.T70 {\\n font-size: 3rem;\\n font-weight: 900;\\n line-height: 3.5rem;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/core/App/App.styles.css\"],\"names\":[],\"mappings\":\"AAAA,oCAAoC;AACpC;EACE,yCAAyC;EACzC,yBAAyB;AAC3B;;AAEA;EACE,mBAAmB;EACnB,mBAAmB;EACnB,mBAAmB;AACrB;;AAEA;EACE,mBAAmB;EACnB,iBAAiB;EACjB,mBAAmB;AACrB;;AAEA;EACE,mBAAmB;EACnB,iBAAiB;EACjB,oBAAoB;AACtB;;AAEA;EACE,mBAAmB;EACnB,iBAAiB;EACjB,iBAAiB;AACnB;;AAEA;EACE,mBAAmB;EACnB,gBAAgB;EAChB,oBAAoB;AACtB;;AAEA;EACE,mBAAmB;EACnB,iBAAiB;EACjB,oBAAoB;AACtB;;AAEA;EACE,eAAe;EACf,gBAAgB;EAChB,mBAAmB;AACrB\",\"sourcesContent\":[\"/* Warning: Do not play with :root */\\n.sdk-wrapper {\\n font-family: Arial, Helvetica, sans-serif;\\n color: var(--sdk-text100);\\n}\\n\\n.T01 {\\n font-size: 1.125rem;\\n font-weight: normal;\\n line-height: 1.5rem;\\n}\\n\\n.T02 {\\n font-size: 1.125rem;\\n font-weight: bold;\\n line-height: 1.5rem;\\n}\\n\\n.T05_ALT {\\n font-size: 1.313rem;\\n font-weight: bold;\\n line-height: 1.75rem;\\n}\\n\\n.T10 {\\n font-size: 1.438rem;\\n font-weight: bold;\\n line-height: 2rem;\\n}\\n\\n.T20 {\\n font-size: 1.688rem;\\n font-weight: 500;\\n line-height: 2.25rem;\\n}\\n\\n.T30 {\\n font-size: 1.813rem;\\n font-weight: bold;\\n line-height: 2.25rem;\\n}\\n\\n.T70 {\\n font-size: 3rem;\\n font-weight: 900;\\n line-height: 3.5rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sdk--panel-manager {\\n padding: 3.75rem;\\n padding-left: 3rem;\\n padding-bottom: 0;\\n\\n display: flex;\\n flex-direction: column;\\n gap: 3.75rem;\\n}\\n\\n.sdk--panel-manager .panel-coming-soon {\\n display: flex;\\n justify-content: center;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/core/PanelManager/PanelManager.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,gBAAgB;EAChB,kBAAkB;EAClB,iBAAiB;;EAEjB,aAAa;EACb,sBAAsB;EACtB,YAAY;AACd;;AAEA;EACE,aAAa;EACb,uBAAuB;AACzB\",\"sourcesContent\":[\".sdk--panel-manager {\\n padding: 3.75rem;\\n padding-left: 3rem;\\n padding-bottom: 0;\\n\\n display: flex;\\n flex-direction: column;\\n gap: 3.75rem;\\n}\\n\\n.sdk--panel-manager .panel-coming-soon {\\n display: flex;\\n justify-content: center;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".key-plays-view {\\n display: flex;\\n flex-direction: column;\\n gap: 1rem;\\n overflow-y: auto;\\n max-height: calc(100vh - 86px - 3.75rem - 3.75rem);\\n scrollbar-width: none;\\n scroll-behavior: smooth;\\n overscroll-behavior: contain;\\n}\\n\\n.key-plays-view .key-plays-section:last-child {\\n margin-bottom: 4rem;\\n} \\n\\n.key-plays-view::-webkit-scrollbar {\\n display: none;\\n}\\n\\n.key-plays-section {\\n display: flex;\\n flex-direction: column;\\n gap: 1rem;\\n position: relative;\\n}\\n\\n/* Sticky section title using CSS position: sticky */\\n.key-plays-section-title {\\n position: sticky;\\n top: 0;\\n z-index: 1;\\n margin: 0;\\n}\\n\\n.key-plays-section-items {\\n display: flex;\\n flex-direction: column;\\n gap: 20px;\\n}\\n\\n.key-plays-section:last-of-type {\\n margin-bottom: 0;\\n}\\n\\n.key-plays-bottom-padding {\\n height: calc(\\n 100vh - 240px\\n );\\n min-height: 400px;\\n width: 100%;\\n}\\n\\n.key-play-card {\\n display: flex;\\n flex-direction: column;\\n border-radius: 0.625rem;\\n background-color: var(--sdk-surface2);\\n contain: content;\\n border: 3px solid transparent;\\n transition: border-color 0.2s ease-in-out;\\n}\\n\\n.key-play-card[data-focused='true'] {\\n border-color: var(--sdk-highlightPrimary);\\n}\\n\\n.key-play-card-content {\\n display: grid;\\n grid-template-columns: 1fr 2fr;\\n}\\n\\n.key-play-card-content .cardImage {\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n}\\n\\n.key-play-card-content .text-content {\\n padding: 2.75rem 2.25rem 2.75rem 1.5rem;\\n align-items: center;\\n display: flex;\\n}\\n\\n.key-play-card-content .multi-line {\\n display: -webkit-box;\\n -webkit-box-orient: vertical;\\n -webkit-line-clamp: 3;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.key-play-card progress {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n width: 100%;\\n height: 8px;\\n border-radius: 15px;\\n background-color: var(--sdk-surface6);\\n box-shadow: 0px 1px 3px 0px #10111366 inset;\\n overflow: hidden;\\n border-radius: 0;\\n}\\n\\n.key-play-card progress::-webkit-progress-bar,\\n.key-play-card progress::-moz-progress-bar {\\n background-color: var(--sdk-surface6);\\n}\\n\\n.key-play-card progress::-webkit-progress-value {\\n background-color: var(--sdk-highlightPrimary);\\n}\\n\\n.key-play-card .score {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n padding: 10px;\\n gap: 4rem;\\n background-color: var(--sdk-surface4);\\n}\\n\\n.key-play-card .score-team {\\n display: flex;\\n align-items: center;\\n gap: 1rem;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/key-plays/view/KeyPlaysView.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,aAAa;EACb,sBAAsB;EACtB,SAAS;EACT,gBAAgB;EAChB,kDAAkD;EAClD,qBAAqB;EACrB,uBAAuB;EACvB,4BAA4B;AAC9B;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,SAAS;EACT,kBAAkB;AACpB;;AAEA,oDAAoD;AACpD;EACE,gBAAgB;EAChB,MAAM;EACN,UAAU;EACV,SAAS;AACX;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,SAAS;AACX;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE;;GAEC;EACD,iBAAiB;EACjB,WAAW;AACb;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,uBAAuB;EACvB,qCAAqC;EACrC,gBAAgB;EAChB,6BAA6B;EAC7B,yCAAyC;AAC3C;;AAEA;EACE,yCAAyC;AAC3C;;AAEA;EACE,aAAa;EACb,8BAA8B;AAChC;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,iBAAiB;AACnB;;AAEA;EACE,uCAAuC;EACvC,mBAAmB;EACnB,aAAa;AACf;;AAEA;EACE,oBAAoB;EACpB,4BAA4B;EAC5B,qBAAqB;EACrB,gBAAgB;EAChB,uBAAuB;AACzB;;AAEA;EACE,wBAAwB;EACxB,qBAAqB;EACrB,gBAAgB;EAChB,WAAW;EACX,WAAW;EACX,mBAAmB;EACnB,qCAAqC;EACrC,2CAA2C;EAC3C,gBAAgB;EAChB,gBAAgB;AAClB;;AAEA;;EAEE,qCAAqC;AACvC;;AAEA;EACE,6CAA6C;AAC/C;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,aAAa;EACb,SAAS;EACT,qCAAqC;AACvC;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,SAAS;AACX\",\"sourcesContent\":[\".key-plays-view {\\n display: flex;\\n flex-direction: column;\\n gap: 1rem;\\n overflow-y: auto;\\n max-height: calc(100vh - 86px - 3.75rem - 3.75rem);\\n scrollbar-width: none;\\n scroll-behavior: smooth;\\n overscroll-behavior: contain;\\n}\\n\\n.key-plays-view .key-plays-section:last-child {\\n margin-bottom: 4rem;\\n} \\n\\n.key-plays-view::-webkit-scrollbar {\\n display: none;\\n}\\n\\n.key-plays-section {\\n display: flex;\\n flex-direction: column;\\n gap: 1rem;\\n position: relative;\\n}\\n\\n/* Sticky section title using CSS position: sticky */\\n.key-plays-section-title {\\n position: sticky;\\n top: 0;\\n z-index: 1;\\n margin: 0;\\n}\\n\\n.key-plays-section-items {\\n display: flex;\\n flex-direction: column;\\n gap: 20px;\\n}\\n\\n.key-plays-section:last-of-type {\\n margin-bottom: 0;\\n}\\n\\n.key-plays-bottom-padding {\\n height: calc(\\n 100vh - 240px\\n );\\n min-height: 400px;\\n width: 100%;\\n}\\n\\n.key-play-card {\\n display: flex;\\n flex-direction: column;\\n border-radius: 0.625rem;\\n background-color: var(--sdk-surface2);\\n contain: content;\\n border: 3px solid transparent;\\n transition: border-color 0.2s ease-in-out;\\n}\\n\\n.key-play-card[data-focused='true'] {\\n border-color: var(--sdk-highlightPrimary);\\n}\\n\\n.key-play-card-content {\\n display: grid;\\n grid-template-columns: 1fr 2fr;\\n}\\n\\n.key-play-card-content .cardImage {\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n}\\n\\n.key-play-card-content .text-content {\\n padding: 2.75rem 2.25rem 2.75rem 1.5rem;\\n align-items: center;\\n display: flex;\\n}\\n\\n.key-play-card-content .multi-line {\\n display: -webkit-box;\\n -webkit-box-orient: vertical;\\n -webkit-line-clamp: 3;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n}\\n\\n.key-play-card progress {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n width: 100%;\\n height: 8px;\\n border-radius: 15px;\\n background-color: var(--sdk-surface6);\\n box-shadow: 0px 1px 3px 0px #10111366 inset;\\n overflow: hidden;\\n border-radius: 0;\\n}\\n\\n.key-play-card progress::-webkit-progress-bar,\\n.key-play-card progress::-moz-progress-bar {\\n background-color: var(--sdk-surface6);\\n}\\n\\n.key-play-card progress::-webkit-progress-value {\\n background-color: var(--sdk-highlightPrimary);\\n}\\n\\n.key-play-card .score {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n padding: 10px;\\n gap: 4rem;\\n background-color: var(--sdk-surface4);\\n}\\n\\n.key-play-card .score-team {\\n display: flex;\\n align-items: center;\\n gap: 1rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".scrollable-gradient {\\n position: relative;\\n}\\n\\n\\n.scrollable-gradient::before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n height: 3.625rem; /* Height of the top gradient */\\n z-index: 0;\\n transition: z-index 0.3s ease;\\n}\\n\\n.scroll-container-scrolled::before {\\n z-index: 1;\\n background: linear-gradient(0deg, #080a0c00 0%, var(--sdk-surface1) 100%);\\n}\\n\\n.scrollable-gradient::after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n height: 6rem; /* Height of the bottom gradient */\\n background: linear-gradient(180deg, #080a0c00 0%, var(--sdk-surface1) 100%);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/molecules/ScrollableGradient/ScrollableGradient.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,kBAAkB;AACpB;;;AAGA;EACE,WAAW;EACX,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,MAAM;EACN,gBAAgB,EAAE,+BAA+B;EACjD,UAAU;EACV,6BAA6B;AAC/B;;AAEA;EACE,UAAU;EACV,yEAAyE;AAC3E;;AAEA;EACE,WAAW;EACX,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,SAAS;EACT,YAAY,EAAE,kCAAkC;EAChD,2EAA2E;AAC7E\",\"sourcesContent\":[\".scrollable-gradient {\\n position: relative;\\n}\\n\\n\\n.scrollable-gradient::before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n height: 3.625rem; /* Height of the top gradient */\\n z-index: 0;\\n transition: z-index 0.3s ease;\\n}\\n\\n.scroll-container-scrolled::before {\\n z-index: 1;\\n background: linear-gradient(0deg, #080a0c00 0%, var(--sdk-surface1) 100%);\\n}\\n\\n.scrollable-gradient::after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n height: 6rem; /* Height of the bottom gradient */\\n background: linear-gradient(180deg, #080a0c00 0%, var(--sdk-surface1) 100%);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".key-play-card {\\n display: flex;\\n flex-direction: column;\\n border-radius: 0.625rem;\\n background-color: var(--sdk-surface2);\\n contain: content;\\n border: 0.188rem solid transparent;\\n transition: border-color 0.2s ease-in-out;\\n position: relative;\\n}\\n\\n.key-play-card[data-focused=true] {\\n border-color: var(--sdk-highlightPrimary);\\n}\\n\\n.key-play-card-content {\\n display: grid;\\n grid-template-columns: 1fr 2fr;\\n}\\n\\n.key-play-card-content .cardImage {\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n}\\n\\n.key-play-card-content .text-content {\\n padding: 2.75rem 2.25rem 2.75rem 1.5rem;\\n align-items: center;\\n display: flex;\\n}\\n\\n.key-play-card-content .multi-line {\\n display: -webkit-box; /* This sets up the box for the flex behavior */\\n -webkit-box-orient: vertical; /* Defines the orientation of the box's children (vertical for lines) */\\n -webkit-line-clamp: 3; /* Limit the content to 3 lines */\\n overflow: hidden; /* Hide any overflow text */\\n text-overflow: ellipsis; /* Add an ellipsis at the end of the last visible line */\\n}\\n\\n.key-play-card progress {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n width: 100%;\\n height: 8px;\\n border-radius: 15px;\\n background-color: var(--sdk-surface6);\\n box-shadow: 0px 1px 3px 0px #10111366 inset;\\n overflow: hidden;\\n border-radius: 0;\\n position: absolute;\\n bottom: 0;\\n}\\n\\n.key-play-card progress::-webkit-progress-bar, .key-play-card progress::-moz-progress-bar {\\n background-color: var(--sdk-surface6);\\n}\\n\\n.key-play-card progress::-webkit-progress-value {\\n background-color: var(--sdk-highlightPrimary);\\n}\\n\\n.key-play-card .score {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n padding: 10px;\\n gap: 4rem;\\n background-color: var(--sdk-surface4);\\n}\\n\\n.key-play-card .score-team {\\n display: flex;\\n align-items: center;\\n gap: 1rem;\\n}\\n\\n.key-play-card .error-state {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n background-color: var(--sdk-surface2);\\n gap: 1rem;\\n}\\n\\n.key-play-card .error-state path {\\n fill: var(--sdk-alertWarning);\\n}\\n\\n.key-play-card .non-recent-error-state {\\n position: absolute;\\n top: 1.125rem;\\n right: 1.125rem;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/key-plays/view/KeyPlayCardView.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,aAAa;EACb,sBAAsB;EACtB,uBAAuB;EACvB,qCAAqC;EACrC,gBAAgB;EAChB,kCAAkC;EAClC,yCAAyC;EACzC,kBAAkB;AACpB;;AAEA;EACE,yCAAyC;AAC3C;;AAEA;EACE,aAAa;EACb,8BAA8B;AAChC;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,iBAAiB;AACnB;;AAEA;EACE,uCAAuC;EACvC,mBAAmB;EACnB,aAAa;AACf;;AAEA;EACE,oBAAoB,EAAE,+CAA+C;EACrE,4BAA4B,EAAE,uEAAuE;EACrG,qBAAqB,EAAE,iCAAiC;EACxD,gBAAgB,EAAE,2BAA2B;EAC7C,uBAAuB,EAAE,wDAAwD;AACnF;;AAEA;EACE,wBAAwB;EACxB,qBAAqB;EACrB,gBAAgB;EAChB,WAAW;EACX,WAAW;EACX,mBAAmB;EACnB,qCAAqC;EACrC,2CAA2C;EAC3C,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,SAAS;AACX;;AAEA;EACE,qCAAqC;AACvC;;AAEA;EACE,6CAA6C;AAC/C;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,aAAa;EACb,SAAS;EACT,qCAAqC;AACvC;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,SAAS;AACX;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,aAAa;EACb,uBAAuB;EACvB,mBAAmB;EACnB,qCAAqC;EACrC,SAAS;AACX;;AAEA;EACE,6BAA6B;AAC/B;;AAEA;EACE,kBAAkB;EAClB,aAAa;EACb,eAAe;AACjB\",\"sourcesContent\":[\".key-play-card {\\n display: flex;\\n flex-direction: column;\\n border-radius: 0.625rem;\\n background-color: var(--sdk-surface2);\\n contain: content;\\n border: 0.188rem solid transparent;\\n transition: border-color 0.2s ease-in-out;\\n position: relative;\\n}\\n\\n.key-play-card[data-focused=true] {\\n border-color: var(--sdk-highlightPrimary);\\n}\\n\\n.key-play-card-content {\\n display: grid;\\n grid-template-columns: 1fr 2fr;\\n}\\n\\n.key-play-card-content .cardImage {\\n width: 100%;\\n height: 100%;\\n object-fit: cover;\\n}\\n\\n.key-play-card-content .text-content {\\n padding: 2.75rem 2.25rem 2.75rem 1.5rem;\\n align-items: center;\\n display: flex;\\n}\\n\\n.key-play-card-content .multi-line {\\n display: -webkit-box; /* This sets up the box for the flex behavior */\\n -webkit-box-orient: vertical; /* Defines the orientation of the box's children (vertical for lines) */\\n -webkit-line-clamp: 3; /* Limit the content to 3 lines */\\n overflow: hidden; /* Hide any overflow text */\\n text-overflow: ellipsis; /* Add an ellipsis at the end of the last visible line */\\n}\\n\\n.key-play-card progress {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n width: 100%;\\n height: 8px;\\n border-radius: 15px;\\n background-color: var(--sdk-surface6);\\n box-shadow: 0px 1px 3px 0px #10111366 inset;\\n overflow: hidden;\\n border-radius: 0;\\n position: absolute;\\n bottom: 0;\\n}\\n\\n.key-play-card progress::-webkit-progress-bar, .key-play-card progress::-moz-progress-bar {\\n background-color: var(--sdk-surface6);\\n}\\n\\n.key-play-card progress::-webkit-progress-value {\\n background-color: var(--sdk-highlightPrimary);\\n}\\n\\n.key-play-card .score {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n padding: 10px;\\n gap: 4rem;\\n background-color: var(--sdk-surface4);\\n}\\n\\n.key-play-card .score-team {\\n display: flex;\\n align-items: center;\\n gap: 1rem;\\n}\\n\\n.key-play-card .error-state {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n background-color: var(--sdk-surface2);\\n gap: 1rem;\\n}\\n\\n.key-play-card .error-state path {\\n fill: var(--sdk-alertWarning);\\n}\\n\\n.key-play-card .non-recent-error-state {\\n position: absolute;\\n top: 1.125rem;\\n right: 1.125rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sdk--key-play-error-state-unsupportedEvent {\\n padding: 2.25rem 1.5rem 0 1.5rem;\\n display: flex;\\n flex-direction: column;\\n gap: 1rem;\\n}\\n.sdk--key-play-error-state-unsupportedEvent::after {\\n background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(255, 255, 255, 0.08) 100%);\\n}\\n\\n.sdk--key-play-error-state-unsupportedEvent h3 {\\n margin: 0;\\n}\\n\\n.sdk--key-play-error-state-unsupportedEvent p {\\n margin: 0;\\n color: var(--sdk-text200);\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent {\\n overflow-y: hidden;\\n max-height: calc(100vh - 86px - 3.75rem - 3.75rem);\\n padding: 2.25rem 1.5rem 0 1.5rem;\\n scrollbar-width: none;\\n display: flex;\\n flex-direction: column;\\n gap: 6.25rem;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent h3 {\\n margin: 0;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent p {\\n margin: 0;\\n color: var(--sdk-text200);\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .main-content {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n gap: 1rem;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .unpopulatedEvent-examples {\\n display: flex;\\n flex-direction: column;\\n gap: 1rem;\\n position: relative;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .unpopulatedEvent-examples::after {\\n content: '';\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n bottom: 0;\\n background: linear-gradient(0deg, #000000 0%, rgba(0, 0, 0, 0) 92.2%);\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .unpopulatedEvent-examples .example {\\n display: flex;\\n gap: 1rem;\\n padding: 1.75rem 1.5rem;\\n border-radius: 0.625rem;\\n background-color: var(--sdk-surface3);\\n height: 8rem;\\n}\\n\\n.sdk--key-play-error-state-tabLoadFailure {\\n display: flex;\\n flex-direction: column;\\n gap: 1rem;\\n border-radius: 0.625rem;\\n border: 0.188rem solid transparent;\\n transition: border-color 0.2s ease-in-out;\\n padding: 1.5rem;\\n background-color: var(--sdk-surface4);\\n}\\n\\n.sdk--key-play-error-state-tabLoadFailure h3 {\\n margin: 0;\\n}\\n\\n.sdk--key-play-error-state-tabLoadFailure p {\\n margin: 0;\\n height: 5.375rem;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/key-plays/view/KeyPlayErrorStateView.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,gCAAgC;EAChC,aAAa;EACb,sBAAsB;EACtB,SAAS;AACX;AACA;EACE,wFAAwF;AAC1F;;AAEA;EACE,SAAS;AACX;;AAEA;EACE,SAAS;EACT,yBAAyB;AAC3B;;AAEA;EACE,kBAAkB;EAClB,kDAAkD;EAClD,gCAAgC;EAChC,qBAAqB;EACrB,aAAa;EACb,sBAAsB;EACtB,YAAY;AACd;;AAEA;EACE,SAAS;AACX;;AAEA;EACE,SAAS;EACT,yBAAyB;AAC3B;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,mBAAmB;EACnB,uBAAuB;EACvB,SAAS;AACX;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,SAAS;EACT,kBAAkB;AACpB;;AAEA;EACE,WAAW;EACX,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,SAAS;EACT,qEAAqE;AACvE;;AAEA;EACE,aAAa;EACb,SAAS;EACT,uBAAuB;EACvB,uBAAuB;EACvB,qCAAqC;EACrC,YAAY;AACd;;AAEA;EACE,aAAa;EACb,sBAAsB;EACtB,SAAS;EACT,uBAAuB;EACvB,kCAAkC;EAClC,yCAAyC;EACzC,eAAe;EACf,qCAAqC;AACvC;;AAEA;EACE,SAAS;AACX;;AAEA;EACE,SAAS;EACT,gBAAgB;AAClB\",\"sourcesContent\":[\".sdk--key-play-error-state-unsupportedEvent {\\n padding: 2.25rem 1.5rem 0 1.5rem;\\n display: flex;\\n flex-direction: column;\\n gap: 1rem;\\n}\\n.sdk--key-play-error-state-unsupportedEvent::after {\\n background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(255, 255, 255, 0.08) 100%);\\n}\\n\\n.sdk--key-play-error-state-unsupportedEvent h3 {\\n margin: 0;\\n}\\n\\n.sdk--key-play-error-state-unsupportedEvent p {\\n margin: 0;\\n color: var(--sdk-text200);\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent {\\n overflow-y: hidden;\\n max-height: calc(100vh - 86px - 3.75rem - 3.75rem);\\n padding: 2.25rem 1.5rem 0 1.5rem;\\n scrollbar-width: none;\\n display: flex;\\n flex-direction: column;\\n gap: 6.25rem;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent h3 {\\n margin: 0;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent p {\\n margin: 0;\\n color: var(--sdk-text200);\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .main-content {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n gap: 1rem;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .unpopulatedEvent-examples {\\n display: flex;\\n flex-direction: column;\\n gap: 1rem;\\n position: relative;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .unpopulatedEvent-examples::after {\\n content: '';\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n bottom: 0;\\n background: linear-gradient(0deg, #000000 0%, rgba(0, 0, 0, 0) 92.2%);\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .unpopulatedEvent-examples .example {\\n display: flex;\\n gap: 1rem;\\n padding: 1.75rem 1.5rem;\\n border-radius: 0.625rem;\\n background-color: var(--sdk-surface3);\\n height: 8rem;\\n}\\n\\n.sdk--key-play-error-state-tabLoadFailure {\\n display: flex;\\n flex-direction: column;\\n gap: 1rem;\\n border-radius: 0.625rem;\\n border: 0.188rem solid transparent;\\n transition: border-color 0.2s ease-in-out;\\n padding: 1.5rem;\\n background-color: var(--sdk-surface4);\\n}\\n\\n.sdk--key-play-error-state-tabLoadFailure h3 {\\n margin: 0;\\n}\\n\\n.sdk--key-play-error-state-tabLoadFailure p {\\n margin: 0;\\n height: 5.375rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".action-button {\\n padding: 23px 0;\\n background-color: var(--sdk-accentSecondary);\\n color: var(--sdk-text100);\\n}\\n\\n.action-button:hover, .action-button[data-focused=true] {\\n background-color: var(--sdk-accentPrimary);\\n color: var(--sdk-text500);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/molecules/ActionButton/ActionButton.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,eAAe;EACf,4CAA4C;EAC5C,yBAAyB;AAC3B;;AAEA;EACE,0CAA0C;EAC1C,yBAAyB;AAC3B\",\"sourcesContent\":[\".action-button {\\n padding: 23px 0;\\n background-color: var(--sdk-accentSecondary);\\n color: var(--sdk-text100);\\n}\\n\\n.action-button:hover, .action-button[data-focused=true] {\\n background-color: var(--sdk-accentPrimary);\\n color: var(--sdk-text500);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".panel-navigation {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n gap: 0.75rem;\\n overflow-x: auto;\\n scrollbar-width: none;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/organisms/PanelNavigation/PanelNavigation.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,aAAa;EACb,mBAAmB;EACnB,mBAAmB;EACnB,YAAY;EACZ,gBAAgB;EAChB,qBAAqB;AACvB\",\"sourcesContent\":[\".panel-navigation {\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n gap: 0.75rem;\\n overflow-x: auto;\\n scrollbar-width: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".panel-nav-button-container {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n gap: 0.625rem;\\n color: var(--sdk-text300);\\n flex: 1;\\n\\n}\\n\\n.panel-nav-button-container path {\\n fill: var(--sdk-highlightSecondary);\\n}\\n\\n.panel-nav-button-container button {\\n padding: 8px 0;\\n background-color: var(--sdk-surface3);\\n min-width: 6.5rem;\\n\\n transition: background-color 0.2s ease-in-out, color 0.3s ease-in-out;\\n}\\n\\n.panel-nav-button-container[data-focused=true], .panel-nav-button-container:hover, .panel-nav-button-active {\\n color: var(--sdk-text100);\\n}\\n\\n.panel-nav-button-container[data-focused=true] path, .panel-nav-button-container:hover path {\\n fill: var(--sdk-highlightTertiary);\\n}\\n\\n.panel-nav-button-container[data-focused=true] button, .panel-nav-button-container:hover button {\\n background-color: var(--sdk-accentPrimary);\\n}\\n\\n.panel-nav-button-active button {\\n background-color: var(--sdk-surface5);\\n}\\n\\n.panel-nav-button-active path {\\n fill: var(--sdk-highlightPrimary);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/molecules/PanelNavButton/PanelNavButton.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,aAAa;EACb,sBAAsB;EACtB,mBAAmB;EACnB,aAAa;EACb,yBAAyB;EACzB,OAAO;;AAET;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,cAAc;EACd,qCAAqC;EACrC,iBAAiB;;EAEjB,qEAAqE;AACvE;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,kCAAkC;AACpC;;AAEA;EACE,0CAA0C;AAC5C;;AAEA;EACE,qCAAqC;AACvC;;AAEA;EACE,iCAAiC;AACnC\",\"sourcesContent\":[\".panel-nav-button-container {\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n gap: 0.625rem;\\n color: var(--sdk-text300);\\n flex: 1;\\n\\n}\\n\\n.panel-nav-button-container path {\\n fill: var(--sdk-highlightSecondary);\\n}\\n\\n.panel-nav-button-container button {\\n padding: 8px 0;\\n background-color: var(--sdk-surface3);\\n min-width: 6.5rem;\\n\\n transition: background-color 0.2s ease-in-out, color 0.3s ease-in-out;\\n}\\n\\n.panel-nav-button-container[data-focused=true], .panel-nav-button-container:hover, .panel-nav-button-active {\\n color: var(--sdk-text100);\\n}\\n\\n.panel-nav-button-container[data-focused=true] path, .panel-nav-button-container:hover path {\\n fill: var(--sdk-highlightTertiary);\\n}\\n\\n.panel-nav-button-container[data-focused=true] button, .panel-nav-button-container:hover button {\\n background-color: var(--sdk-accentPrimary);\\n}\\n\\n.panel-nav-button-active button {\\n background-color: var(--sdk-surface5);\\n}\\n\\n.panel-nav-button-active path {\\n fill: var(--sdk-highlightPrimary);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/* eslint-disable react/no-find-dom-node */\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { Component, createElement } from 'react';\nimport SpatialNavigation, { ROOT_FOCUS_KEY } from './spatialNavigation';\nimport { Direction, Layout } from './utils';\n\ninterface WithFocusableConfig {\n forgetLastFocusedChild?: boolean;\n trackChildren?: boolean;\n autoRestoreFocus?: boolean;\n blockNavigationOut?: boolean;\n}\n\nexport interface WithFocusableProps {\n focused?: boolean;\n focusKey?: string;\n parentFocusKey?: string;\n preferredChildFocusKey?: string;\n forgetLastFocusedChild?: boolean;\n trackChildren?: boolean;\n autoRestoreFocus?: boolean;\n blockNavigationOut?: boolean;\n focusable?: boolean;\n onEnterPress?: (\n props: any,\n details: { pressedKeys: Record<string, number> }\n ) => void;\n onEnterRelease?: (props: any) => void;\n onArrowPress?: (\n direction: Direction,\n props: any,\n details: { pressedKeys: Record<string, number> }\n ) => boolean | void;\n onBecameFocused?: (layout: Layout, props: any, details: any) => void;\n onBecameBlurred?: (layout: Layout, props: any, details: any) => void;\n}\n\nexport interface WithFocusableState {\n realFocusKey: string;\n focused: boolean;\n hasFocusedChild: boolean;\n parentFocusKey: string;\n}\n\n// Helper functions to replace lodash and recompose\nconst uniqueId = (prefix: string): string =>\n `${prefix}${Math.random().toString(36).substr(2, 9)}`;\n\nconst noop = () => {};\n\nconst omit = <T extends Record<string, any>>(\n obj: T,\n keys: string[]\n): Partial<T> => {\n const result = { ...obj };\n keys.forEach((key) => delete result[key]);\n return result;\n};\n\nconst withFocusable = <P extends object>({\n forgetLastFocusedChild: configForgetLastFocusedChild = false,\n trackChildren: configTrackChildren = false,\n autoRestoreFocus: configAutoRestoreFocus,\n blockNavigationOut: configBlockNavigationOut = false,\n}: WithFocusableConfig = {}) => {\n return (WrappedComponent: React.ComponentType<P & WithFocusableProps>) => {\n return class WithFocusable extends Component<\n P & WithFocusableProps,\n WithFocusableState\n > {\n static contextTypes = {\n parentFocusKey: PropTypes.string,\n };\n\n static childContextTypes = {\n parentFocusKey: PropTypes.string,\n };\n\n state: WithFocusableState = {\n realFocusKey: this.props.focusKey || uniqueId('sn:focusable-item-'),\n focused: false,\n hasFocusedChild: false,\n parentFocusKey: this.props.parentFocusKey || ROOT_FOCUS_KEY,\n };\n\n getChildContext() {\n return {\n parentFocusKey: this.state.realFocusKey,\n };\n }\n\n setFocus = (focusKey: string) => {\n if (!SpatialNavigation.isNativeMode()) {\n SpatialNavigation.setFocus(focusKey);\n }\n };\n\n navigateByDirection = SpatialNavigation.navigateByDirection;\n\n stealFocus = () => {\n SpatialNavigation.setFocus(this.state.realFocusKey, {\n focusKey: this.state.realFocusKey,\n });\n };\n\n onUpdateFocus = (focused: boolean) => {\n this.setState({ focused });\n };\n\n onUpdateHasFocusedChild = (hasFocusedChild: boolean) => {\n this.setState({ hasFocusedChild });\n };\n\n onEnterPressHandler = (details: {\n pressedKeys: Record<string, number>;\n }) => {\n const { onEnterPress = noop, ...rest } = this.props;\n onEnterPress(rest, details);\n };\n\n onEnterReleaseHandler = () => {\n const { onEnterRelease = noop, ...rest } = this.props;\n onEnterRelease(rest);\n };\n\n onArrowPressHandler = (\n direction: Direction,\n details: { pressedKeys: Record<string, number> }\n ) => {\n const { onArrowPress = noop, ...rest } = this.props;\n return onArrowPress(direction, rest, details);\n };\n\n onBecameFocusedHandler = (layout: Layout, details: any) => {\n const { onBecameFocused = noop, ...rest } = this.props;\n onBecameFocused(layout, rest, details);\n };\n\n onBecameBlurredHandler = (layout: Layout, details: any) => {\n const { onBecameBlurred = noop, ...rest } = this.props;\n onBecameBlurred(layout, rest, details);\n };\n\n componentDidMount() {\n const { realFocusKey: focusKey, parentFocusKey } = this.state;\n\n const {\n preferredChildFocusKey,\n forgetLastFocusedChild = false,\n trackChildren,\n focusable = true,\n autoRestoreFocus = true,\n blockNavigationOut = false,\n } = this.props;\n\n let node: HTMLElement;\n if (SpatialNavigation.isNativeMode()) {\n node = document.createElement('div');\n } else {\n const domNode = findDOMNode(this) as Element;\n if (!domNode) {\n throw new Error('Could not find DOM node');\n }\n node = domNode as HTMLElement;\n }\n\n SpatialNavigation.addFocusable({\n focusKey,\n node,\n parentFocusKey,\n preferredChildFocusKey,\n onEnterPressHandler: this.onEnterPressHandler,\n onEnterReleaseHandler: this.onEnterReleaseHandler,\n onArrowPressHandler: this.onArrowPressHandler,\n onBecameFocusedHandler: this.onBecameFocusedHandler,\n onBecameBlurredHandler: this.onBecameBlurredHandler,\n onUpdateFocus: this.onUpdateFocus,\n onUpdateHasFocusedChild: this.onUpdateHasFocusedChild,\n forgetLastFocusedChild:\n configForgetLastFocusedChild || forgetLastFocusedChild,\n trackChildren: configTrackChildren || trackChildren,\n blockNavigationOut: configBlockNavigationOut || blockNavigationOut,\n autoRestoreFocus:\n configAutoRestoreFocus !== undefined\n ? configAutoRestoreFocus\n : autoRestoreFocus,\n focusable,\n });\n }\n\n componentDidUpdate() {\n const { realFocusKey: focusKey } = this.state;\n\n const {\n preferredChildFocusKey,\n focusable = true,\n blockNavigationOut = false,\n } = this.props;\n\n let node: HTMLElement;\n if (SpatialNavigation.isNativeMode()) {\n node = document.createElement('div');\n } else {\n const domNode = findDOMNode(this) as Element;\n if (!domNode) {\n throw new Error('Could not find DOM node');\n }\n node = domNode as HTMLElement;\n }\n\n SpatialNavigation.updateFocusable(focusKey, {\n node,\n preferredChildFocusKey,\n focusable,\n blockNavigationOut: configBlockNavigationOut || blockNavigationOut,\n });\n }\n\n componentWillUnmount() {\n const { realFocusKey: focusKey } = this.state;\n SpatialNavigation.removeFocusable({ focusKey });\n }\n\n render() {\n const props = {\n ...this.props,\n ...this.state,\n setFocus: this.setFocus,\n navigateByDirection: this.navigateByDirection,\n stealFocus: this.stealFocus,\n onUpdateFocus: this.onUpdateFocus,\n onUpdateHasFocusedChild: this.onUpdateHasFocusedChild,\n };\n\n const filteredProps = omit(props, [\n 'onBecameFocusedHandler',\n 'onBecameBlurredHandler',\n 'onEnterPressHandler',\n 'onEnterReleaseHandler',\n 'onArrowPressHandler',\n 'onUpdateFocus',\n 'onUpdateHasFocusedChild',\n 'forgetLastFocusedChild',\n 'trackChildren',\n 'autoRestoreFocus',\n ]);\n\n return createElement(\n WrappedComponent,\n filteredProps as P & WithFocusableProps\n );\n }\n };\n };\n};\n\nexport default withFocusable;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./PanelManager.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport { ButtonHTMLAttributes } from 'react';\n\n// Base button styling\nconst ButtonStyle: React.CSSProperties = {\n borderRadius: 6,\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n cursor: 'pointer',\n width: '100%',\n border: 'none',\n};\ninterface BaseButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {}\n\nclass BaseButton extends React.Component<BaseButtonProps> {\n constructor(props: BaseButtonProps) {\n super(props);\n }\n\n render() {\n const style = {\n ...ButtonStyle,\n ...this.props.style,\n };\n\n return (\n <button style={style} {...this.props}>\n {this.props.children}\n </button>\n );\n }\n}\n\nexport default BaseButton;\n","import React from 'react';\nimport { IconProps } from './Icon';\n\nclass KeyPlaysIcon extends React.Component<IconProps, {}> {\n render() {\n return (\n <svg\n width={this.props.width}\n height={this.props.height}\n viewBox=\"0 0 30 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M27.375 4.75H2.625V7H27.375V4.75Z\" fill=\"white\" />\n <path d=\"M25.125 0.25H4.875V2.5H25.125V0.25Z\" fill=\"white\" />\n <path\n d=\"M0.375 9.25V31.75H29.625V9.25H0.375ZM11.625 26.125V14.875L20.625 20.5L11.625 26.125Z\"\n fill=\"white\"\n />\n </svg>\n );\n }\n}\n\nexport default KeyPlaysIcon;\n","import React from 'react';\nimport { IconProps } from './Icon';\n\nclass PlayIcon extends React.Component<IconProps, {}> {\n render() {\n return (\n <svg\n width={this.props.width}\n height={this.props.height}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M18.1891 8.29879C18.6116 8.5331 18.9367 8.80345 19.162 9.10985C19.3873 9.41624 19.5 9.71863 19.5 10.019C19.5 10.3194 19.396 10.6158 19.1837 10.9102C18.9713 11.2026 18.6463 11.4669 18.2108 11.7012L10.9111 15.6724L3.58975 19.6035C3.15207 19.8378 2.74256 19.9679 2.36122 19.994C1.98204 20.02 1.65703 19.9619 1.38836 19.8177C1.12185 19.6735 0.905177 19.4453 0.742673 19.1328C0.582335 18.8204 0.5 18.4419 0.5 17.9994V2.00062C0.5 1.55805 0.573669 1.17956 0.721006 0.867153C0.87051 0.554748 1.09152 0.326452 1.38836 0.182265C1.6852 0.0380777 2.02104 -0.0199976 2.39372 0.00603615C2.76639 0.0340725 3.16507 0.164241 3.58975 0.398545L10.9111 4.36769L18.1891 8.29879Z\"\n fill=\"white\"\n />\n </svg>\n );\n }\n}\n\nexport default PlayIcon;\n","import React from 'react';\nimport { IconProps } from './Icon';\nclass BetsIcon extends React.Component<IconProps> {\n constructor(props: IconProps) {\n super(props);\n }\n\n render() {\n return (\n <svg\n width={this.props.width}\n height={this.props.height}\n viewBox=\"0 0 36 36\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M26.4393 4.5H6.61944L3.34766 31.5C3.34766 31.5 19.7066 31.5 22.7432 31.5C23.3056 31.5 23.8679 31.4591 24.4251 31.3773C26.0406 31.1268 28.7193 30.3445 29.8491 27.6808C30.3501 26.4947 30.7387 23.1919 30.8665 22.3023C31.1783 20.1345 30.0178 18.8819 28.8625 18.1508C28.6069 17.9923 28.6733 17.6038 28.9647 17.5322C30.1814 17.2203 31.3266 16.571 31.6435 15.1906C31.8633 14.2192 32.0781 12.0872 32.2263 10.9011C32.9113 5.92643 29.568 4.5 26.4393 4.5ZM24.1542 19.792H15.8213L15.6117 21.5047H23.9497L23.4589 25.4773H10.1468L11.2715 16.3154H24.5836L24.1593 19.7869L24.1542 19.792ZM24.7779 14.7202H11.4658L11.9821 10.5227H25.2942L24.783 14.7202H24.7779Z\"\n fill=\"#9DA0A6\"\n />\n </svg>\n );\n }\n}\n\nexport default BetsIcon;\n","import React from 'react';\nimport { IconProps } from './Icon';\n\nclass StatsIcon extends React.Component<IconProps, {}> {\n render() {\n return (\n <svg\n width={this.props.width}\n height={this.props.height}\n viewBox=\"0 0 36 36\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_538_5831)\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.5925 1.7998V32.6941H10.4849V14.8588H3.671V32.6941H0.899902V34.7641H35.099V32.6941H32.3603V8.0125H25.514V32.6941H21.4397V1.7998H14.5925Z\"\n fill=\"#9DA0A6\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_538_5831\">\n <rect width=\"36\" height=\"36\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n }\n}\n\nexport default StatsIcon;\n","import React from 'react';\nimport { IconProps } from './Icon';\n\nclass FantasyIcon extends React.Component<IconProps, {}> {\n render() {\n return (\n <svg\n width={this.props.width}\n height={this.props.height}\n viewBox=\"0 0 36 36\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.96879 29.0297C11.6061 31.2694 14.6822 32.9334 18.0001 33.9152C21.3179 32.9334 24.394 31.2694 27.0313 29.0297C29.6686 26.7899 31.8089 24.0239 33.3151 20.9089C31.6987 16.1971 30.9721 11.2259 31.1722 6.24861C26.9818 4.51945 22.5273 3.51728 18.0001 3.28516C13.4728 3.51728 9.01831 4.51945 4.82788 6.24861C5.02804 11.2259 4.30143 16.1971 2.68506 20.9089C4.19119 24.0239 6.33149 26.7899 8.96879 29.0297ZM11.7503 14.7153L12.2646 10.5164H25.5772L25.0616 14.7153H11.7503ZM23.7355 25.4753H10.423L11.5486 16.3157H24.8599L24.4349 19.7871H16.1048L15.8917 21.4998H24.2282L23.7355 25.4753Z\"\n fill=\"#9DA0A6\"\n />\n </svg>\n );\n }\n}\n\nexport default FantasyIcon;\n","import React from 'react';\nimport { IconProps } from './Icon';\n\nclass WarningIcon extends React.Component<IconProps, {}> {\n render() {\n return (\n <svg\n width={this.props.width}\n height={this.props.height}\n viewBox=\"0 0 22 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.0022 0.75L21.8012 19.4545H0.203125L11.0022 0.75ZM11.7522 13.5V7.5H10.2522V13.5H11.7522ZM11.8022 14.95H10.2022V16.55H11.8022V14.95Z\"\n fill=\"#F58B00\"\n />\n </svg>\n );\n }\n}\n\nexport default WarningIcon;\n","import React from 'react';\nimport KeyPlaysIcon from './KeyPlaysIcon';\nimport PlayIcon from './PlayIcon';\nimport BetsIcon from './BetsIcon';\nimport StatsIcon from './StatsIcon';\nimport FantasyIcon from './FantasyIcon';\nimport WarningIcon from './WarningIcon';\n\nconst iconImports = {\n keyPlays: KeyPlaysIcon,\n play: PlayIcon,\n bets: BetsIcon,\n stats: StatsIcon,\n fantasy: FantasyIcon,\n warning: WarningIcon,\n};\n\nexport type IconsName = keyof typeof iconImports;\n\nexport type IconProps = {\n iconName: IconsName;\n width: number;\n height: number;\n};\n\n// Skeleton component for loading state\nconst Skeleton = (props: Omit<IconProps, 'iconName'>) => (\n <div style={{ width: props.width, height: props.height }} />\n);\n\ninterface IconState {\n loaded: boolean;\n}\nclass Icon extends React.Component<IconProps, IconState> {\n render() {\n const { iconName, width, height } = this.props;\n\n const IconComponent = iconImports[iconName];\n if (!IconComponent) {\n return <Skeleton width={width} height={height} />;\n }\n\n return <IconComponent iconName={iconName} width={width} height={height} />;\n }\n}\n\nexport default Icon;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./PanelNavButton.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\n\nconst BACK_KEY_CODE = 10009;\n\nexport type RemoteControlProps = {\n onBackPressed?: (e: KeyboardEvent) => void;\n onLeftPressed?: (e: KeyboardEvent) => void;\n remoteControlActive?: boolean;\n};\n\nexport const withRemoteControl = <P extends object>(\n WrappedComponent: React.ComponentType<P>\n) => {\n return class WithRemoteControl extends React.Component<\n P & RemoteControlProps,\n {\n active: boolean;\n }\n > {\n cleanup?: () => void;\n\n constructor(props: P & RemoteControlProps) {\n super(props);\n this.state = {\n active: props.remoteControlActive || false,\n };\n }\n\n componentDidUpdate(prevProps: Readonly<P & RemoteControlProps>) {\n if (prevProps.remoteControlActive && !this.props.remoteControlActive) {\n window.removeEventListener('keydown', this.handleKeyDown);\n } else if (\n !prevProps.remoteControlActive &&\n this.props.remoteControlActive\n ) {\n window.addEventListener('keydown', this.handleKeyDown);\n }\n }\n\n componentDidMount() {\n window.addEventListener('keydown', this.handleKeyDown);\n\n this.cleanup = () => {\n window.removeEventListener('keydown', this.handleKeyDown);\n };\n }\n\n componentWillUnmount() {\n if (this.cleanup) {\n this.cleanup();\n }\n }\n\n handleKeyDown = (e: KeyboardEvent) => {\n const { onBackPressed, onLeftPressed } = this.props;\n\n if (!this.props.remoteControlActive) return;\n\n if ((e.keyCode === BACK_KEY_CODE || e.key === 'b') && onBackPressed) {\n onBackPressed(e);\n }\n\n if ((e.key === 'ArrowLeft' || e.keyCode === 37) && onLeftPressed) {\n onLeftPressed(e);\n }\n };\n\n render() {\n const { ...props } = this.props;\n return <WrappedComponent {...(props as P)} />;\n }\n };\n};\n\nexport default withRemoteControl;\n","import BaseButton from '@/components/atoms/BaseButton/BaseButton';\nimport Icon, { IconsName } from '@/components/atoms/SvgIcon/Icon';\nimport './PanelNavButton.styles.css';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withFocusable } from '@/external/spatial-navigation';\nimport withRemoteControl, {\n RemoteControlProps,\n} from '@/helpers/withRemoteControl';\n\ntype PanelNavButtonProps = RemoteControlProps & {\n iconName: IconsName;\n index: number;\n active: boolean;\n children?: React.ReactNode;\n focused?: boolean;\n focusKey: string;\n onBecameFocused: () => void;\n buttonRef?: React.Ref<HTMLDivElement>;\n};\n\nclass PanelNavButton extends React.Component<PanelNavButtonProps, {}> {\n static displayName = 'PanelNavButton';\n\n static propTypes = {\n iconName: PropTypes.string.isRequired,\n index: PropTypes.number.isRequired,\n active: PropTypes.bool.isRequired,\n children: PropTypes.node,\n focused: PropTypes.bool,\n onBecameFocused: PropTypes.func,\n buttonRef: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n };\n\n render() {\n const { iconName, active, children, focused, buttonRef } = this.props;\n\n return (\n <div\n className={[\n 'panel-nav-button-container',\n 'T02',\n active ? 'panel-nav-button-active' : '',\n ].join(' ')}\n data-focused={focused}\n ref={buttonRef}\n >\n <BaseButton>\n <Icon iconName={iconName} height={36} width={36} />\n </BaseButton>\n {children}\n </div>\n );\n }\n}\n\nexport default withRemoteControl(\n withFocusable<PanelNavButtonProps>()(PanelNavButton)\n);\n","import PanelNavButton from './PanelNavButton';\n\nexport default PanelNavButton;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./PanelNavigation.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { pause } from '@/external/spatial-navigation';\nimport SDK from '..';\n\n/**\n * @description Useful when you want to lose the focus of the SDK and delegate it to the Client App.\n */\nconst deliverFocus = (e: HTMLElement) => {\n const eventVm = SDK.getMaestroEventViewModel();\n e.dataset['focused'] = 'false';\n pause();\n eventVm.delegate.startFocusManagement();\n};\n\nexport default deliverFocus;\n","import PanelNavButton from '@/components/molecules/PanelNavButton';\nimport { IconsName } from '@/components/atoms/SvgIcon/Icon';\nimport './PanelNavigation.styles.css';\nimport React from 'react';\nimport deliverFocus from '@/helpers/deliver-focus';\n\ninterface PanelNavigationProps {\n items: {\n title: string;\n onEnter: () => void;\n iconName: IconsName;\n active: boolean;\n }[];\n}\n\nclass PanelNavigationButton extends React.Component<{\n item: PanelNavigationProps['items'][number];\n index: number;\n}> {\n private buttonElement: HTMLDivElement | null = null;\n state = {\n itemFocused: null,\n };\n\n setButtonRef = (el: HTMLDivElement | null) => {\n this.buttonElement = el;\n };\n\n handleLeftPressed = () => {\n if (this.buttonElement) {\n deliverFocus(this.buttonElement);\n }\n };\n\n handleBecameFocused = (index: number, fn: () => void) => () => {\n this.setState({ itemFocused: index }, fn);\n };\n\n handleBecameBlurred = () => {\n this.setState({ itemFocused: null });\n };\n\n render() {\n const { item, index } = this.props;\n return (\n <PanelNavButton\n iconName={item.iconName}\n key={item.title}\n index={index}\n onBecameFocused={this.handleBecameFocused(index, item.onEnter)}\n onBecameBlurred={this.handleBecameBlurred}\n active={item.active}\n focusKey={`PANEL_NAV_BUTTON_${index}`}\n remoteControlActive={this.state.itemFocused === 0}\n onLeftPressed={this.handleLeftPressed}\n buttonRef={this.setButtonRef}\n >\n {item.title}\n </PanelNavButton>\n );\n }\n}\n\nclass PanelNavigation extends React.Component<PanelNavigationProps> {\n render() {\n return (\n <div className=\"panel-navigation\">\n {this.props.items.map((item, index) => (\n <PanelNavigationButton key={item.title} item={item} index={index} />\n ))}\n </div>\n );\n }\n}\n\nexport default PanelNavigation;\n","import PanelNavigation from './PanelNavigation';\n\nexport default PanelNavigation;\n","import React from 'react';\nimport { ImgHTMLAttributes } from 'react';\n\ninterface ImageProps extends ImgHTMLAttributes<HTMLImageElement> {}\n\nclass Image extends React.Component<ImageProps> {\n constructor(props: ImageProps) {\n super(props);\n }\n\n render() {\n return <img alt={this.props.alt || 'Image'} {...this.props} />;\n }\n}\n\nexport default Image;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./KeyPlayCardView.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import Icon from './Icon';\n\nexport default Icon;\n","import React from 'react';\n\nexport default class ScoreCard extends React.Component<\n {\n awayTeamScore?: number;\n homeTeamScore?: number;\n homeTeamName: string;\n awayTeamName: string;\n },\n {}\n> {\n render() {\n const {\n awayTeamScore,\n homeTeamScore,\n homeTeamName,\n awayTeamName,\n } = this.props;\n\n return (\n <div className=\"score\">\n <div className=\"score-team T05_ALT\">\n {homeTeamName}\n <span className=\"T30\">{homeTeamScore}</span>\n </div>\n <div className=\"score-team T05_ALT\">\n <span className=\"T30\">{awayTeamScore}</span>\n {awayTeamName}\n </div>\n </div>\n );\n }\n}\n","import Image from '@/components/atoms/Image';\nimport { BASE_64_KEY_PLAY_THUMBNAIL_FALLBACK } from '../constants';\nimport IKeyPlay, { KeyPlayLoadFailureStatus } from '../interfaces/IKeyPlays';\nimport './KeyPlayCardView.styles.css';\nimport SDK from '@/index';\nimport Icon from '@/components/atoms/SvgIcon';\nimport React from 'react';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport ScoreCard from './KeyPlayCardScoreTagView';\nimport KeyPlaysViewModel from '../view-model/KeyPlaysViewModel';\nimport withRemoteControl, {\n RemoteControlProps,\n} from '@/helpers/withRemoteControl';\nimport deliverFocus from '@/helpers/deliver-focus';\n\ntype KeyPlayCardViewProps = IKeyPlay & {\n isPlaying: boolean;\n playbackProgress: number | null;\n isScoring: boolean;\n setFocus?: (focusKey: string) => void;\n focused?: boolean;\n setRef: (ref: HTMLDivElement | null) => void;\n};\n\ntype KeyPlaysCardViewState = {\n failedClip: KeyPlayLoadFailureStatus | null;\n};\n\nclass KeyPlayCardView extends React.Component<\n KeyPlayCardViewProps & WithFocusableProps & RemoteControlProps,\n KeyPlaysCardViewState\n> {\n private failedClipListener: () => void = () => {};\n private ref: HTMLDivElement | null = null;\n private vm: KeyPlaysViewModel;\n state = {\n failedClip: null,\n };\n\n constructor(props: KeyPlayCardViewProps) {\n super(props);\n this.vm = SDK.getMaestroEventViewModel().keyPlaysViewModel;\n }\n\n componentDidMount() {\n this.failedClipListener = this.vm.failedClips.subscribe((failedClips) => {\n this.setState({ failedClip: failedClips[this.props.clipID] });\n });\n\n this.props.setRef(this.ref);\n }\n\n componentWillUnmount() {\n if (this.failedClipListener) {\n this.failedClipListener();\n }\n }\n\n renderImage = () => {\n const { playerImageUrl, teamImageUrl, thumbnailImageUrl } = this.props;\n if (playerImageUrl) {\n return (\n <Image\n src={playerImageUrl}\n crossOrigin=\"anonymous\"\n alt=\"Key Play Player Image\"\n className=\"cardImage\"\n />\n );\n }\n\n if (teamImageUrl) {\n return (\n <Image\n src={teamImageUrl}\n crossOrigin=\"anonymous\"\n alt=\"Key Play Team Image\"\n className=\"cardImage\"\n />\n );\n }\n\n if (thumbnailImageUrl) {\n return (\n <Image\n src={thumbnailImageUrl}\n crossOrigin=\"anonymous\"\n alt=\"Key Play Thumbnail Image\"\n className=\"cardImage\"\n />\n );\n }\n\n return (\n <Image\n src={BASE_64_KEY_PLAY_THUMBNAIL_FALLBACK}\n crossOrigin=\"anonymous\"\n alt=\"Key Play Thumbnail Image\"\n className=\"cardImage\"\n />\n );\n };\n\n render() {\n const {\n clipID,\n description,\n isPlaying,\n playbackProgress,\n isScoring,\n focused,\n awayTeamScore,\n homeTeamScore,\n homeTeamName,\n awayTeamName,\n } = this.props;\n const { failedClip } = this.state;\n\n return (\n <div\n className=\"key-play-card\"\n id={clipID}\n data-focused={focused}\n ref={(ref) => (this.ref = ref)}\n >\n <div className=\"key-play-card-content\">\n {this.renderImage()}\n <div className=\"text-content T05_ALT\">\n <div className=\"multi-line\">{description}</div>\n </div>\n </div>\n {isPlaying && playbackProgress !== null && (\n <progress value={playbackProgress} max=\"1\" />\n )}\n {isScoring && (\n <ScoreCard\n awayTeamScore={awayTeamScore}\n homeTeamScore={homeTeamScore}\n homeTeamName={homeTeamName}\n awayTeamName={awayTeamName}\n />\n )}\n\n {failedClip === 'recentFailure' && (\n <div className=\"error-state\">\n <Icon iconName=\"warning\" width={21.6} height={18.7} />\n <span className=\"T05_ALT\">Could not play this clip. </span>\n </div>\n )}\n {failedClip === 'nonRecentFailure' && (\n <div className=\"non-recent-error-state\">\n <Icon iconName=\"warning\" width={21.6} height={18.7} />\n </div>\n )}\n </div>\n );\n }\n}\n\nconst WithRemoteControlKeyPlayCard = withRemoteControl(\n KeyPlayCardView as React.ComponentType<KeyPlayCardViewProps>\n);\n\nexport class KeyPlayCard extends React.Component<\n KeyPlayCardViewProps & WithFocusableProps & RemoteControlProps\n> {\n private ref: HTMLDivElement | null = null;\n\n setRef = (ref: HTMLDivElement | null) => {\n this.ref = ref;\n this.props.setRef(ref);\n };\n\n handleLeftPressed = () => {\n if (this.ref) {\n deliverFocus(this.ref);\n }\n };\n\n render() {\n return (\n <WithRemoteControlKeyPlayCard\n {...this.props}\n setRef={this.setRef}\n remoteControlActive={this.props.focused}\n onLeftPressed={this.handleLeftPressed}\n />\n );\n }\n}\n\nexport default withFocusable<\n KeyPlayCardViewProps & WithFocusableProps & RemoteControlProps\n>()(KeyPlayCard);\n","import IMaestroKeyPlaysResponse from './interfaces/IKeyPlaysResponse';\n\nexport const KEY_PLAYS_RESPONSE_MOCK_DATA: IMaestroKeyPlaysResponse = {\n entities: {\n team: {\n '251': {\n id: '251',\n displayName: 'Texas Longhorns',\n color: 'c15d26',\n alternateColor: 'ffffff',\n shortName: 'Texas',\n homeAway: 'away',\n displayOrder: '1',\n logoRef:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/teams/251.jpg?w=184&h=144',\n logoDarkRef: 'https://a.espncdn.com/i/teamlogos/ncaa/500-dark/251.png',\n },\n '264': {\n id: '264',\n displayName: 'Washington Huskies',\n color: '33006f',\n alternateColor: 'e8d3a2',\n shortName: 'Washington',\n homeAway: 'home',\n displayOrder: '0',\n logoRef:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/teams/264.jpg?w=184&h=144',\n logoDarkRef: 'https://a.espncdn.com/i/teamlogos/ncaa/500-dark/264.png',\n },\n },\n athlete: {\n '4360423': {\n id: '4360423',\n shortName: 'M. Penix Jr.',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4360423.jpg?w=184&h=144',\n },\n '4430637': {\n id: '4430637',\n shortName: 'J. Polk',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4430637.jpg?w=184&h=144',\n },\n '4430834': {\n id: '4430834',\n shortName: 'J. McMillan',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4430834.jpg?w=184&h=144',\n },\n '4569337': {\n id: '4569337',\n shortName: 'R. Sanborn',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4569337.jpg?w=184&h=144',\n },\n '4570040': {\n id: '4570040',\n shortName: 'B. Murphy II',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4570040.jpg?w=184&h=144',\n },\n '4597500': {\n id: '4597500',\n shortName: 'A. Mitchell',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4597500.jpg?w=184&h=144',\n },\n '4689338': {\n id: '4689338',\n shortName: 'D. Johnson',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4689338.jpg?w=184&h=144',\n },\n '4870609': {\n id: '4870609',\n shortName: 'C. Baxter',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4870609.jpg?w=184&h=144',\n },\n '4889929': {\n id: '4889929',\n shortName: 'Q. Ewers',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4889929.jpg?w=184&h=144',\n },\n },\n },\n sections: [\n {\n title: '1st Quarter',\n items: [\n {\n description: \"Ja'Lynn Polk's 77-yard catch sets up Washington TD\",\n team: '264',\n awayScore: '0',\n homeScore: '7',\n wallClock: '2024-01-02T02:11:05Z',\n displayClock: '11:04',\n shortPeriod: 'Q1',\n scoringPlay: true,\n athlete: '4689338',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4689338.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225214',\n },\n {\n description: 'Germie Bernard makes leaping grab for Washington',\n team: '264',\n wallClock: '2024-01-02T02:38:54Z',\n displayClock: '1:30',\n shortPeriod: 'Q1',\n scoringPlay: false,\n athlete: '4360423',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4360423.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225401',\n },\n ],\n },\n {\n title: '2nd Quarter',\n items: [\n {\n description: 'Dillon Johnson scores 2nd TD of game for the Huskies',\n team: '264',\n awayScore: '7',\n homeScore: '14',\n wallClock: '2024-01-02T02:47:33Z',\n displayClock: '13:08',\n shortPeriod: 'Q2',\n scoringPlay: true,\n athlete: '4689338',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4689338.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225442',\n },\n {\n description: 'Texas takes over after Washington muffs punt',\n team: '251',\n wallClock: '2024-01-02T02:54:50Z',\n displayClock: '11:45',\n shortPeriod: 'Q2',\n scoringPlay: false,\n athlete: '4569337',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4569337.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225487',\n },\n {\n description: 'Big man TD! Byron Murphy II punches it in for Texas',\n team: '251',\n awayScore: '14',\n homeScore: '14',\n wallClock: '2024-01-02T02:57:22Z',\n displayClock: '10:08',\n shortPeriod: 'Q2',\n scoringPlay: true,\n athlete: '4570040',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4570040.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225513',\n },\n {\n description:\n 'Rome Odunze makes over-the-shoulder grab for Washington',\n team: '264',\n wallClock: '2024-01-02T03:02:27Z',\n displayClock: '9:31',\n shortPeriod: 'Q2',\n scoringPlay: false,\n athlete: '4360423',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4360423.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225518',\n },\n {\n description: \"Texas stops Washington's attempt on 4th down\",\n team: '251',\n wallClock: '2024-01-02T03:06:28Z',\n displayClock: '6:59',\n shortPeriod: 'Q2',\n scoringPlay: false,\n athlete: '4689338',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4689338.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225559',\n },\n {\n description:\n \"Ja'Lynn Polk makes bobbling TD catch and Washington goes ahead\",\n team: '264',\n awayScore: '14',\n homeScore: '21',\n wallClock: '2024-01-02T03:27:56Z',\n displayClock: '1:27',\n shortPeriod: 'Q2',\n scoringPlay: true,\n athlete: '4430637',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4430637.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225686',\n },\n {\n description: \"Texas ties the score after CJ Baxter's TD run\",\n team: '251',\n awayScore: '21',\n homeScore: '21',\n wallClock: '2024-01-02T03:38:42Z',\n displayClock: '0:17',\n shortPeriod: 'Q2',\n scoringPlay: true,\n athlete: '4870609',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4870609.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225762',\n },\n ],\n },\n {\n title: '3rd Quarter',\n items: [\n {\n description:\n 'Penix threads the needle to McMillan for Washington score',\n team: '264',\n awayScore: '21',\n homeScore: '28',\n wallClock: '2024-01-02T04:11:00Z',\n displayClock: '10:30',\n shortPeriod: 'Q3',\n scoringPlay: true,\n athlete: '4430834',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4430834.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39226021',\n },\n {\n description: 'Texas commits their first turnover of the game',\n team: '264',\n wallClock: '2024-01-02T04:16:16Z',\n displayClock: '10:14',\n shortPeriod: 'Q3',\n scoringPlay: false,\n athlete: '4870609',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4870609.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39226030',\n },\n ],\n },\n {\n title: '4th Quarter',\n items: [\n {\n description:\n 'Hang time! Adonai Mitchell makes incredible TD grab for Texas',\n team: '251',\n awayScore: '28',\n homeScore: '34',\n wallClock: '2024-01-01T05:08:14Z',\n displayClock: '7:23',\n shortPeriod: 'Q4',\n scoringPlay: true,\n athlete: '4597500',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4597500.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39226360',\n },\n {\n description: 'How did Penix drop this pass in to Odunze?',\n team: '264',\n wallClock: '2024-01-01T05:17:15Z',\n displayClock: '3:48',\n shortPeriod: 'Q4',\n scoringPlay: false,\n athlete: '4360423',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4360423.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39226394',\n },\n {\n description:\n \"Jordan Whittington's big catch gives Texas good field position\",\n team: '251',\n wallClock: '2024-01-01T05:41:48Z',\n displayClock: '0:28',\n shortPeriod: 'Q4',\n scoringPlay: false,\n athlete: '4889929',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4889929.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39226506',\n },\n {\n description:\n \"Washington survives Texas' final drive to win Sugar Bowl\",\n team: '264',\n wallClock: '2024-01-02T04:43:41Z',\n displayClock: '0:00',\n shortPeriod: 'Q4',\n scoringPlay: false,\n athlete: '4889929',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4889929.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39226585',\n },\n ],\n },\n ],\n};\n\nexport const BASE_64_KEY_PLAY_THUMBNAIL_FALLBACK =\n 'data:image/jpeg;base64,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';\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./ScrollableGradient.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport './ScrollableGradient.styles.css';\n\ninterface ScrollableGradientProps {\n scrolled: boolean;\n children?: React.ReactNode;\n}\n\nclass ScrollableGradient extends React.Component<\n ScrollableGradientProps\n> {\n constructor(props: ScrollableGradientProps) {\n super(props);\n }\n\n render() {\n const className = [\n 'scrollable-gradient',\n this.props.scrolled ? 'scroll-container-scrolled' : '',\n ].join(' ');\n\n return <div className={className}>{this.props.children}</div>;\n }\n}\n\nexport default ScrollableGradient;\n","import ScrollableGradient from './ScrollableGradient';\n\nexport default ScrollableGradient;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./KeyPlaysView.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import BaseButton from './BaseButton';\n\nexport default BaseButton;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./ActionButton.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import BaseButton from '@/components/atoms/BaseButton';\nimport './ActionButton.styles.css';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport React from 'react';\n\nclass ActionButton extends React.Component<WithFocusableProps, {}> {\n render() {\n return (\n <BaseButton className=\"action-button T05_ALT\" {...this.props}>\n {this.props.children}\n </BaseButton>\n );\n }\n}\n\nexport default withFocusable()(ActionButton);\n","import ActionButton from './ActionButton';\n\nexport default ActionButton;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./KeyPlayErrorStateView.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import ActionButton from '@/components/molecules/ActionButton';\nimport { KeyPlaysErrorState } from '../interfaces/IKeyPlays';\nimport './KeyPlayErrorStateView.styles.css';\nimport React from 'react';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\n\ntype Props = {\n errorState: KeyPlaysErrorState;\n onRetry: () => void;\n};\n\nclass UnpopulatedEvent extends React.Component {\n render() {\n return (\n <div className=\"sdk--key-play-error-state-unpopulatedEvent\">\n <div className=\"main-content\">\n <h3 className=\"T70\">Greatness takes time.</h3>\n <p className=\"T20\">\n Key plays are still in the making! Come back soon to check &apos;em\n out.\n </p>\n </div>\n <div className=\"unpopulatedEvent-examples\">\n {Array.from({ length: 4 }).map((_, i) => (\n <div key={i} className=\"example\" />\n ))}\n </div>\n </div>\n );\n }\n}\n\nclass UnsupportedEvent extends React.Component {\n render() {\n return (\n <div className=\"sdk--key-play-error-state-unsupportedEvent\">\n <h3 className=\"T70\">No Key Plays Available</h3>\n <svg\n viewBox=\"0 0 520 359\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g opacity=\"0.16\">\n <path\n d=\"M146.334 219.427V244.686L168.723 198.187V38.0215L165.279 40.3178V188.427L146.334 219.427Z\"\n fill=\"#6D6D6D\"\n />\n <rect\n x=\"94.6687\"\n y=\"219.427\"\n width=\"51.6662\"\n height=\"25.259\"\n fill=\"#777777\"\n />\n <rect\n x=\"145.187\"\n y=\"39.1694\"\n width=\"20.6665\"\n height=\"149.258\"\n fill=\"#666666\"\n />\n <path\n d=\"M146.335 219.427H94.6687L143.465 187.279H167.001L146.335 219.427Z\"\n fill=\"#666666\"\n />\n <path\n d=\"M375.389 219.427V244.686L353 198.187V38.0215L356.445 40.3178V188.427L375.389 219.427Z\"\n fill=\"#6D6D6D\"\n />\n <rect\n width=\"51.6662\"\n height=\"25.259\"\n transform=\"matrix(-1 0 0 1 427.055 219.427)\"\n fill=\"#777777\"\n />\n <rect\n width=\"20.6665\"\n height=\"149.258\"\n transform=\"matrix(-1 0 0 1 376.537 39.1694)\"\n fill=\"#666666\"\n />\n <path\n d=\"M375.389 219.427H427.055L378.259 187.279H354.722L375.389 219.427Z\"\n fill=\"#666666\"\n />\n <path\n d=\"M23.4844 141.354H496.517L410.981 121.835H93.5208L23.4844 141.354Z\"\n fill=\"#B1B1B1\"\n />\n <rect\n x=\"23.4844\"\n y=\"141.354\"\n width=\"473.033\"\n height=\"19.5183\"\n fill=\"#777777\"\n />\n <rect\n x=\"72.8545\"\n y=\"51.7993\"\n width=\"374.293\"\n height=\"45.9255\"\n fill=\"#CDCDCD\"\n />\n </g>\n </svg>\n </div>\n );\n }\n}\n\nclass SimpleTabLoadFailure extends React.Component<WithFocusableProps> {\n render() {\n const { focused } = this.props;\n\n return (\n <div\n className=\"sdk--key-play-error-state-tabLoadFailure\"\n style={{\n borderColor: focused ? 'var(--sdk-highlightPrimary)' : 'transparent',\n }}\n >\n <h3 className=\"T70\">Let&apos;s try that again...</h3>\n <p className=\"T20\">{\"We're having trouble loading this.\"}</p>\n <ActionButton\n data-focused={focused}\n onEnterPress={this.props.onEnterPress}\n >\n Refresh\n </ActionButton>\n </div>\n );\n }\n}\n\nconst TabLoadFailure = withFocusable()(SimpleTabLoadFailure);\n\nclass KeyPlayErrorStateView extends React.Component<Props, {}> {\n render() {\n const { errorState, onRetry } = this.props;\n\n if (errorState === 'unsupportedEvent') {\n return <UnsupportedEvent />;\n }\n\n if (errorState === 'unpopulatedEvent') {\n return <UnpopulatedEvent />;\n }\n\n if (errorState === 'tabLoadFailure') {\n return <TabLoadFailure onEnterPress={onRetry} />;\n }\n\n return null;\n }\n}\n\nexport default KeyPlayErrorStateView;\n","import React, { Component } from 'react';\nimport KeyPlayCardView from './KeyPlayCardView';\nimport ScrollableGradient from '@/components/molecules/ScrollableGradient';\nimport './KeyPlaysView.styles.css';\nimport KeyPlayErrorStateView from './KeyPlayErrorStateView';\nimport SDK from '@/index';\nimport IKeyPlay, { KeyPlaysErrorState } from '../interfaces/IKeyPlays';\nimport KeyPlaysViewModel from '../view-model/KeyPlaysViewModel';\nimport { setFocus } from '@/external/spatial-navigation';\n\nconst STICKY_HEADER_HEIGHT = 32;\n\ntype Unsubscribe = () => void;\n\ninterface IKeyPlayItem {\n id: string;\n clipID: string;\n awayTeamScore?: number;\n homeTeamScore?: number;\n awayTeamName: string;\n homeTeamName: string;\n description: string;\n playerImageUrl: string;\n teamImageUrl: string;\n thumbnailImageUrl: string;\n}\n\ninterface IKeyPlaySection {\n title: string;\n items: IKeyPlayItem[];\n}\n\ninterface IKeyPlaysState {\n scrolled: boolean;\n playbackProgress: number | null;\n playbackIndex: number | null;\n items: IKeyPlaySection[];\n}\n\nexport class KeyPlays extends Component<{}, IKeyPlaysState> {\n private container: HTMLDivElement | null = null;\n private refsMap: Record<number, HTMLDivElement | null> = {};\n private playbackProgressUnsub: Unsubscribe | null = null;\n private playbackIndexUnsub: Unsubscribe | null = null;\n private itemsUnsub: Unsubscribe | null = null;\n private vm: KeyPlaysViewModel;\n\n constructor(props: {}) {\n super(props);\n this.vm = SDK.getMaestroEventViewModel().keyPlaysViewModel;\n\n const rawSections = this.vm.items.value as {\n title: string;\n items: IKeyPlay[];\n }[];\n this.state = {\n scrolled: false,\n playbackProgress: this.vm.currentClipPlaybackProgress.value ?? null,\n playbackIndex: this.vm.currentlyPlayingClipIndex.value ?? null,\n items: rawSections.map((section) => ({\n title: section.title,\n items: section.items.map((item) => ({\n id: item.id,\n clipID: item.clipID,\n awayTeamScore: item.awayTeamScore,\n homeTeamScore: item.homeTeamScore,\n awayTeamName: item.awayTeamName,\n homeTeamName: item.homeTeamName,\n description: item.description,\n playerImageUrl: item.playerImageUrl || '',\n teamImageUrl: item.teamImageUrl || '',\n thumbnailImageUrl: item.thumbnailImageUrl || '',\n })),\n })),\n };\n }\n\n componentDidMount() {\n this.playbackProgressUnsub = this.vm.currentClipPlaybackProgress.subscribe(\n (value) => {\n this.setState({ playbackProgress: value ?? null });\n }\n );\n this.playbackIndexUnsub = this.vm.currentlyPlayingClipIndex.subscribe(\n (value) => {\n this.setState({ playbackIndex: value ?? null });\n }\n );\n this.itemsUnsub = this.vm.items.subscribe((rawSections) => {\n this.setState({\n items: (rawSections as { title: string; items: IKeyPlay[] }[]).map(\n (section) => ({\n title: section.title,\n items: section.items.map((item) => ({\n id: item.id,\n clipID: item.clipID,\n awayTeamScore: item.awayTeamScore,\n homeTeamScore: item.homeTeamScore,\n awayTeamName: item.awayTeamName,\n homeTeamName: item.homeTeamName,\n description: item.description,\n playerImageUrl: item.playerImageUrl || '',\n teamImageUrl: item.teamImageUrl || '',\n thumbnailImageUrl: item.thumbnailImageUrl || '',\n })),\n })\n ),\n });\n });\n }\n\n componentWillUnmount() {\n this.playbackProgressUnsub && this.playbackProgressUnsub();\n this.playbackIndexUnsub && this.playbackIndexUnsub();\n this.itemsUnsub && this.itemsUnsub();\n }\n\n private handlePlayClip = (index: number) => async () => {\n await this.vm.playKeyPlay(index);\n };\n\n private handleItemFocus = (index: number) => (node: any) => {\n if (!this.container || !node.node) return;\n\n const containerRect = this.container.getBoundingClientRect();\n const nodeRect = node.node.getBoundingClientRect();\n\n const indexes = Object.keys(this.refsMap)\n .map((key) => parseInt(key, 10))\n .sort((a, b) => a - b)\n .slice(index);\n\n let hasOutside = false;\n indexes.forEach((i) => {\n const el = this.refsMap[i];\n if (!el) return;\n const rect = el.getBoundingClientRect();\n if (rect.bottom > containerRect.bottom || rect.top < containerRect.top) {\n hasOutside = true;\n }\n });\n\n if (!hasOutside) return;\n\n const target =\n index === 0\n ? 0\n : this.container.scrollTop +\n (nodeRect.top - containerRect.top - STICKY_HEADER_HEIGHT);\n this.container.scrollTop = target;\n this.setState({ scrolled: target > 0 });\n };\n\n private setRef = (index: number) => (ref: HTMLDivElement | null) => {\n if (ref) this.refsMap[index] = ref;\n else delete this.refsMap[index];\n };\n\n render() {\n const { scrolled, playbackProgress, playbackIndex, items } = this.state;\n\n return (\n <ScrollableGradient scrolled={scrolled}>\n <div\n ref={(el) => {\n this.container = el;\n }}\n className=\"key-plays-view\"\n >\n {items.map((section, sectionIndex) => (\n <div key={`section-${sectionIndex}`} className=\"key-plays-section\">\n <h3 className=\"key-plays-section-title T10\">{section.title}</h3>\n <div className=\"key-plays-section-items\">\n {section.items.map((item) => {\n const absoluteIndex = this.vm.allItems.findIndex(\n (vmItem) => vmItem.id === item.id\n );\n return (\n <KeyPlayCardView\n key={item.id}\n id={item.id}\n clipID={item.clipID}\n description={item.description}\n awayTeamName={item.awayTeamName}\n homeTeamName={item.homeTeamName}\n awayTeamScore={item.awayTeamScore}\n homeTeamScore={item.homeTeamScore}\n playerImageUrl={item.playerImageUrl}\n teamImageUrl={item.teamImageUrl}\n thumbnailImageUrl={item.thumbnailImageUrl}\n isPlaying={this.vm.isCurrentlyPlaying(absoluteIndex)}\n isScoring={Boolean(\n item.awayTeamScore && item.homeTeamScore\n )}\n playbackProgress={\n absoluteIndex === playbackIndex\n ? playbackProgress\n : null\n }\n onEnterPress={this.handlePlayClip(absoluteIndex)}\n onBecameFocused={this.handleItemFocus(absoluteIndex)}\n setRef={this.setRef(absoluteIndex)}\n />\n );\n })}\n </div>\n </div>\n ))}\n <div className=\"key-plays-bottom-padding\" />\n </div>\n </ScrollableGradient>\n );\n }\n}\n\ninterface KeyPlaysWithErrorStateState {\n errorState: KeyPlaysErrorState;\n}\n\nexport default class KeyPlaysWithErrorState extends Component<\n {},\n KeyPlaysWithErrorStateState\n> {\n private errorStateUnsub: Unsubscribe | null = null;\n private vm: KeyPlaysViewModel;\n\n constructor(props: {}) {\n super(props);\n this.vm = SDK.getMaestroEventViewModel().keyPlaysViewModel;\n this.state = { errorState: this.vm.errorState.value as KeyPlaysErrorState };\n }\n\n componentDidMount() {\n this.errorStateUnsub = this.vm.errorState.subscribe((value) => {\n this.setState({ errorState: value as KeyPlaysErrorState });\n });\n }\n\n componentWillUnmount() {\n this.errorStateUnsub && this.errorStateUnsub();\n }\n\n private handleRetry = async () => {\n await this.vm.userRequestedNewKeyPlaysData();\n setFocus('PANEL_NAV_BUTTON_0');\n };\n\n render() {\n const { errorState } = this.state;\n\n if (errorState) {\n return (\n <KeyPlayErrorStateView\n errorState={errorState}\n onRetry={this.handleRetry}\n />\n );\n }\n\n return <KeyPlays />;\n }\n}\n","import React from 'react';\nimport { PanelManagerViewModel } from '@/view-models/PanelManagerViewModel';\nimport './PanelManager.styles.css';\nimport PanelNavigation from '@/components/organisms/PanelNavigation';\nimport { MaestroPanelType } from '@/models/IPanel';\nimport KeyPlaysView from '@/modules/key-plays/view/KeyPlaysView';\n\nconst panelManagerViewModel = new PanelManagerViewModel();\n\nconst PANELS_MAP: Record<MaestroPanelType, React.ReactNode> = {\n keyPlays: <KeyPlaysView />,\n bets: <div className=\"panel-coming-soon T02\">Bets - Coming Soon</div>,\n stats: <div className=\"panel-coming-soon T02\">Stats - Coming Soon</div>,\n fantasy: <div className=\"panel-coming-soon T02\">Fantasy - Coming Soon</div>,\n};\n\ninterface PanelManagerState {\n activePanel: MaestroPanelType;\n}\n\nclass PanelManager extends React.Component<{}, PanelManagerState> {\n private unsubscribe: (() => void) | null = null;\n\n constructor(props: {}) {\n super(props);\n this.state = {\n activePanel: panelManagerViewModel.currentPanel,\n };\n }\n\n componentDidMount() {\n // Subscribe to changes in the view model\n this.unsubscribe = panelManagerViewModel.currentPanelObservable.subscribe(\n () => {\n this.setState({ activePanel: panelManagerViewModel.currentPanel });\n }\n );\n }\n\n componentWillUnmount() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n }\n }\n\n render() {\n const { activePanel } = this.state;\n\n const PANEL_ITEMS: {\n title: string;\n onEnter: () => void;\n iconName: MaestroPanelType;\n active: boolean;\n }[] = [\n {\n iconName: 'keyPlays',\n onEnter: () => {\n panelManagerViewModel.currentPanel = 'keyPlays';\n },\n title: 'KEY PLAYS',\n active: activePanel === 'keyPlays',\n },\n {\n iconName: 'bets',\n onEnter: () => {\n panelManagerViewModel.currentPanel = 'bets';\n },\n title: 'BETS',\n active: activePanel === 'bets',\n },\n {\n iconName: 'stats',\n onEnter: () => {\n panelManagerViewModel.currentPanel = 'stats';\n },\n title: 'STATS',\n active: activePanel === 'stats',\n },\n {\n iconName: 'fantasy',\n onEnter: () => {\n panelManagerViewModel.currentPanel = 'fantasy';\n },\n title: 'FANTASY',\n active: activePanel === 'fantasy',\n },\n ];\n\n return (\n <div className=\"sdk--panel-manager\">\n <PanelNavigation items={PANEL_ITEMS} />\n <div className=\"sdk--panel-wrapper\">{PANELS_MAP[activePanel]}</div>\n </div>\n );\n }\n}\n\nexport default PanelManager;\n","import PanelManager from './PanelManager';\n\nexport default PanelManager;\n","import IModel from './IModel';\n\ntype ObjectValues<T> = T[keyof T];\n\nexport default interface ITheme extends IModel {\n button: IThemeButton;\n channelOfflineThumbnail?: string;\n colors: IThemeColors;\n creator: string;\n desktopBackground?: string;\n icon?: string;\n logo?: string;\n mobileBackground?: string;\n mode?: ThemeModes;\n name: string;\n owner: string;\n siteId?: string;\n type: ThemeTypes;\n typography: IThemeTypography;\n}\n\nexport interface IThemeColors {\n accentPrimary: string;\n accentSecondary: string;\n accentTertiary: string;\n alertConfirmation: string;\n alertError: string;\n alertWarning: string;\n highlightPrimary: string;\n highlightSecondary: string;\n highlightTertiary: string;\n surface1: string;\n surface2: string;\n surface3: string;\n surface4: string;\n surface5: string;\n surface6: string;\n text100: string;\n text200: string;\n text300: string;\n text400: string;\n text500: string;\n}\n\nexport interface IThemeButton {\n borderRadius: BorderRadius;\n textCapitalization: TextCapitalization;\n}\n\nexport interface IThemeTypography {\n body: string;\n headline: string;\n}\n\nexport interface IClassicThemeOptions {\n accentPrimary: string;\n accentSecondary: string;\n}\n\nexport const BORDER_RADIUS = {\n rounded: 'rounded',\n square: 'square',\n pill: 'pill',\n} as const;\nexport type BorderRadius = ObjectValues<typeof BORDER_RADIUS>;\n\nexport const TEXT_CAPITALIZATION = {\n lowercase: 'lowercase',\n original: 'original',\n uppercase: 'uppercase',\n} as const;\nexport type TextCapitalization = ObjectValues<typeof TEXT_CAPITALIZATION>;\n\nexport const THEME_TYPES = {\n ADMIN: 'admin',\n ADVANCED: 'advanced',\n CLASSIC: 'classic',\n CUSTOM: 'custom',\n} as const;\nexport type ThemeTypes = ObjectValues<typeof THEME_TYPES>;\n\nexport const THEME_MODES = {\n DARK: 'dark',\n LIGHT: 'light',\n} as const;\nexport type ThemeModes = ObjectValues<typeof THEME_MODES>;\n","import ITheme, {\n BORDER_RADIUS,\n TEXT_CAPITALIZATION,\n THEME_MODES,\n THEME_TYPES,\n} from '@/models/ITheme';\n\nconst FONT_FAMILY = 'BentonSans-Medium';\n\nexport const DARK_THEME: ITheme = {\n _id: '6274067af74b66a544018dac',\n button: {\n borderRadius: BORDER_RADIUS.rounded,\n textCapitalization: TEXT_CAPITALIZATION.uppercase,\n },\n colors: {\n // Accent colors\n accentPrimary: '#FFFFFF',\n\n // Secondary accent colors\n accentSecondary: '#3C3F47',\n\n // Tertiary accent colors\n accentTertiary: '#0C0C0E',\n\n // Surface Colors\n surface1: '#080A0C',\n surface2: '#12141A',\n surface3: '#1B1E26',\n surface4: '#242833',\n surface5: '#363C4D',\n surface6: '#3E4759',\n\n // Highlight colors\n highlightPrimary: '#FFFFFF',\n highlightSecondary: '#9A9EA9',\n highlightTertiary: '#0A0C0F',\n\n // Alert colors\n alertConfirmation: '#43D48F',\n alertWarning: '#F58B00',\n alertError: '#FF0000',\n\n // Text colors\n text100: '#F8F9FA',\n text200: '#C2C5CB',\n text300: '#8D919D',\n text400: '#5C606B',\n text500: '#0C0C0E',\n },\n creator: '016901e60000000000000000',\n name: 'Dark Mode',\n type: THEME_TYPES.CLASSIC,\n mode: THEME_MODES.DARK,\n owner: '016901e60000000000000000',\n typography: {\n body: FONT_FAMILY,\n headline: FONT_FAMILY,\n },\n};\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./App.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport { DARK_THEME } from '@/services/ThemeManager/constants';\nimport './App.styles.css';\n\nconst colors = DARK_THEME.colors;\nconst typography = DARK_THEME.typography;\n\nclass App extends React.Component<{ children?: React.ReactNode }> {\n componentDidMount() {\n Object.keys(colors).forEach((key) => {\n document.documentElement.style.setProperty(\n `--sdk-${key}`,\n colors[key as keyof typeof DARK_THEME.colors]\n );\n });\n\n Object.keys(typography).forEach((key) => {\n document.documentElement.style.setProperty(\n `--sdk-font-${key}`,\n typography[key as keyof typeof DARK_THEME.typography]\n );\n });\n }\n\n componentWillUnmount() {\n Object.keys(colors).forEach((key) => {\n document.documentElement.style.removeProperty(`--sdk-${key}`);\n });\n\n Object.keys(typography).forEach((key) => {\n document.documentElement.style.removeProperty(`--sdk-font-${key}`);\n });\n }\n\n render() {\n return <div className=\"sdk-wrapper\">{this.props.children}</div>;\n }\n}\n\nexport default App;\n","import App from './App';\n\nexport default App;\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://MaestroWebSDK/webpack/universalModuleDefinition","webpack://MaestroWebSDK/webpack/bootstrap","webpack://MaestroWebSDK/external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\"}","webpack://MaestroWebSDK/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://MaestroWebSDK/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://MaestroWebSDK/./node_modules/css-loader/dist/runtime/api.js","webpack://MaestroWebSDK/./src/external/spatial-navigation/index.ts","webpack://MaestroWebSDK/./src/helpers/Observable.ts","webpack://MaestroWebSDK/./src/types/OverlayTypes.ts","webpack://MaestroWebSDK/./node_modules/axios/lib/utils.js","webpack://MaestroWebSDK/./node_modules/prop-types/index.js","webpack://MaestroWebSDK/./src/external/spatial-navigation/measureLayout.ts","webpack://MaestroWebSDK/./src/external/spatial-navigation/visualDebugger.ts","webpack://MaestroWebSDK/./src/external/spatial-navigation/spatialNavigation.ts","webpack://MaestroWebSDK/./src/external/spatial-navigation/utils.ts","webpack://MaestroWebSDK/./src/view-models/ViewModel.ts","webpack://MaestroWebSDK/./src/modules/key-plays/view-model/KeyPlaysViewModel.ts","webpack://MaestroWebSDK/./src/external/AxiosNetworkClient.ts","webpack://MaestroWebSDK/./src/external/LocalStorageCacheManager.ts","webpack://MaestroWebSDK/./src/services/NetworkManager/errors.ts","webpack://MaestroWebSDK/./src/services/NetworkManager/NetworkManager.ts","webpack://MaestroWebSDK/./src/services/BetsService.ts","webpack://MaestroWebSDK/./src/modules/bets/mocks.ts","webpack://MaestroWebSDK/./src/modules/bets/view-model/BetsViewModel.ts","webpack://MaestroWebSDK/./src/view-models/MaestroEventViewModel.ts","webpack://MaestroWebSDK/./src/view-models/OverlayViewModel.ts","webpack://MaestroWebSDK/./src/view-models/index.ts","webpack://MaestroWebSDK/./src/components/core/OverlayContainer.tsx","webpack://MaestroWebSDK/./src/external/ReactRenderer.tsx","webpack://MaestroWebSDK/./src/index.tsx","webpack://MaestroWebSDK/./node_modules/axios/lib/core/AxiosError.js","webpack://MaestroWebSDK/external {\"root\":\"ReactDOM\",\"commonjs2\":\"react-dom\",\"commonjs\":\"react-dom\",\"amd\":\"react-dom\"}","webpack://MaestroWebSDK/./node_modules/axios/lib/cancel/CanceledError.js","webpack://MaestroWebSDK/./src/components/atoms/Rive/index.tsx","webpack://MaestroWebSDK/./src/components/molecules/Overlay/Overlay.tsx","webpack://MaestroWebSDK/./src/models/IPanel.ts","webpack://MaestroWebSDK/./src/view-models/PanelManagerViewModel.ts","webpack://MaestroWebSDK/./node_modules/axios/lib/defaults/index.js","webpack://MaestroWebSDK/./src/components/core/App/App.styles.css","webpack://MaestroWebSDK/./src/components/core/PanelManager/PanelManager.styles.css","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlaysView.styles.css","webpack://MaestroWebSDK/./src/components/core/ScrollableContainer/ScrollableContainer.styles.css","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlayCardView.styles.css","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlayErrorStateView.styles.css","webpack://MaestroWebSDK/./src/components/molecules/ActionButton/ActionButton.styles.css","webpack://MaestroWebSDK/./src/components/atoms/BaseButton/BaseButton.styles.css","webpack://MaestroWebSDK/./src/modules/bets/view/BetsView.styles.css","webpack://MaestroWebSDK/./src/modules/bets/view/SixPack/SixPackView.style.css","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/UserBetsView.styles.css","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/Parlay/Parlay.styles.css","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/OutcomeBadge/OutcomeBadge.styles.css","webpack://MaestroWebSDK/./src/modules/bets/view/components/BetPill/BetPill.styles.css","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/BetResult/BetResult.styles.css","webpack://MaestroWebSDK/./src/modules/bets/view/components/BetsCard/BetsCard.styles.css","webpack://MaestroWebSDK/./src/modules/bets/view/components/Bet/Bet.styles.css","webpack://MaestroWebSDK/./src/components/organisms/SegmentController/SegmentController.styles.css","webpack://MaestroWebSDK/./src/components/molecules/SegmentButton/SegmentButton.styles.css","webpack://MaestroWebSDK/./src/modules/bets/view/HotProps/HotPropsView.css","webpack://MaestroWebSDK/./src/modules/bets/view/components/GamblingDisclaimer/GamblingDisclaimer.styles.css","webpack://MaestroWebSDK/./src/modules/bets/view/components/LocationWarning/LocationWarning.styles.css","webpack://MaestroWebSDK/./src/modules/bets/view/components/PromoCodeBanner/PromoCodeBanner.styles.css","webpack://MaestroWebSDK/./src/components/organisms/PanelNavigation/PanelNavigation.styles.css","webpack://MaestroWebSDK/./src/components/molecules/PanelNavButton/PanelNavButton.styles.css","webpack://MaestroWebSDK/./src/external/spatial-navigation/withFocusable.ts","webpack://MaestroWebSDK/./node_modules/axios/lib/helpers/bind.js","webpack://MaestroWebSDK/./node_modules/axios/lib/helpers/buildURL.js","webpack://MaestroWebSDK/./node_modules/axios/lib/defaults/transitional.js","webpack://MaestroWebSDK/./node_modules/axios/lib/helpers/toFormData.js","webpack://MaestroWebSDK/./node_modules/axios/lib/adapters/xhr.js","webpack://MaestroWebSDK/./node_modules/axios/lib/core/buildFullPath.js","webpack://MaestroWebSDK/./node_modules/axios/lib/cancel/isCancel.js","webpack://MaestroWebSDK/./node_modules/axios/lib/core/mergeConfig.js","webpack://MaestroWebSDK/./node_modules/axios/lib/env/data.js","webpack://MaestroWebSDK/./node_modules/@rive-app/canvas/rive.js","webpack://MaestroWebSDK/./node_modules/axios/index.js","webpack://MaestroWebSDK/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://MaestroWebSDK/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://MaestroWebSDK/./node_modules/axios/lib/axios.js","webpack://MaestroWebSDK/./node_modules/axios/lib/core/Axios.js","webpack://MaestroWebSDK/./node_modules/axios/lib/core/InterceptorManager.js","webpack://MaestroWebSDK/./node_modules/axios/lib/core/dispatchRequest.js","webpack://MaestroWebSDK/./node_modules/axios/lib/core/transformData.js","webpack://MaestroWebSDK/./node_modules/process/browser.js","webpack://MaestroWebSDK/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://MaestroWebSDK/./node_modules/buffer/index.js","webpack://MaestroWebSDK/(webpack)/buildin/global.js","webpack://MaestroWebSDK/./node_modules/base64-js/index.js","webpack://MaestroWebSDK/./node_modules/ieee754/index.js","webpack://MaestroWebSDK/./node_modules/buffer/node_modules/isarray/index.js","webpack://MaestroWebSDK/./node_modules/axios/lib/core/settle.js","webpack://MaestroWebSDK/./node_modules/axios/lib/helpers/cookies.js","webpack://MaestroWebSDK/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://MaestroWebSDK/./node_modules/axios/lib/helpers/combineURLs.js","webpack://MaestroWebSDK/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://MaestroWebSDK/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://MaestroWebSDK/./node_modules/axios/lib/helpers/parseProtocol.js","webpack://MaestroWebSDK/./node_modules/axios/lib/helpers/null.js","webpack://MaestroWebSDK/./node_modules/axios/lib/helpers/validator.js","webpack://MaestroWebSDK/./node_modules/axios/lib/cancel/CancelToken.js","webpack://MaestroWebSDK/./node_modules/axios/lib/helpers/spread.js","webpack://MaestroWebSDK/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://MaestroWebSDK/./src/components/molecules/Overlay/index.tsx","webpack://MaestroWebSDK/./src/components/core/PanelManager/PanelManager.styles.css?19b3","webpack://MaestroWebSDK/./src/components/atoms/BaseButton/BaseButton.styles.css?ebfc","webpack://MaestroWebSDK/./src/components/core/ScrollableContainer/ScrollableContainer.styles.css?dfdc","webpack://MaestroWebSDK/./src/components/core/ScrollableContainer/ScrollableContainer.tsx","webpack://MaestroWebSDK/./src/components/core/ScrollableContainer/FocusableItem.tsx","webpack://MaestroWebSDK/./src/components/atoms/BaseButton/BaseButton.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/KeyPlaysIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/PlayIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/BetsIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/StatsIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/FantasyIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/WarningIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/ExpandIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/CollapseIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/TimesIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/CheckmarkIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/FlameIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/BetsWarningIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/MobilePhoneIcon.tsx","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/Icon.tsx","webpack://MaestroWebSDK/./src/components/molecules/PanelNavButton/PanelNavButton.styles.css?a32d","webpack://MaestroWebSDK/./src/components/molecules/PanelNavButton/PanelNavButton.tsx","webpack://MaestroWebSDK/./src/components/molecules/PanelNavButton/index.ts","webpack://MaestroWebSDK/./src/components/organisms/PanelNavigation/PanelNavigation.styles.css?c470","webpack://MaestroWebSDK/./src/helpers/deliver-focus.ts","webpack://MaestroWebSDK/./src/components/organisms/PanelNavigation/PanelNavigation.tsx","webpack://MaestroWebSDK/./src/components/organisms/PanelNavigation/index.ts","webpack://MaestroWebSDK/./src/components/atoms/Image/index.tsx","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlayCardView.styles.css?8b72","webpack://MaestroWebSDK/./src/components/atoms/SvgIcon/index.ts","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlayCardScoreTagView.tsx","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlayCardView.tsx","webpack://MaestroWebSDK/./src/modules/key-plays/constants.ts","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlaysView.styles.css?8543","webpack://MaestroWebSDK/./src/components/atoms/BaseButton/index.ts","webpack://MaestroWebSDK/./src/components/molecules/ActionButton/ActionButton.styles.css?1741","webpack://MaestroWebSDK/./src/components/molecules/ActionButton/ActionButton.tsx","webpack://MaestroWebSDK/./src/components/molecules/ActionButton/index.ts","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlayErrorStateView.styles.css?72fb","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlayErrorStateView.tsx","webpack://MaestroWebSDK/./src/components/core/ScrollableContainer/index.ts","webpack://MaestroWebSDK/./src/modules/key-plays/view/KeyPlaysView.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/SixPack/SixPackView.style.css?e11c","webpack://MaestroWebSDK/./src/modules/bets/view/SixPack/SixPackView.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/BetsView.styles.css?0247","webpack://MaestroWebSDK/./src/components/molecules/SegmentButton/SegmentButton.styles.css?0292","webpack://MaestroWebSDK/./src/components/molecules/SegmentButton/SegmentButton.tsx","webpack://MaestroWebSDK/./src/components/molecules/SegmentButton/index.ts","webpack://MaestroWebSDK/./src/components/organisms/SegmentController/SegmentController.styles.css?5bef","webpack://MaestroWebSDK/./src/components/organisms/SegmentController/SegmentController.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/UserBetsView.styles.css?4502","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/Parlay/Parlay.styles.css?b379","webpack://MaestroWebSDK/./src/modules/bets/view/components/BetsCard/BetsCard.styles.css?dcbd","webpack://MaestroWebSDK/./src/modules/bets/view/components/BetsCard/BetsCard.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/OutcomeBadge/OutcomeBadge.styles.css?182f","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/OutcomeBadge/OutcomeBadge.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/components/BetsCard/BetsCardHeader.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/components/BetPill/BetPill.styles.css?b8c5","webpack://MaestroWebSDK/./src/modules/bets/view/components/BetPill/BetPill.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/BetResult/BetResult.styles.css?cb99","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/BetResult/BetResult.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/BetsCard/BetsCardFooter.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/components/Bet/Bet.styles.css?e770","webpack://MaestroWebSDK/./src/modules/bets/view/components/Bet/Bet.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/BetsCard/BetsCardEvent.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/BetsCard/BetsCard.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/Parlay/Parlay.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/Boost/Boost.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/Straight/Straight.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/Teaser/Teaser.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/UserBets/UserBetsView.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/HotProps/HotPropsView.css?6d32","webpack://MaestroWebSDK/./src/modules/bets/view/HotProps/HotPropsView.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/components/GamblingDisclaimer/GamblingDisclaimer.styles.css?b4f5","webpack://MaestroWebSDK/./src/modules/bets/view/components/GamblingDisclaimer/GamblingDisclaimer.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/components/LocationWarning/LocationWarning.styles.css?efe2","webpack://MaestroWebSDK/./src/modules/bets/view/components/LocationWarning/LocationWarning.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/TabLoadFailureView.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/components/PromoCodeBanner/PromoCodeBanner.styles.css?c21c","webpack://MaestroWebSDK/./src/modules/bets/view/components/PromoCodeBanner/PromoCodeBanner.tsx","webpack://MaestroWebSDK/./src/modules/bets/view/BetsView.tsx","webpack://MaestroWebSDK/./src/components/core/PanelManager/PanelManager.tsx","webpack://MaestroWebSDK/./src/components/core/PanelManager/index.tsx","webpack://MaestroWebSDK/./src/models/ITheme.ts","webpack://MaestroWebSDK/./src/services/ThemeManager/constants.ts","webpack://MaestroWebSDK/./src/components/core/App/App.styles.css?e712","webpack://MaestroWebSDK/./src/components/core/App/App.tsx","webpack://MaestroWebSDK/./src/components/core/App/index.ts"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE__0__","__WEBPACK_EXTERNAL_MODULE__12__","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","memo","isOldIE","Boolean","window","document","all","atob","getTarget","target","styleTarget","querySelector","HTMLIFrameElement","contentDocument","head","e","stylesInDom","getIndexByIdentifier","identifier","result","length","modulesToDom","list","options","idCountMap","identifiers","item","id","base","count","concat","index","obj","css","media","sourceMap","references","updater","push","addStyle","insertStyleElement","style","createElement","attributes","nonce","keys","forEach","setAttribute","insert","Error","appendChild","textStore","replaceText","replacement","filter","join","applyToSingletonTag","remove","styleSheet","cssText","cssNode","createTextNode","childNodes","removeChild","insertBefore","applyToTag","removeAttribute","btoa","unescape","encodeURIComponent","JSON","stringify","firstChild","singleton","singletonCounter","update","styleIndex","parentNode","removeStyleElement","newObj","lastIdentifiers","newList","toString","newLastIdentifiers","_i","_index","splice","_slicedToArray","arr","Array","isArray","_arrayWithHoles","iterator","_s","_e","_arr","_n","_d","next","done","err","_iterableToArrayLimit","minLen","_arrayLikeToArray","slice","constructor","from","test","_unsupportedIterableToArray","TypeError","_nonIterableRest","len","arr2","_item","content","cssMapping","base64","data","sourceMapping","sourceURLs","sources","map","source","sourceRoot","cssWithMappingToString","mediaQuery","dedupe","alreadyImportedModules","destroy","pause","resume","setFocus","init","setKeyMap","SpatialNavigation","Observable","initialValue","_defineProperty","_value","newValue","notify","subscribe","listener","listeners","OverlayType","WinningBet","FantasyPlayerEvent","cache","kindOf","thing","str","toLowerCase","kindOfTest","type","val","isUndefined","isArrayBuffer","isObject","isPlainObject","getPrototypeOf","isDate","isFile","isBlob","isFileList","isFunction","isURLSearchParams","fn","TypedArray","isTypedArray","Uint8Array","isBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isStream","pipe","isStandardBrowserEnv","navigator","product","merge","assignValue","arguments","extend","a","b","thisArg","trim","replace","stripBOM","charCodeAt","inherits","superConstructor","props","descriptors","assign","toFlatObject","sourceObj","destObj","prop","merged","getOwnPropertyNames","endsWith","searchString","position","String","undefined","lastIndex","indexOf","toArray","getRect","node","offsetParent","height","offsetHeight","width","offsetWidth","left","offsetLeft","top","offsetTop","nodeType","scrollLeft","scrollTop","measureLayout","callback","relativeNode","relativeRect","hasDOM","WIDTH","innerWidth","HEIGHT","innerHeight","VisualDebugger","debugCtx","createCanvas","layoutsCtx","zIndex","canvas","ctx","getContext","body","clear","clearRect","clearLayouts","drawLayout","layout","focusKey","parentFocusKey","strokeStyle","strokeRect","font","fillStyle","fillText","drawPoint","x","y","color","size","lineWidth","ROOT_FOCUS_KEY","DEFAULT_KEY_MAP","DEBUG_FN_COLORS","THROTTLE_OPTIONS","leading","trailing","throttle","func","wait","timeout","previous","args","now","Date","remaining","clearTimeout","apply","setTimeout","sortBy","array","iteratee","sort","aValue","bValue","first","difference","values","includes","isVertical","isIncremental","isSibling","itemX","itemY","itemWidth","itemHeight","coordinate","itemSize","direction","refCorners","siblingCorners","isVerticalDirection","refA","refB","siblingA","siblingB","refCoordinateA","refCoordinateB","siblingCoordinateA","siblingCoordinateB","thresholdDistance","Math","max","min","abs","distancesToCompare","sortSiblingsByPriority","siblings","currentLayout","_focusKey","getRefCorners","aCorners","bCorners","aIsAdjacentSlice","isAdjacentSlice","bIsAdjacentSlice","aPrimaryAxisFunction","getPrimaryAxisDistance","getSecondaryAxisDistance","bPrimaryAxisFunction","aSecondaryAxisFunction","bSecondaryAxisFunction","aPrimaryAxisDistance","bPrimaryAxisDistance","focusableComponents","parentsHavingFocusedChild","enabled","nativeMode","throttleKeypresses","pressedKeys","paused","keyDownEventListener","keyUpEventListener","keyMap","debug","visualDebugger","logIndex","onKeyEvent","updateAllLayouts","navigateByDirection","visualDebug","Number","isInteger","bindEventHandlers","startDrawLayouts","draw","requestAnimationFrame","_this$visualDebugger","entries","component","_this$visualDebugger2","unbindEventHandlers","getEventType","keyCode","getKeyMap","find","addEventListener","keyDownHandler","event","eventType","preventDefault","stopPropagation","details","getNodeLayoutByFocusKey","onEnterPress","onBackPress","_this$visualDebugger3","onArrowPress","log","_this$keyDownEventLis","_this$keyDownEventLis2","cancel","onEnterRelease","removeEventListener","_component$onEnterPre","focusable","onEnterPressHandler","_component$onBackPres","onBackPressHandler","_component$onEnterRel","onEnterReleaseHandler","_component$onArrowPre","onArrowPressHandler","validDirections","smartNavigate","_this$visualDebugger4","fromParentFocusKey","layoutUpdated","currentComponent","updateLayout","isIncrementalDirection","currentCutoffCoordinate","getCutoffCoordinate","siblingCutoffCoordinate","sortedSiblings","nextComponent","saveLastFocusedChildKey","lastFocusedChildKey","functionName","debugString","rest","console","getNextFocusKey","targetFocusKey","targetComponent","trackChildren","children","preferredChildFocusKey","forgetLastFocusedChild","isParticipatingFocusableComponent","childKey","childrenClosestToOrigin","getChildClosestToOrigin","addFocusable","onBecameFocusedHandler","onBecameBlurredHandler","onUpdateFocus","onUpdateHasFocusedChild","autoRestoreFocus","blockNavigationOut","removeFocusable","componentToRemove","Reflect","deleteProperty","parentComponent","isFocused","setCurrentFocusedKey","newFocusKey","isFocusableComponent","_oldComponent$onUpdat","_oldComponent$onBecam","oldComponent","_newComponent$onUpdat","_newComponent$onBecam","newComponent","updateParentsHasFocusedChild","parents","currentParentFocusKey","parentsToRemoveFlag","parentsToAddFlag","_parentComponent$onUp","onIntermediateNodeBecameBlurred","_parentComponent$onUp2","onIntermediateNodeBecameFocused","updateParentsLastFocusedChild","_this$focusableCompon","_this$focusableCompon2","_this$focusableCompon3","_this$focusableCompon4","lastFocusedKey","updateFocusable","isNativeMode","getFocusableComponents","getFocusableComponentsByParentFocusKey","ViewModel","_isLoading","_error","setLoading","loading","setError","error","KeyPlaysViewModel","isCurrentlyPlaying","currentlyPlayingClipIndex","items","parseNetworkResponse","cleanErrors","errorState","allItems","atIndex","SDK","getMaestroEventViewModel","delegate","playClip","response","teams","entities","team","athletes","athlete","homeTeam","homeAway","awayTeam","warn","section","sections","keyPlay","playTeam","teamImageUrl","logoRef","playerImageUrl","headshot","thumbnailImageUrl","thumbnailType","thumbnail","homeScore","awayScore","homeTeamScore","scoringPlay","parseInt","awayTeamScore","keyPlayData","random","substring","description","homeTeamName","shortName","awayTeamName","clipID","title","sectionTitle","existingSection","reduce","acc","forKeyPlayAtIndex","handleKeyPlayLoadFailure","newFailedClips","failedClips","loadFailureStatus","clearLoadFailureStatus","mevm","userRequestedNewKeyPlaysData","AxiosNetworkClient","baseURL","retries","delay","backoff","axiosInstance","client","axios","headers","operation","attempt","axiosError","status","code","delayTime","pow","message","Promise","resolve","retry","endpoint","params","async","post","setAuthentication","token","apiKey","defaults","common","LocalStorageCacheManager","cacheDuration","maxSize","version","accessLog","Map","produceCacheKey","prefix","getCurrentSize","totalSize","localStorage","startsWith","getItem","cleanupOldEntries","keysToRemove","timestamp","parse","removeItem","logicalKey","delete","cleanupLRUEntries","newItemSize","shift","setCache","cacheKey","cacheData","setItem","set","getCache","cachedData","clearCache","clearCacheByPattern","pattern","clearAllCache","NetworkError","super","AuthError","NotFoundError","ServerError","statusCode","BadRequestError","WorkingEnvironment","MAESTRO_BASE_URLS","HttpMethod","NetworkManager","localStorageOverride","environment","pollingTasks","cacheManager","defaultCacheDuration","maestroClient","networkClient","externalClient","externalNetworkClient","externalBaseURL","globalThis","instance","setEnvironment","_client","getEnvironment","handleError","_error$response$data","request","method","useCache","maestroDefaultHeaders","skipResponseBodyDeserialization","requestHeaders","siteId","jwt","pollMaestroApiRequest","interval","onData","onError","taskKey","_this$pollingTasks$ge","has","controller","abort","AbortController","signal","aborted","maestroApiRequest","stop","_this$pollingTasks$ge2","pollExternalApiRequest","_this$pollingTasks$ge3","externalApiRequest","_this$pollingTasks$ge4","stopAllPolling","originalLength","BetsService","networkManager","getInstance","getBettingAPIBaseURL","eventID","nonPersonalizedBetsEndpoint","swid","personalizedBetsEndpoint","pollNonPersonalizedBets","pollPersonalizedBets","sport","date","gameState","featured","selections","icon","iconDark","odds","outcome","text","bets","displayName","abbreviation","state","line","MOCK_BETS_API_RESPONSE","uid","guid","slug","shortDisplayName","nickname","location","alternateColor","favored","betsModule","defaultTab","upcoming","live","betStatus","overrideOutcome","betAmount","payoutAmount","startTime","events","legs","marketId","marketSelectionId","marketType","boostType","selectionText","marketText","url","marketStatus","rewardInfo","legCount","isNoAction","betDisplayStatement","light","dark","settled","closedAtTime","points","accrued","goal","promos","logo","qrCode","disclaimers","gambling","isPersonalizedBetsResponse","hashCode","hash","BetsViewModel","eventId","betsService","pollingInterval","useMockData","fetchNewData","refreshPolling","initialized","cleanup","stopPolling","pollingTask","pollWithInterval","userIsAuthenticated","getUserSWID","getUserToken","processPolledData","handlePollingError","responseHash","lastPersonalizedResponseHash","hasEverSuccessfullyLoaded","lastNonPersonalizedResponseHash","processBetsData","newItems","sixPack","processSixPackData","locationDisclaimer","processLocationDisclaimer","userBets","processUserBetsData","hotProps","processHotProps","promoCode","processPromoCode","gamblingMessage","processGamblingMessage","betsItems","_data$disclaimers","_data$event","_data$disclaimers2","_response$entities","_response$bets","_response$event","_response$event$bets","_response$event2","_response$event3","_response$event4","_homeTeam$favored","_awayTeam$abbreviatio","_homeTeam$abbreviatio","isPersonalized","teamArray","spreadOdds","odd","some","v","isHomeFavoured","isInProgress","awayTeamStartGameFirstLine","awayTeamStartGameSecondLine","homeTeamStartGameFirstLine","homeTeamStartGameSecondLine","awaySpreadFirstLine","awaySpreadSecondLine","homeSpreadFirstLine","homeSpreadSecondLine","awayTotalFirstLine","awayTotalSecondLine","homeTotalFirstLine","homeTotalSecondLine","awayMoneylineFirstLine","homeMoneylineFirstLine","oddsItem","_value$line","_value$odds","_value$line2","_value$odds2","_value$line3","_value$odds3","_value$line4","_value$odds4","_value$line5","_value$odds5","_value$line6","_value$odds6","_value$line7","_value$odds7","_value$line8","_value$odds8","_value$line9","_value$odds9","_value$line0","_value$odds0","_value$line1","_value$odds1","_value$line10","_value$odds10","_value$line11","_value$odds11","_value$line12","_value$odds12","_value$line13","_value$odds13","_value$line14","_value$odds14","_value$odds15","_value$odds16","_value$odds17","_value$odds18","awayTeamOdds","teamAbbreviation","startOfGameFirstLine","startOfGameSecondLine","gameSpreadFirstLine","gameSpreadSecondLine","totalPointsFirstLine","totalPointsSecondLine","moneylineFirstLine","homeTeamOdds","teamInfo","home","away","bet","_response$event5","every","hotProp","current","isDataLoading","fetchMockData","fetchPersonalizedData","fetchNonPersonalizedData","getPersonalizedBets","getNonPersonalizedBets","simulateUseCase","useCase","_","clearTabLoadFailure","MaestroEventViewModel","_eventId","betsViewModel","deinit","updateKeyPlaysData","keyPlaysViewModel","setKeyPlays","startFocusManagement","didStartPlayingClip","lastPlayedClipIndex","currentClipPlaybackProgress","didStopPlayingClip","didFailToPlayClip","didUpdatePlaybackProgressOfClip","to","didShowPanel","isShowingPanel","didShowOverlay","didHideOverlay","currentEventDoesNotSupportKeyPlays","getCurrentEventID","getCurrentlyPlayingClipIndex","getLastPlayedClipIndex","getCurrentClipPlaybackProgress","getKeyPlaysCount","_title","_isLive","_isShowingPanel","panelType","testData","OverlayViewModel","analyticsService","_isVisible","_currentOverlay","_autoDismiss","_overlayQueue","_overlay$fantasy$titl","_overlay$fantasy","overlay","fantasy","_overlay$winningBet$n","_overlay$winningBet","_overlay$fantasy$meta","_overlay$fantasy2","winningBet","notificationText","metadata","showOverlay","overlayEvent","currentQueue","_hasTrackedView","setupAutoDismiss","hideOverlay","autoDismissTimeout","queue","nextOverlay","remainingQueue","handleOverlayClick","trackOverlayClicked","trackOverlayViewed","eventName","template","templateId","instanceName","overlayTitle","instanceId","getInstanceId","fullscreen","overlayType","track","handleOverlayViewed","_overlayType","handleOverlayAction","_overlay$winningBet$s","_overlay$winningBet2","_overlay$fantasy$athl","_overlay$fantasy3","serverID","athleteId","MaestroViewModels","eventViewModel","panelManagerViewModel","PanelManagerViewModel","overlayViewModel","OverlayContainer","React","createClass","propTypes","viewModels","PropTypes","getInitialState","isVisible","currentOverlay","componentDidMount","_this$props$viewModel","overlayVM","unsubscribeVisible","visible","setState","unsubscribeOverlay","componentWillUnmount","render","Overlay","default","onOverlayViewed","_this$props$viewModel2","onOverlayAction","_this$props$viewModel3","ReactRenderer","fromEventId","renderer","getRenderer","App","PanelManager","unmount","renderersMap","el","getElementById","ReactDOM","unmountComponentAtNode","AUTHORIZED_CLIENTS","MaestroWebSDK","isAuthorizedClient","maestroEventViewModel","userDidStopWatchingEvent","configure","configParams","siteID","setSiteID","maestroJwt","setMaestroJwt","clientAppToken","setClientAppToken","clientAppSwid","setClientAppSwid","info","getSiteID","setUserID","userID","getUserID","getMaestroViewModels","setViewModels","renderPanel","getCurrentMaestroJwt","getClientAppToken","getCurrentUserID","getClientAppSwid","utils","AxiosError","config","toJSON","number","fileName","lineNumber","columnNumber","stack","defineProperties","customProps","CanceledError","ERR_CANCELED","__CANCEL__","Rive","Component","riveInstance","RiveCanvas","src","autoplay","autoPlay","stateMachines","onLoad","onLoadRiveInstance","onLoadError","autoFocus","data-focused","focused","withFocusable","autoDismiss","hasTrackedView","resizeDrawingSurfaceToCanvas","setTextRunValueAtPath","overlayMetadata","inputs","stateMachineInputs","triggerPlayInput","input","fire","_fantasy$title","_winningBet$notificat","_fantasy$metadata","_this$props$position","_this$props$position2","_this$props$position3","_this$props$position4","right","bottom","MaestroPanelType","KEY_PLAYS","STATS","FANTASY","BETS","_panels","_currentPanel","_newlyFocusedPanel","getIndex","forPanelType","panels","findIndex","getPanelType","currentIndex","currentPanel","normalizeHeaderName","transitionalDefaults","toFormData","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","transitional","XMLHttpRequest","process","transformRequest","isObjectPayload","contentType","_FormData","env","rawValue","parser","encoder","stringifySafely","transformResponse","silentJSONParsing","forcedJSONParsing","strictJSONParsing","responseType","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","___CSS_LOADER_EXPORT___","noop","configForgetLastFocusedChild","configTrackChildren","configAutoRestoreFocus","configBlockNavigationOut","WrappedComponent","_WithFocusable","realFocusKey","substr","hasFocusedChild","onBecameFocused","onBecameBlurred","getChildContext","domNode","findDOMNode","componentDidUpdate","filteredProps","omit","stealFocus","string","encode","paramsSerializer","serializedParams","parts","toISOString","hashmarkIndex","clarifyTimeoutError","formData","convertValue","Blob","Buffer","build","parentKey","fullKey","append","pop","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","parseProtocol","reject","onCanceled","requestData","cancelToken","unsubscribe","auth","username","password","Authorization","fullPath","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","open","toUpperCase","onreadystatechange","readyState","responseURL","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","withCredentials","read","setRequestHeader","onDownloadProgress","onUploadProgress","upload","protocol","ERR_BAD_REQUEST","send","isAbsoluteURL","combineURLs","requestedURL","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","__webpack_modules__","__unused_webpack___webpack_module__","__webpack_exports__","_scriptDir","__WEBPACK_DEFAULT_EXPORT__","currentScript","moduleArg","aa","ba","ca","g","pb","Tb","f","cancelAnimationFrame","Rb","backgroundColor","padding","innerHTML","toFixed","performance","Ob","fa","assert","ready","ha","onRuntimeInitialized","decodeAudio","decodeFont","FileAssetLoader","ptrToAsset","ptrToFileAsset","isImage","ptrToImageAsset","isFont","ptrToFontAsset","isAudio","ptrToAudioAsset","CustomFileAssetLoader","__construct","loadContents","__parent","Gb","CDNFileAssetLoader","cdnUuid","cdnBaseUrl","decode","FallbackFileAssetLoader","lb","addLoader","computeAlignment","ia","split","ja","k","alpha","depth","stencil","antialias","premultipliedAlpha","preserveDrawingBuffer","powerPreference","failIfMajorPerformanceCaveat","enableExtensionsByDefault","explicitSwapControl","renderViaOffscreenBackBuffer","userAgent","A","D","w","M","createShader","shaderSource","compileShader","getShaderInfoLog","attachShader","Proxy","isContextLost","getParameter","MAX_RENDERBUFFER_SIZE","MAX_TEXTURE_SIZE","createProgram","VERTEX_SHADER","FRAGMENT_SHADER","bindAttribLocation","linkProgram","getProgramInfoLog","getUniformLocation","useProgram","bindBuffer","ARRAY_BUFFER","createBuffer","enableVertexAttribArray","ELEMENT_ARRAY_BUFFER","uniform1i","pixelStorei","UNPACK_PREMULTIPLY_ALPHA_WEBGL","hc","Mb","deleteTexture","Lb","createTexture","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_LINEAR","generateMipmap","u","Qb","T","viewport","disable","SCISSOR_TEST","clearColor","COLOR_BUFFER_BIT","enable","H","da","xb","bufferData","DYNAMIC_DRAW","bufferSubData","Ua","ea","Db","ra","indices","image","Ka","Ja","mc","scissor","Za","$a","kb","Ac","uniform4f","Ba","Ca","uniform2f","ic","jc","vertexAttribPointer","FLOAT","drawElements","TRIANGLES","UNSIGNED_SHORT","ka","q","srcOver","screen","darken","lighten","colorDodge","colorBurn","hardLight","softLight","exclusion","multiply","hue","saturation","luminosity","drawWidth","drawHeight","reset","RenderPaintStyle","RenderPath","RenderPaint","Renderer","StrokeCap","StrokeJoin","BlendMode","fill","stroke","FillRule","evenOdd","RenderImage","la","xa","__destruct","URL","revokeObjectURL","Xa","F","Image","createObjectURL","onload","Fb","Path2D","rewind","addPath","I","B","G","J","K","Z","Q","DOMMatrix","fillRule","Wa","moveTo","lineTo","cubicTo","bezierCurveTo","close","closePath","Ya","thickness","Ib","miter","Ia","round","bevel","cap","butt","Ha","square","Hb","blendMode","Eb","clearGradient","linearGradient","zb","Ab","cb","eb","Ra","radialGradient","ec","addStop","completeGradient","globalCompositeOperation","createRadialGradient","sqrt","createLinearGradient","X","R","addColorStop","lineCap","lineJoin","Set","CanvasRenderer","S","C","Va","save","restore","transform","rotate","sin","cos","_drawPath","_drawRiveImage","globalAlpha","drawImage","_getMatrix","_drawImageMesh","Yb","Zb","Ga","sa","ceil","ta","DynamicRectanizer","addRect","add","$b","ac","Float32Array","Uint16Array","za","qd","resetTransform","bc","_clipPath","clip","flush","translate","makeRenderer","decodeImage","renderFactory","makeRenderPaint","makeRenderPath","makeRenderImage","total","loaded","load","rd","RendererWrapper","align","enableFPSCounter","disableFPSCounter","resolveAnimationFrame","qa","ua","ma","na","oa","importScripts","pa","self","href","lastIndexOf","va","print","wa","printErr","thisProgram","wasmBinary","noExitRuntime","WebAssembly","ya","Aa","z","E","Da","L","N","Ea","Fa","HEAP8","Int8Array","HEAP16","Int16Array","HEAP32","Int32Array","HEAPU8","HEAPU16","HEAPU32","Uint32Array","HEAPF32","HEAPF64","Float64Array","La","Ma","Na","preRun","unshift","Sa","Oa","Pa","Qa","onAbort","RuntimeError","Ta","locateFile","fetch","credentials","then","ok","arrayBuffer","catch","instantiate","456380","AudioContext","webkitAudioContext","h","capture","ga","stopped","yb","yc","Cb","Sc","unlock","qb","458558","458862","mediaDevices","getUserMedia","458966","sampleRate","459137","suspend","createScriptProcessor","onaudioprocess","inputBuffer","getChannelData","ab","bb","outputBuffer","numberOfChannels","audio","video","createMediaStreamSource","connect","destination","462014","462087","disconnect","462487","462537","462676","db","fb","charAt","gb","exec","hb","jb","crypto","getRandomValues","ib","TextDecoder","mb","subarray","fromCharCode","nb","ob","rb","sb","V","tb","ub","O","seekable","write","vb","prompt","readline","Fc","Hc","Ec","Gc","Dc","cc","dc","wb","j","P","U","createNode","dir","Y","Bb","stream","file","link","Kc","Jc","Mc","Oc","Lc","Bc","Nc","Ic","Jb","Cc","parent","byteOffset","Kb","path","Nb","lc","Pb","Sb","Ub","flags","Vb","Qc","kc","Wb","Xb","zc","logReadFiles","fc","gc","pc","nc","oc","qc","rc","sc","tc","uc","vc","wc","xc","W","Pc","FinalizationRegistry","unregister","register","Rc","fromWireType","Tc","Uc","Vc","Wc","Xc","Yc","Zc","$c","ad","bd","cd","dd","ed","fd","clone","gd","hd","toWireType","jd","kd","ld","md","nd","od","pd","sd","td","ud","vd","wd","xd","yd","zd","Ad","Bd","Cd","Dd","Ed","Fd","Gd","Nd","Hd","Kd","Ld","Md","Od","USER","LOGNAME","PATH","PWD","HOME","LANG","languages","Pd","Qd","Rd","byteLength","BindingError","count_emval_handles","PureVirtualError","Td","Ud","getInheritedInstanceCount","getLiveInheritedInstances","flushPendingDeletes","setDelayFunction","InternalError","isAliasOf","isDeleted","deleteLater","argPackAdvance","readValueFromPointer","deleteObject","pointerType","UnboundTypeError","Xd","__syscall_fcntl64","Vd","__syscall_ioctl","__syscall_openat","_embind_create_inheriting_constructor","implement","notifyOnDestruction","_embind_finalize_value_object","_embind_register_bigint","_embind_register_bool","_embind_register_class","$","_embind_register_class_class_function","_embind_register_class_class_property","configurable","_embind_register_class_constructor","_embind_register_class_function","className","_embind_register_class_property","_embind_register_emval","_embind_register_enum","_embind_register_enum_value","_embind_register_float","_embind_register_function","_embind_register_integer","_embind_register_memory_view","_embind_register_std_string","Uint8ClampedArray","Wd","_embind_register_std_wstring","_embind_register_value_object","_embind_register_value_object_field","_embind_register_void","_emscripten_get_now_is_monotonic","_emval_as","_emval_call_method","_emval_call_void_method","_emval_decref","_emval_get_method_caller","Jd","Id","_emval_get_module_property","_emval_get_property","_emval_incref","_emval_new_array","_emval_new_cstring","_emval_new_object","_emval_run_destructors","_emval_set_property","_emval_take_value","emscripten_asm_const_int","emscripten_date_now","emscripten_get_now","emscripten_memcpy_big","copyWithin","emscripten_resize_heap","grow","environ_get","environ_sizes_get","fd_close","fd_read","fd_seek","NaN","isNaN","floor","fd_write","strftime_l","getFullYear","getMonth","getDate","getDay","getTime","setDate","setMonth","setFullYear","RegExp","Sd","memory","__indirect_function_table","__wasm_call_ctors","monitorRunDependencies","clearInterval","wasi_snapshot_preview1","instantiateWasm","instantiateStreaming","free","malloc","__errno_location","_ma_device__on_notification_unlocked","ma_device__on_notification_unlocked","_ma_malloc_emscripten","ma_malloc_emscripten","_ma_free_emscripten","ma_free_emscripten","Yd","_ma_device_process_pcm_frames_capture__webaudio","ma_device_process_pcm_frames_capture__webaudio","_ma_device_process_pcm_frames_playback__webaudio","ma_device_process_pcm_frames_playback__webaudio","__getTypeName","$d","calledRun","noFSInit","stdin","stdout","stderr","postRun","setStatus","__embind_initialize_bindings","_embind_initialize_bindings","dynCall_iiji","dynCall_jiji","dynCall_iiiji","dynCall_iij","dynCall_jii","dynCall_viijii","dynCall_iiiiij","dynCall_iiiiijj","dynCall_iiiiiijj","Zd","preInit","__unused_webpack_module","Animation","_Animation__WEBPACK_IMPORTED_MODULE_0__","animation","artboard","runtime","playing","loopCount","scrubTo","LinearAnimationInstance","time","loopValue","advance","mix","AudioAssetWrapper","_finalizationRegistry__WEBPACK_IMPORTED_MODULE_2__","AudioWrapper","BLANK_URL","_sanitizeUrl__WEBPACK_IMPORTED_MODULE_1__","CustomFileAssetLoaderWrapper","FileAssetWrapper","Finalizable","FontAssetWrapper","FontWrapper","ImageAssetWrapper","ImageWrapper","finalizationRegistry","registerTouchInteractions","_registerTouchInteractions__WEBPACK_IMPORTED_MODULE_0__","sanitizeUrl","_a","_b","rive","fit","alignment","_c","isTouchScrollEnabled","layoutScaleFactor","_prevEventType","_syntheticEventsActive","MouseEvent","boundingRect","currentTarget","getBoundingClientRect","touches","clientX","clientY","changedTouches","getClientCoordinates","canvasX","canvasY","forwardMatrix","minX","minY","maxX","maxY","bounds","invertedMatrix","Mat2D","invert","canvasCoordinatesVector","Vec2D","transformedVector","mapXY","transformedX","transformedY","stateMachines_1","pointerMove","stateMachines_2","stateMachines_3","pointerDown","stateMachines_4","pointerUp","passive","invalidProtocolRegex","htmlEntitiesRegex","htmlCtrlEntityRegex","ctrlCharactersRegex","urlSchemeRegex","relativeFirstCharacters","sanitizedUrl","match","dec","isRelativeUrlWithoutProtocol","urlSchemeParseResults","urlScheme","extendStatics","__extends","setPrototypeOf","__proto__","__","selfUnref","_super","_this","_nativeImage","unref","_nativeAudio","_nativeFont","loaderCallback","_assetLoaderCallback","assetLoader","asset","bytes","assetWrapper","nativeAsset","_nativeFileAsset","fileExtension","uniqueFilename","setRenderImage","nativeImage","setAudioSource","nativeAudio","setFont","nativeFont","FakeFinalizationRegistry","__webpack_module_cache__","cachedModule","definition","Alignment","DataEnum","EventType","Fit","Layout","LoopType","RiveEventType","RiveFile","RuntimeLoader","StateMachineInput","StateMachineInputType","Testing","ViewModelInstance","ViewModelInstanceAssetImage","ViewModelInstanceBoolean","ViewModelInstanceColor","ViewModelInstanceEnum","ViewModelInstanceList","ViewModelInstanceNumber","ViewModelInstanceString","ViewModelInstanceTrigger","ViewModelInstanceValue","_rive_advanced_mjs__WEBPACK_IMPORTED_MODULE_0__","package_json__WEBPACK_IMPORTED_MODULE_1__","_animation__WEBPACK_IMPORTED_MODULE_2__","_utils__WEBPACK_IMPORTED_MODULE_3__","__assign","__awaiter","_arguments","generator","fulfilled","step","rejected","__generator","label","sent","trys","ops","Iterator","verb","op","__spreadArray","pack","ar","RiveError","isHandledError","_f","_g","Contain","Center","new","copyWith","runtimeFit","cachedRuntimeFit","Cover","cover","contain","Fill","FitWidth","fitWidth","FitHeight","fitHeight","ScaleDown","scaleDown","none","runtimeAlignment","cachedRuntimeAlignment","TopLeft","topLeft","TopCenter","topCenter","TopRight","topRight","CenterLeft","centerLeft","CenterRight","centerRight","BottomLeft","bottomLeft","BottomCenter","bottomCenter","BottomRight","bottomRight","center","loadRuntime","wasmURL","callBackQueue","errorDetails","wasmError","CompileError","originalError","backupJsdelivrUrl","setWasmUrl","errorMessage","isLoading","awaitInstance","getWasmUrl","runtimeInput","Trigger","StateMachine","stateMachine","StateMachineInstance","initInputs","names","stateChangedCount","stateChangedNameByIndex","advanceAndApply","reportedEventCount","reportedEventAt","inputCount","mapRuntimeInput","SMIInput","bool","asBool","asNumber","trigger","asTrigger","bindViewModelInstance","viewModelInstance","runtimeInstance","Animator","eventManager","animations","animatables","fireEvent","mapToStringArray","instancedAnimationNames","instancedMachineNames","aIndex","mIndex","anim","animationByName","newAnimation","sm","stateMachineByName","newStateMachine","Play","Pause","initLinearAnimations","initStateMachines","instancedStateMachineNames","play","scrub","forScrubbing","removedNames","animationsToRemove","machinesToRemove","Stop","curr","isPlaying","atLeastOne","instancedName","animationCount","animationByIndex","stateMachineCount","stateMachineByIndex","handleLooping","Loop","PingPong","handleStateChanges","statesChanged","StateChange","handleAdvancing","Advance","SystemAudioStatus","EventManager","getListeners","currentListener","removeAll","TaskQueueManager","task","action","PropertyType","audioManager","AudioManager","_started","_enabled","_status","UNAVAILABLE","reportToListeners","AudioStatusChange","enableAudio","AVAILABLE","testAudio","_audioContext","race","_establishAudio","listenForUserAction","once","establishAudio","FakeResizeObserver","observe","unobserve","MyResizeObserver","ResizeObserver","observers","ObjectObservers","_elementsMap","_onObservedEntry","entry","observed","onResize","clientWidth","clientHeight","_resizeObserver","_onObserved","element","enableRiveAssetCDN","referenceCount","destroyed","on","Load","LoadError","initData","loader","loaderWrapper","loadRiveFile","fireLoadError","fileLoadErrorMessage","error_1","missingErrorMessage","off","removeAllRiveEventListeners","_observed","readyForPlaying","eventCleanup","shouldDisableRiveListeners","automaticallyHandleEvents","_volume","_artboardWidth","_artboardHeight","_devicePixelRatioUsed","_hasZeroSize","_audioEventListener","_boundDraw","_viewModelInstance","_dataEnums","durations","frameTimes","frameCount","onCanvasResize","hasZeroSize","toggledDisplay","_layout","resizeToCanvas","renderSecondTimer","HTMLCanvasElement","riveFile","onPlay","onPause","onStop","onLoop","onStateChange","onAdvance","onloaderror","onplay","onpause","onstop","onloop","onstatechange","taskQueue","autoBind","useOffscreenRenderer","viewModelCount","onSystemAudioChanged","volume","startingAnimationNames","startingStateMachineNames","removeRiveListeners","deleteRiveRenderer","hasInitialized","setupRiveListeners","riveListenerOptions","activeStateMachines","animator","hasListeners","touchScrollEnabledOption","initializeAudio","hasAudio","initArtboardSize","artboardName","animationNames","stateMachineNames","error_2","msg","initArtboard","drawFrame","instanceNames","rootArtboard","artboardByName","defaultArtboard","systemVolume","viewModel","defaultArtboardViewModel","defaultInstance","timeline","currentTime","frameRequestId","startRendering","onSecond","before","lastRenderTime","elapsedTime","activeAnimations_1","needsScrub","didLoop","activeStateMachines_1","numEventsReported","event_1","OpenUrl","RiveEvent","newAnchorTag","click","alignRenderer","after","handleCallbacks","isPaused","isStopped","stopRendering","cleanupInstances","retrieveTextRun","textRunName","textRun","getTextRunValue","setTextRunValue","textRunValue","artBoardName","customDevicePixelRatio","dpr","devicePixelRatio","devicePixelRatioUsed","scaleFactor","retrieveInputAtPath","inputByPath","setBooleanStateAtPath","inputName","setNumberStateAtPath","fireStateAtPath","retrieveTextAtPath","textByPath","getTextRunValueAtPath","textName","run","unsubscribeAll","fpsCallback","riveContents","artboards","artboardCount","artboardByIndex","artboardContents","name_1","inputContents","resetArtboardSize","internalIncrementReferenceCount","viewModelByIndex","viewModelByName","enums","dataEnums","dataEnum","defaultViewModel","cleanupErrorMessage","_viewModel","instanceCount","instanceByIndex","instanceByName","getProperties","getInstanceNames","_dataEnum","_parents","_children","_viewModelInstances","_propertiesWithCallbacks","_referenceCount","_runtimeInstance","clearChanges","child","addParent","addToViewModelCallbacks","removeParent","removeFromViewModelCallbacks","addToPropertyCallbacks","removeFromPropertyCallbacks","clearCallbacks","propertyFromPath","pathSegments","propertyFromPathSegments","viewModelFromPathSegments","internalViewModelInstance","_h","_j","_k","_l","_m","_o","_p","_q","_r","boolean","Color","Enum","enum","List","viewModelRuntimeInstance","parentViewModelInstance","internalReplaceViewModel","replaceViewModel","oldInstance_1","incrementReferenceCount","decrementReferenceCount","callbacks","_viewModelInstanceValue","_parentViewModel","internalHandleCallback","hasChanged","valueIndex","addInstance","addInstanceAt","removeInstance","removeInstanceAt","instanceAt","swap","rgb","rgba","argb","opacity","req","Request","audioWrapper","imageWrapper","fontWrapper","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","Axios","mergeConfig","createInstance","defaultConfig","context","instanceConfig","CancelToken","isCancel","VERSION","Cancel","promises","spread","isAxiosError","InterceptorManager","dispatchRequest","validator","validators","interceptors","configOrUrl","assertOptions","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","promise","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","handlers","use","eject","transformData","throwIfCancellationRequested","throwIfRequested","reason","fns","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","nextTick","browser","argv","versions","addListener","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","binding","cwd","chdir","umask","normalizedName","ieee754","kMaxLength","TYPED_ARRAY_SUPPORT","that","RangeError","arg","encodingOrOffset","allocUnsafe","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","fromString","checked","copy","fromObject","assertSize","loweredCase","utf8ToBytes","base64ToBytes","slowToString","start","end","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","buf","readUInt16BE","foundIndex","found","hexWrite","offset","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","fromByteArray","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","decodeCodePointsArray","SlowBuffer","alloc","INSPECT_MAX_BYTES","global","foo","typedArraySupport","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","compare","pos","swap16","swap32","swap64","equals","inspect","thisStart","thisEnd","thisCopy","targetCopy","isFinite","ret","out","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","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","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","Infinity","leadSurrogate","toByteArray","stringtrim","base64clean","dst","Function","b64","lens","getLens","validLen","placeHoldersLen","tmp","Arr","_byteLength","curByte","revLookup","uint8","extraBytes","len2","encodeChunk","lookup","num","output","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","LN2","expires","domain","secure","cookie","toGMTString","decodeURIComponent","relativeURL","ignoreDuplicateOf","originURL","msie","urlParsingNode","resolveURL","host","search","hostname","port","pathname","requestURL","deprecatedWarnings","formatMessage","opt","desc","opts","ERR_DEPRECATED","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","executor","resolvePromise","_listeners","onfulfilled","_resolve","payload","locals","ScrollableContainer","scrolled","ref","refsMap","lastHash","scrollableContainerRef","containerRect","aRect","bRect","refs","getOrderedRefs","ms","nodeRect","contains","hasOutside","rect","containerTopOffset","newScrolled","setRef","scrollToFocusedElement","_extends","data-scrolled","HTMLElement","DEFAULT_SCROLLABLE_CONTAINER_CONTEXT","SCROLLABLE_CONTEXT_TYPE","FocusableItem","BaseButton","KeyPlaysIcon","viewBox","xmlns","PlayIcon","clipRule","BetsIcon","StatsIcon","clipPath","FantasyIcon","WarningIcon","ExpandIcon","CollapseIcon","TimesIcon","CheckmarkIcon","FlameIcon","BetsWarningIcon","MobilePhoneIcon","iconImports","keyPlays","stats","warning","expand","collapse","times","checkmark","flame","betsWarning","mobilePhone","Skeleton","Icon","iconName","IconComponent","PanelNavButton","active","data-style","buttonRef","deliverFocus","eventVm","dataset","PanelNavigationButton","_props","itemFocused","handleArrowPress","PanelNavigation","lastFocused","onEnter","handleBecameFocused","failed","alt","ScoreCard","KeyPlayCardView","failedClip","crossOrigin","vm","failedClipListener","playbackProgress","isScoring","renderImage","FocusableKeyPlayCard","KeyPlayCard","handleLeftPressed","ActionButton","UnpopulatedEvent","UnsupportedEvent","SimpleTabLoadFailure","TabLoadFailure","KeyPlayErrorStateView","onRetry","KeyPlays","_this$vm$currentClipP","_this$vm$currentlyPla","playKeyPlay","rawSections","scrollableContainer","playbackIndex","playbackProgressUnsub","playbackIndexUnsub","itemsUnsub","container","sectionIndex","absoluteIndex","vmItem","handlePlayClip","KeyPlaysWithErrorState","errorStateUnsub","handleRetry","SixPackView","toLocaleLowerCase","renderOrderedLineColumn","columnOrder","col","lines","isSoccer","scope","FocusableSixPackView","FocusableSixPackViewWrapper","firstElementChild","SegmentButton","data-active","SegmentController","activeIndex","lastActiveIndex","BetsCard","header","footer","OutcomeBadge","BetsCardHeader","renderIcon","iconUrl","betType","legCountThreshold","betCardProps","cardExpanded","BetPill","BetResult","BetsCardFooter","Bet","accruedValue","leg","data-focusable","data-complete","BetsCardEvent","betId","eventIndex","betsFocusable","onBetArrowPress","onBetBackPress","UserBetsCard","focusKeyPrefix","legIndex","focusCard","headerProps","_this$props$bet$rewar","_this$props$renderHea","_this$props","renderHeaderContent","renderHeader","renderFooter","handleCardArrowPress","becameFocused","handleBetArrowPress","Parlay","Boost","Straight","Teaser","UserBetsView","activeSegment","segment","setSegment","_this$bets","renderBet","segmentItems","renderBets","HotPropsView","getBetFocusKey","getCardFocusKey","renderFlameIcon","getTotalBets","expanded","handleEnterPress","onCardBecameFocused","onCardArrowPress","lineItems","idx","onBetBecameFocused","GamblingDisclaimer","LocationWarning","disclaimerText","displayText","TabLoadFailureView","PromoCodeBanner","showLogo","backgroundImage","FocusablePromoCodeBanner","FocusablePromoCodeBannerWrapper","BetsView","BetItemPromoCode","betsItemsUnsub","isDataLoadingUnsub","data-has-error","renderBetItem","PANELS_MAP","KeyPlaysView","activePanel","currentPanelObservable","goToPanel","panel","PANEL_ITEMS","DARK_THEME","_id","button","borderRadius","textCapitalization","colors","accentPrimary","accentSecondary","accentTertiary","surface1","surface2","surface3","surface4","surface5","surface6","highlightPrimary","highlightSecondary","highlightTertiary","alertConfirmation","alertWarning","alertError","text100","text200","text300","text400","text500","creator","owner","typography","headline","documentElement","setProperty","script","removeProperty"],"mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,EAAQG,QAAQ,SAAUA,QAAQ,cAC1B,mBAAXC,QAAyBA,OAAOC,IAC9CD,OAAO,gBAAiB,CAAC,QAAS,aAAcJ,GACtB,iBAAZC,QACdA,QAAuB,cAAID,EAAQG,QAAQ,SAAUA,QAAQ,cAE7DJ,EAAoB,cAAIC,EAAQD,EAAY,MAAGA,EAAe,UARhE,CASGO,MAAM,SAASC,EAAgCC,GAClD,O,YCTE,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUV,QAGnC,IAAIC,EAASO,EAAiBE,GAAY,CACzCC,EAAGD,EACHE,GAAG,EACHZ,QAAS,IAUV,OANAa,EAAQH,GAAUI,KAAKb,EAAOD,QAASC,EAAQA,EAAOD,QAASS,GAG/DR,EAAOW,GAAI,EAGJX,EAAOD,QA0Df,OArDAS,EAAoBM,EAAIF,EAGxBJ,EAAoBO,EAAIR,EAGxBC,EAAoBQ,EAAI,SAASjB,EAASkB,EAAMC,GAC3CV,EAAoBW,EAAEpB,EAASkB,IAClCG,OAAOC,eAAetB,EAASkB,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEV,EAAoBgB,EAAI,SAASzB,GACX,oBAAX0B,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAetB,EAAS0B,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAetB,EAAS,aAAc,CAAE4B,OAAO,KAQvDnB,EAAoBoB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQnB,EAAoBmB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFAxB,EAAoBgB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOnB,EAAoBQ,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRvB,EAAoB2B,EAAI,SAASnC,GAChC,IAAIkB,EAASlB,GAAUA,EAAO8B,WAC7B,WAAwB,OAAO9B,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAQ,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRV,EAAoBW,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG7B,EAAoBgC,EAAI,GAIjBhC,EAAoBA,EAAoBiC,EAAI,I,gBClFrDzC,EAAOD,QAAUM,G,6BCEjB,IACMqC,EADFC,EAEK,WAUL,YAToB,IAATD,IAMTA,EAAOE,QAAQC,QAAUC,UAAYA,SAASC,MAAQF,OAAOG,OAGxDN,GAIPO,EAAY,WACd,IAAIP,EAAO,GACX,OAAO,SAAkBQ,GACvB,QAA4B,IAAjBR,EAAKQ,GAAyB,CACvC,IAAIC,EAAcL,SAASM,cAAcF,GAEzC,GAAIL,OAAOQ,mBAAqBF,aAAuBN,OAAOQ,kBAC5D,IAGEF,EAAcA,EAAYG,gBAAgBC,KAC1C,MAAOC,GAEPL,EAAc,KAIlBT,EAAKQ,GAAUC,EAGjB,OAAOT,EAAKQ,IApBA,GAwBZO,EAAc,GAElB,SAASC,EAAqBC,GAG5B,IAFA,IAAIC,GAAU,EAELlD,EAAI,EAAGA,EAAI+C,EAAYI,OAAQnD,IACtC,GAAI+C,EAAY/C,GAAGiD,aAAeA,EAAY,CAC5CC,EAASlD,EACT,MAIJ,OAAOkD,EAGT,SAASE,EAAaC,EAAMC,GAI1B,IAHA,IAAIC,EAAa,GACbC,EAAc,GAETxD,EAAI,EAAGA,EAAIqD,EAAKF,OAAQnD,IAAK,CACpC,IAAIyD,EAAOJ,EAAKrD,GACZ0D,EAAKJ,EAAQK,KAAOF,EAAK,GAAKH,EAAQK,KAAOF,EAAK,GAClDG,EAAQL,EAAWG,IAAO,EAC1BT,EAAa,GAAGY,OAAOH,EAAI,KAAKG,OAAOD,GAC3CL,EAAWG,GAAME,EAAQ,EACzB,IAAIE,EAAQd,EAAqBC,GAC7Bc,EAAM,CACRC,IAAKP,EAAK,GACVQ,MAAOR,EAAK,GACZS,UAAWT,EAAK,KAGH,IAAXK,GACFf,EAAYe,GAAOK,aACnBpB,EAAYe,GAAOM,QAAQL,IAE3BhB,EAAYsB,KAAK,CACfpB,WAAYA,EACZmB,QAASE,EAASP,EAAKT,GACvBa,WAAY,IAIhBX,EAAYa,KAAKpB,GAGnB,OAAOO,EAGT,SAASe,EAAmBjB,GAC1B,IAAIkB,EAAQpC,SAASqC,cAAc,SAC/BC,EAAapB,EAAQoB,YAAc,GAEvC,QAAgC,IAArBA,EAAWC,MAAuB,CAC3C,IAAIA,EAAmD,KAEnDA,IACFD,EAAWC,MAAQA,GAQvB,GAJAjE,OAAOkE,KAAKF,GAAYG,SAAQ,SAAUtD,GACxCiD,EAAMM,aAAavD,EAAKmD,EAAWnD,OAGP,mBAAnB+B,EAAQyB,OACjBzB,EAAQyB,OAAOP,OACV,CACL,IAAIhC,EAASD,EAAUe,EAAQyB,QAAU,QAEzC,IAAKvC,EACH,MAAM,IAAIwC,MAAM,2GAGlBxC,EAAOyC,YAAYT,GAGrB,OAAOA,EAcT,IACMU,EADFC,GACED,EAAY,GACT,SAAiBpB,EAAOsB,GAE7B,OADAF,EAAUpB,GAASsB,EACZF,EAAUG,OAAOnD,SAASoD,KAAK,QAI1C,SAASC,EAAoBf,EAAOV,EAAO0B,EAAQzB,GACjD,IAAIC,EAAMwB,EAAS,GAAKzB,EAAIE,MAAQ,UAAUJ,OAAOE,EAAIE,MAAO,MAAMJ,OAAOE,EAAIC,IAAK,KAAOD,EAAIC,IAIjG,GAAIQ,EAAMiB,WACRjB,EAAMiB,WAAWC,QAAUP,EAAYrB,EAAOE,OACzC,CACL,IAAI2B,EAAUvD,SAASwD,eAAe5B,GAClC6B,EAAarB,EAAMqB,WAEnBA,EAAW/B,IACbU,EAAMsB,YAAYD,EAAW/B,IAG3B+B,EAAW1C,OACbqB,EAAMuB,aAAaJ,EAASE,EAAW/B,IAEvCU,EAAMS,YAAYU,IAKxB,SAASK,EAAWxB,EAAOlB,EAASS,GAClC,IAAIC,EAAMD,EAAIC,IACVC,EAAQF,EAAIE,MACZC,EAAYH,EAAIG,UAepB,GAbID,EACFO,EAAMM,aAAa,QAASb,GAE5BO,EAAMyB,gBAAgB,SAGpB/B,GAA6B,oBAATgC,OACtBlC,GAAO,uDAAuDH,OAAOqC,KAAKC,SAASC,mBAAmBC,KAAKC,UAAUpC,MAAe,QAMlIM,EAAMiB,WACRjB,EAAMiB,WAAWC,QAAU1B,MACtB,CACL,KAAOQ,EAAM+B,YACX/B,EAAMsB,YAAYtB,EAAM+B,YAG1B/B,EAAMS,YAAY7C,SAASwD,eAAe5B,KAI9C,IAAIwC,EAAY,KACZC,EAAmB,EAEvB,SAASnC,EAASP,EAAKT,GACrB,IAAIkB,EACAkC,EACAlB,EAEJ,GAAIlC,EAAQkD,UAAW,CACrB,IAAIG,EAAaF,IACjBjC,EAAQgC,IAAcA,EAAYjC,EAAmBjB,IACrDoD,EAASnB,EAAoB/D,KAAK,KAAMgD,EAAOmC,GAAY,GAC3DnB,EAASD,EAAoB/D,KAAK,KAAMgD,EAAOmC,GAAY,QAE3DnC,EAAQD,EAAmBjB,GAC3BoD,EAASV,EAAWxE,KAAK,KAAMgD,EAAOlB,GAEtCkC,EAAS,YAxFb,SAA4BhB,GAE1B,GAAyB,OAArBA,EAAMoC,WACR,OAAO,EAGTpC,EAAMoC,WAAWd,YAAYtB,GAmFzBqC,CAAmBrC,IAKvB,OADAkC,EAAO3C,GACA,SAAqB+C,GAC1B,GAAIA,EAAQ,CACV,GAAIA,EAAO9C,MAAQD,EAAIC,KAAO8C,EAAO7C,QAAUF,EAAIE,OAAS6C,EAAO5C,YAAcH,EAAIG,UACnF,OAGFwC,EAAO3C,EAAM+C,QAEbtB,KAKNlG,EAAOD,QAAU,SAAUgE,EAAMC,IAC/BA,EAAUA,GAAW,IAGRkD,WAA0C,kBAAtBlD,EAAQkD,YACvClD,EAAQkD,UAAYvE,KAItB,IAAI8E,EAAkB3D,EADtBC,EAAOA,GAAQ,GAC0BC,GACzC,OAAO,SAAgB0D,GAGrB,GAFAA,EAAUA,GAAW,GAE2B,mBAA5CtG,OAAOkB,UAAUqF,SAAS9G,KAAK6G,GAAnC,CAIA,IAAK,IAAIhH,EAAI,EAAGA,EAAI+G,EAAgB5D,OAAQnD,IAAK,CAC/C,IACI8D,EAAQd,EADK+D,EAAgB/G,IAEjC+C,EAAYe,GAAOK,aAKrB,IAFA,IAAI+C,EAAqB9D,EAAa4D,EAAS1D,GAEtC6D,EAAK,EAAGA,EAAKJ,EAAgB5D,OAAQgE,IAAM,CAClD,IAEIC,EAASpE,EAFK+D,EAAgBI,IAIK,IAAnCpE,EAAYqE,GAAQjD,aACtBpB,EAAYqE,GAAQhD,UAEpBrB,EAAYsE,OAAOD,EAAQ,IAI/BL,EAAkBG,M,6BCxQtB,SAASI,EAAeC,EAAKvH,GAAK,OAUlC,SAAyBuH,GAAO,GAAIC,MAAMC,QAAQF,GAAM,OAAOA,EAVtBG,CAAgBH,IAQzD,SAA+BA,EAAKvH,GAAK,IAAImH,EAAKI,IAA0B,oBAAXxG,QAA0BwG,EAAIxG,OAAO4G,WAAaJ,EAAI,eAAgB,GAAU,MAANJ,EAAY,OAAQ,IAAkDS,EAAIC,EAAlDC,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAmB,IAAM,IAAKb,EAAKA,EAAGhH,KAAKoH,KAAQQ,GAAMH,EAAKT,EAAGc,QAAQC,QAAoBJ,EAAKzD,KAAKuD,EAAG3G,QAAYjB,GAAK8H,EAAK3E,SAAWnD,GAA3D+H,GAAK,IAAoE,MAAOI,GAAOH,GAAK,EAAMH,EAAKM,EAAO,QAAU,IAAWJ,GAAsB,MAAhBZ,EAAW,QAAWA,EAAW,SAAO,QAAU,GAAIa,EAAI,MAAMH,GAAQ,OAAOC,EAR7aM,CAAsBb,EAAKvH,IAI5F,SAAqCS,EAAG4H,GAAU,IAAK5H,EAAG,OAAQ,GAAiB,iBAANA,EAAgB,OAAO6H,EAAkB7H,EAAG4H,GAAS,IAAI5G,EAAIf,OAAOkB,UAAUqF,SAAS9G,KAAKM,GAAG8H,MAAM,GAAI,GAAc,WAAN9G,GAAkBhB,EAAE+H,cAAa/G,EAAIhB,EAAE+H,YAAYjI,MAAM,GAAU,QAANkB,GAAqB,QAANA,EAAa,OAAO+F,MAAMiB,KAAKhI,GAAI,GAAU,cAANgB,GAAqB,2CAA2CiH,KAAKjH,GAAI,OAAO6G,EAAkB7H,EAAG4H,GAJpTM,CAA4BpB,EAAKvH,IAEnI,WAA8B,MAAM,IAAI4I,UAAU,6IAFuFC,GAMzI,SAASP,EAAkBf,EAAKuB,IAAkB,MAAPA,GAAeA,EAAMvB,EAAIpE,UAAQ2F,EAAMvB,EAAIpE,QAAQ,IAAK,IAAInD,EAAI,EAAG+I,EAAO,IAAIvB,MAAMsB,GAAM9I,EAAI8I,EAAK9I,IAAO+I,EAAK/I,GAAKuH,EAAIvH,GAAM,OAAO+I,EAMhLzJ,EAAOD,QAAU,SAAgCoE,GAC/C,IAAIuF,EAAQ1B,EAAe7D,EAAM,GAC7BwF,EAAUD,EAAM,GAChBE,EAAaF,EAAM,GAEvB,IAAKE,EACH,OAAOD,EAGT,GAAoB,mBAAT/C,KAAqB,CAE9B,IAAIiD,EAASjD,KAAKC,SAASC,mBAAmBC,KAAKC,UAAU4C,MACzDE,EAAO,+DAA+DvF,OAAOsF,GAC7EE,EAAgB,OAAOxF,OAAOuF,EAAM,OACpCE,EAAaJ,EAAWK,QAAQC,KAAI,SAAUC,GAChD,MAAO,iBAAiB5F,OAAOqF,EAAWQ,YAAc,IAAI7F,OAAO4F,EAAQ,UAE7E,MAAO,CAACR,GAASpF,OAAOyF,GAAYzF,OAAO,CAACwF,IAAgB/D,KAAK,MAGnE,MAAO,CAAC2D,GAAS3D,KAAK,Q,6BC1BxBhG,EAAOD,QAAU,SAAUsK,GACzB,IAAItG,EAAO,GAuDX,OArDAA,EAAK4D,SAAW,WACd,OAAOvH,KAAK8J,KAAI,SAAU/F,GACxB,IAAIwF,EAAUU,EAAuBlG,GAErC,OAAIA,EAAK,GACA,UAAUI,OAAOJ,EAAK,GAAI,MAAMI,OAAOoF,EAAS,KAGlDA,KACN3D,KAAK,KAKVjC,EAAKrD,EAAI,SAAUE,EAAS0J,EAAYC,GACf,iBAAZ3J,IAETA,EAAU,CAAC,CAAC,KAAMA,EAAS,MAG7B,IAAI4J,EAAyB,GAE7B,GAAID,EACF,IAAK,IAAI7J,EAAI,EAAGA,EAAIN,KAAKyD,OAAQnD,IAAK,CAEpC,IAAI0D,EAAKhE,KAAKM,GAAG,GAEP,MAAN0D,IACFoG,EAAuBpG,IAAM,GAKnC,IAAK,IAAIyD,EAAK,EAAGA,EAAKjH,EAAQiD,OAAQgE,IAAM,CAC1C,IAAI1D,EAAO,GAAGI,OAAO3D,EAAQiH,IAEzB0C,GAAUC,EAAuBrG,EAAK,MAKtCmG,IACGnG,EAAK,GAGRA,EAAK,GAAK,GAAGI,OAAO+F,EAAY,SAAS/F,OAAOJ,EAAK,IAFrDA,EAAK,GAAKmG,GAMdvG,EAAKgB,KAAKZ,MAIPJ,I,6BChET,qLAGA,MAAM,QAAE0G,EAAO,MAAEC,EAAK,OAAEC,EAAM,SAAEC,EAAQ,KAAEC,EAAI,UAAEC,GAAcC,K,4fCAvD,MAAMC,EAIX9B,YAAY+B,GAAiBC,EAAA,iBAHe,IAAEA,EAAA,sBAI5C9K,KAAK+K,OAASF,EAGhB,YACE,OAAO7K,KAAK+K,OAGd,UAAUC,GACRhL,KAAK+K,OAASC,EACdhL,KAAKiL,SAGPC,UAAUC,GAIR,OAHAnL,KAAKoL,UAAUzG,KAAKwG,GAGb,KACLnL,KAAKoL,UAAYpL,KAAKoL,UAAUzF,OAAQpF,GAAMA,IAAM4K,IAIhDF,SACNjL,KAAKoL,UAAUjG,QAASgG,GAAaA,EAASnL,KAAK+K,Y,6BC5BvD,kCAAO,MAAMM,EAAc,CACzBC,WAAY,aACZC,mBAAoB,uB,6BCFtB,IAOuBC,EAPnB1J,EAAO,EAAQ,IAIfyF,EAAWvG,OAAOkB,UAAUqF,SAG5BkE,GAAmBD,EAMpBxK,OAAOY,OAAO,MAJR,SAAS8J,GACd,IAAIC,EAAMpE,EAAS9G,KAAKiL,GACxB,OAAOF,EAAMG,KAASH,EAAMG,GAAOA,EAAI9C,MAAM,GAAI,GAAG+C,iBAIxD,SAASC,EAAWC,GAElB,OADAA,EAAOA,EAAKF,cACL,SAAkBF,GACvB,OAAOD,EAAOC,KAAWI,GAU7B,SAAS/D,EAAQgE,GACf,OAAOjE,MAAMC,QAAQgE,GASvB,SAASC,EAAYD,GACnB,YAAsB,IAARA,EAqBhB,IAAIE,EAAgBJ,EAAW,eA6C/B,SAASK,EAASH,GAChB,OAAe,OAARA,GAA+B,iBAARA,EAShC,SAASI,EAAcJ,GACrB,GAAoB,WAAhBN,EAAOM,GACT,OAAO,EAGT,IAAI7J,EAAYlB,OAAOoL,eAAeL,GACtC,OAAqB,OAAd7J,GAAsBA,IAAclB,OAAOkB,UAUpD,IAAImK,EAASR,EAAW,QASpBS,EAAST,EAAW,QASpBU,EAASV,EAAW,QASpBW,EAAaX,EAAW,YAQ5B,SAASY,EAAWV,GAClB,MAA8B,sBAAvBxE,EAAS9G,KAAKsL,GAkCvB,IAAIW,EAAoBb,EAAW,mBAmDnC,SAAS1G,EAAQd,EAAKsI,GAEpB,GAAItI,QAUJ,GALmB,iBAARA,IAETA,EAAM,CAACA,IAGL0D,EAAQ1D,GAEV,IAAK,IAAI/D,EAAI,EAAGC,EAAI8D,EAAIZ,OAAQnD,EAAIC,EAAGD,IACrCqM,EAAGlM,KAAK,KAAM4D,EAAI/D,GAAIA,EAAG+D,QAI3B,IAAK,IAAIxC,KAAOwC,EACVrD,OAAOkB,UAAUC,eAAe1B,KAAK4D,EAAKxC,IAC5C8K,EAAGlM,KAAK,KAAM4D,EAAIxC,GAAMA,EAAKwC,GA4JrC,IAA6BuI,EAAzBC,GAAyBD,EAKJ,oBAAfE,YAA8B9L,OAAOoL,eAAeU,YAHrD,SAASpB,GACd,OAAOkB,GAAclB,aAAiBkB,IAI1ChN,EAAOD,QAAU,CACfoI,QAASA,EACTkE,cAAeA,EACfc,SAvYF,SAAkBhB,GAChB,OAAe,OAARA,IAAiBC,EAAYD,IAA4B,OAApBA,EAAIjD,cAAyBkD,EAAYD,EAAIjD,cAChD,mBAA7BiD,EAAIjD,YAAYiE,UAA2BhB,EAAIjD,YAAYiE,SAAShB,IAsYhFiB,WA9PF,SAAoBtB,GAElB,OAAOA,IACgB,mBAAbuB,UAA2BvB,aAAiBuB,UAFxC,sBAGZ1F,EAAS9G,KAAKiL,IACbe,EAAWf,EAAMnE,WAJN,sBAImBmE,EAAMnE,aA0PvC2F,kBApXF,SAA2BnB,GAOzB,MAL4B,oBAAhBoB,aAAiCA,YAAkB,OACpDA,YAAYC,OAAOrB,GAEnB,GAAUA,EAAU,QAAME,EAAcF,EAAIsB,SAgXvDC,SArWF,SAAkBvB,GAChB,MAAsB,iBAARA,GAqWdwB,SA5VF,SAAkBxB,GAChB,MAAsB,iBAARA,GA4VdG,SAAUA,EACVC,cAAeA,EACfH,YAAaA,EACbK,OAAQA,EACRC,OAAQA,EACRC,OAAQA,EACRE,WAAYA,EACZe,SAnRF,SAAkBzB,GAChB,OAAOG,EAASH,IAAQU,EAAWV,EAAI0B,OAmRvCf,kBAAmBA,EACnBgB,qBAjOF,WACE,OAAyB,oBAAdC,WAAoD,gBAAtBA,UAAUC,SACY,iBAAtBD,UAAUC,SACY,OAAtBD,UAAUC,WAI/B,oBAAXnL,QACa,oBAAbC,WA0NTyC,QAASA,EACT0I,MA/JF,SAASA,IACP,IAAIrK,EAAS,GACb,SAASsK,EAAY/B,EAAKlK,GACpBsK,EAAc3I,EAAO3B,KAASsK,EAAcJ,GAC9CvI,EAAO3B,GAAOgM,EAAMrK,EAAO3B,GAAMkK,GACxBI,EAAcJ,GACvBvI,EAAO3B,GAAOgM,EAAM,GAAI9B,GACfhE,EAAQgE,GACjBvI,EAAO3B,GAAOkK,EAAIlD,QAElBrF,EAAO3B,GAAOkK,EAIlB,IAAK,IAAIzL,EAAI,EAAGC,EAAIwN,UAAUtK,OAAQnD,EAAIC,EAAGD,IAC3C6E,EAAQ4I,UAAUzN,GAAIwN,GAExB,OAAOtK,GA+IPwK,OApIF,SAAgBC,EAAGC,EAAGC,GAQpB,OAPAhJ,EAAQ+I,GAAG,SAAqBnC,EAAKlK,GAEjCoM,EAAEpM,GADAsM,GAA0B,mBAARpC,EACXjK,EAAKiK,EAAKoC,GAEVpC,KAGNkC,GA6HPG,KAxPF,SAAczC,GACZ,OAAOA,EAAIyC,KAAOzC,EAAIyC,OAASzC,EAAI0C,QAAQ,aAAc,KAwPzDC,SArHF,SAAkB/E,GAIhB,OAH8B,QAA1BA,EAAQgF,WAAW,KACrBhF,EAAUA,EAAQV,MAAM,IAEnBU,GAkHPiF,SAvGF,SAAkB1F,EAAa2F,EAAkBC,EAAOC,GACtD7F,EAAY5G,UAAYlB,OAAOY,OAAO6M,EAAiBvM,UAAWyM,GAClE7F,EAAY5G,UAAU4G,YAAcA,EACpC4F,GAAS1N,OAAO4N,OAAO9F,EAAY5G,UAAWwM,IAqG9CG,aA1FF,SAAsBC,EAAWC,EAASpJ,GACxC,IAAI+I,EACApO,EACA0O,EACAC,EAAS,GAEbF,EAAUA,GAAW,GAErB,EAAG,CAGD,IADAzO,GADAoO,EAAQ1N,OAAOkO,oBAAoBJ,IACzBrL,OACHnD,KAAM,GAEN2O,EADLD,EAAON,EAAMpO,MAEXyO,EAAQC,GAAQF,EAAUE,GAC1BC,EAAOD,IAAQ,GAGnBF,EAAY9N,OAAOoL,eAAe0C,SAC3BA,KAAenJ,GAAUA,EAAOmJ,EAAWC,KAAaD,IAAc9N,OAAOkB,WAEtF,OAAO6M,GAsEPtD,OAAQA,EACRI,WAAYA,EACZsD,SA9DF,SAAkBxD,EAAKyD,EAAcC,GACnC1D,EAAM2D,OAAO3D,SACI4D,IAAbF,GAA0BA,EAAW1D,EAAIlI,UAC3C4L,EAAW1D,EAAIlI,QAEjB4L,GAAYD,EAAa3L,OACzB,IAAI+L,EAAY7D,EAAI8D,QAAQL,EAAcC,GAC1C,OAAsB,IAAfG,GAAoBA,IAAcH,GAwDzCK,QA/CF,SAAiBhE,GACf,IAAKA,EAAO,OAAO,KACnB,IAAIpL,EAAIoL,EAAMjI,OACd,GAAIuI,EAAY1L,GAAI,OAAO,KAE3B,IADA,IAAIuH,EAAM,IAAIC,MAAMxH,GACbA,KAAM,GACXuH,EAAIvH,GAAKoL,EAAMpL,GAEjB,OAAOuH,GAwCPgF,aAAcA,EACdL,WAAYA,I,gBCncZ5M,EAAOD,QAAU,EAAQ,GAAR,I,+DCjBnB,MAEMgQ,EAAWC,IACf,IAAI,aAAEC,GAAiBD,EACvB,MAAME,EAASF,EAAKG,aACdC,EAAQJ,EAAKK,YACnB,IAAIC,EAAON,EAAKO,WACZC,EAAMR,EAAKS,UAEf,KAAOR,GATY,IASIA,EAAaS,UAClCJ,GAAQL,EAAaM,WAAaN,EAAaU,WAC/CH,GAAOP,EAAaQ,UAAYR,EAAaW,YAC1CX,gBAAiBA,GAGtB,MAAO,CACLC,SACAI,OACAE,MACAJ,UA2BWS,MAvBOA,CACpBb,EACAc,KASA,MAAMC,EAAef,GAAQA,EAAK1I,WAElC,GAAIyJ,EAAc,CAChB,MAAMC,EAAejB,EAAQgB,IACvB,OAAEb,EAAM,KAAEI,EAAI,IAAEE,EAAG,MAAEJ,GAAUL,EAAQC,GAI7Cc,EAHUR,EAAOU,EAAaV,KACpBE,EAAMQ,EAAaR,IAEdJ,EAAOF,EAAQI,EAAME,K,6bCzCxC,MAAMS,EAA2B,oBAAXpO,QAA0BA,OAAOC,SAEjDoO,EAAQD,EAASpO,OAAOsO,WAAa,EACrCC,EAASH,EAASpO,OAAOwO,YAAc,EAS7C,MAAMC,EAIJpI,cAAcgC,EAAA,wBAAAA,EAAA,0BACR+F,GACF7Q,KAAKmR,SAAWD,EAAeE,aAAa,WAAY,MACxDpR,KAAKqR,WAAaH,EAAeE,aAAa,aAAc,OAE5DpR,KAAKmR,SAAW,KAChBnR,KAAKqR,WAAa,MAItB,oBAAoBrN,EAAYsN,GAC9B,MAAMC,EAAU7O,SAASM,cAAc,IAAIgB,IACzCtB,SAASqC,cAAc,UAEzBwM,EAAOnM,aAAa,KAAMpB,GAE1B,MAAMwN,EAAMD,EAAOE,WAAW,MAC9B,IAAKD,EACH,MAAM,IAAIlM,MAAM,wCAUlB,OAPAiM,EAAOzM,MAAMkB,QAAU,8CAA8CsL,EAErE5O,SAASgP,KAAKnM,YAAYgM,GAE1BA,EAAOvB,MAAQc,EACfS,EAAOzB,OAASkB,EAETQ,EAGTG,QACOd,GAAW7Q,KAAKmR,UAGrBnR,KAAKmR,SAASS,UAAU,EAAG,EAAGd,EAAOE,GAGvCa,eACOhB,GAAW7Q,KAAKqR,YAGrBrR,KAAKqR,WAAWO,UAAU,EAAG,EAAGd,EAAOE,GAGzCc,WAAWC,EAAgBC,EAAkBC,GACtCpB,GAAW7Q,KAAKqR,aAGrBrR,KAAKqR,WAAWa,YAAc,QAC9BlS,KAAKqR,WAAWc,WACdJ,EAAO7B,KACP6B,EAAO3B,IACP2B,EAAO/B,MACP+B,EAAOjC,QAET9P,KAAKqR,WAAWe,KAAO,gBACvBpS,KAAKqR,WAAWgB,UAAY,MAC5BrS,KAAKqR,WAAWiB,SAASN,EAAUD,EAAO7B,KAAM6B,EAAO3B,IAAM,IAC7DpQ,KAAKqR,WAAWiB,SAASL,EAAgBF,EAAO7B,KAAM6B,EAAO3B,IAAM,IACnEpQ,KAAKqR,WAAWiB,SACd,SAASP,EAAO7B,KAChB6B,EAAO7B,KACP6B,EAAO3B,IAAM,IAEfpQ,KAAKqR,WAAWiB,SACd,QAAQP,EAAO3B,IACf2B,EAAO7B,KACP6B,EAAO3B,IAAM,KAIjBmC,UACEC,EACAC,EACAC,EAAgB,OAChBC,EAAe,IAEV9B,GAAW7Q,KAAKmR,WAGrBnR,KAAKmR,SAASe,YAAcQ,EAC5B1S,KAAKmR,SAASyB,UAAY,EAC1B5S,KAAKmR,SAASgB,WAAWK,EAAIG,EAAO,EAAGF,EAAIE,EAAO,EAAGA,EAAMA,KAIhDzB,Q,6bClGR,MAAM2B,EAAiB,UAqBxBC,EAA0B,CAC9B,KAAkB,CAAC,IACnB,GAAgB,CAAC,IACjB,MAAmB,CAAC,IACpB,KAAkB,CAAC,IACnB,MAAa,CAAC,IACd,KAAY,CAAC,EAAG,QAGZC,EAAkB,CAAC,OAAQ,OAAQ,QAEnCC,EAAmB,CACvBC,SAAS,EACTC,UAAU,GAwFNC,EAAWA,CACfC,EACAC,EACAzP,EAAqD,MAErD,IAAI0P,EAAyB,KACzBC,EAAW,EACf,MAAM,QAAEN,GAAU,EAAI,SAAEC,GAAW,GAAStP,EAE5C,OAAO,YAAwB4P,GAC7B,MAAMC,EAAMC,KAAKD,MACZF,GAAaN,IAASM,EAAWE,GACtC,MAAME,EAAYN,GAAQI,EAAMF,GAE5BI,GAAa,GAAKA,EAAYN,GAC5BC,IACFM,aAAaN,GACbA,EAAU,MAEZC,EAAWE,EACXL,EAAKS,MAAM7T,KAAMwT,KACPF,GAAWJ,IACrBI,EAAU7Q,OAAOqR,WAAW,KAC1BP,EAAWN,EAAUS,KAAKD,MAAQ,EAClCH,EAAU,KACVF,EAAKS,MAAM7T,KAAMwT,IAChBG,MAKHI,EAASA,CAAIC,EAAYC,IAC7B,IAAID,GAAOE,KAAK,CAACjG,EAAGC,KAClB,MAAMiG,EAASF,EAAShG,GAClBmG,EAASH,EAAS/F,GACxB,OAAOiG,EAASC,GAAU,EAAID,EAASC,EAAS,EAAI,IAGlDC,EAAYL,GAA8BA,EAAM,GAEhDM,EAAaA,CAAIN,EAAYO,IACjCP,EAAMrO,OAAQ6M,IAAO+B,EAAOC,SAAShC,IAEjCrN,EAAUA,CACd6O,EACAC,IACSD,EAAM7O,QAAQ8O,GAGzB,MAAMtJ,EAoBJ,2BACE8J,EACAC,EACAC,EACA5C,GAEA,MAAM6C,EAAQ7C,EAAO7B,KACf2E,EAAQ9C,EAAO3B,IACf0E,EAAY/C,EAAO/B,MACnB+E,EAAahD,EAAOjC,OAEpBkF,EAAaP,EAAaI,EAAQD,EAClCK,EAAWR,EAAaM,EAAaD,EAE3C,OAAOJ,EACHC,EACEK,EACAA,EAAaC,EACfN,EACAK,EAAaC,EACbD,EAON,qBACEE,EACAP,EACA5C,GAEA,MAAM6C,EAAQ7C,EAAO7B,KACf2E,EAAQ9C,EAAO3B,IACf0E,EAAY/C,EAAO/B,MACnB+E,EAAahD,EAAOjC,OAEpBtM,EAAqB,CACzByK,EAAG,CACDuE,EAAG,EACHC,EAAG,GAELvE,EAAG,CACDsE,EAAG,EACHC,EAAG,IAIP,OAAQyC,GACN,ICpPsB,KDoPH,CACjB,MAAMzC,EAAIkC,EAAYE,EAAQE,EAAaF,EAE3CrR,EAAOyK,EAAI,CACTuE,EAAGoC,EACHnC,KAGFjP,EAAO0K,EAAI,CACTsE,EAAGoC,EAAQE,EACXrC,KAGF,MAGF,ICnQwB,ODmQH,CACnB,MAAMA,EAAIkC,EAAYE,EAAQA,EAAQE,EAEtCvR,EAAOyK,EAAI,CACTuE,EAAGoC,EACHnC,KAGFjP,EAAO0K,EAAI,CACTsE,EAAGoC,EAAQE,EACXrC,KAGF,MAGF,ICtRwB,ODsRH,CACnB,MAAMD,EAAImC,EAAYC,EAAQE,EAAYF,EAE1CpR,EAAOyK,EAAI,CACTuE,IACAC,EAAGoC,GAGLrR,EAAO0K,EAAI,CACTsE,IACAC,EAAGoC,EAAQE,GAGb,MAGF,ICrSyB,QDqSH,CACpB,MAAMvC,EAAImC,EAAYC,EAAQA,EAAQE,EAEtCtR,EAAOyK,EAAI,CACTuE,IACAC,EAAGoC,GAGLrR,EAAO0K,EAAI,CACTsE,IACAC,EAAGoC,EAAQE,GAGb,OAOJ,OAAOvR,EAMT,uBACE2R,EACAC,EACAC,GAEA,MAAQpH,EAAGqH,EAAMpH,EAAGqH,GAASJ,GACrBlH,EAAGuH,EAAUtH,EAAGuH,GAAaL,EAC/BJ,EAAaK,EAAsB,IAAM,IAEzCK,EAAiBJ,EAAKN,GACtBW,EAAiBJ,EAAKP,GACtBY,EAAqBJ,EAASR,GAC9Ba,EAAqBJ,EAAST,GAE9Bc,EAtUuB,IAuU1BH,EAAiBD,GAQpB,OAN2BK,KAAKC,IAC9B,EACAD,KAAKE,IAAIN,EAAgBE,GACvBE,KAAKC,IAAIN,EAAgBE,KAGAE,EAG/B,8BACEX,EACAC,EACAC,GAEA,MAAQpH,EAAGqH,GAASH,GACZlH,EAAGuH,GAAaJ,EAClBJ,EAAaK,EAAsB,IAAM,IAE/C,OAAOU,KAAKG,IAAIV,EAASR,GAAcM,EAAKN,IAG9C,gCACEG,EACAC,EACAC,GAEA,MAAQpH,EAAGqH,EAAMpH,EAAGqH,GAASJ,GACrBlH,EAAGuH,EAAUtH,EAAGuH,GAAaL,EAC/BJ,EAAaK,EAAsB,IAAM,IAEzCK,EAAiBJ,EAAKN,GACtBW,EAAiBJ,EAAKP,GACtBY,EAAqBJ,EAASR,GAC9Ba,EAAqBJ,EAAST,GAE9BmB,EAAqB,GAO3B,OALAA,EAAmBxR,KAAKoR,KAAKG,IAAIN,EAAqBF,IACtDS,EAAmBxR,KAAKoR,KAAKG,IAAIN,EAAqBD,IACtDQ,EAAmBxR,KAAKoR,KAAKG,IAAIL,EAAqBH,IACtDS,EAAmBxR,KAAKoR,KAAKG,IAAIL,EAAqBF,IAE/CI,KAAKE,OAAOE,GAQrBC,uBACEC,EACAC,EACApB,EACAqB,GAEA,MAAMlB,ECtYoB,SDuYxBH,GCxYsB,ODwYUA,EAE5BC,EAAaxK,EAAkB6L,cACnCtB,GACA,EACAoB,GAGF,MAAO,IAAID,GAAUnC,KACnB,CAACjG,EAAuBC,KACtB,MAAMuI,EAAW9L,EAAkB6L,cACjCtB,GACA,EACAjH,EAAE8D,QAEE2E,EAAW/L,EAAkB6L,cACjCtB,GACA,EACAhH,EAAE6D,QAGE4E,EAAmBhM,EAAkBiM,gBACzCzB,EACAsB,EACApB,GAEIwB,EAAmBlM,EAAkBiM,gBACzCzB,EACAuB,EACArB,GAGIyB,EAAuBH,EACzBhM,EAAkBoM,uBAClBpM,EAAkBqM,yBAChBC,EAAuBJ,EACzBlM,EAAkBoM,uBAClBpM,EAAkBqM,yBAEhBE,EAAyBP,EAC3BhM,EAAkBqM,yBAClBrM,EAAkBoM,uBAChBI,EAAyBN,EAC3BlM,EAAkBqM,yBAClBrM,EAAkBoM,uBAEhBK,EAAuBN,EAC3B3B,EACAsB,EACApB,GAEIgC,EAAuBJ,EAC3B9B,EACAuB,EACArB,GA4BF,OAzcuB,EA4brB+B,EAZ6BF,EAC7B/B,EACAsB,EACApB,GAgBwB,IACvBsB,EA1cmB,EACA,IAKC,EA+brBU,EAV6BF,EAC7BhC,EACAuB,EACArB,GAcwB,IACvBwB,EA7cmB,EACA,KAmd5B/N,cAAcgC,EAAA,mCAAAA,EAAA,wBAAAA,EAAA,yCAAAA,EAAA,uBAAAA,EAAA,0BAAAA,EAAA,wBAAAA,EAAA,kCAAAA,EAAA,2BAAAA,EAAA,sBAAAA,EAAA,oCAAAA,EAAA,kCAAAA,EAAA,sBAAAA,EAAA,qBAAAA,EAAA,8BAAAA,EAAA,wBACZ9K,KAAKsX,oBAAsB,GAC3BtX,KAAKgS,SAAW,KAChBhS,KAAKuX,0BAA4B,GACjCvX,KAAKwX,SAAU,EACfxX,KAAKyX,YAAa,EAClBzX,KAAKmT,SAAW,EAChBnT,KAAK0X,oBAAqB,EAC1B1X,KAAK2X,YAAc,GACnB3X,KAAK4X,QAAS,EACd5X,KAAK6X,qBAAuB,KAC5B7X,KAAK8X,mBAAqB,KAC1B9X,KAAK+X,OAASjF,EACd9S,KAAKgY,OAAQ,EACbhY,KAAKiY,eAAiB,KACtBjY,KAAKkY,SAAW,EAEhBlY,KAAKmY,WAAanY,KAAKmY,WAAWrW,KAAK9B,MACvCA,KAAKsK,MAAQtK,KAAKsK,MAAMxI,KAAK9B,MAC7BA,KAAKuK,OAASvK,KAAKuK,OAAOzI,KAAK9B,MAC/BA,KAAKwK,SAAWxK,KAAKwK,SAAS1I,KAAK9B,MACnCA,KAAKoY,iBAAmBpY,KAAKoY,iBAAiBtW,KAAK9B,MACnDA,KAAKqY,oBAAsBrY,KAAKqY,oBAAoBvW,KAAK9B,MACzDA,KAAKyK,KAAOzK,KAAKyK,KAAK3I,KAAK9B,MAC3BA,KAAK0K,UAAY1K,KAAK0K,UAAU5I,KAAK9B,MAGvCyK,MAAK,MACHuN,GAAQ,EAAK,YACbM,GAAc,EAAK,WACnBb,GAAa,EAAK,SAClBtE,EAAW,EAAC,mBACZuE,GAAqB,GACN,IACV1X,KAAKwX,UACRxX,KAAKwX,SAAU,EACfxX,KAAKyX,WAAaA,EAClBzX,KAAK0X,mBAAqBA,EAC1B1X,KAAKgY,MAAQA,EAERhY,KAAKyX,aACJc,OAAOC,UAAUrF,IAAaA,EAAW,IAC3CnT,KAAKmT,SAAWA,GAElBnT,KAAKyY,oBACDH,IACFtY,KAAKiY,eAAiB,IAAI/G,EAC1BlR,KAAK0Y,sBAMbA,mBACE,MAAMC,EAAOA,KACXC,sBAAsB,KAAM,IAAAC,EACP,QAAnBA,EAAA7Y,KAAKiY,sBAAc,IAAAY,GAAnBA,EAAqBhH,eACrB7Q,OAAO8X,QAAQ9Y,KAAKsX,qBAAqBnS,QACvC,EAAE6M,EAAU+G,MAAe,IAAAC,EACN,QAAnBA,EAAAhZ,KAAKiY,sBAAc,IAAAe,GAAnBA,EAAqBlH,WACnBiH,EAAUhH,OACVC,EACA+G,EAAU9G,kBAIhB0G,OAIJA,IAGFtO,UACMrK,KAAKwX,UACPxX,KAAKwX,SAAU,EACfxX,KAAKyX,YAAa,EAClBzX,KAAKmT,SAAW,EAChBnT,KAAK0X,oBAAqB,EAC1B1X,KAAKgS,SAAW,KAChBhS,KAAKuX,0BAA4B,GACjCvX,KAAKsX,oBAAsB,GAC3BtX,KAAK4X,QAAS,EACd5X,KAAK+X,OAASjF,EAEd9S,KAAKiZ,uBAITC,aAAaC,GACX,OAAOnY,OAAOkE,KAAKlF,KAAKoZ,aAAaC,KAAMxX,GACzC7B,KAAKoZ,YAAYvX,GAAK2S,SAAS2E,IAInCV,oBACE,GAAsB,oBAAXhW,QAA0BA,OAAO6W,iBAAkB,CAC5D,MAAMC,EAAkBC,IACtB,IAAoB,IAAhBxZ,KAAK4X,OACP,OAGE5X,KAAKgY,QACPhY,KAAKkY,UAAY,GAGnB,MAAMuB,EAAYzZ,KAAKkZ,aAAaM,EAAML,SAE1C,IAAKM,EACH,OAGFzZ,KAAK2X,YAAY8B,GAAazZ,KAAK2X,YAAY8B,GAC3CzZ,KAAK2X,YAAY8B,GAAa,EAC9B,EAEJD,EAAME,iBACNF,EAAMG,kBAEN,MAAMC,EAAmB,CACvBjC,YAAa3X,KAAK2X,aAOpB,GAJI3X,KAAKgS,UAAYhS,KAAK6Z,wBAAwB7Z,KAAKgS,YACrD4H,EAAQ7H,OAAS/R,KAAK6Z,wBAAwB7Z,KAAKgS,WCzlBpC,UD4lBbyH,GAA2BzZ,KAAKgS,SAElC,YADAhS,KAAK8Z,aAAaF,GAIpB,GChmBgB,SDgmBZH,GAA0BzZ,KAAKgS,SAEjC,YADAhS,KAAK+Z,YAAYH,GAOW,IAAAI,GAF2B,IAAvDha,KAAKia,aAAaR,EAAwBG,IAG1C5Z,KAAKka,IAAI,uBAAwB,gCACd,QAAnBF,EAAAha,KAAKiY,sBAAc,IAAA+B,GAAnBA,EAAqBrI,SAErB3R,KAAKmY,WAAWqB,IAIpBxZ,KAAK6X,qBAAuB7X,KAAKmT,SAC7BA,EAASoG,EAAgBvZ,KAAKmT,SAAUH,GACxCuG,EAEJvZ,KAAK8X,mBAAsB0B,IACzB,MAAMC,EAAYzZ,KAAKkZ,aAAaM,EAAML,SAMK,IAAAgB,EAAAC,GAJ3CX,UACKzZ,KAAK2X,YAAY8B,GAGtBzZ,KAAKmT,WAAanT,KAAK0X,sBAEA,QAAzByC,EAAAna,KAAK6X,4BAAoB,IAAAsC,GAAQ,QAARC,EAAzBD,EAA2BE,cAAM,IAAAD,GAAjCA,EAAA3Z,KAAA0Z,IC9nBe,UDioBbV,GAA2BzZ,KAAKgS,UAClChS,KAAKsa,kBAIT7X,OAAO6W,iBAAiB,QAAStZ,KAAK8X,oBACtCrV,OAAO6W,iBAAiB,UAAWtZ,KAAK6X,uBAI5CoB,sBACwB,oBAAXxW,QAA0BA,OAAO8X,sBAC1C9X,OAAO8X,oBAAoB,UAAWva,KAAK6X,sBAC3C7X,KAAK6X,qBAAuB,KAExB7X,KAAKmT,WACP1Q,OAAO8X,oBAAoB,QAASva,KAAK8X,oBACzC9X,KAAK8X,mBAAqB,OAKhCgC,aAAaF,GAAwB,IAAAY,EACnC,MAAMzB,EAAY/Y,KAAKsX,oBAAoBtX,KAAKgS,UAE3C+G,EAKAA,EAAU0B,UAKc,QAA7BD,EAAAzB,EAAU2B,2BAAmB,IAAAF,GAA7BA,EAAA/Z,KAAAsY,EAAgCa,GAJ9B5Z,KAAKka,IAAI,eAAgB,yBALzBla,KAAKka,IAAI,eAAgB,eAY7BH,YAAYH,GAAwB,IAAAe,EAClC,MAAM5B,EAAY/Y,KAAKsX,oBAAoBtX,KAAKgS,UAE3C+G,EAKAA,EAAU0B,UAKa,QAA5BE,EAAA5B,EAAU6B,0BAAkB,IAAAD,GAA5BA,EAAAla,KAAAsY,EAA+Ba,GAJ7B5Z,KAAKka,IAAI,cAAe,yBALxBla,KAAKka,IAAI,cAAe,eAY5BI,iBAAuB,IAAAO,EACrB,MAAM9B,EAAY/Y,KAAKsX,oBAAoBtX,KAAKgS,UAE3C+G,EAKAA,EAAU0B,UAKgB,QAA/BI,EAAA9B,EAAU+B,6BAAqB,IAAAD,GAA/BA,EAAApa,KAAAsY,GAJE/Y,KAAKka,IAAI,iBAAkB,yBAL3Bla,KAAKka,IAAI,iBAAkB,eAY/BD,aAAa/E,EAAsB0E,GAAkC,IAAAmB,EACnE,MAAMhC,EAAY/Y,KAAKsX,oBAAoBtX,KAAKgS,UAEhD,GAAK+G,EAKL,OAAoC,QAApCgC,EAAOhC,EAAUiC,2BAAmB,IAAAD,OAAA,EAA7BA,EAAAta,KAAAsY,EAAgC7D,EAAW0E,GAJhD5Z,KAAKka,IAAI,eAAgB,eAO7B7B,oBACEnD,EACA0E,EAA+B,IAE/B,IAAoB,IAAhB5Z,KAAK4X,OACP,OAGF,MAAMqD,EAAkB,CC3tBE,OADF,KAFE,OACC,SDouBvBA,EAAgBzG,SAASU,IAC3BlV,KAAKka,IAAI,sBAAuB,YAAahF,GAC7ClV,KAAKkb,cAAchG,EAAW,KAAM0E,IAEpC5Z,KAAKka,IACH,sBACA,oCAAoChF,oCACpC+F,GAKN9C,WAAWqB,GAA4B,IAAA2B,EAClB,QAAnBA,EAAAnb,KAAKiY,sBAAc,IAAAkD,GAAnBA,EAAqBxJ,QAErB,MAAMuD,EAAYlU,OAAOkE,KAAKlF,KAAKoZ,aAAaC,KAAMxX,GACpD7B,KAAKoZ,YAAYvX,GAAK2S,SAASgF,EAAML,UAGnCjE,GACFlV,KAAKkb,cAAchG,EAAwB,KAAM,CAAEsE,UAIvD0B,cACEhG,EACAkG,EACAxB,GAEA5Z,KAAKka,IAAI,gBAAiB,YAAahF,GACvClV,KAAKka,IAAI,gBAAiB,qBAAsBkB,GAChDpb,KAAKka,IAAI,gBAAiB,gBAAiBla,KAAKgS,UAE3ChS,KAAKyX,YAAe2D,GACvBpa,OAAOuT,OAAOvU,KAAKsX,qBAAqBnS,QAAS4T,IAC/CA,EAAUsC,eAAgB,IAI9B,MAAMC,EAAmBtb,KAAKsX,oBAC5B8D,GAAsBpb,KAAKgS,UAU7B,GAPAhS,KAAKka,IACH,gBACA,mBACAoB,EAAmBA,EAAiBtJ,cAAWzC,EAC/C+L,EAAmBA,EAAiB1L,UAAOL,GAGzC+L,EAAkB,CACpBtb,KAAKub,aAAaD,EAAiBtJ,UACnC,MAAM,eAAEC,EAAc,SAAED,EAAQ,OAAED,GAAWuJ,EAEvCjG,ECxxBkB,SDyxBtBH,GC1xBoB,OD0xBYA,EAC5BsG,EC1xBkB,SD2xBtBtG,GC7xBuB,UD6xBSA,EAE5BuG,EAA0B9Q,EAAkB+Q,oBAChDrG,EACAmG,GACA,EACAzJ,GAMIsE,EAAWrV,OAAOuT,OAAOvU,KAAKsX,qBAAqB3R,OACtDoT,IACC,GACEA,EAAU9G,iBAAmBA,GAC7B8G,EAAU0B,UACV,CACAza,KAAKub,aAAaxC,EAAU/G,UAC5B,MAAM2J,EAA0BhR,EAAkB+Q,oBAChDrG,EACAmG,GACA,EACAzC,EAAUhH,QAGZ,OAAOyJ,EACHG,GAA2BF,EAC3BE,GAA2BF,EAGjC,OAAO,IAQX,GAJIzb,KAAKgY,OACPhY,KAAKka,IAAI,gBAAiB,WAAY7D,GAGpCA,EAAS5S,OAAS,EAAG,CACvB,MAAMmY,EAAiB5b,KAAKoW,uBAC1BC,EACAtE,EACAmD,EACAlD,GAGEhS,KAAKgY,OACPhY,KAAKka,IAAI,gBAAiB,iBAAkB0B,GAG9C,MAAMC,EAAgBD,EAAe,GAEjCC,GACF7b,KAAKwK,SAASqR,EAAc7J,SAAU4H,QAGxC5Z,KAAKka,IAAI,gBAAiB,cAEtBjI,GACFjS,KAAKkb,cAAchG,EAAWjD,EAAgB2H,IAMtDkC,wBACE/C,EACA/G,GAEI+G,IACF/Y,KAAKka,IACH,0BACGnB,EAAU/G,SAAb,2BACAA,GAEF+G,EAAUgD,oBAAsB/J,GAIpCkI,IAAI8B,EAAsBC,KAAwBC,GAC5Clc,KAAKgY,OACPmE,QAAQjC,IACN,KAAK8B,MAAiBC,IACtB,eACElJ,EAAgB/S,KAAKkY,SAAWnF,EAAgBtP,2CAElD,yDACGyY,GAKTE,gBAAgBC,GACdrc,KAAKka,IAAI,kBAAmB,iBAAkBmC,GAE9C,MAAMC,EAAkBtc,KAAKsX,oBAAoB+E,GAEjD,IAAKC,EACH,OAAOD,EAGT,MAAM,cAAEE,GAAkBD,EAE1B,IAAKC,EACH,OAAOF,EAGT,MAAMG,EAAWxb,OAAOuT,OAAOvU,KAAKsX,qBAAqB3R,OACtDoT,GACCA,EAAU9G,iBAAmBoK,GAAkBtD,EAAU0B,WAG7D,GAAwB,IAApB+B,EAAS/Y,OACX,OAAO4Y,EAGT,MAAM,oBAAEN,EAAmB,uBAAEU,GAA2BH,EAKxD,GACEP,IACCO,EAAgBI,wBACjB1c,KAAK2c,kCAAkCZ,GAQvC,OANA/b,KAAKka,IACH,kBACA,sCACA6B,GAGK/b,KAAKoc,gBAAgBL,GAM9B,GACEU,GACAzc,KAAK2c,kCAAkCF,GAQvC,OANAzc,KAAKka,IACH,kBACA,yCACAuC,GAGKzc,KAAKoc,gBAAgBK,GAM9BD,EAASrX,QAAS4T,GAAc/Y,KAAKub,aAAaxC,EAAU/G,WAC5D,MAAQA,SAAU4K,GAp0BpBJ,KAEA,MAAMK,EAA0B9I,EAC9ByI,EACA,EAAGzK,YAAagE,KAAKG,IAAInE,EAAO7B,MAAQ6F,KAAKG,IAAInE,EAAO3B,MAG1D,OAAOiE,EAAMwI,IA6zBoBC,CAAwBN,GAIvD,OAFAxc,KAAKka,IAAI,kBAAmB,2BAA4B0C,GAEjD5c,KAAKoc,gBAAgBQ,GAG9BG,cAAa,SACX/K,EAAQ,KACRpC,EAAI,eACJqC,EAAc,oBACdyI,EAAmB,sBACnBI,EAAqB,mBACrBF,EAAkB,oBAClBI,EAAmB,uBACnBgC,EAAsB,uBACtBC,EAAsB,uBACtBP,EAAsB,cACtBH,EAAa,cACbW,EAAa,wBACbC,EAAuB,uBACvBV,EAAsB,iBACtBW,EAAgB,UAChB3C,GAAY,EAAI,mBAChB4C,IAEArd,KAAKsX,oBAAoBtF,GAAY,CACnCA,WACApC,OACAqC,iBACAyI,sBACAI,wBACAF,qBACAI,sBACAgC,yBACAC,yBACAC,gBACAC,0BACAT,yBACAH,gBACAR,oBAAqB,KACrBU,yBACAhC,YACA4C,qBACAD,mBACArL,OAAQ,CACNS,EAAG,EACHC,EAAG,EACHzC,MAAO,EACPF,OAAQ,EACRI,KAAM,EACNE,IAAK,EACLR,QAEFyL,eAAe,GAGbrb,KAAKyX,aAITzX,KAAKub,aAAavJ,GAKdA,IAAahS,KAAKgS,UACpBhS,KAAKwK,SAASwH,IAIlBsL,iBAAgB,SAAEtL,IAChB,MAAMuL,EAAoBvd,KAAKsX,oBAAoBtF,GAEnD,GAAIuL,EAAmB,CACrB,MAAM,eAAEtL,GAAmBsL,EAE3BC,QAAQC,eAAezd,KAAKsX,oBAAqBtF,GAEjD,MAAM0L,EAAkB1d,KAAKsX,oBAAoBrF,GAC3C0L,EAAY3L,IAAahS,KAAKgS,SASpC,GAJA0L,GACEA,EAAgB3B,sBAAwB/J,IACvC0L,EAAgB3B,oBAAsB,MAErC/b,KAAKyX,WACP,OAMEkG,GAAaD,GAAmBA,EAAgBN,kBAClDpd,KAAKwK,SAASyH,IAKpB4H,wBAAwB7H,GACtB,MAAM+G,EAAY/Y,KAAKsX,oBAAoBtF,GAE3C,OAAI+G,GACF/Y,KAAKub,aAAaxC,EAAU/G,UAErB+G,EAAUhH,QAGZ,KAGT6L,qBACEC,EACAjE,GAEA,GACE5Z,KAAK8d,qBAAqB9d,KAAKgS,WAC/B6L,IAAgB7d,KAAKgS,SACrB,KAAA+L,EAAAC,EACA,MAAMC,EAAeje,KAAKsX,oBAAoBtX,KAAKgS,UAC7C0L,EAAkB1d,KAAKsX,oBAC3B2G,EAAahM,gBAGfjS,KAAK8b,wBAAwB4B,EAAiB1d,KAAKgS,UAEzB,QAA1B+L,EAAAE,EAAaf,qBAAa,IAAAa,GAA1BA,EAAAtd,KAAAwd,GAA6B,GACM,QAAnCD,EAAAC,EAAahB,8BAAsB,IAAAe,GAAnCA,EAAAvd,KAAAwd,EACEje,KAAK6Z,wBAAwB7Z,KAAKgS,UAClC4H,GAMJ,GAFA5Z,KAAKgS,SAAW6L,EAEZ7d,KAAK8d,qBAAqB9d,KAAKgS,UAAW,KAAAkM,EAAAC,EAC5C,MAAMC,EAAepe,KAAKsX,oBAAoBtX,KAAKgS,UAEzB,QAA1BkM,EAAAE,EAAalB,qBAAa,IAAAgB,GAA1BA,EAAAzd,KAAA2d,GAA6B,GACM,QAAnCD,EAAAC,EAAapB,8BAAsB,IAAAmB,GAAnCA,EAAA1d,KAAA2d,EACEpe,KAAK6Z,wBAAwB7Z,KAAKgS,UAClC4H,IAKNyE,6BACErM,EACA4H,GAEA,MAAM0E,EAAoB,GAE1B,IAAIhD,EAAmBtb,KAAKsX,oBAAoBtF,GAKhD,KAAOsJ,GAAkB,CACvB,MAAM,eAAErJ,GAAmBqJ,EAErBoC,EAAkB1d,KAAKsX,oBAAoBrF,GAEjD,GAAIyL,EAAiB,CACnB,MAAQ1L,SAAUuM,GAA0Bb,EAE5CY,EAAQ3Z,KAAK4Z,GAGfjD,EAAmBoC,EAGrB,MAAMc,EAAsBlK,EAC1BtU,KAAKuX,0BACL+G,GAEIG,EAAmBnK,EACvBgK,EACAte,KAAKuX,2BAGPpS,EAAQqZ,EAAsBvM,IAAmB,IAAAyM,EAC/C,MAAMhB,EAAkB1d,KAAKsX,oBAAoBrF,GAEjDyL,GACEA,EAAgBnB,gBACuB,QADVmC,EAC7BhB,EAAgBP,+BAAuB,IAAAuB,GAAvCA,EAAAje,KAAAid,GAA0C,IAC5C1d,KAAK2e,gCAAgC1M,EAAgB2H,KAGvDzU,EAAQsZ,EAAmBxM,IAAmB,IAAA2M,EAC5C,MAAMlB,EAAkB1d,KAAKsX,oBAAoBrF,GAEjDyL,GACEA,EAAgBnB,gBACuB,QADVqC,EAC7BlB,EAAgBP,+BAAuB,IAAAyB,GAAvCA,EAAAne,KAAAid,GAA0C,IAC5C1d,KAAK6e,gCAAgC5M,EAAgB2H,KAGvD5Z,KAAKuX,0BAA4B+G,EAGnCQ,8BAA8B9M,GAC5B,IAAIsJ,EAAmBtb,KAAKsX,oBAAoBtF,GAKhD,KAAOsJ,GAAkB,CACvB,MAAM,eAAErJ,GAAmBqJ,EAErBoC,EAAkB1d,KAAKsX,oBAAoBrF,GAE7CyL,GACF1d,KAAK8b,wBACH4B,EACApC,EAAiBtJ,UAIrBsJ,EAAmBoC,GAIvBtE,YACE,OAAOpZ,KAAK+X,OAGdrN,UAAUqN,GACR/X,KAAK+X,OAAS,IACT/X,KAAKoZ,eACLrB,GAIP+F,qBAAqB9L,GACnB,QAAShS,KAAKsX,oBAAoBtF,GAOpC2K,kCAAkC3K,GAChC,OACEhS,KAAK8d,qBAAqB9L,IAC1BhS,KAAKsX,oBAAoBtF,GAAUyI,UAIvCoE,gCACE7M,EACA4H,GACM,IAAAmF,EAAAC,EACNhf,KAAK2c,kCAAkC3K,KACoB,QADX+M,GAC9CC,EAAAhf,KAAKsX,oBAAoBtF,IAAUgL,8BAAsB,IAAA+B,GAAzDA,EAAAte,KAAAue,EACEhf,KAAK6Z,wBAAwB7H,GAC7B4H,IAIN+E,gCACE3M,EACA4H,GACM,IAAAqF,EAAAC,EACNlf,KAAK2c,kCAAkC3K,KACoB,QADXiN,GAC9CC,EAAAlf,KAAKsX,oBAAoBtF,IAAUiL,8BAAsB,IAAAgC,GAAzDA,EAAAxe,KAAAye,EACElf,KAAK6Z,wBAAwB7H,GAC7B4H,IAINtP,QACEtK,KAAK4X,QAAS,EAGhBrN,SACEvK,KAAK4X,QAAS,EAGhBpN,SAAS6R,EAAwBzC,EAA+B,IAC9D,MAAMuF,EAAiBnf,KAAKgS,SACtB6L,EAAc7d,KAAKoc,gBAAgBC,GAEzCrc,KAAKka,IAAI,WAAY,cAAe2D,GAEpC7d,KAAK4d,qBAAqBC,EAAajE,GACvC5Z,KAAKqe,6BAA6BR,EAAajE,GAC/C5Z,KAAK8e,8BAA8BK,GAGrC/G,mBACMpY,KAAKyX,YAITzW,OAAO8X,QAAQ9Y,KAAKsX,qBAAqBnS,QAAQ,EAAE6M,MACjDhS,KAAKub,aAAavJ,KAItBuJ,aAAavJ,GACX,MAAM+G,EAAY/Y,KAAKsX,oBAAoBtF,GAE3C,IAAK+G,GAAa/Y,KAAKyX,YAAcsB,EAAUsC,cAC7C,OAGF,MAAM,KAAEzL,GAASmJ,EAEjBtI,EACEb,EACA,CACE4C,EACAC,EACAzC,EACAF,EACAI,EACAE,KAEA2I,EAAUhH,OAAS,CACjBS,IACAC,IACAzC,QACAF,SACAI,OACAE,MACAR,UAMRwP,gBACEpN,GACA,KACEpC,EAAI,uBACJ6M,EAAsB,UACtBhC,EAAS,mBACT4C,IAGF,GAAIrd,KAAKyX,WACP,OAGF,MAAMsB,EAAY/Y,KAAKsX,oBAAoBtF,GAEvC+G,IACFA,EAAU0D,uBAAyBA,EACnC1D,EAAU0B,UAAYA,UAAa1B,EAAU0B,UAC7C1B,EAAUsE,mBAAqBA,EAE3BzN,IACFmJ,EAAUnJ,KAAOA,IAKvByP,eACE,OAAOrf,KAAKyX,WAGd6H,yBACE,OAAOte,OAAOuT,OAAOvU,KAAKsX,qBAG5BiI,uCACEtN,GAEA,OAAOjR,OAAOuT,OAAOvU,KAAKsX,qBAAqB3R,OAC5CoT,GAAcA,EAAU9G,iBAAmBA,IAQnC,QAAItH,G,okBElzCZ,MAAe6U,EAAU1W,cAAAgC,EAAA,kBACT,IAAIF,KAAoB,IAAME,EAAA,cAClC,IAAIF,IAA0B,OAE/C,gBACE,OAAO5K,KAAKyf,WAGd,YACE,OAAOzf,KAAK0f,OAGJC,WAAWC,GACnB5f,KAAKyf,WAAWle,MAAQqe,EAGhBC,SAASC,GACjB9f,KAAK0f,OAAOne,MAAQue,G,6bCwKTC,MAjLf,MAAwBjX,cAAAgC,EAAA,iCACM,IAAIF,IAA0B,OAAKE,EAAA,2BACzC,IAAIF,IAA0B,OAAKE,EAAA,mCAC3B,IAAIF,IAA0B,OAAKE,EAAA,kBACpD,IAAIF,IAAsC,qBAAmBE,EAAA,mBAC5D,IAAIF,IAAwD,KAAGE,EAAA,aACrE,IAAIF,IAA0B,KAEtCoV,mBAAmB5b,GACjB,OAAOA,IAAUpE,KAAKigB,0BAA0B1e,MAGlD,kBAAkB2e,GACF,OAAVA,GAKJlgB,KAAKkgB,MAAM3e,MAAQvB,KAAKmgB,qBAAqBD,GAC7ClgB,KAAKogB,eALHpgB,KAAKqgB,WAAW9e,MAAQ,iBAQpB6e,cACwB,mBAA1BpgB,KAAKqgB,WAAW9e,QAClBvB,KAAKqgB,WAAW9e,MAAQ,MAGI,qBAA1BvB,KAAKqgB,WAAW9e,OAAgCvB,KAAKsgB,SAAS7c,SAChEzD,KAAKqgB,WAAW9e,MAAQ,MAGrBvB,KAAKsgB,SAAS7c,SACjBzD,KAAKqgB,WAAW9e,MAAQ,oBAI5B,kBAAkBgf,GACHC,GAAIC,2BACZC,SAASC,SAASJ,GAGzBJ,qBAAqBS,GACnB,MAAMC,EAAQ7f,OAAOuT,OAAOqM,EAASE,SAASC,MACxCC,EAAWhgB,OAAOuT,OAAOqM,EAASE,SAASG,SAC3CC,EAAWL,EAAMxH,KAAM0H,GAA2B,SAAlBA,EAAKI,UACrCC,EAAWP,EAAMxH,KAAM0H,GAA2B,SAAlBA,EAAKI,UAE3C,IAAKD,IAAaE,EAEhB,OADAjF,QAAQkF,KAAK,oCACN,GAGT,MAAMnB,EAAoB,GACpB1c,EAAwB,GAE9B,IAAK,MAAM8d,KAAWV,EAASW,SAAU,CACvC,IAAK,MAAMC,KAAWF,EAAQpB,MAAO,CACnC,MAAMuB,EAAWD,EAAQT,KACrBF,EAAMxH,KAAM0H,GAASA,EAAK/c,KAAOwd,EAAQT,WACzCxR,EACE0R,EAAUO,EAAQP,QACpBD,EAAS3H,KAAMpL,GAAMA,EAAEjK,KAAOwd,EAAQP,cACtC1R,EAEEmS,EAAeD,EAAWA,EAASE,aAAUpS,EAC7CqS,EAAiBX,EAAUA,EAAQY,cAAWtS,EAC9CuS,EACsB,aAA1BN,EAAQO,cAA+BP,EAAQQ,eAAYzS,EAEvD0S,EAAYT,EAAQS,UAAYT,EAAQS,UAAY,IACpDC,EAAYV,EAAQU,UAAYV,EAAQU,UAAY,IACpDC,EAAgBX,EAAQY,YAC1BC,SAASJ,QACT1S,EACE+S,EAAgBd,EAAQY,YAC1BC,SAASH,QACT3S,EAGEgT,EAAwB,CAC5Bve,GAFe+R,KAAKyM,SAASjb,SAAS,IAAIkb,UAAU,EAAG,IAGvDC,YAAalB,EAAQkB,YAAclB,EAAQkB,YAAc,GACzDC,aAAczB,EAAWA,EAAS0B,UAAY,GAC9CC,aAAczB,EAAWA,EAASwB,UAAY,GAC9CT,gBACAG,gBACAQ,OAAQtB,EAAQsB,OAChBpB,eACAE,iBACAE,oBACAR,QAASA,EAAQyB,OAGnB7C,EAAMvb,KAAK4d,GAIb,GAAIrC,EAAMzc,OAAQ,CAChB,MAAMuf,EAAe1B,EAAQyB,MACvBE,EAAkBzf,EAAO6V,KAC5BtV,GAASA,EAAKgf,QAAUC,GAGvBC,EACFA,EAAgB/C,MAAMvb,QAAQub,GAE9B1c,EAAOmB,KAAK,CACVoe,MAAOC,EACP9C,MAAO,IAAIA,KAKfA,EAAMzc,OAAS,GAInB,OAAOD,EAGT,eACE,OAAOxD,KAAKkgB,MAAM3e,MAAM2hB,OAAO,CAACC,EAAK7B,IAC5B6B,EAAIhf,OAAOmd,EAAQpB,OACzB,IAGL4C,OAAOM,GAEL,GADapjB,KAAKsgB,SAAS8C,GAI3B,OAAOpjB,KAAKsgB,SAAS8C,GAAmBN,OAG1CO,yBAAyBD,GACvB,MAAMN,EAAS9iB,KAAK8iB,OAAOM,GAC3B,GAAIN,EAAQ,CACV,MAAMQ,EAAiBtjB,KAAKujB,YAAYhiB,MACxC+hB,EAAeR,GAAU,gBAEzB9iB,KAAKujB,YAAYhiB,MAAQ+hB,EAEzBxP,WAAW,KACT,GAAkD,kBAA9C9T,KAAKwjB,kBAAkBJ,GAAwC,CACjE,MAAME,EAAiBtjB,KAAKujB,YAAYhiB,MACxC+hB,EAAeR,GAAU,mBACzB9iB,KAAKujB,YAAYhiB,MAAQ+hB,IAE1B,MAIPE,kBAAkBJ,GAChB,MAAMN,EAAS9iB,KAAK8iB,OAAOM,GAE3B,OADuBpjB,KAAKujB,YAAYhiB,OAIjCuhB,EAAS9iB,KAAKujB,YAAYhiB,MAAMuhB,GAF9B,YAKXW,uBAAuBL,GACrB,MAAMN,EAAS9iB,KAAK8iB,OAAOM,GACvBN,GAAU9iB,KAAKujB,cACjBvjB,KAAKujB,YAAYhiB,MAAQ,IACpBvB,KAAKujB,YAAYhiB,MACpB,CAACuhB,GAAS,cAKhB,qCACE,MAAMY,EAAOlD,GAAIC,iCACXiD,EAAKhD,SAASiD,iC,8cCtFTC,MA/Ff,MAME9a,aAAY,QACV+a,EAAO,QACPC,EAAO,MACPC,EAAK,QACLC,EAAO,cACPC,IAOCnZ,EAAA,sBAAAA,EAAA,uBAAAA,EAAA,qBAAAA,EAAA,uBACD9K,KAAK8jB,QAAUA,EACf9jB,KAAK+jB,MAAQA,EACb/jB,KAAKgkB,QAAUA,EAEfhkB,KAAKkkB,OACHD,GACAE,IAAMviB,OAAO,CACXiiB,UACAO,QAAS,CACP,eAAgB,oBAElB9Q,QAhCgB,MAoCtB,YACE+Q,EACAC,EAAkB,GAElB,IACE,aAAaD,IACb,MAAOvE,GACP,MAAMyE,EAAazE,EAQnB,GAJEwE,EAAUtkB,KAAK8jB,UACbS,EAAW3D,UAA2C,MAA/B2D,EAAW3D,SAAS4D,QACvB,iBAApBD,EAAWE,MAEE,CACf,MAAMC,EAAY1kB,KAAK+jB,MAAQhO,KAAK4O,IAAI3kB,KAAKgkB,QAASM,GAMtD,OALAnI,QAAQjC,IACN,uBAAuBwK,eAAuBH,EAAWK,iBAGrD,IAAIC,QAASC,GAAYhR,WAAWgR,EAASJ,IAC5C1kB,KAAK+kB,MAAMV,EAAWC,EAAU,GAGzC,MAAMxE,GAIV,UACEkF,EACAC,EACAb,GAEA,OAAOpkB,KAAK+kB,MAAMG,gBACOllB,KAAKkkB,OAAO/iB,IAAmB6jB,EAAU,CAC9DC,SACAb,aAEc1a,MAIpB,WACEsb,EACAtb,GAEA,OAAO1J,KAAK+kB,MAAMG,gBACOllB,KAAKkkB,OAAOiB,KAAoBH,EAAUtb,IACjDA,MAIpB0b,kBAAkBC,EAAsBC,GACtCtlB,KAAKkkB,OAAOqB,SAASnB,QAAQoB,OAAsB,cAAIH,EACnD,UAAUA,EACV,GACJrlB,KAAKkkB,OAAOqB,SAASnB,QAAQoB,OAAO,qBAAuBF,GAAU,K,6bCzF1D,MAAMG,EAanB3c,YACE4c,EAAwB,KACxBC,EAAkB,QAClBC,EAAkB,OAClB9a,EAAA,cAhBgC,kBAAgBA,EAAA,6BAAAA,EAAA,uBAAAA,EAAA,uBAAAA,EAAA,yBAiBhD9K,KAAK0lB,cAAgBA,EACrB1lB,KAAK2lB,QAAUA,EACf3lB,KAAK4lB,QAAUA,EACf5lB,KAAK6lB,UAAY,IAAIC,IAQhBC,gBAAgBlkB,GACrB,MAAO,GAAG7B,KAAKgmB,SAAShmB,KAAK4lB,WAAW/jB,IAOlCokB,iBACN,IAAIC,EAAY,EAChB,IAAK,IAAI5lB,EAAI,EAAGA,EAAI6lB,aAAa1iB,OAAQnD,IAAK,CAC5C,MAAMuB,EAAMskB,aAAatkB,IAAIvB,GAC7B,GAAIuB,WAAKukB,WAAWpmB,KAAKgmB,QAAS,CAChC,MAAMzkB,EAAQ4kB,aAAaE,QAAQxkB,GAC/BN,IACF2kB,GAAarkB,EAAI4B,OAASlC,EAAMkC,SAItC,OAAOyiB,EAMDI,oBACN,MAAM7S,EAAMC,KAAKD,MAEX8S,EAAyB,GAC/B,IAAK,IAAIjmB,EAAI,EAAGA,EAAI6lB,aAAa1iB,OAAQnD,IAAK,CAC5C,MAAMuB,EAAMskB,aAAatkB,IAAIvB,GAC7B,GAAIuB,WAAKukB,WAAWpmB,KAAKgmB,QAAS,CAChC,MAAMzkB,EAAQ4kB,aAAaE,QAAQxkB,GACnC,GAAIN,EACF,IACE,MAAM,UAAEilB,GAAc7f,KAAK8f,MAAMllB,GAC7BkS,EAAM+S,EAAYxmB,KAAK0lB,eACzBa,EAAa5hB,KAAK9C,GAEpB,MAAO4G,GACP8d,EAAa5hB,KAAK9C,KAK1B0kB,EAAaphB,QAAStD,IACpBskB,aAAaO,WAAW7kB,GAExB,MAAM8kB,EAAa9kB,EAAIwM,QAAQrO,KAAKgmB,OAAShmB,KAAK4lB,QAAU,IAAK,IACjE5lB,KAAK6lB,UAAUe,OAAOD,KAOlBE,kBAAkBC,GAExB,MAAMhO,EAAUhR,MAAMiB,KAAK/I,KAAK6lB,UAAU/M,WAAW5E,KACnD,EAAE,CAAEjG,IAAK,CAAEC,KAAOD,EAAIC,GAExB,KACElO,KAAKimB,iBAAmBa,EAAc9mB,KAAK2lB,SAC3C7M,EAAQrV,OAAS,GACjB,CACA,MAAO5B,GAAOiX,EAAQiO,QACtBZ,aAAaO,WAAW1mB,KAAK+lB,gBAAgBlkB,IAC7C7B,KAAK6lB,UAAUe,OAAO/kB,IAS1BmlB,SAASnlB,EAAa6H,GACpB1J,KAAKsmB,oBACL,MAAMW,EAAWjnB,KAAK+lB,gBAAgBlkB,GAChCqlB,EAAY,CAChBxd,OACA8c,UAAW9S,KAAKD,OAEZqT,EAAcG,EAASxjB,OAASkD,KAAKC,UAAUsgB,GAAWzjB,OAChEzD,KAAK6mB,kBAAkBC,GAEnB9mB,KAAKimB,iBAAmBa,EAAc9mB,KAAK2lB,UAI/CQ,aAAagB,QAAQF,EAAUtgB,KAAKC,UAAUsgB,IAC9ClnB,KAAK6lB,UAAUuB,IAAIvlB,EAAK6R,KAAKD,QAQ/B4T,SAASxlB,GACP7B,KAAKsmB,oBACL,MAAMW,EAAWjnB,KAAK+lB,gBAAgBlkB,GAChCylB,EAAanB,aAAaE,QAAQY,GACxC,IAAKK,EACH,OAAO,KAET,IACE,MAAM,KAAE5d,EAAI,UAAE8c,GAAc7f,KAAK8f,MAAMa,GACjC7T,EAAMC,KAAKD,MACjB,OAAIA,EAAM+S,EAAYxmB,KAAK0lB,eACzBS,aAAaO,WAAWO,GACxBjnB,KAAK6lB,UAAUe,OAAO/kB,GACf,OAGT7B,KAAK6lB,UAAUuB,IAAIvlB,EAAK4R,GACjB/J,GACP,MAAOjB,GAGP,OAFA0d,aAAaO,WAAWO,GACxBjnB,KAAK6lB,UAAUe,OAAO/kB,GACf,MAQX0lB,WAAW1lB,GACT,MAAMolB,EAAWjnB,KAAK+lB,gBAAgBlkB,GACtCskB,aAAaO,WAAWO,GACxBjnB,KAAK6lB,UAAUe,OAAO/kB,GAOxB2lB,oBAAoBC,GAElB,MAAMlB,EAAyB,GAC/B,IAAK,IAAIjmB,EAAI,EAAGA,EAAI6lB,aAAa1iB,OAAQnD,IAAK,CAC5C,MAAMuB,EAAMskB,aAAatkB,IAAIvB,GACzBuB,WAAKukB,WAAWpmB,KAAKgmB,SAAWnkB,EAAI2S,SAASiT,IAC/ClB,EAAa5hB,KAAK9C,GAGtB0kB,EAAaphB,QAAStD,IACpBskB,aAAaO,WAAW7kB,GAExB,MAAM8kB,EAAa9kB,EAAIwM,QAAQrO,KAAKgmB,OAAShmB,KAAK4lB,QAAU,IAAK,IACjE5lB,KAAK6lB,UAAUe,OAAOD,KAO1Be,gBACE,MAAMnB,EAAyB,GAC/B,IAAK,IAAIjmB,EAAI,EAAGA,EAAI6lB,aAAa1iB,OAAQnD,IAAK,CAC5C,MAAMuB,EAAMskB,aAAatkB,IAAIvB,GACzBuB,WAAKukB,WAAWpmB,KAAKgmB,SACvBO,EAAa5hB,KAAK9C,GAGtB0kB,EAAaphB,QAAStD,GAAQskB,aAAaO,WAAW7kB,IACtD7B,KAAK6lB,UAAUlU,S,6bC1MZ,MAAMgW,UAAqBriB,MAChCwD,YAAY8b,GACVgD,MAAMhD,GACN5kB,KAAKa,KAAO,gBAIT,MAAMgnB,UAAkBviB,MAC7BwD,YAAY8b,GACVgD,MAAMhD,GACN5kB,KAAKa,KAAO,aAIT,MAAMinB,UAAsBxiB,MACjCwD,YAAY8b,GACVgD,MAAMhD,GACN5kB,KAAKa,KAAO,iBAIT,MAAMknB,UAAoBziB,MAG/BwD,YAAYkf,EAAoBpD,GAC9BgD,MAAMhD,GAAS9Z,EAAA,0BACf9K,KAAKa,KAAO,cACZb,KAAKgoB,WAAaA,GAIf,MAAMC,UAAwB3iB,MAGnCwD,YAAYkf,EAAoBpD,GAC9BgD,MAAMhD,GAAS9Z,EAAA,0BACf9K,KAAKa,KAAO,kBACZb,KAAKgoB,WAAaA,G,6bCzBf,MAAME,EAGC,aAMDC,EAAwD,CACnE,CATa,eASqB,6BAClC,CATS,WAUP,iDACF,CAACD,GAAgC,0BAetBE,EACN,MADMA,EAEL,OAgBR,MAAMC,EAYIvf,YACNlF,EAAiC,GACjC0kB,GACAxd,EAAA,4BAAAA,EAAA,6BAAAA,EAAA,8BAAAA,EAAA,2BAAAA,EAAA,4BAAAA,EAAA,4BACA9K,KAAKuoB,YAAc3kB,EAAQ2kB,aAAeL,EAC1CloB,KAAKwoB,aAAe,IAAI1C,IAGxB9lB,KAAKyoB,aACH7kB,EAAQ6kB,cACR,IAAIhD,EAAyB7hB,EAAQ8kB,sBAGvC1oB,KAAK2oB,cACH/kB,EAAQglB,eACR,IAAIhF,EAAmB,CACrBC,QAASsE,EAAkBnoB,KAAKuoB,aAChCzE,QAAS,EACTC,MAAO,IACPC,QAAS,IAIbhkB,KAAK6oB,eACHjlB,EAAQklB,uBACR,IAAIlF,EAAmB,CACrBC,QAASjgB,EAAQmlB,iBAAmB,GACpCjF,QAAS,EACTC,MAAO,IACPC,QAAS,IAGbhkB,KAAKmmB,aAAemC,GACK,oBAAfU,YAA8BA,WAAW7C,cAAiB,CAChE1iB,OAAQ,EACRkO,MAAOA,OACP0U,QAASA,IAAM,KACfxkB,IAAKA,IAAM,KACX6kB,WAAYA,OACZS,QAASA,QAIf,mBACEvjB,EACA0kB,GAUA,OARKtoB,KAAKipB,SAECrlB,GAELA,EAAQ2kB,aACVvoB,KAAKipB,SAASC,eAAetlB,EAAQ2kB,aAJvCvoB,KAAKipB,SAAW,IAAIZ,EAAezkB,EAAS0kB,GAOvCtoB,KAAKipB,SAMdC,eAAeX,GACbvoB,KAAKuoB,YAAcA,EAInB,IAAI,IAAAY,EACoC,QAAtCA,EAAKnpB,KAAK2oB,cAAsBzE,cAAM,IAAAiF,GAAlCA,EAAoC5D,WACrCvlB,KAAK2oB,cAAsBzE,OAAOqB,SAAS1B,QAC1CsE,EAAkBI,IAEtB,MAAOzI,GACP,MAAM,IAAIxa,MAAM,sCAAsCwa,IAO1DsJ,iBACE,OAAOppB,KAAKuoB,YAMdnD,kBAAkBC,EAAsBC,GACtCtlB,KAAK2oB,cAAcvD,kBAAkBC,EAAOC,GAMtC+D,YAAYvJ,GAElB,GAAIA,EAAMc,SAAU,KAAA0I,EAClB,MAAM9E,EAAS1E,EAAMc,SAAS4D,OACxBI,GAA6B,QAAnB0E,EAAAxJ,EAAMc,SAASlX,YAAI,IAAA4f,OAAA,EAAnBA,EAAqB1E,UAAW9E,EAAM8E,QAEtD,MAAe,MAAXJ,GAA6B,MAAXA,EACd,IAAIqD,EAAUjD,GACA,MAAXJ,EACH,IAAIsD,EAAclD,GACfJ,GAAU,IACb,IAAIuD,EAAYvD,EAAQI,GAExB,IAAIqD,EAAgBzD,EAAQI,GAE/B,MAAI9E,EAAMyJ,QAET,IAAI5B,EAAa,0BAGjB7H,EAOV,yBAAiC,SAC/BkF,EAAQ,OACRwE,EAASpB,EAAc,OACvBnD,EAAS,GAAE,KACXvb,EAAO,KAAI,QACX0a,EAAU,GAAE,SACZqF,GAAW,EAAI,sBACfC,EAAwB,KAAI,gCAC5BC,GAAkC,IAYlC,MAAMC,EAAyC,CAC7C,+BAvLoB,oBAwLjBxF,GAWL,GAPIsF,IACFE,EAAe,uBAAyBF,EAAsBG,OAC9DD,EAA8B,cAAI,UAAUF,EAAsBI,IAClEF,EAAe,gBAAkB,oBAI/BJ,IAAWpB,GAAkBqB,EAAU,CACzC,MAAMxC,EAAWjnB,KAAKyoB,aAAa1C,gBACjCpf,KAAKC,UAAU,CACboe,WACAC,SACAvb,KAAM,QAGJ4d,EAAatnB,KAAKyoB,aAAapB,SAAYJ,GACjD,GAAIK,EACF,OAAOA,EAIX,IACE,IAAI1G,EAEJ,GAAI4I,IAAWpB,EACbxH,QAAiB5gB,KAAK2oB,cAAcxnB,IAClC6jB,EACAC,EACA2E,OAEG,IAAIJ,IAAWpB,EAGpB,MAAM,IAAI9iB,MAAM,UAAUkkB,qBAF1B5I,QAAiB5gB,KAAK2oB,cAAcxD,KAAaH,EAAUtb,GAW7D,GALIigB,IAAoC/I,IACtCA,EAAW,IAIT4I,IAAWpB,GAAkBqB,EAAU,CACzC,MAAMxC,EAAWjnB,KAAKyoB,aAAa1C,gBACjCpf,KAAKC,UAAU,CACboe,WACAC,SACAvb,KAAM,QAGV1J,KAAKyoB,aAAazB,SAASC,EAAUrG,GAGvC,OAAOA,EACP,MAAOd,GACP,OAAO9f,KAAKqpB,YAAYvJ,IAO5B,0BAAkC,SAChCkF,EAAQ,OACRwE,EAASpB,EAAc,OACvBnD,EAAS,GAAE,KACXvb,EAAO,KAAI,QACX0a,EAAU,GAAE,SACZqF,GAAW,EAAI,gCACfE,GAAkC,IAWlC,GAAIH,IAAWpB,GAAkBqB,EAAU,CACzC,MAAMxC,EAAWjnB,KAAKyoB,aAAa1C,gBACjCpf,KAAKC,UAAU,CACboe,WACAC,SACAvb,KAAM,QAGJ4d,EAAatnB,KAAKyoB,aAAapB,SAAYJ,GACjD,GAAIK,EACF,OAAOA,EAIX,IACE,IAAI1G,EAEJ,GAAI4I,IAAWpB,EACbxH,QAAiB5gB,KAAK6oB,eAAe1nB,IAAO6jB,EAAUC,EAAQb,OACzD,IAAIoF,IAAWpB,EAGpB,MAAM,IAAI9iB,MAAM,UAAUkkB,qBAF1B5I,QAAiB5gB,KAAK6oB,eAAe1D,KAAaH,EAAUtb,GAW9D,GALIigB,IAAoC/I,IACtCA,EAAW,IAIT4I,IAAWpB,GAAkBqB,EAAU,CACzC,MAAMxC,EAAWjnB,KAAKyoB,aAAa1C,gBACjCpf,KAAKC,UAAU,CACboe,WACAC,SACAvb,KAAM,QAGV1J,KAAKyoB,aAAazB,SAASC,EAAUrG,GAGvC,OAAOA,EACP,MAAOd,GACP,OAAO9f,KAAKqpB,YAAYvJ,IAO5BiK,uBAA+B,SAC7B/E,EAAQ,SACRgF,EAAQ,OACRR,EAASpB,EAAc,OACvBnD,EAAS,GAAE,KACXvb,EAAO,KAAI,QACX0a,EAAU,GAAE,sBACZsF,EAAwB,KAAI,gCAC5BC,GAAkC,EAAK,OACvCM,EAAM,QACNC,IAcA,MAAMC,EAAU,GAAGnF,KAAYre,KAAKC,UAAUqe,MAAWte,KAAKC,UAC5D8C,KAIkC,IAAA0gB,EAAhCpqB,KAAKwoB,aAAa6B,IAAIF,KACM,QAA9BC,EAAApqB,KAAKwoB,aAAarnB,IAAIgpB,UAAQ,IAAAC,GAA9BA,EAAgCE,WAAWC,QAC3CvqB,KAAKwoB,aAAa5B,OAAOuD,IAI3B,MAAMG,EAAa,IAAIE,gBACjBC,EAASH,EAAWG,OAqC1B,MAlCA,WACE,MAAQA,EAAOC,SAAS,CACtB,IACE,MAAM9J,QAAiB5gB,KAAK2qB,kBAAqB,CAC/C3F,WACAwE,SACAvE,SACAvb,OACA0a,UACAsF,wBACAC,kCACAF,UAAU,IAIZQ,EAAOrJ,GACP,MAAOd,GAEHoK,GACFA,EAAQpK,GAKP2K,EAAOC,eACJ,IAAI7F,QAASC,GAAYhR,WAAWgR,EAASkF,MAzBzD,GA+BAhqB,KAAKwoB,aAAapB,IAAI+C,EAAS,CAAEG,aAAYN,aAGtC,CACLY,KAAMA,KACgC,IAAAC,EAAhC7qB,KAAKwoB,aAAa6B,IAAIF,KACM,QAA9BU,EAAA7qB,KAAKwoB,aAAarnB,IAAIgpB,UAAQ,IAAAU,GAA9BA,EAAgCP,WAAWC,QAC3CvqB,KAAKwoB,aAAa5B,OAAOuD,MASjCW,wBAAgC,SAC9B9F,EAAQ,SACRgF,EAAQ,OACRR,EAASpB,EAAc,OACvBnD,EAAS,GAAE,KACXvb,EAAO,KAAI,QACX0a,EAAU,GAAE,gCACZuF,GAAkC,EAAK,OACvCM,EAAM,QACNC,IAaA,MAAMC,EAAU,YAAYnF,KAAYre,KAAKC,UAC3Cqe,MACGte,KAAKC,UAAU8C,KAGgB,IAAAqhB,EAAhC/qB,KAAKwoB,aAAa6B,IAAIF,KACM,QAA9BY,EAAA/qB,KAAKwoB,aAAarnB,IAAIgpB,UAAQ,IAAAY,GAA9BA,EAAgCT,WAAWC,QAC3CvqB,KAAKwoB,aAAa5B,OAAOuD,IAI3B,MAAMG,EAAa,IAAIE,gBACjBC,EAASH,EAAWG,OAoC1B,MAjCA,WACE,MAAQA,EAAOC,SAAS,CACtB,IACE,MAAM9J,QAAiB5gB,KAAKgrB,mBAAsB,CAChDhG,WACAwE,SACAvE,SACAvb,OACA0a,UACAuF,kCACAF,UAAU,IAIZQ,EAAOrJ,GACP,MAAOd,GAEHoK,GACFA,EAAQpK,GAKP2K,EAAOC,eACJ,IAAI7F,QAASC,GAAYhR,WAAWgR,EAASkF,MAxBzD,GA8BAhqB,KAAKwoB,aAAapB,IAAI+C,EAAS,CAAEG,aAAYN,aAGtC,CACLY,KAAMA,KACgC,IAAAK,EAAhCjrB,KAAKwoB,aAAa6B,IAAIF,KACM,QAA9Bc,EAAAjrB,KAAKwoB,aAAarnB,IAAIgpB,UAAQ,IAAAc,GAA9BA,EAAgCX,WAAWC,QAC3CvqB,KAAKwoB,aAAa5B,OAAOuD,MASjCe,iBACE,IAAK,MAAOrpB,GAAK,WAAEyoB,MAAiBtqB,KAAKwoB,aAAa1P,UACpDwR,EAAWC,QACXvqB,KAAKwoB,aAAa5B,OAAO/kB,GAO7B6lB,gBACE,MAAMyD,EAAiBnrB,KAAKmmB,aAAa1iB,OACzC,IAAK,IAAInD,EAAI,EAAGA,EAAI6qB,EAAgB7qB,IAAK,CACvC,MAAMuB,EAAM7B,KAAKmmB,aAAatkB,IAAIvB,GAC9BuB,GAAOA,EAAIukB,WAAW,mBACxBpmB,KAAKmmB,aAAaO,WAAW7kB,KAzdjBiJ,EAAdud,EAAc,mBAgeLA,Q,6bC7ZA+C,MApHf,MAGEtiB,YAAY4X,GAAiC5V,EAAA,8BAC3C9K,KAAKqrB,eAAiBhD,EAAeiD,YAAY,CAC/CvC,gBAAiBrI,EAAS6K,yBAU9B,6BAA6BC,GAC3B,OAAOxrB,KAAKqrB,eAAeL,mBAAmB,CAC5ChG,SAAUhlB,KAAKyrB,4BAA4BD,GAC3ChC,OAAQpB,EACRnD,OAAQ,GACRb,QAAS,KAYb,0BACEoH,EACAE,EACA5B,GAEA,OAAO9pB,KAAKqrB,eAAeL,mBAAmB,CAC5ChG,SAAUhlB,KAAK2rB,yBAAyBH,GACxChC,OAAQpB,EACRnD,OAAQ,CAAEyG,QACVtH,QAAS,CAAE,cAAe0F,KAa9B8B,wBACEJ,EACAxB,EACAC,EACAC,GAEA,OAAOlqB,KAAKqrB,eAAeP,uBAAuB,CAChD9F,SAAUhlB,KAAKyrB,4BAA4BD,GAC3CxB,WACAR,OAAQpB,EACRnD,OAAQ,GACRb,QAAS,GACT6F,SACAC,YAeJ2B,qBACEL,EACAE,EACA5B,EACAE,EACAC,EACAC,GAEA,OAAOlqB,KAAKqrB,eAAeP,uBAAuB,CAChD9F,SAAUhlB,KAAK2rB,yBAAyBH,GACxCxB,WACAR,OAAQpB,EACRnD,OAAQ,CAAEyG,QACVtH,QAAS,CAAE,cAAe0F,GAC1BG,SACAC,YAOJuB,4BAA4BD,GAC1B,MAAO,mBAAmBA,SAM5BG,yBAAyBH,GACvB,MAAO,gCAAgCA,WCxH3C,MAAMhS,EAAsB,CAC1BxV,GAAI,YACJ8nB,MAAO,aACPC,KAAM,oBACNC,UAAW,OACXC,SAAU,CACR,CACEF,KAAM,oBACN/nB,GAAI,uCACJkoB,WAAY,CACV,CACEC,KAAM,8DACNC,SACE,mEACFpoB,GAAI,wCACJqoB,KAAM,GACNC,QAAS,UACT9H,OAAQ,WACR+H,KAAM,YACNzgB,KAAM,SAER,CACEqgB,KAAM,8DACNC,SACE,mEACFpoB,GAAI,wCACJqoB,KAAM,GACNC,QAAS,UACT9H,OAAQ,WACR+H,KAAM,YACNzgB,KAAM,SAER,CACEqgB,KAAM,8DACNC,SACE,mEACFpoB,GAAI,wCACJqoB,KAAM,GACNC,QAAS,UACT9H,OAAQ,WACR+H,KAAM,YACNzgB,KAAM,SAER,CACEqgB,KAAM,8DACNC,SACE,mEACFpoB,GAAI,wCACJqoB,KAAM,GACNC,QAAS,UACT9H,OAAQ,WACR+H,KAAM,YACNzgB,KAAM,SAER,CACEqgB,KAAM,8DACNC,SACE,mEACFpoB,GAAI,wCACJqoB,KAAM,GACNC,QAAS,UACT9H,OAAQ,WACR+H,KAAM,YACNzgB,KAAM,SAER,CACEqgB,KAAM,8DACNC,SACE,mEACFpoB,GAAI,wCACJqoB,KAAM,GACNC,QAAS,UACT9H,OAAQ,WACR+H,KAAM,YACNzgB,KAAM,UAGVygB,KAAM,4CAGVC,KAAM,CACJH,KAAM,CACJ,CACEI,YAAa,YACbC,aAAc,KACd5gB,KAAM,YACN6gB,MAAO,QACPpY,OAAQ,CACN,CAAE8X,KAAM,OAAQC,QAAS,MAAOvL,KAAM,MAAOjV,KAAM,QACnD,CAAEugB,KAAM,OAAQC,QAAS,OAAQvL,KAAM,MAAOjV,KAAM,UAGxD,CACE2gB,YAAa,YACbC,aAAc,KACd5gB,KAAM,YACN6gB,MAAO,OACPpY,OAAQ,CACN,CAAE8X,KAAM,OAAQtL,KAAM,MAAOjV,KAAM,QACnC,CAAEugB,KAAM,OAAQtL,KAAM,MAAOjV,KAAM,UAGvC,CACE2gB,YAAa,eACbC,aAAc,QACd5gB,KAAM,QACN6gB,MAAO,QACPpY,OAAQ,CACN,CAAEqY,KAAM,SAAUP,KAAM,OAAQC,QAAS,MAAOxgB,KAAM,QACtD,CAAE8gB,KAAM,SAAUP,KAAM,OAAQC,QAAS,OAAQxgB,KAAM,WAG3D,CACE2gB,YAAa,eACbC,aAAc,QACd5gB,KAAM,QACN6gB,MAAO,OACPpY,OAAQ,CACN,CAAEqY,KAAM,SAAUP,KAAM,OAAQvgB,KAAM,QACtC,CAAE8gB,KAAM,SAAUP,KAAM,OAAQvgB,KAAM,WAG1C,CACE2gB,YAAa,SACbC,aAAc,SACd5gB,KAAM,cACN6gB,MAAO,QACPpY,OAAQ,CACN,CACEqY,KAAM,OACNP,KAAM,OACNC,QAAS,OACTvL,KAAM,MACNjV,KAAM,QAER,CACE8gB,KAAM,OACNP,KAAM,OACNC,QAAS,MACTvL,KAAM,MACNjV,KAAM,UAIZ,CACE2gB,YAAa,SACbC,aAAc,SACd5gB,KAAM,cACN6gB,MAAO,OACPpY,OAAQ,CACN,CAAEqY,KAAM,QAASP,KAAM,OAAQtL,KAAM,MAAOjV,KAAM,QAClD,CAAE8gB,KAAM,QAASP,KAAM,OAAQtL,KAAM,MAAOjV,KAAM,aAO/C+gB,EAAoD,CAC/D/L,SAAU,CACRD,MAAO,CACL,IAAO,CACL7c,GAAI,MACJ8oB,IAAK,kBACLC,KAAM,uCACNC,KAAM,sBACNN,aAAc,OACdD,YAAa,sBACbQ,iBAAkB,WAClBpsB,KAAM,aACNqsB,SAAU,WACVC,SAAU,WACVza,MAAO,SACP0a,eAAgB,SAChBC,SAAS,GAEX,IAAO,CACLrpB,GAAI,MACJ8oB,IAAK,kBACLC,KAAM,uCACNC,KAAM,0BACNN,aAAc,OACdD,YAAa,0BACbQ,iBAAkB,UAClBpsB,KAAM,kBACNqsB,SAAU,UACVC,SAAU,UACVza,MAAO,SACP0a,eAAgB,SAChBC,SAAS,KAIf7T,MAAK,EACL8T,WAAY,CACVC,WAAY,OACZC,SAAU,GACVC,KAAM,CACJ,CACEzpB,GAAI,+BACJ8H,KAAM,SACN4hB,UAAW,OACXpB,QAAS,UACTqB,gBAAiB,UACjBC,UAAW,KACXC,aAAc,SACdxB,KAAM,QACNyB,UAAW,oBACXC,OAAQ,CACN,CACEtB,YAAa,kDACbuB,KAAM,CACJ,CACEhqB,GAAI,uCACJiqB,SAAU,uCACVC,kBAAmB,uCACnBC,WAAY,OACZ3J,OAAQ,UACR6H,KAAM,OACN+B,UAAW,OACXC,cAAe,iBACfviB,KAAM,OACNwiB,WAAY,oBACZnC,KACE,kEACFC,SACE,uEACFmC,IACE,qVACFC,aAAc,UAIpB,CACE/B,YAAa,6BACbuB,KAAM,CACJ,CACEhqB,GAAI,uCACJiqB,SAAU,uCACVC,kBAAmB,uCACnBC,WAAY,OACZ3J,OAAQ,UACR6H,KAAM,OACN+B,UAAW,OACXC,cAAe,aACfviB,KAAM,OACNwiB,WAAY,oBACZnC,KACE,kEACFC,SACE,uEACFmC,IACE,wUACFC,aAAc,UAIpB,CACE/B,YAAa,yBACbuB,KAAM,CACJ,CACEhqB,GAAI,uCACJiqB,SAAU,uCACVC,kBAAmB,uCACnBC,WAAY,OACZ3J,OAAQ,UACR6H,KAAM,OACN+B,UAAW,OACXC,cAAe,aACfviB,KAAM,OACNwiB,WAAY,oBACZnC,KACE,kEACFC,SACE,uEACFmC,IACE,wUACFC,aAAc,UAIpB,CACE/B,YAAa,2BACbuB,KAAM,CACJ,CACEhqB,GAAI,uCACJiqB,SAAU,uCACVC,kBAAmB,uCACnBC,WAAY,OACZ3J,OAAQ,UACR6H,KAAM,OACN+B,UAAW,OACXC,cAAe,aACfviB,KAAM,OACNwiB,WAAY,oBACZnC,KACE,kEACFC,SACE,uEACFmC,IACE,wUACFC,aAAc,UAIpB,CACE/B,YAAa,sBACbuB,KAAM,CACJ,CACEhqB,GAAI,uCACJiqB,SAAU,uCACVC,kBAAmB,uCACnBC,WAAY,OACZ3J,OAAQ,UACR6H,KAAM,OACN+B,UAAW,OACXC,cAAe,aACfviB,KAAM,OACNwiB,WAAY,oBACZnC,KACE,kEACFC,SACE,uEACFmC,IACE,wUACFC,aAAc,WAKtBC,WAAY,CAAE3iB,KAAM,QACpB4iB,SAAU,EACVC,YAAY,EACZC,oBAAqB,UAEvB,CACE5qB,GAAI,+BACJ8H,KAAM,WACN4hB,UAAW,OACXpB,QAAS,UACTqB,gBAAiB,UACjBC,UAAW,IACXC,aAAc,QACdxB,KAAM,OACNyB,UAAW,oBACXC,OAAQ,CACN,CACEtB,YAAa,0BACbuB,KAAM,CACJ,CACEhqB,GAAI,uCACJiqB,SAAU,uCACVC,kBAAmB,uCACnBC,WAAY,OACZ3J,OAAQ,UACR6H,KAAM,OACN+B,UAAW,aACXC,cACE,gEACFviB,KAAM,OACNwiB,WAAY,gCACZnC,KACE,kEACFC,SACE,uEACFmC,IACE,4TACFC,aAAc,WAKtBC,WAAY,CACV3iB,KAAM,aACNqgB,KAAM,CACJ0C,MAAO,4CACPC,KAAM,8CAGVJ,SAAU,EACVC,YAAY,EACZC,oBAAqB,UAEvB,CACE5qB,GAAI,+BACJ8H,KAAM,WACN4hB,UAAW,OACXpB,QAAS,UACTqB,gBAAiB,UACjBC,UAAW,IACXC,aAAc,QACdxB,KAAM,OACNyB,UAAW,oBACXC,OAAQ,CACN,CACEtB,YAAa,0BACbuB,KAAM,CACJ,CACEhqB,GAAI,uCACJiqB,SAAU,uCACVC,kBAAmB,uCACnBC,WAAY,OACZ3J,OAAQ,UACR6H,KAAM,OACN+B,UAAW,aACXC,cACE,gEACFviB,KAAM,OACNwiB,WAAY,gCACZnC,KACE,kEACFC,SACE,uEACFmC,IACE,4TACFC,aAAc,WAKtBC,WAAY,CACV3iB,KAAM,aACNqgB,KAAM,CACJ0C,MAAO,4CACPC,KAAM,8CAGVJ,SAAU,EACVC,YAAY,EACZC,oBAAqB,UAEvB,CACE5qB,GAAI,+BACJ8H,KAAM,WACN4hB,UAAW,OACXpB,QAAS,UACTqB,gBAAiB,UACjBC,UAAW,IACXC,aAAc,QACdxB,KAAM,OACNyB,UAAW,oBACXC,OAAQ,CACN,CACEtB,YAAa,2BACbuB,KAAM,CACJ,CACEhqB,GAAI,uCACJiqB,SAAU,uCACVC,kBAAmB,uCACnBC,WAAY,OACZ3J,OAAQ,UACR6H,KAAM,OACN+B,UAAW,OACXC,cACE,sIACFviB,KAAM,OACNwiB,WAAY,sBACZnC,KACE,kEACFC,SACE,uEACFmC,IACE,2TACFC,aAAc,WAKtBC,WAAY,CAAE3iB,KAAM,QACpB4iB,SAAU,EACVC,YAAY,EACZC,oBAAqB,UAEvB,CACE5qB,GAAI,+BACJ8H,KAAM,WACN4hB,UAAW,OACXpB,QAAS,UACTqB,gBAAiB,UACjBC,UAAW,IACXC,aAAc,OACdxB,KAAM,OACNyB,UAAW,oBACXC,OAAQ,CACN,CACEtB,YAAa,uBACbuB,KAAM,CACJ,CACEhqB,GAAI,uCACJiqB,SAAU,uCACVC,kBAAmB,uCACnBC,WAAY,OACZ3J,OAAQ,UACR6H,KAAM,OACN+B,UAAW,OACXC,cAAe,0CACfviB,KAAM,OACNwiB,WAAY,uBACZnC,KACE,kEACFC,SACE,uEACFmC,IACE,uTACFC,aAAc,WAKtBC,WAAY,CAAE3iB,KAAM,QACpB4iB,SAAU,EACVC,YAAY,EACZC,oBAAqB,UAEvB,CACE5qB,GAAI,+BACJ8H,KAAM,WACN4hB,UAAW,OACXpB,QAAS,UACTqB,gBAAiB,UACjBC,UAAW,IACXC,aAAc,QACdxB,KAAM,OACNyB,UAAW,oBACXC,OAAQ,CACN,CACEtB,YAAa,uBACbuB,KAAM,CACJ,CACEhqB,GAAI,uCACJiqB,SAAU,uCACVC,kBAAmB,uCACnBC,WAAY,OACZ3J,OAAQ,UACR6H,KAAM,OACN+B,UAAW,OACXC,cACE,sIACFviB,KAAM,OACNwiB,WAAY,uBACZnC,KACE,kEACFC,SACE,uEACFmC,IACE,uTACFC,aAAc,WAKtBC,WAAY,CAAE3iB,KAAM,QACpB4iB,SAAU,EACVC,YAAY,EACZC,oBAAqB,WAGzBG,QAAS,CACP,CACE/qB,GAAI,+BACJ8H,KAAM,WACN4hB,UAAW,UACXpB,QAAS,MACTqB,gBAAiB,UACjBqB,aAAc,oBACdpB,UAAW,IACXC,aAAc,OACdxB,KAAM,OACNyB,UAAW,oBACXC,OAAQ,CACN,CACEtB,YAAa,uCACbuB,KAAM,CACJ,CACEhqB,GAAI,uCACJiqB,SAAU,uCACVC,kBAAmB,uCACnBC,WAAY,QACZ3J,OAAQ,MACR6H,KAAM,OACN+B,UAAW,OACXC,cAAe,WACfviB,KAAM,OACNmjB,OAAQ,QACRX,WAAY,eACZnC,KACE,8DACFC,SACE,mEACFmC,IACE,qTACFC,aAAc,UACdU,QAAS,CAAEC,KAAM,SAKzBV,WAAY,CAAE3iB,KAAM,QACpB4iB,SAAU,EACVC,YAAY,EACZC,oBAAqB,aAI3BQ,OAAQ,CACNrM,MAAO,kCACPL,YAAa,8DACb2M,KAAM,gEACNC,OAAQ,6DAEVC,YAAa,CACXpC,SAAU,sDACVqC,SAAU,6DAEThW,G,wcCtlBL,MAuHMiW,EACJ/lB,GAGkB,iBAATA,GACE,OAATA,GACA,UAAWA,GACW,iBAAfA,EAAK8P,MAyyBXlK,OAAOpN,UAAUwtB,WACpBpgB,OAAOpN,UAAUwtB,SAAW,WAC1B,IAAIC,EAAO,EACX,IAAK,IAAIrvB,EAAI,EAAGA,EAAIN,KAAKyD,OAAQnD,IAAK,CAEpCqvB,GAAQA,GAAQ,GAAKA,EADR3vB,KAAKuO,WAAWjO,GAE7BqvB,GAAcA,EAEhB,OAAOA,IAIIC,MAjzBR,cAA4BpQ,EAkBjC1W,YACE+mB,EACAnP,EACA9c,EAGI,IAEJgkB,QAzBF9c,EAAA,iBACmB,IAAIF,IAAsB,KAAGE,EAAA,qBACzB,IAAIF,KAAoB,IAAKE,EAAA,kBAChC,IAAIF,IAA2B,SAAOE,EAAA,iCACvB,IAAIF,KAAoB,IAE3DE,EAAA,uBAAAA,EAAA,wBAAAA,EAAA,2BAAAA,EAAA,+BAAAA,EAAA,mBAKmD,MAAIA,EAAA,uCACE,MAAIA,EAAA,oCACP,MAAIA,EAAA,oBAC3B,GAAKA,EAAA,oBACtB,GAWZ9K,KAAK6vB,QAAUA,EACf7vB,KAAK0gB,SAAWA,EAChB1gB,KAAK8vB,YAAc,IAAI1E,EAAY1K,GACnC1gB,KAAK+vB,gBAAkBnsB,EAAQmsB,iBAhKF,IAiK7B/vB,KAAKgwB,YAAcpsB,EAAQosB,cAAe,EAE1ChwB,KAAK8vB,YAAc,IAAI1E,EAAY1K,GAMrC,mBACQ1gB,KAAKiwB,eACXjwB,KAAKkwB,iBACLlwB,KAAKmwB,aAAc,EAMrBC,UACEpwB,KAAKqwB,cACLrwB,KAAKmwB,aAAc,EAMrBD,iBAEElwB,KAAKqwB,cAEDrwB,KAAKgwB,cAKThwB,KAAKswB,YAAc,CACjB1F,KAAMA,QAMR5qB,KAAKuwB,oBAMP,yBACE,IAIE,SAF8BvwB,KAAK0gB,SAAS8P,sBAEvB,CAEnB,MAAM9E,QAAc1rB,KAAK0gB,SAAS+P,eAAkB,GAC9C3G,QAAa9pB,KAAK0gB,SAASgQ,gBAAmB,GAGpD1wB,KAAKswB,YAActwB,KAAK8vB,YAAYjE,qBAClC7rB,KAAK6vB,QACLnE,EACA5B,EACA9pB,KAAK+vB,gBACL/vB,KAAK2wB,kBAAkB7uB,KAAK9B,MAC5BA,KAAK4wB,mBAAmB9uB,KAAK9B,YAI/BA,KAAKswB,YAActwB,KAAK8vB,YAAYlE,wBAClC5rB,KAAK6vB,QACL7vB,KAAK+vB,gBACL/vB,KAAK2wB,kBAAkB7uB,KAAK9B,MAC5BA,KAAK4wB,mBAAmB9uB,KAAK9B,OAGjC,MAAO8f,GACP3D,QAAQ2D,MAAM,4BAA6BA,GAG3C9f,KAAKswB,YAActwB,KAAK8vB,YAAYlE,wBAClC5rB,KAAK6vB,QACL7vB,KAAK+vB,gBACL/vB,KAAK2wB,kBAAkB7uB,KAAK9B,MAC5BA,KAAK4wB,mBAAmB9uB,KAAK9B,QAQ3B2wB,kBACNjnB,GAGA,MAAMmnB,EAAelqB,KAAKC,UAAU8C,GAAMgmB,WAG1C,GAFuBD,EAA2B/lB,GAE9B,CAElB,GACE1J,KAAK8wB,+BAAiCD,GACtC7wB,KAAK+wB,0BAA0BxvB,MAK/B,YAHA4a,QAAQjC,IACN,2EAMJla,KAAK8wB,6BAA+BD,MAG/B,CAEL,GACE7wB,KAAKgxB,kCAAoCH,GACzC7wB,KAAK+wB,0BAA0BxvB,MAK/B,YAHA4a,QAAQjC,IACN,2EAMJla,KAAKgxB,gCAAkCH,EAKzC7wB,KAAK+wB,0BAA0BxvB,OAAQ,EACvCvB,KAAKqgB,WAAW9e,MAAQ,OAKxBvB,KAAKixB,gBAAgBvnB,GAMfunB,gBACNvnB,GAGA,MAAMwnB,EAAsB,GAC5B,IAAKlwB,OAAOkE,KAAKwE,GAAMjG,OACrB,OAIF,MAAM0tB,EAAUnxB,KAAKoxB,mBAAmB1nB,GACpCynB,GACFD,EAASvsB,KAAKwsB,GAIhB,MAAME,EAAqBrxB,KAAKsxB,0BAA0B5nB,GACtD2nB,GACFH,EAASvsB,KAAK0sB,GAIhB,MAAME,EAAWvxB,KAAKwxB,oBAAoB9nB,GACtC6nB,GACFL,EAASvsB,KAAK4sB,GAIhB,MAAME,EAAWzxB,KAAK0xB,gBAAgBhoB,GAClC+nB,WAAUhuB,QACZytB,EAASvsB,QAAQ8sB,GAInB,MAAME,EAAY3xB,KAAK4xB,iBAAiBloB,GACpCioB,GACFT,EAASvsB,KAAKgtB,GAIhB,MAAME,EAAkB7xB,KAAK8xB,uBAAuBpoB,GAChDmoB,GACFX,EAASvsB,KAAKktB,GAIhB7xB,KAAK+xB,UAAUxwB,MAAQ2vB,EAGjBI,0BACN5nB,GACkC,IAAAsoB,EAElC,OADuBvC,EAA2B/lB,IACV,QAAjBsoB,EAACtoB,EAAK6lB,mBAAW,IAAAyC,GAAhBA,EAAkB7E,SAInC,CACLrhB,KAAM,qBACN9H,GAAI,qBACJ0F,KAAM,CACJ6iB,KAAM7iB,EAAK6lB,YAAYpC,WAPlB,KAYHyE,iBACNloB,GACqB,IAAAuoB,EAErB,OADuBxC,EAA2B/lB,IAC1BA,EAAK0lB,OAItB,CACLtjB,KAAM,QACNpC,KAAM,CACJqZ,MAAOrZ,EAAK0lB,OAAOrM,OAAS,GAC5BL,YAAahZ,EAAK0lB,OAAO1M,aAAe,GACxC2M,KAAM3lB,EAAK0lB,OAAOC,MAAQ,GAC1BC,OAAQ5lB,EAAK0lB,OAAOE,QAAU,IAEhCtrB,GAAI,WAAmB,QAAViuB,EAAAvoB,EAAK8P,aAAK,IAAAyY,OAAA,EAAVA,EAAYjuB,KAAM0F,EAAK1F,KAX7B,KAeH8tB,uBACNpoB,GAC+B,IAAAwoB,EAE/B,OADuBzC,EAA2B/lB,IACV,QAAjBwoB,EAACxoB,EAAK6lB,mBAAW,IAAA2C,GAAhBA,EAAkB1C,SAInC,CACL1jB,KAAM,kBACN9H,GAAI,kBACJ0F,KAAM,CACJ6iB,KAAM7iB,EAAK6lB,YAAYC,WAPlB,KAYH4B,mBACNxQ,GACuB,IAAAuR,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACvB,MAAMC,EAAiBpD,EAA2B7O,GAC5CC,EAAyB,QAApBsR,EAAGvR,EAASE,gBAAQ,IAAAqR,OAAA,EAAjBA,EAAmBtR,MAE3BwL,EAAQwG,EAEI,QADKR,EACnBzR,EAASpH,aAAK,IAAA6Y,GAAM,QAANC,EAAdD,EAAgB7F,YAAI,IAAA8F,OAAN,EAAdA,EAAsBjG,KADT,QADW+F,EACxBxR,EAAS4L,YAAI,IAAA4F,OAAA,EAAbA,EAAe/F,KAEbL,EAAa6G,EAED,QADIN,EAClB3R,EAASpH,aAAK,IAAA+Y,OAAA,EAAdA,EAAgBvG,UADhBpL,EAASoL,UAGPF,EAAS+G,EAAgD,QAAjBL,EAAG5R,EAASpH,aAAK,IAAAgZ,OAAA,EAAdA,EAAgB1G,MAAjClL,EAASkL,MACnC+D,EAAWgD,EAA6C,QAAjBJ,EAAG7R,EAASpH,aAAK,IAAAiZ,OAAA,EAAdA,EAAgBzuB,GAA9B4c,EAAS5c,GAE3C,KAAKqoB,GAASL,GAAcF,GAAU+D,GAAYhP,GAChD,OAAO,KAGT,MAAMiS,EAAY9xB,OAAOuT,OAAOsM,GAChC,IAAIO,EACAF,EAGJ,IAAK,MAAMH,KAAQ/f,OAAOuT,OAAOsM,GAAQ,CACvC,MAAMkS,EAAa1G,EAAKhT,KAAM2Z,GAAqB,gBAAbA,EAAIlnB,MACtCinB,IAEAA,EAAWxe,OAAO0e,KAAMC,GAAMA,EAAEnS,OAASA,EAAK/c,IAAiB,SAAXkvB,EAAEpnB,MAEtDoV,EAAWH,EAEXgS,EAAWxe,OAAO0e,KAAMC,GAAMA,EAAEnS,OAASA,EAAK/c,IAAiB,SAAXkvB,EAAEpnB,QAEtDsV,EAAWL,IAMjB,IAAKG,IAAaE,EAIhB,OAHAjF,QAAQkF,KACN,wEAEMyR,EAAUrvB,QAChB,KAAK,EACH,MAAM,IAAI6B,MAAM,8BAClB,KAAK,EAEH4b,EAAW4R,EAAU,GACrB1R,EAAW0R,EAAU,GACrB,MACF,KAAK,EAEH5R,EAAW4R,EAAU,GACrB1R,EAAW0R,EAAU,GACrB,MACF,QAEE5R,EAAW4R,EAAU,GACrB1R,EAAW0R,EAAU,GACrB3W,QAAQkF,KACN,mCAAmCyR,EAAUrvB,gCAKrD,IAAK2d,IAAaF,EAChB,MAAM,IAAI5b,MAAM,uDAGlB,MAAM6tB,EAAiC,QAAnBT,EAAGxR,EAASmM,eAAO,IAAAqF,KACjCU,EAA6B,OAAdpH,EAErB,IAAIqH,EAA6B,GAC7BC,EAA8B,GAC9BC,EAA6B,GAC7BC,EAA8B,GAE9BC,EAAsB,GACtBC,EAAuB,GACvBC,EAAsB,GACtBC,EAAuB,GAEvBC,EAAqB,GACrBC,EAAsB,GACtBC,EAAqB,GACrBC,EAAsB,GAEtBC,EAAyB,GACzBC,EAAyB,GAE7B,IAAK,MAAMC,KAAY9H,EACrB,OAAQ8H,EAASroB,MACf,IAAK,cACH,GAAIsnB,EAAc,CAEhB,GAAID,GACF,GAAuB,UAAnBgB,EAASxH,MACX,IAAK,MAAMprB,KAAS4yB,EAAS5f,OAAQ,CACR,IAAA6f,EAAAC,EAA3B,GAAmB,SAAf9yB,EAAMuK,KACRynB,EAAuC,QAAba,EAAG7yB,EAAMqrB,YAAI,IAAAwH,IAAI,GAC3CZ,EAAwC,QAAba,EAAG9yB,EAAM8qB,YAAI,IAAAgI,IAAI,SAKlD,GAAuB,UAAnBF,EAASxH,MACX,IAAK,MAAMprB,KAAS4yB,EAAS5f,OAAQ,CACR,IAAA+f,EAAAC,EAA3B,GAAmB,SAAfhzB,EAAMuK,KACRunB,EAAuC,QAAbiB,EAAG/yB,EAAMqrB,YAAI,IAAA0H,IAAI,GAC3ChB,EAAwC,QAAbiB,EAAGhzB,EAAM8qB,YAAI,IAAAkI,IAAI,GAMpD,GAAuB,SAAnBJ,EAASxH,MACX,IAAK,MAAMprB,KAAS4yB,EAAS5f,OAAQ,CACR,IAAAigB,EAAAC,EAIAC,EAAAC,EAJ3B,GAAmB,SAAfpzB,EAAMuK,KACR6nB,EAAgC,QAAba,EAAGjzB,EAAMqrB,YAAI,IAAA4H,IAAI,GACpCZ,EAAiC,QAAba,EAAGlzB,EAAM8qB,YAAI,IAAAoI,IAAI,GAEvC,GAAmB,SAAflzB,EAAMuK,KACR2nB,EAAgC,QAAbiB,EAAGnzB,EAAMqrB,YAAI,IAAA8H,IAAI,GACpChB,EAAiC,QAAbiB,EAAGpzB,EAAM8qB,YAAI,IAAAsI,IAAI,QAItC,CAEL,GAAIxB,GACF,GAAuB,SAAnBgB,EAASxH,MACX,IAAK,MAAMprB,KAAS4yB,EAAS5f,OAAQ,CACR,IAAAqgB,EAAAC,EAA3B,GAAmB,SAAftzB,EAAMuK,KACRynB,EAAuC,QAAbqB,EAAGrzB,EAAMqrB,YAAI,IAAAgI,IAAI,GAC3CpB,EAAwC,QAAbqB,EAAGtzB,EAAM8qB,YAAI,IAAAwI,IAAI,SAKlD,GAAuB,SAAnBV,EAASxH,MACX,IAAK,MAAMprB,KAAS4yB,EAAS5f,OAAQ,CACR,IAAAugB,EAAAC,EAA3B,GAAmB,SAAfxzB,EAAMuK,KACRunB,EAAuC,QAAbyB,EAAGvzB,EAAMqrB,YAAI,IAAAkI,IAAI,GAC3CxB,EAAwC,QAAbyB,EAAGxzB,EAAM8qB,YAAI,IAAA0I,IAAI,GAMpD,GAAuB,UAAnBZ,EAASxH,MACX,IAAK,MAAMprB,KAAS4yB,EAAS5f,OAAQ,CACR,IAAAygB,EAAAC,EAIAC,EAAAC,EAJ3B,GAAmB,SAAf5zB,EAAMuK,KACR6nB,EAAgC,QAAbqB,EAAGzzB,EAAMqrB,YAAI,IAAAoI,IAAI,GACpCpB,EAAiC,QAAbqB,EAAG1zB,EAAM8qB,YAAI,IAAA4I,IAAI,GAEvC,GAAmB,SAAf1zB,EAAMuK,KACR2nB,EAAgC,QAAbyB,EAAG3zB,EAAMqrB,YAAI,IAAAsI,IAAI,GACpCxB,EAAiC,QAAbyB,EAAG5zB,EAAM8qB,YAAI,IAAA8I,IAAI,IAK7C,MAEF,IAAK,QACH,GAAI/B,EAAc,CAChB,GAAID,GACF,GAAuB,UAAnBgB,EAASxH,MACX,IAAK,MAAMprB,KAAS4yB,EAAS5f,OAAQ,CACR,IAAA6gB,EAAAC,GAA3B,GAAmB,SAAf9zB,EAAMuK,KACRunB,EAAuC,QAAb+B,EAAG7zB,EAAMqrB,YAAI,IAAAwI,IAAI,GAC3C9B,EAAwC,QAAb+B,GAAG9zB,EAAM8qB,YAAI,IAAAgJ,MAAI,SAKlD,GAAuB,UAAnBlB,EAASxH,MACX,IAAK,MAAMprB,KAAS4yB,EAAS5f,OAAQ,CACP,IAAA+gB,GAAAC,GAA5B,GAAmB,UAAfh0B,EAAMuK,KACRynB,EAAuC,QAAb+B,GAAG/zB,EAAMqrB,YAAI,IAAA0I,MAAI,GAC3C9B,EAAwC,QAAb+B,GAAGh0B,EAAM8qB,YAAI,IAAAkJ,MAAI,GAMpD,GAAuB,SAAnBpB,EAASxH,MACX,IAAK,MAAMprB,KAAS4yB,EAAS5f,OAAQ,CACP,IAAAihB,GAAAC,GAIDC,GAAAC,GAJ3B,GAAmB,UAAfp0B,EAAMuK,KACRioB,EAA+B,QAAbyB,GAAGj0B,EAAMqrB,YAAI,IAAA4I,MAAI,GACnCxB,EAAgC,QAAbyB,GAAGl0B,EAAM8qB,YAAI,IAAAoJ,MAAI,GAEtC,GAAmB,SAAfl0B,EAAMuK,KACR+nB,EAA+B,QAAb6B,GAAGn0B,EAAMqrB,YAAI,IAAA8I,MAAI,GACnC5B,EAAgC,QAAb6B,GAAGp0B,EAAM8qB,YAAI,IAAAsJ,MAAI,QAIrC,CACL,GAAIxC,GACF,GAAuB,SAAnBgB,EAASxH,MACX,IAAK,MAAMprB,KAAS4yB,EAAS5f,OAAQ,CACR,IAAAqhB,GAAAC,GAA3B,GAAmB,SAAft0B,EAAMuK,KACRunB,EAAuC,QAAbuC,GAAGr0B,EAAMqrB,YAAI,IAAAgJ,MAAI,GAC3CtC,EAAwC,QAAbuC,GAAGt0B,EAAM8qB,YAAI,IAAAwJ,MAAI,SAKlD,GAAuB,SAAnB1B,EAASxH,MACX,IAAK,MAAMprB,KAAS4yB,EAAS5f,OAAQ,CACP,IAAAuhB,GAAAC,GAA5B,GAAmB,UAAfx0B,EAAMuK,KACRynB,EAAuC,QAAbuC,GAAGv0B,EAAMqrB,YAAI,IAAAkJ,MAAI,GAC3CtC,EAAwC,QAAbuC,GAAGx0B,EAAM8qB,YAAI,IAAA0J,MAAI,GAMpD,GAAuB,UAAnB5B,EAASxH,MACX,IAAK,MAAMprB,KAAS4yB,EAAS5f,OAAQ,CACP,IAAAyhB,GAAAC,GAIDC,GAAAC,GAJ3B,GAAmB,UAAf50B,EAAMuK,KACRioB,EAA+B,QAAbiC,GAAGz0B,EAAMqrB,YAAI,IAAAoJ,MAAI,GACnChC,EAAgC,QAAbiC,GAAG10B,EAAM8qB,YAAI,IAAA4J,MAAI,GAEtC,GAAmB,SAAf10B,EAAMuK,KACR+nB,EAA+B,QAAbqC,GAAG30B,EAAMqrB,YAAI,IAAAsJ,MAAI,GACnCpC,EAAgC,QAAbqC,GAAG50B,EAAM8qB,YAAI,IAAA8J,MAAI,IAK5C,MAEF,IAAK,YACH,GAAI/C,GACF,GAAuB,SAAnBe,EAASxH,MACX,IAAK,MAAMprB,KAAS4yB,EAAS5f,OAAQ,CACR,IAAA6hB,GAGAC,GAH3B,GAAmB,SAAf90B,EAAMuK,KACRooB,EAAmC,QAAbkC,GAAG70B,EAAM8qB,YAAI,IAAA+J,MAAI,GAEzC,GAAmB,SAAf70B,EAAMuK,KACRmoB,EAAmC,QAAboC,GAAG90B,EAAM8qB,YAAI,IAAAgK,MAAI,SAK7C,GAAuB,UAAnBlC,EAASxH,MACX,IAAK,MAAMprB,KAAS4yB,EAAS5f,OAAQ,CACR,IAAA+hB,GAGAC,GAH3B,GAAmB,SAAfh1B,EAAMuK,KACRooB,EAAmC,QAAboC,GAAG/0B,EAAM8qB,YAAI,IAAAiK,MAAI,GAEzC,GAAmB,SAAf/0B,EAAMuK,KACRmoB,EAAmC,QAAbsC,GAAGh1B,EAAM8qB,YAAI,IAAAkK,MAAI,IAuCrD,MAAO,CACLvyB,GAAI,WAAW6rB,EACf/jB,KAAM,UACNpC,KAV4B,CAC5B8sB,aAvB4B,CAC5BC,iBAAuC,QAAvB9D,EAAEvR,EAASsL,oBAAY,IAAAiG,IAAI,GAC3C+D,qBAAsBrD,EACtBsD,sBAAuBrD,EACvBsD,oBAAqBnD,EACrBoD,qBAAsBnD,EACtBoD,qBAAsBjD,EACtBkD,sBAAuBjD,EACvBkD,mBAAoB/C,GAgBpBgD,aAb4B,CAC5BR,iBAAuC,QAAvB7D,EAAE1R,EAASwL,oBAAY,IAAAkG,IAAI,GAC3C8D,qBAAsBnD,EACtBoD,sBAAuBnD,EACvBoD,oBAAqBjD,EACrBkD,qBAAsBjD,EACtBkD,qBAAsB/C,EACtBgD,sBAAuB/C,EACvBgD,mBAAoB9C,GAMpBlI,YACAF,MAAOA,GAOPoL,SAAU,CACRC,KAAMjW,EACNkW,KAAMhW,IAKJoQ,oBACN9nB,GAGA,IADuB+lB,EAA2B/lB,KAC1BA,EAAK8P,QAAU9P,EAAK4jB,WAC1C,OAAO,KAST,MAAO,CACL5jB,KAAM,CACJ8iB,KARgC,CAClCiB,KAAM/jB,EAAK4jB,WAAWG,KAAK9nB,OAAQ0xB,GAAqB,UAAbA,EAAIvrB,MAC/CijB,QAASrlB,EAAK4jB,WAAWyB,QAAQppB,OAAQ0xB,GAAqB,UAAbA,EAAIvrB,MACrD0hB,SAAU9jB,EAAK4jB,WAAWE,SAAS7nB,OAAQ0xB,GAAqB,UAAbA,EAAIvrB,OAMrDyhB,WAAY7jB,EAAK4jB,WAAWC,YAE9BvpB,GAAI,YAAY0F,EAAK8P,MAAMxV,GAC3B8H,KAAM,YAIF4lB,gBACN9Q,GAC0B,IAAA0W,EAC1B,MACM7F,EADiBhC,EAA2B7O,GAEhC,QADa0W,EAC3B1W,EAASpH,aAAK,IAAA8d,OAAA,EAAdA,EAAgBrL,SAChBrL,EAASqL,SAEb,IAAKwF,IAAa3pB,MAAMC,QAAQ0pB,GAC9B,OAAO,KAIT,OADgBA,EAAS8F,MAAOC,GAAYh1B,QAAQg1B,GAAWA,EAAQxzB,KAKhEytB,EACJ9rB,OAAQ6xB,GAAYA,EAAQtL,YAAcsL,EAAQtL,WAAWzoB,OAAS,GACtEqG,IACE0tB,IAcQ,CACL9tB,KAdsB,CACtBwW,MAAOsX,EAAQtL,WAAWpiB,IAAK/F,IAAI,CACjCC,GAAID,EAAKC,GACTqqB,cAAemJ,EAAQjL,KACvB+B,WAAYvqB,EAAKwoB,KACjBF,KAAMtoB,EAAKsoB,KAAKoL,SAAW,GAC3BtL,KAAMpoB,EAAKooB,KACXC,SAAUroB,EAAKqoB,SACf5H,OAAQzgB,EAAKygB,OACb1Y,KAAM/H,EAAK+H,SAMbA,KAAM,WACN9H,GAAI,YAAYwzB,EAAQxzB,MAvBvB,KAgCH4sB,mBAAmB9Q,GACzB3D,QAAQ2D,MAAM,iBAAkBA,GAE3B9f,KAAK+wB,0BAA0BxvB,QAElCvB,KAAKqgB,WAAW9e,MAAQ,iBACxBvB,KAAK+xB,UAAUxwB,MAAQ,IAU3B8uB,cACMrwB,KAAKswB,cACPtwB,KAAKswB,YAAY1F,OACjB5qB,KAAKswB,YAAc,MAOvB,qBACEtwB,KAAK03B,cAAcn2B,OAAQ,EAE3B,IAEE,GAAIvB,KAAKgwB,YAGP,OAFAhwB,KAAK+xB,UAAUxwB,MAAQ,cACjBvB,KAAK23B,sBAKiB33B,KAAK0gB,SAAS8P,4BAGpCxwB,KAAK43B,8BAEL53B,KAAK63B,2BAGb73B,KAAK03B,cAAcn2B,OAAQ,EAC3B,MAAOue,GACP3D,QAAQ2D,MAAM,2BAA4BA,GAErC9f,KAAK+wB,0BAA0BxvB,QAClCvB,KAAKqgB,WAAW9e,MAAQ,iBACxBvB,KAAK+xB,UAAUxwB,MAAQ,IAGzBvB,KAAK03B,cAAcn2B,OAAQ,GAO/B,8BACE,IACE,MAAMmqB,QAAa1rB,KAAK0gB,SAAS+P,cAC3B3G,QAAY9pB,KAAK0gB,SAASgQ,eAEhC,IAAKhF,IAAS5B,EACZ,MAAM,IAAIxkB,MAAM,6CAGlB,MAAMsb,QAAiB5gB,KAAK8vB,YAAYgI,oBACtC93B,KAAK6vB,QACLnE,EACA5B,GAIF9pB,KAAK2wB,kBAAkB/P,GACvB,MAAOd,GACP3D,QAAQ2D,MAAM,oCAAqCA,SAE7C9f,KAAK63B,4BAOf,iCACE,MAAMjX,QAAiB5gB,KAAK8vB,YAAYiI,uBACtC/3B,KAAK6vB,SAIP7vB,KAAK2wB,kBAAkB/P,GAMzB,sBACE5gB,KAAKixB,gBAAgBpE,GACrB7sB,KAAK+wB,0BAA0BxvB,OAAQ,EACvCvB,KAAKqgB,WAAW9e,MAAQ,OACxBvB,KAAK03B,cAAcn2B,OAAQ,EAG7By2B,gBAAyBC,EAAsBC,GAC7C,OAAQD,GACN,IAAK,qBACHj4B,KAAKqgB,WAAW9e,MAAQ,iBACxB,MACF,IAAK,eACHvB,KAAKqwB,cACLrwB,KAAKgwB,aAAc,EACnBhwB,KAAK8wB,6BAA+B,KACpC9wB,KAAKgxB,gCAAkC,KACvChxB,KAAKqgB,WAAW9e,MAAQ,OACxBvB,KAAKiwB,eACL,MACF,IAAK,eACHjwB,KAAKgwB,aAAc,EACnBhwB,KAAK8wB,6BAA+B,KACpC9wB,KAAKgxB,gCAAkC,KACvChxB,KAAK+wB,0BAA0BxvB,OAAQ,EACvCvB,KAAKqgB,WAAW9e,MAAQ,OACxBvB,KAAKiwB,eACLjwB,KAAKkwB,iBACL,MACF,QACE,MAAM,IAAI5qB,MAAM,yBAAyB2yB,IAI/CE,sBACEn4B,KAAKqgB,WAAW9e,MAAQ,OACxBiJ,YAAS,sBACTsJ,WAAWoR,gBACHllB,KAAKiwB,gBACV,O,6bC95BA,MAAMmI,UAA8B5Y,EASzC1W,YAAY+mB,EAAkB,GAAInP,GAChCkH,QAAQ9c,EAAA,gBATS,IAAIF,IAAW,KAAGE,EAAA,cACpB,IAAIF,IAAW,KAAGE,EAAA,eACjB,IAAIF,KAAoB,IAAME,EAAA,uBACtB,IAAIF,KAAW,IAAME,EAAA,wBAAAA,EAAA,yBAE3B,IAAIiV,GAAmBjV,EAAA,6BAKzC9K,KAAKq4B,SAAS92B,MAAQsuB,EACtB7vB,KAAK0gB,SAAWA,EAChB1gB,KAAKs4B,cAAgB,IAAI1I,EAAcC,EAASnP,GAChDjW,cAGF8tB,SACEv4B,KAAKs4B,cAAclI,UACnB/lB,cAGFmuB,mBAAmB9uB,GACjB,OAAO1J,KAAKy4B,kBAAkBC,YAAYhvB,GAG5CivB,uBAOE,OANAnuB,YAAS,IACTD,cACAuJ,WAAW,KACTtJ,YAAS,uBACR,GAEIqa,QAAQC,UAGjB8T,oBAAoBx0B,GAClBpE,KAAKy4B,kBAAkBI,oBAAoBt3B,MAAQ6C,EACnDpE,KAAKy4B,kBAAkBK,4BAA4Bv3B,MAAQ,EAC3DvB,KAAKy4B,kBAAkBxY,0BAA0B1e,MAAQ6C,EACzDpE,KAAKy4B,kBAAkBhV,uBAAuBrf,GAGhD20B,mBAAmB30B,GACjBpE,KAAKy4B,kBAAkBI,oBAAoBt3B,MAAQ6C,EACnDpE,KAAKy4B,kBAAkBxY,0BAA0B1e,MAAQ,KACzDvB,KAAKy4B,kBAAkBK,4BAA4Bv3B,MAAQ,KAG7Dy3B,kBAAkB50B,GAChBpE,KAAKy4B,kBAAkBpV,yBAAyBjf,GAGlD60B,gCAAgC70B,EAAe80B,GAC7Cl5B,KAAKy4B,kBAAkBK,4BAA4Bv3B,MAAQ23B,EAC3Dl5B,KAAKy4B,kBAAkBhV,uBAAuBrf,GAGhD+0B,eAGE,OAFAn5B,KAAKo5B,gBAAiB,EAEfvU,QAAQC,UAGjB,qBACE9kB,KAAKo5B,gBAAiB,EACtB9uB,cAKF+uB,iBACE,MAAM,IAAI/zB,MAAM,2BAElBg0B,iBACE,MAAM,IAAIh0B,MAAM,2BAGlBi0B,qCACEv5B,KAAKy4B,kBAAkBpY,WAAW9e,MAAQ,mBAG5Ci4B,oBACE,OAAOx5B,KAAK6vB,QAAQtuB,MAGtBk4B,+BACE,OAAOz5B,KAAKy4B,kBAAkBxY,0BAA0B1e,MAG1Dm4B,yBACE,OAAO15B,KAAKy4B,kBAAkBI,oBAAoBt3B,MAGpDo4B,iCACE,OAAO35B,KAAKy4B,kBAAkBK,4BAA4Bv3B,MAG5Dq4B,mBACE,OAAO55B,KAAKy4B,kBAAkBnY,SAAS7c,OAGzC,cACE,OAAOzD,KAAKq4B,SAGd,YACE,OAAOr4B,KAAK65B,OAGd,aACE,OAAO75B,KAAK85B,QAGd,qBACE,OAAO95B,KAAK+5B,gBAAgBx4B,MAG9B,mBAAmBA,GACjBvB,KAAK+5B,gBAAgBx4B,MAAQA,EAG/By2B,gBACEC,EACA+B,EACAC,GAEA,OAAQD,GACN,IAAK,OACHh6B,KAAKs4B,cAAcN,gBAAgBC,EAASgC,GAC5C,MACF,QACE,MAAM,IAAI30B,MAAM,2BAA2B00B,K,gdCtI5C,MAAME,UAAyB1a,EAUpC1W,YAAYqxB,GACVvS,QAAQ9c,EAAA,kBAVW,IAAIF,KAAoB,IAAME,EAAA,uBACzB,IAAIF,IAAwC,OAAKE,EAAA,oBACpD,IAAIF,KAAoB,IAAKE,EAAA,qBAC5B,IAAIF,IAAmC,KAAGE,EAAA,uBACxC,IAAIF,KAAoB,IAAME,EAAA,0BAEJ,MAAIA,EAAA,gCAKtD9K,KAAKm6B,iBAAmBA,EAG1B,gBACE,OAAOn6B,KAAKo6B,WAGd,qBACE,OAAOp6B,KAAKq6B,gBAGd,kBACE,OAAOr6B,KAAKs6B,aAGd,mBACE,OAAOt6B,KAAKu6B,cAGd,mBAA2B,IAAAC,EAAAC,EACzB,MAAMC,EAAU16B,KAAKq6B,gBAAgB94B,MACrC,IAAKm5B,EAAS,MAAO,GAErB,OAAQA,EAAQ5uB,MACd,KAAKT,IAAYC,WACf,MAAO,oBACT,KAAKD,IAAYE,mBACf,OAA6B,QAA7BivB,EAAsB,QAAtBC,EAAOC,EAAQC,eAAO,IAAAF,OAAA,EAAfA,EAAiB1X,aAAK,IAAAyX,IAAI,iBACnC,QACE,MAAO,IAIb,sBAA8B,IAAAI,EAAAC,EAAAC,EAAAC,EAC5B,MAAML,EAAU16B,KAAKq6B,gBAAgB94B,MACrC,IAAKm5B,EAAS,MAAO,GAErB,OAAQA,EAAQ5uB,MACd,KAAKT,IAAYC,WACf,OACsC,QADtCsvB,EACoB,QADpBC,EACEH,EAAQM,kBAAU,IAAAH,OAAA,EAAlBA,EAAoBI,wBAAgB,IAAAL,IACpC,sCAEJ,KAAKvvB,IAAYE,mBACf,OAAgC,QAAhCuvB,EAAsB,QAAtBC,EAAOL,EAAQC,eAAO,IAAAI,OAAA,EAAfA,EAAiBG,gBAAQ,IAAAJ,IAAI,sBACtC,QACE,MAAO,IAIbK,YAAYC,GAEV,GAAIp7B,KAAKo6B,WAAW74B,MAApB,CACE,MAAM85B,EAAer7B,KAAKu6B,cAAch5B,MACxCvB,KAAKu6B,cAAch5B,MAAQ,IAAI85B,EAAcD,QAK/Cp7B,KAAKq6B,gBAAgB94B,MAAQ65B,EAC7Bp7B,KAAKo6B,WAAW74B,OAAQ,EACxBvB,KAAKs7B,gBAAgB/5B,OAAQ,EAC7BvB,KAAKs6B,aAAa/4B,OAAQ,EAG1BvB,KAAKu7B,mBAGPC,cAEMx7B,KAAKy7B,qBACP7nB,aAAa5T,KAAKy7B,oBAClBz7B,KAAKy7B,mBAAqB,MAI5B,MAAMC,EAAQ17B,KAAKu6B,cAAch5B,MACjC,GAAIm6B,EAAMj4B,OAAS,EAAG,CAEpB,MAAMk4B,EAAcD,EAAM,GACpBE,EAAiBF,EAAM7yB,MAAM,GAEnC7I,KAAKu6B,cAAch5B,MAAQq6B,EAC3B57B,KAAKq6B,gBAAgB94B,MAAQo6B,EAC7B37B,KAAKs7B,gBAAgB/5B,OAAQ,EAC7BvB,KAAKs6B,aAAa/4B,OAAQ,EAI1BvB,KAAKu7B,wBAGLv7B,KAAKo6B,WAAW74B,OAAQ,EACxBvB,KAAKq6B,gBAAgB94B,MAAQ,KAIjCs6B,qBACE,MAAMnB,EAAU16B,KAAKq6B,gBAAgB94B,MACrC,GAAKm5B,EAAL,CAMA,OAHA16B,KAAK87B,sBAGGpB,EAAQ5uB,MACd,KAAKT,IAAYC,WACftL,KAAKs6B,aAAa/4B,OAAQ,EAE1B,MAEF,KAAK8J,IAAYE,oBAMnBvL,KAAKw7B,eAGPO,qBACE,GAAI/7B,KAAKs7B,gBAAgB/5B,MAAO,OAEhC,MAAMm5B,EAAU16B,KAAKq6B,gBAAgB94B,MACrC,IAAKm5B,EAAS,OAEd16B,KAAKs7B,gBAAgB/5B,OAAQ,EAE7B,MAAMiY,EAAgC,CACpCwiB,UAAW,gBACXh3B,WAAY,CACVi3B,SAAU,WACVC,WAAY,GACZC,aAAcn8B,KAAKo8B,aACnBC,WAAYr8B,KAAKs8B,cAAc5B,GAC/B6B,YAAY,EACZC,YAAa9B,EAAQ5uB,OAIzB9L,KAAKm6B,iBAAiBsC,MAAMjjB,GAG9BsiB,sBACE,MAAMpB,EAAU16B,KAAKq6B,gBAAgB94B,MACrC,IAAKm5B,EAAS,OAEd,MAAMlhB,EAAgC,CACpCwiB,UAAW,iBACXh3B,WAAY,CACVi3B,SAAU,WACVC,WAAY,GACZC,aAAcn8B,KAAKo8B,aACnBC,WAAYr8B,KAAKs8B,cAAc5B,GAC/B6B,YAAY,EACZC,YAAa9B,EAAQ5uB,OAIzB9L,KAAKm6B,iBAAiBsC,MAAMjjB,GAG9BkjB,oBAAoBC,GAElB38B,KAAK+7B,qBAGPa,oBAAoBD,GAElB38B,KAAK87B,sBAGP1L,UACMpwB,KAAKy7B,qBACP7nB,aAAa5T,KAAKy7B,oBAClBz7B,KAAKy7B,mBAAqB,MAItBF,mBACFv7B,KAAKy7B,oBACP7nB,aAAa5T,KAAKy7B,oBAGpBz7B,KAAKy7B,mBAAqB3nB,WAAW,KAC/B9T,KAAKs6B,aAAa/4B,OACpBvB,KAAKw7B,eA5MgB,OAiNnBc,cAAc5B,GAAuC,IAAAmC,EAAAC,EAAAC,EAAAC,EAC3D,OAAQtC,EAAQ5uB,MACd,KAAKT,IAAYC,WACf,OAAmC,QAAnCuxB,EAAyB,QAAzBC,EAAOpC,EAAQM,kBAAU,IAAA8B,OAAA,EAAlBA,EAAoBG,gBAAQ,IAAAJ,IAAI,GACzC,KAAKxxB,IAAYE,mBACf,OAAiC,QAAjCwxB,EAAsB,QAAtBC,EAAOtC,EAAQC,eAAO,IAAAqC,OAAA,EAAfA,EAAiBE,iBAAS,IAAAH,IAAI,GACvC,QACE,MAAO,K,6bCvNR,MAAMI,EAMXr0B,YAAYs0B,GAAuCtyB,EAAA,8BAAAA,EAAA,qCAAAA,EAAA,iCAAAA,EAAA,gCACjD9K,KAAKo9B,eAAiBA,EACtBp9B,KAAKq9B,sBAAwB,IAAIC,IACjCt9B,KAAKy4B,kBAAoB,IAAI1Y,EAE7B,MAAMoa,EAAmB,CACvBsC,MAAQjjB,IAEN2C,QAAQjC,IAAI,qBAAsBV,KAKtCxZ,KAAKu9B,iBAAmB,IAAIrD,EAAiBC,GAM/C,yBACEtK,EACAnP,GAEA,IACE,MAAM0c,EAAiB,IAAIhF,EAAsBvI,EAASnP,GAE1D,OAAO,IAAIyc,EAAkBC,GAC7B,MAAOtd,GAEP,OADA3D,QAAQ2D,MAAM,2CAA4CA,GACnD,O,qCC6BE0d,MAvEUC,IAAMC,YAAY,CAAAjR,YAAA,mBACzCkR,UAAW,CACTC,WAAYH,IAAMI,UAAU77B,QAG9B87B,gBAAeA,KACN,CACLC,WAAW,EACXC,eAAgB,OAIpBC,oBAAoB,IAAAC,EAClB,GAA0B,QAAtBA,EAACl+B,KAAK0O,MAAMkvB,kBAAU,IAAAM,IAArBA,EAAuBX,iBAAkB,OAE9C,MAAMY,EAAYn+B,KAAK0O,MAAMkvB,WAAWL,iBAGxCv9B,KAAKo+B,mBAAqBD,EAAUJ,UAAU7yB,UAC3CmzB,IACCr+B,KAAKs+B,SAAS,CAAEP,UAAWM,MAK/Br+B,KAAKu+B,mBAAqBJ,EAAUH,eAAe9yB,UAChDwvB,IACC16B,KAAKs+B,SAAS,CAAEN,eAAgBtD,OAKtC8D,uBACMx+B,KAAKo+B,oBAAoBp+B,KAAKo+B,qBAC9Bp+B,KAAKu+B,oBAAoBv+B,KAAKu+B,sBAGpCE,SACE,IAAKz+B,KAAK2sB,MAAMoR,YAAc/9B,KAAK2sB,MAAMqR,eACvC,OAAO,KAGT,MAAMtD,EAAU16B,KAAK2sB,MAAMqR,eACrBU,EAAU7+B,EAAQ,IAAwB8+B,QAEhD,OAAOlB,IAAM14B,cAAc25B,EAAS,CAClC78B,IAAK,WAAW64B,EAAQ5uB,QAAQ4H,KAAKD,QACrCzP,GAAI,2BACJw4B,YAAa9B,EAAQ5uB,KACrBuD,SAAUqrB,EAAQrrB,SAClB2rB,WAAYN,EAAQM,WACpBL,QAASD,EAAQC,QACjBiE,gBAAkBpC,IAAwB,IAAAqC,EACf,QAAzBA,EAAI7+B,KAAK0O,MAAMkvB,kBAAU,IAAAiB,GAArBA,EAAuBtB,kBACzBv9B,KAAK0O,MAAMkvB,WAAWL,iBAAiBb,oBACrCF,IAINsC,gBAAkBtC,IAAwB,IAAAuC,EACf,QAAzBA,EAAI/+B,KAAK0O,MAAMkvB,kBAAU,IAAAmB,GAArBA,EAAuBxB,mBACzBv9B,KAAK0O,MAAMkvB,WAAWL,iBAAiBX,oBACrCJ,GAEFx8B,KAAK0O,MAAMkvB,WAAWL,iBAAiB/B,qB,6bC6BlCwD,MAnFf,MAAyCl2B,cAAAgC,EAAA,oBACO,IAAIgb,KAAKhb,EAAA,kBACT,MAO9C,oBACE+kB,EACAnP,GAEA,IACE,OAAKA,GAIL1gB,KAAK49B,iBAAmBT,EAAkB8B,YAAYpP,EAASnP,GACxD1gB,KAAK49B,aAJVzhB,QAAQ2D,MAAM,8BACP,MAIT,MAAOA,GAEP,OADA3D,QAAQ2D,MAAM,2CAA4CA,GACnD,MASX,kBAAkB9b,GAChB,MAAMk7B,QAAiBl/B,KAAKm/B,YAAYn7B,GAExC,IAAKhE,KAAK49B,WACR,MAAM,IAAIt4B,MAAM,mDAGlB,MAAM85B,EAAMv/B,EAAQ,IAA0B8+B,QACxCU,EAAex/B,EAAQ,IAAmC8+B,QAShE,OAPAO,EAAST,OACPhB,IAAA14B,cAACq6B,EAAG,KACF3B,IAAA14B,cAACs6B,EAAY,MACZ5B,IAAM14B,cAAcy4B,EAAyB,CAAEI,WAAY59B,KAAK49B,eAI9D,KACLsB,EAASI,UACTt/B,KAAKu/B,aAAa3Y,OAAO5iB,IAS7B,kBAA0BA,GACxB,GAAIhE,KAAKu/B,aAAalV,IAAIrmB,GACxB,OAAOhE,KAAKu/B,aAAap+B,IAAI6C,GAG/B,MAAMw7B,EAAK98B,SAAS+8B,eAAez7B,GACnC,IAAKw7B,EACH,MAAM,IAAIl6B,MAAM,mBAAmBtB,eAGrC,MAAMk7B,EAAqB,CACzBT,OAASjiB,IACPkjB,IAASjB,OAAOjiB,EAAiBgjB,IAEnCF,QAASA,KACPI,IAASC,uBAAuBH,KAKpC,OADAx/B,KAAKu/B,aAAanY,IAAIpjB,EAAIk7B,GACnBA,I,qcCjEX,MAAMU,EAAqB,CAAC,4BAQ5B,MAAMC,EAUI/2B,YAAYo2B,GAAqBp0B,EAAA,wBAAAA,EAAA,sBAAAA,EAAA,sBAAAA,EAAA,0BAAAA,EAAA,8BAAAA,EAAA,6BAAAA,EAAA,6BAFqB,MAG5D9K,KAAKk/B,SAAWA,EAOlB,qBACE,IAAKW,EAAc5W,SAAU,CAC3B,MAAMiW,EAAW,IAAIF,EACrBa,EAAc5W,SAAW,IAAI4W,EAAcX,GAE7C,OAAOW,EAAc5W,SAGvB,gCACEuC,EACA9K,GAEA,IAAK1gB,KAAK8/B,mBACR,MAAM,IAAIx6B,MAAM,2BAIlB,OADAtF,KAAK+/B,sBAAwB,IAAI3H,EAAsB5M,EAAS9K,GACzD1gB,KAAK+/B,sBAGdC,yBAAyB9H,GACnBl4B,KAAK+/B,wBACP//B,KAAK+/B,sBAAsBxH,SAC3Bv4B,KAAK+/B,sBAAwB,MAIjCE,UAAUC,GACJA,EAAaC,QACfngC,KAAKogC,UAAUF,EAAaC,QAG1BD,EAAaG,YACfrgC,KAAKsgC,cAAcJ,EAAaG,YAG9BH,EAAaK,gBACfvgC,KAAKwgC,kBAAkBN,EAAaK,gBAGlCL,EAAaO,eACfzgC,KAAK0gC,iBAAiBR,EAAaO,eAGrCtkB,QAAQwkB,KAAK,2BAA4BT,GAM3C,yBACE,MAAMC,EAASngC,KAAK4gC,YACpB,OAAOp+B,QAAQ29B,GAAUP,EAAmBprB,SAAS2rB,IAOhDC,UAAUD,GACfngC,KAAKmgC,OAASA,EAGTS,YACL,OAAO5gC,KAAKmgC,OAOPU,UAAUC,GACf9gC,KAAK8gC,OAASA,EAGTC,YACL,OAAO/gC,KAAK8gC,OAOPrgB,2BACL,IAAKzgB,KAAK+/B,sBACR,MAAM,IAAIz6B,MAAM,mCAGlB,OAAOtF,KAAK+/B,sBAOPiB,uBACL,OAAOhhC,KAAKk/B,SAAStB,WAGvB,kBAAkB55B,GAChB,IAAKhE,KAAKk/B,SAAStB,WAAY,CAC7B,IAAK59B,KAAK+/B,sBACR,MAAM,IAAIz6B,MAAM,oCAElB,IAAIuqB,EAAU,mBACV7rB,IACF6rB,EAAU7rB,SAENhE,KAAKk/B,SAAS+B,cAClBpR,EACA7vB,KAAK+/B,sBAAsBrf,UAG/B,OAAO1gB,KAAKk/B,SAASgC,YAAYl9B,GAG5Bs8B,cAAcxW,GACnB9pB,KAAKqgC,WAAavW,EAGb4W,iBAAiBhV,GACtB1rB,KAAKygC,cAAgB/U,EAGhB8U,kBAAkB1W,GACvB9pB,KAAKugC,eAAiBzW,EAGxB,uBAAuB4B,EAAcrG,GACnCrlB,KAAK0gC,iBAAiBhV,GACtB1rB,KAAKwgC,kBAAkBnb,GAEnBrlB,KAAKygB,2BAA2B6X,cAAcnI,aAEhDnwB,KAAKygB,2BAA2B6X,cAAcpI,iBAIlD,2BACElwB,KAAK0gC,sBAAiBnxB,GACtBvP,KAAKwgC,uBAAkBjxB,GAEnBvP,KAAKygB,2BAA2B6X,cAAcnI,aAEhDnwB,KAAKygB,2BAA2B6X,cAAcpI,iBAIlDiR,uBACE,OAAOnhC,KAAKqgC,WAGde,oBACE,OAAOphC,KAAKugC,eAGdc,mBACE,OAAOrhC,KAAK8gC,OAGdQ,mBACE,OAAOthC,KAAKygC,eAnLG31B,EAAb+0B,EAAa,mBAuLnB,MAAMrf,GAAMqf,EAAcvU,cACX9K,qB,6BCxNf,IAAI+gB,EAAQ,EAAQ,GAYpB,SAASC,EAAW5c,EAASH,EAAMgd,EAAQlY,EAAS3I,GAClDtb,MAAM7E,KAAKT,MACXA,KAAK4kB,QAAUA,EACf5kB,KAAKa,KAAO,aACZ4jB,IAASzkB,KAAKykB,KAAOA,GACrBgd,IAAWzhC,KAAKyhC,OAASA,GACzBlY,IAAYvpB,KAAKupB,QAAUA,GAC3B3I,IAAa5gB,KAAK4gB,SAAWA,GAG/B2gB,EAAM/yB,SAASgzB,EAAYl8B,MAAO,CAChCo8B,OAAQ,WACN,MAAO,CAEL9c,QAAS5kB,KAAK4kB,QACd/jB,KAAMb,KAAKa,KAEX6hB,YAAa1iB,KAAK0iB,YAClBif,OAAQ3hC,KAAK2hC,OAEbC,SAAU5hC,KAAK4hC,SACfC,WAAY7hC,KAAK6hC,WACjBC,aAAc9hC,KAAK8hC,aACnBC,MAAO/hC,KAAK+hC,MAEZN,OAAQzhC,KAAKyhC,OACbhd,KAAMzkB,KAAKykB,KACXD,OAAQxkB,KAAK4gB,UAAY5gB,KAAK4gB,SAAS4D,OAASxkB,KAAK4gB,SAAS4D,OAAS,SAK7E,IAAItiB,EAAYs/B,EAAWt/B,UACvByM,EAAc,GAElB,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,gBAEAxJ,SAAQ,SAASsf,GACjB9V,EAAY8V,GAAQ,CAACljB,MAAOkjB,MAG9BzjB,OAAOghC,iBAAiBR,EAAY7yB,GACpC3N,OAAOC,eAAeiB,EAAW,eAAgB,CAACX,OAAO,IAGzDigC,EAAWz4B,KAAO,SAAS+W,EAAO2E,EAAMgd,EAAQlY,EAAS3I,EAAUqhB,GACjE,IAAI1d,EAAavjB,OAAOY,OAAOM,GAY/B,OAVAq/B,EAAM1yB,aAAaiR,EAAOyE,GAAY,SAAgBlgB,GACpD,OAAOA,IAAQiB,MAAMpD,aAGvBs/B,EAAW/gC,KAAK8jB,EAAYzE,EAAM8E,QAASH,EAAMgd,EAAQlY,EAAS3I,GAElE2D,EAAW1jB,KAAOif,EAAMjf,KAExBohC,GAAejhC,OAAO4N,OAAO2V,EAAY0d,GAElC1d,GAGT3kB,EAAOD,QAAU6hC,G,cCrFjB5hC,EAAOD,QAAUO,G,6BCEjB,IAAIshC,EAAa,EAAQ,IASzB,SAASU,EAActd,GAErB4c,EAAW/gC,KAAKT,KAAiB,MAAX4kB,EAAkB,WAAaA,EAAS4c,EAAWW,cACzEniC,KAAKa,KAAO,gBAXF,EAAQ,GAcd2N,SAAS0zB,EAAeV,EAAY,CACxCY,YAAY,IAGdxiC,EAAOD,QAAUuiC,G,4gBCLjB,MAAMG,UAAa5E,IAAM6E,UAA0Cx5B,eAAA0K,GAAA,SAAAA,GAAA1I,EAAA,oBACvB,MAE1CmzB,oBACE,MAAM1sB,EAAS7O,SAAS+8B,eAAez/B,KAAK0O,MAAM1K,IAClD,IAAKuN,EAEH,MADA4K,QAAQ2D,MAAM,oCAAqC9f,KAAK0O,MAAM1K,IACxD,IAAIsB,MAAM,oBAGlB,IACEtF,KAAKuiC,aAAe,IAAIC,OAAW,CACjCC,IAAKziC,KAAK0O,MAAM+zB,IAChBlxB,SACAmxB,SAAU1iC,KAAK0O,MAAMi0B,SACrBC,cAAe,eACfC,OAAQA,KACN7iC,KAAK0O,MAAMo0B,mBAAmB9iC,KAAKuiC,eAErCQ,YAAcjjB,IACZ3D,QAAQ2D,MAAM,yBAA0BA,MAG5C,MAAOA,GACP3D,QAAQ2D,MAAM,6BAA8BA,GAG9ChM,WAAW,KACL9T,KAAK0O,MAAMsD,UAAYhS,KAAK0O,MAAMs0B,WACpCx4B,YAASxK,KAAK0O,MAAMsD,WAErB,GAGLwsB,uBACMx+B,KAAKuiC,cACPviC,KAAKuiC,aAAanS,UAItBqO,SACE,OACEhB,IAAA14B,cAAA,UACED,MAAO9E,KAAK0O,MAAM5J,MAClBd,GAAIhE,KAAK0O,MAAM1K,GACfi/B,eAAcjjC,KAAK0O,MAAMw0B,WAMlBC,oBAA2Bd,G,6bCpC1C,MAAM3D,UAAgBjB,IAAM6E,UAG1Bx5B,YAAY4F,GACVkZ,MAAMlZ,GAAO5D,EAAA,0BAHqC,MAAIA,EAAA,2BAgB1B,KAC5B,MAAM,YAAE0xB,EAAW,gBAAEsC,GAAoB9+B,KAAK0O,MAI9C,OAFA1O,KAAKs+B,SAAS,CAAE8E,aAAa,IAErB5G,GACN,KAAKnxB,IAAYC,WAEjB,KAAKD,IAAYE,oBAKfuzB,GACFA,EAAgBtC,KAEnB1xB,EAAA,0BA4B4B,KACvB9K,KAAK2sB,MAAM0W,iBAEfrjC,KAAKs+B,SAAS,CAAE+E,gBAAgB,IAE5BrjC,KAAK0O,MAAMkwB,iBACb5+B,KAAK0O,MAAMkwB,gBAAgB5+B,KAAK0O,MAAM8tB,gBAEzC1xB,EAAA,0BAEqBy3B,IACpB,GAAKA,EAAL,CAGAA,EAAae,+BAGb,IACEf,EAAagB,sBACX,QACAvjC,KAAKo8B,aACL,oBAEFmG,EAAagB,sBACX,WACAvjC,KAAKwjC,gBACL,oBAEF,MAAO1jB,GACP3D,QAAQ2D,MAAM,6BAA8BA,GAI9C,IACE,MAAM2jB,EAASlB,EAAamB,mBAAmB,gBACzCC,EAAmBF,EAAOpqB,KAC7BuqB,GAAyB,gBAAfA,EAAM/iC,MAEf8iC,EACFA,EAAiBE,OACRJ,EAAOhgC,OAAS,GACzBggC,EAAO,GAAGI,OAEZ,MAAO/jB,GACP3D,QAAQ2D,MAAM,mCAAoCA,GAGpD9f,KAAK+7B,qBAEL/7B,KAAKy7B,mBAAqB3nB,WAAW,KAC/B9T,KAAK2sB,MAAMyW,aACbpjC,KAAK48B,uBAlHgB,UAOzB58B,KAAK2sB,MAAQ,CACXyW,aAAa,EACbC,gBAAgB,GAIpB7E,uBACMx+B,KAAKy7B,oBACP7nB,aAAa5T,KAAKy7B,oBAsBtB,mBAA2B,IAAAqI,EACzB,MAAM,YAAEtH,EAAW,QAAE7B,GAAY36B,KAAK0O,MACtC,OAAQ8tB,GACN,KAAKnxB,IAAYC,WACf,MAAO,oBACT,KAAKD,IAAYE,mBACf,OAAqB,QAArBu4B,EAAOnJ,aAAO,EAAPA,EAAS5X,aAAK,IAAA+gB,IAAI,iBAC3B,QACE,MAAO,IAIb,sBAA8B,IAAAC,EAAAC,EAC5B,MAAM,YAAExH,EAAW,WAAExB,EAAU,QAAEL,GAAY36B,KAAK0O,MAClD,OAAQ8tB,GACN,KAAKnxB,IAAYC,WACf,OAC8B,QAD9By4B,EACE/I,aAAU,EAAVA,EAAYC,wBAAgB,IAAA8I,IAAI,sCAEpC,KAAK14B,IAAYE,mBACf,OAAwB,QAAxBy4B,EAAOrJ,aAAO,EAAPA,EAASO,gBAAQ,IAAA8I,IAAI,sBAC9B,QACE,MAAO,IA4DbvF,SAAS,IAAAwF,EAAAC,EAAAC,EAAAC,EACP,MAAMt/B,EAAQ,CACZuK,SAAU,QACViC,OAAQ,OACRpB,UACgCX,KAAX,QAAnB00B,EAAAjkC,KAAK0O,MAAMW,gBAAQ,IAAA40B,OAAA,EAAnBA,EAAqB/zB,MACdlQ,KAAK0O,MAAMW,SAASa,KAAvB,UACAX,EACN80B,WACiC90B,KAAZ,QAAnB20B,EAAAlkC,KAAK0O,MAAMW,gBAAQ,IAAA60B,OAAA,EAAnBA,EAAqBG,OACdrkC,KAAK0O,MAAMW,SAASg1B,MAAvB,UACA90B,EACNa,SAC+Bb,KAAV,QAAnB40B,EAAAnkC,KAAK0O,MAAMW,gBAAQ,IAAA80B,OAAA,EAAnBA,EAAqB/zB,KACdpQ,KAAK0O,MAAMW,SAASe,IAAvB,UACAb,EACN+0B,YACkC/0B,KAAb,QAAnB60B,EAAApkC,KAAK0O,MAAMW,gBAAQ,IAAA+0B,OAAA,EAAnBA,EAAqBE,QACdtkC,KAAK0O,MAAMW,SAASi1B,OAAvB,UACA/0B,GAGR,OACEkuB,IAAA14B,cAACs9B,EAAI,CACHr+B,GAAIhE,KAAK0O,MAAM1K,GACf8V,aAAc9Z,KAAK48B,oBACnB5qB,SAAS,kBACTgxB,WAAW,EACXL,UAAU,EACVG,mBAAoB9iC,KAAK8iC,mBACzBL,IAvJN,4FAwJM39B,MAAOA,KAMA45B,O,0ECzLR,MAAM6F,EAAmB,CAC9BC,UAAW,WACXC,MAAO,QACPC,QAAS,UACTC,KAAM,Q,6bCDD,MAAMrH,EAAsBx0B,cAAAgC,EAAA,eACf,IAAIF,IAA+B,CACnD25B,EAAiBC,UACjBD,EAAiBE,MACjBF,EAAiBG,QACjBH,EAAiBI,QACjB75B,EAAA,qBAEsB,IAAIF,IAC1B25B,EAAiBC,YAClB15B,EAAA,0BAC4B,IAAIF,IAAoC,OAGrE,aACE,OAAO5K,KAAK4kC,QAAQrjC,MAItB,uBACE,OAAOvB,KAAK4kC,QAId,mBACE,OAAO5kC,KAAK6kC,cAActjC,MAI5B,iBAAiBA,GACfvB,KAAK6kC,cAActjC,MAAQA,EAI7B,6BACE,OAAOvB,KAAK6kC,cAId,wBACE,OAAO7kC,KAAK8kC,mBAAmBvjC,MAIjC,sBAAsBA,GACpBvB,KAAK8kC,mBAAmBvjC,MAAQA,EAIlCwjC,SAASC,GACP,MAAM5gC,EAAQpE,KAAKilC,OAAOC,UAAW9iC,GAAMA,IAAM4iC,GACjD,OAAkB,IAAX5gC,EAAeA,EAAQ,KAIhC+gC,aAAa5kB,GACX,OAAOvgB,KAAKilC,OAAO1kB,IAAY,KAIjC,sBACE,MAAM6kB,EAAeplC,KAAK+kC,SAAS/kC,KAAKqlC,cACxC,OAAqB,OAAjBD,GAA0C,IAAjBA,EAA2B,KACjDplC,KAAKmlC,aAAaC,EAAe,GAI1C,uBACE,MAAMA,EAAeplC,KAAK+kC,SAAS/kC,KAAKqlC,cACxC,OAAqB,OAAjBD,GAAyBA,IAAiBplC,KAAKilC,OAAOxhC,OAAS,EAC1D,KACFzD,KAAKmlC,aAAaC,EAAe,M,8BC1E5C,YAEA,IAAI7D,EAAQ,EAAQ,GAChB+D,EAAsB,EAAQ,IAC9B9D,EAAa,EAAQ,IACrB+D,EAAuB,EAAQ,IAC/BC,EAAa,EAAQ,IAErBC,EAAuB,CACzB,eAAgB,qCAGlB,SAASC,EAAsBthB,EAAS7iB,IACjCggC,EAAMv1B,YAAYoY,IAAYmd,EAAMv1B,YAAYoY,EAAQ,mBAC3DA,EAAQ,gBAAkB7iB,GA+B9B,IA1BMokC,EA0BFpgB,EAAW,CAEbqgB,aAAcL,EAEdI,UA7B8B,oBAAnBE,qBAGmB,IAAZC,GAAuE,qBAA5C9kC,OAAOkB,UAAUqF,SAAS9G,KAAKqlC,MAD1EH,EAAU,EAAQ,KAKbA,GAwBPI,iBAAkB,CAAC,SAA0Br8B,EAAM0a,GAIjD,GAHAkhB,EAAoBlhB,EAAS,UAC7BkhB,EAAoBlhB,EAAS,gBAEzBmd,EAAMv0B,WAAWtD,IACnB63B,EAAMt1B,cAAcvC,IACpB63B,EAAMx0B,SAASrD,IACf63B,EAAM/zB,SAAS9D,IACf63B,EAAMj1B,OAAO5C,IACb63B,EAAMh1B,OAAO7C,GAEb,OAAOA,EAET,GAAI63B,EAAMr0B,kBAAkBxD,GAC1B,OAAOA,EAAK2D,OAEd,GAAIk0B,EAAM70B,kBAAkBhD,GAE1B,OADAg8B,EAAsBthB,EAAS,mDACxB1a,EAAKnC,WAGd,IAGIiF,EAHAw5B,EAAkBzE,EAAMr1B,SAASxC,GACjCu8B,EAAc7hB,GAAWA,EAAQ,gBAIrC,IAAK5X,EAAa+0B,EAAM/0B,WAAW9C,KAAWs8B,GAAmC,wBAAhBC,EAAwC,CACvG,IAAIC,EAAYlmC,KAAKmmC,KAAOnmC,KAAKmmC,IAAIl5B,SACrC,OAAOu4B,EAAWh5B,EAAa,CAAC,UAAW9C,GAAQA,EAAMw8B,GAAa,IAAIA,GACrE,OAAIF,GAAmC,qBAAhBC,GAC5BP,EAAsBthB,EAAS,oBAnDrC,SAAyBgiB,EAAUC,EAAQC,GACzC,GAAI/E,EAAMj0B,SAAS84B,GACjB,IAEE,OADCC,GAAU1/B,KAAK8f,OAAO2f,GAChB7E,EAAMnzB,KAAKg4B,GAClB,MAAOhjC,GACP,GAAe,gBAAXA,EAAEvC,KACJ,MAAMuC,EAKZ,OAAQkjC,GAAW3/B,KAAKC,WAAWw/B,GAwCxBG,CAAgB78B,IAGlBA,IAGT88B,kBAAmB,CAAC,SAA2B98B,GAC7C,IAAIk8B,EAAe5lC,KAAK4lC,cAAgBrgB,EAASqgB,aAC7Ca,EAAoBb,GAAgBA,EAAaa,kBACjDC,EAAoBd,GAAgBA,EAAac,kBACjDC,GAAqBF,GAA2C,SAAtBzmC,KAAK4mC,aAEnD,GAAID,GAAsBD,GAAqBnF,EAAMj0B,SAAS5D,IAASA,EAAKjG,OAC1E,IACE,OAAOkD,KAAK8f,MAAM/c,GAClB,MAAOtG,GACP,GAAIujC,EAAmB,CACrB,GAAe,gBAAXvjC,EAAEvC,KACJ,MAAM2gC,EAAWz4B,KAAK3F,EAAGo+B,EAAWqF,iBAAkB7mC,KAAM,KAAMA,KAAK4gB,UAEzE,MAAMxd,GAKZ,OAAOsG,IAOT4J,QAAS,EAETwzB,eAAgB,aAChBC,eAAgB,eAEhBC,kBAAmB,EACnBC,eAAgB,EAEhBd,IAAK,CACHl5B,SAAU,EAAQ,KAGpBi6B,eAAgB,SAAwB1iB,GACtC,OAAOA,GAAU,KAAOA,EAAS,KAGnCJ,QAAS,CACPoB,OAAQ,CACN,OAAU,uCAKhB+b,EAAMp8B,QAAQ,CAAC,SAAU,MAAO,SAAS,SAA6BqkB,GACpEjE,EAASnB,QAAQoF,GAAU,MAG7B+X,EAAMp8B,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BqkB,GACrEjE,EAASnB,QAAQoF,GAAU+X,EAAM1zB,MAAM43B,MAGzC7lC,EAAOD,QAAU4lB,I,+CCjJjB,2BAGI4hB,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,0vCAA2vC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,sDAAsD,MAAQ,GAAG,SAAW,+iBAA+iB,eAAiB,CAAC,2vCAA2vC,WAAa,MAErsG,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,sUAAuU,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wEAAwE,MAAQ,GAAG,SAAW,gJAAgJ,eAAiB,CAAC,uUAAuU,WAAa,MAEh9B,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,84BAA+4B,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kEAAkE,MAAQ,GAAG,SAAW,iZAAiZ,eAAiB,CAAC,+4BAA+4B,WAAa,MAE31E,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,0tBAAiuB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,sFAAsF,MAAQ,GAAG,SAAW,+SAA+S,eAAiB,CAAC,2tBAAiuB,WAAa,MAEj7D,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,yyEAA0yE,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,qEAAqE,MAAQ,GAAG,SAAW,m8BAAm8B,eAAiB,CAAC,0yEAA0yE,WAAa,MAEtsL,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,uyFAAwyF,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2EAA2E,MAAQ,GAAG,SAAW,y0BAAy0B,eAAiB,CAAC,wyFAAwyF,WAAa,MAE9kN,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,wQAAyQ,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6EAA6E,MAAQ,GAAG,SAAW,qFAAqF,eAAiB,CAAC,yQAAyQ,WAAa,MAE9xB,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,0NAA2N,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,qEAAqE,MAAQ,GAAG,SAAW,mHAAmH,eAAiB,CAAC,2NAA2N,WAAa,MAExtB,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,24BAA44B,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,yDAAyD,MAAQ,GAAG,SAAW,kWAAkW,eAAiB,CAAC,44BAA44B,WAAa,MAE7xE,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,wtBAAytB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mEAAmE,MAAQ,GAAG,SAAW,0QAA0Q,eAAiB,CAAC,ytBAAytB,WAAa,MAEz2D,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,8bAA+b,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,sEAAsE,MAAQ,GAAG,SAAW,6MAA6M,eAAiB,CAAC,+bAA+b,WAAa,MAE3vC,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,2vBAA4vB,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uEAAuE,MAAQ,GAAG,SAAW,0TAA0T,eAAiB,CAAC,4vBAA4vB,WAAa,MAEn+D,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,4TAA6T,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mFAAmF,MAAQ,GAAG,SAAW,qIAAqI,eAAiB,CAAC,6TAA6T,WAAa,MAE57B,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,yNAA0N,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2EAA2E,MAAQ,GAAG,SAAW,uGAAuG,eAAiB,CAAC,0NAA0N,WAAa,MAEhtB,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,2NAA4N,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6EAA6E,MAAQ,GAAG,SAAW,mGAAmG,eAAiB,CAAC,4NAA4N,WAAa,MAEltB,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,2iEAA4iE,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,6EAA6E,MAAQ,GAAG,SAAW,m1BAAm1B,eAAiB,CAAC,4iEAA4iE,WAAa,MAElmK,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,ukEAAwkE,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mEAAmE,MAAQ,GAAG,SAAW,20BAA20B,eAAiB,CAAC,wkEAAwkE,WAAa,MAExoK,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,0ZAA2Z,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,uFAAuF,MAAQ,GAAG,SAAW,4LAA4L,eAAiB,CAAC,2ZAA2Z,WAAa,MAEnrC,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,2fAA4f,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,+EAA+E,MAAQ,GAAG,SAAW,yKAAyK,eAAiB,CAAC,4fAA4f,WAAa,MAE11C,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,41CAA61C,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,+DAA+D,MAAQ,GAAG,SAAW,2kBAA2kB,eAAiB,CAAC,61CAA61C,WAAa,MAE96G,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,qfAAsf,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,iGAAiG,MAAQ,GAAG,SAAW,mMAAmM,eAAiB,CAAC,sfAAsf,WAAa,MAE13C,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,seAAue,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2FAA2F,MAAQ,GAAG,SAAW,mMAAmM,eAAiB,CAAC,ueAAue,WAAa,MAEt1C,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,oiFAAqiF,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2FAA2F,MAAQ,GAAG,SAAW,svCAAsvC,eAAiB,CAAC,qiFAAqiF,WAAa,MAErgN,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,4bAA6b,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,mFAAmF,MAAQ,GAAG,SAAW,gLAAgL,eAAiB,CAAC,6bAA6b,WAAa,MAEvuC,O,6BCPf,2BAGI6mC,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBxiC,KAAK,CAAC/E,EAAOU,EAAI,6jCAA8jC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,iFAAiF,MAAQ,GAAG,SAAW,sSAAsS,eAAiB,CAAC,8jCAA8jC,WAAa,MAE7lF,O,ogBCsCf,MAGM8mC,EAAOA,OAiNEjE,IAtMOA,EACpBzmB,uBAAwB2qB,GAA+B,EACvD9qB,cAAe+qB,GAAsB,EACrClqB,iBAAkBmqB,EAClBlqB,mBAAoBmqB,GAA2B,GACxB,KACfC,IAAkE,IAAAC,EACxE,OAAAA,EAAO,cAA4BpF,YAGjCx5B,eAAA0K,GAxBYwS,MAwBZ,SAAAxS,GAAA1I,EAAA,aAS4B,CAC1B68B,aAAc3nC,KAAK0O,MAAMsD,WAlCfgU,EAkCoC,qBAjCpD,GAAGA,IAASjQ,KAAKyM,SAASjb,SAAS,IAAIqgC,OAAO,EAAG,MAkC3C1E,SAAS,EACT2E,iBAAiB,EACjB51B,eAAgBjS,KAAK0O,MAAMuD,gBAAkBY,MAC9C/H,EAAA,gBAQWkH,IACLrH,IAAkB0U,gBACrB1U,IAAkBH,SAASwH,KAE9BlH,EAAA,2BAEqBH,IAAkB0N,qBAAmBvN,EAAA,kBAE9C,KACXH,IAAkBH,SAASxK,KAAK2sB,MAAMgb,aAAc,CAClD31B,SAAUhS,KAAK2sB,MAAMgb,iBAExB78B,EAAA,qBAEgBo4B,IACfljC,KAAKs+B,SAAS,CAAE4E,cACjBp4B,EAAA,+BAE0B+8B,IACzB7nC,KAAKs+B,SAAS,CAAEuJ,sBACjB/8B,EAAA,2BAEsB8O,IACrB,MAAM,aAAEE,EAAestB,KAASlrB,GAASlc,KAAK0O,MAC9CoL,EAAaoC,EAAMtC,KACpB9O,EAAA,6BAEuB,KACtB,MAAM,eAAEwP,EAAiB8sB,KAASlrB,GAASlc,KAAK0O,MAChD4L,EAAe4B,KAChBpR,EAAA,0BAEqB8O,IACpB,MAAM,YAAEG,EAAcqtB,KAASlrB,GAASlc,KAAK0O,MAC7CqL,EAAYmC,EAAMtC,KACnB9O,EAAA,2BAEqB,CAACoK,EAAsB0E,KAC3C,MAAM,aAAEK,EAAemtB,KAASlrB,GAASlc,KAAK0O,MAC9C,OAAOuL,EAAa/E,EAAWgH,EAAMtC,KACtC9O,EAAA,8BAEwB,CAACiH,EAAgB6H,KACxC,MAAM,gBAAEkuB,EAAkBV,KAASlrB,GAASlc,KAAK0O,MACjDo5B,EAAgB/1B,EAAQmK,EAAMtC,KAC/B9O,EAAA,8BAEwB,CAACiH,EAAgB6H,KACxC,MAAM,gBAAEmuB,EAAkBX,KAASlrB,GAASlc,KAAK0O,MACjDq5B,EAAgBh2B,EAAQmK,EAAMtC,KAvDhCouB,kBACE,MAAO,CACL/1B,eAAgBjS,KAAK2sB,MAAMgb,cAwD/B1J,oBACE,MAAQ0J,aAAc31B,EAAQ,eAAEC,GAAmBjS,KAAK2sB,OAElD,uBACJlQ,EAAsB,uBACtBC,GAAyB,EAAK,cAC9BH,EAAa,UACb9B,GAAY,EAAI,iBAChB2C,GAAmB,EAAI,mBACvBC,GAAqB,GACnBrd,KAAK0O,MAET,IAAIkB,EACJ,GAAIjF,IAAkB0U,eACpBzP,EAAOlN,SAASqC,cAAc,WACzB,CACL,MAAMkjC,EAAUC,sBAAYloC,MAC5B,IAAKioC,EACH,MAAM,IAAI3iC,MAAM,2BAElBsK,EAAOq4B,EAGTt9B,IAAkBoS,aAAa,CAC7B/K,WACApC,OACAqC,iBACAwK,yBACA/B,oBAAqB1a,KAAK0a,oBAC1BI,sBAAuB9a,KAAK8a,sBAC5BF,mBAAoB5a,KAAK4a,mBACzBI,oBAAqBhb,KAAKgb,oBAC1BgC,uBAAwBhd,KAAKgd,uBAC7BC,uBAAwBjd,KAAKid,uBAC7BC,cAAeld,KAAKkd,cACpBC,wBAAyBnd,KAAKmd,wBAC9BT,uBACE2qB,GAAgC3qB,EAClCH,cAAe+qB,GAAuB/qB,EACtCc,mBAAoBmqB,GAA4BnqB,EAChDD,sBAC6B7N,IAA3Bg4B,EACIA,EACAnqB,EACN3C,cAIJ0tB,qBACE,MAAQR,aAAc31B,GAAahS,KAAK2sB,OAElC,uBACJlQ,EAAsB,UACtBhC,GAAY,EAAI,mBAChB4C,GAAqB,GACnBrd,KAAK0O,MAET,IAAIkB,EACJ,GAAIjF,IAAkB0U,eACpBzP,EAAOlN,SAASqC,cAAc,WACzB,CACL,MAAMkjC,EAAUC,sBAAYloC,MAC5B,IAAKioC,EACH,MAAM,IAAI3iC,MAAM,2BAElBsK,EAAOq4B,EAGTt9B,IAAkByU,gBAAgBpN,EAAU,CAC1CpC,OACA6M,yBACAhC,YACA4C,mBAAoBmqB,GAA4BnqB,IAIpDmhB,uBACE,MAAQmJ,aAAc31B,GAAahS,KAAK2sB,MACxChiB,IAAkB2S,gBAAgB,CAAEtL,aAGtCysB,SACE,MAUM2J,EAzLDC,EACXhkC,EACAa,KAEA,MAAM1B,EAAS,IAAKa,GAEpB,OADAa,EAAKC,QAAStD,UAAe2B,EAAO3B,IAC7B2B,GAmLqB6kC,CAVR,IACTroC,KAAK0O,SACL1O,KAAK2sB,MACRniB,SAAUxK,KAAKwK,SACf6N,oBAAqBrY,KAAKqY,oBAC1BiwB,WAAYtoC,KAAKsoC,WACjBprB,cAAeld,KAAKkd,cACpBC,wBAAyBnd,KAAKmd,yBAGE,CAChC,yBACA,yBACA,sBACA,wBACA,sBACA,gBACA,0BACA,yBACA,gBACA,qBAGF,OAAOpY,wBACL0iC,EACAW,KAGLt9B,EAAA48B,EAAA,eAvLuB,CACpBz1B,eAAgB4rB,IAAU0K,SAC3Bz9B,EAAA48B,EAAA,oBAE0B,CACzBz1B,eAAgB4rB,IAAU0K,SAC3Bb,I,6BC1EP9nC,EAAOD,QAAU,SAAcgN,EAAIwB,GACjC,OAAO,WAEL,IADA,IAAIqF,EAAO,IAAI1L,MAAMiG,UAAUtK,QACtBnD,EAAI,EAAGA,EAAIkT,EAAK/P,OAAQnD,IAC/BkT,EAAKlT,GAAKyN,UAAUzN,GAEtB,OAAOqM,EAAGkH,MAAM1F,EAASqF,M,6BCN7B,IAAI+tB,EAAQ,EAAQ,GAEpB,SAASiH,EAAOz8B,GACd,OAAOrF,mBAAmBqF,GACxBsC,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KAUrBzO,EAAOD,QAAU,SAAkB4uB,EAAKtJ,EAAQwjB,GAE9C,IAAKxjB,EACH,OAAOsJ,EAGT,IAAIma,EACJ,GAAID,EACFC,EAAmBD,EAAiBxjB,QAC/B,GAAIsc,EAAM70B,kBAAkBuY,GACjCyjB,EAAmBzjB,EAAO1d,eACrB,CACL,IAAIohC,EAAQ,GAEZpH,EAAMp8B,QAAQ8f,GAAQ,SAAmBlZ,EAAKlK,GACxCkK,UAIAw1B,EAAMx5B,QAAQgE,GAChBlK,GAAY,KAEZkK,EAAM,CAACA,GAGTw1B,EAAMp8B,QAAQ4G,GAAK,SAAoBmnB,GACjCqO,EAAMl1B,OAAO6mB,GACfA,EAAIA,EAAE0V,cACGrH,EAAMr1B,SAASgnB,KACxBA,EAAIvsB,KAAKC,UAAUssB,IAErByV,EAAMhkC,KAAK6jC,EAAO3mC,GAAO,IAAM2mC,EAAOtV,WAI1CwV,EAAmBC,EAAM/iC,KAAK,KAGhC,GAAI8iC,EAAkB,CACpB,IAAIG,EAAgBta,EAAI9e,QAAQ,MACT,IAAnBo5B,IACFta,EAAMA,EAAI1lB,MAAM,EAAGggC,IAGrBta,KAA8B,IAAtBA,EAAI9e,QAAQ,KAAc,IAAM,KAAOi5B,EAGjD,OAAOna,I,6BClET3uB,EAAOD,QAAU,CACf8mC,mBAAmB,EACnBC,mBAAmB,EACnBoC,qBAAqB,I,8BCLvB,YAEA,IAAIvH,EAAQ,EAAQ,GAqEpB3hC,EAAOD,QA5DP,SAAoB0E,EAAK0kC,GAEvBA,EAAWA,GAAY,IAAI97B,SAE3B,IAAI80B,EAAQ,GAEZ,SAASiH,EAAaznC,GACpB,OAAc,OAAVA,EAAuB,GAEvBggC,EAAMl1B,OAAO9K,GACRA,EAAMqnC,cAGXrH,EAAMt1B,cAAc1K,IAAUggC,EAAM10B,aAAatL,GAC5B,mBAAT0nC,KAAsB,IAAIA,KAAK,CAAC1nC,IAAU2nC,EAAOngC,KAAKxH,GAG/DA,EAwCT,OArCA,SAAS4nC,EAAMz/B,EAAM0/B,GACnB,GAAI7H,EAAMp1B,cAAczC,IAAS63B,EAAMx5B,QAAQ2B,GAAO,CACpD,IAA6B,IAAzBq4B,EAAMtyB,QAAQ/F,GAChB,MAAMpE,MAAM,kCAAoC8jC,GAGlDrH,EAAMp9B,KAAK+E,GAEX63B,EAAMp8B,QAAQuE,GAAM,SAAcnI,EAAOM,GACvC,IAAI0/B,EAAMv1B,YAAYzK,GAAtB,CACA,IACIsG,EADAwhC,EAAUD,EAAYA,EAAY,IAAMvnC,EAAMA,EAGlD,GAAIN,IAAU6nC,GAA8B,iBAAV7nC,EAChC,GAAIggC,EAAMpyB,SAAStN,EAAK,MAEtBN,EAAQoF,KAAKC,UAAUrF,QAClB,GAAIggC,EAAMpyB,SAAStN,EAAK,QAAUgG,EAAM05B,EAAM7xB,QAAQnO,IAK3D,YAHAsG,EAAI1C,SAAQ,SAASq6B,IAClB+B,EAAMv1B,YAAYwzB,IAAOuJ,EAASO,OAAOD,EAASL,EAAaxJ,OAMtE2J,EAAM5nC,EAAO8nC,OAGftH,EAAMwH,WAENR,EAASO,OAAOF,EAAWJ,EAAat/B,IAI5Cy/B,CAAM9kC,GAEC0kC,K,sDClET,IAAIxH,EAAQ,EAAQ,GAChBiI,EAAS,EAAQ,IACjBC,EAAU,EAAQ,IAClBC,EAAW,EAAQ,IACnBC,EAAgB,EAAQ,IACxBC,EAAe,EAAQ,IACvBC,EAAkB,EAAQ,IAC1BtE,EAAuB,EAAQ,IAC/B/D,EAAa,EAAQ,IACrBU,EAAgB,EAAQ,IACxB4H,EAAgB,EAAQ,IAE5BlqC,EAAOD,QAAU,SAAoB8hC,GACnC,OAAO,IAAI5c,SAAQ,SAA4BC,EAASilB,GACtD,IAGIC,EAHAC,EAAcxI,EAAO/3B,KACrBkgB,EAAiB6X,EAAOrd,QACxBwiB,EAAenF,EAAOmF,aAE1B,SAASp+B,IACHi5B,EAAOyI,aACTzI,EAAOyI,YAAYC,YAAYH,GAG7BvI,EAAOhX,QACTgX,EAAOhX,OAAOlQ,oBAAoB,QAASyvB,GAI3CzI,EAAMv0B,WAAWi9B,IAAgB1I,EAAM7zB,+BAClCkc,EAAe,gBAGxB,IAAIL,EAAU,IAAIsc,eAGlB,GAAIpE,EAAO2I,KAAM,CACf,IAAIC,EAAW5I,EAAO2I,KAAKC,UAAY,GACnCC,EAAW7I,EAAO2I,KAAKE,SAAW7jC,SAASC,mBAAmB+6B,EAAO2I,KAAKE,WAAa,GAC3F1gB,EAAe2gB,cAAgB,SAAW/jC,KAAK6jC,EAAW,IAAMC,GAGlE,IAAIE,EAAWb,EAAclI,EAAO5d,QAAS4d,EAAOlT,KAOpD,SAASkc,IACP,GAAKlhB,EAAL,CAIA,IAAImhB,EAAkB,0BAA2BnhB,EAAUqgB,EAAargB,EAAQohB,yBAA2B,KAGvG/pB,EAAW,CACblX,KAHkBk9B,GAAiC,SAAjBA,GAA6C,SAAjBA,EACvCrd,EAAQ3I,SAA/B2I,EAAQqhB,aAGRpmB,OAAQ+E,EAAQ/E,OAChBqmB,WAAYthB,EAAQshB,WACpBzmB,QAASsmB,EACTjJ,OAAQA,EACRlY,QAASA,GAGXigB,GAAO,SAAkBjoC,GACvBujB,EAAQvjB,GACRiH,OACC,SAAiBC,GAClBshC,EAAOthC,GACPD,MACCoY,GAGH2I,EAAU,MAoEZ,GAnGAA,EAAQuhB,KAAKrJ,EAAOjY,OAAOuhB,cAAerB,EAASc,EAAU/I,EAAOxc,OAAQwc,EAAOgH,mBAAmB,GAGtGlf,EAAQjW,QAAUmuB,EAAOnuB,QA+BrB,cAAeiW,EAEjBA,EAAQkhB,UAAYA,EAGpBlhB,EAAQyhB,mBAAqB,WACtBzhB,GAAkC,IAAvBA,EAAQ0hB,aAQD,IAAnB1hB,EAAQ/E,QAAkB+E,EAAQ2hB,aAAwD,IAAzC3hB,EAAQ2hB,YAAYz7B,QAAQ,WAKjFqE,WAAW22B,IAKflhB,EAAQ4hB,QAAU,WACX5hB,IAILwgB,EAAO,IAAIvI,EAAW,kBAAmBA,EAAW4J,aAAc3J,EAAQlY,IAG1EA,EAAU,OAIZA,EAAQ8hB,QAAU,WAGhBtB,EAAO,IAAIvI,EAAW,gBAAiBA,EAAW8J,YAAa7J,EAAQlY,EAASA,IAGhFA,EAAU,MAIZA,EAAQgiB,UAAY,WAClB,IAAIC,EAAsB/J,EAAOnuB,QAAU,cAAgBmuB,EAAOnuB,QAAU,cAAgB,mBACxFsyB,EAAenE,EAAOmE,cAAgBL,EACtC9D,EAAO+J,sBACTA,EAAsB/J,EAAO+J,qBAE/BzB,EAAO,IAAIvI,EACTgK,EACA5F,EAAakD,oBAAsBtH,EAAWiK,UAAYjK,EAAW4J,aACrE3J,EACAlY,IAGFA,EAAU,MAMRgY,EAAM7zB,uBAAwB,CAEhC,IAAIg+B,GAAajK,EAAOkK,iBAAmB9B,EAAgBW,KAAc/I,EAAOqF,eAC9E2C,EAAQmC,KAAKnK,EAAOqF,qBACpBv3B,EAEEm8B,IACF9hB,EAAe6X,EAAOsF,gBAAkB2E,GAKxC,qBAAsBniB,GACxBgY,EAAMp8B,QAAQykB,GAAgB,SAA0B7d,EAAKlK,QAChC,IAAhBooC,GAAqD,iBAAtBpoC,EAAI+J,qBAErCge,EAAe/nB,GAGtB0nB,EAAQsiB,iBAAiBhqC,EAAKkK,MAM/Bw1B,EAAMv1B,YAAYy1B,EAAOkK,mBAC5BpiB,EAAQoiB,kBAAoBlK,EAAOkK,iBAIjC/E,GAAiC,SAAjBA,IAClBrd,EAAQqd,aAAenF,EAAOmF,cAIS,mBAA9BnF,EAAOqK,oBAChBviB,EAAQjQ,iBAAiB,WAAYmoB,EAAOqK,oBAIP,mBAA5BrK,EAAOsK,kBAAmCxiB,EAAQyiB,QAC3DziB,EAAQyiB,OAAO1yB,iBAAiB,WAAYmoB,EAAOsK,mBAGjDtK,EAAOyI,aAAezI,EAAOhX,UAG/Buf,EAAa,SAAS3vB,GACfkP,IAGLwgB,GAAQ1vB,GAAWA,GAAUA,EAAOvO,KAAQ,IAAIo2B,EAAkB7nB,GAClEkP,EAAQgB,QACRhB,EAAU,OAGZkY,EAAOyI,aAAezI,EAAOyI,YAAYh/B,UAAU8+B,GAC/CvI,EAAOhX,SACTgX,EAAOhX,OAAOC,QAAUsf,IAAevI,EAAOhX,OAAOnR,iBAAiB,QAAS0wB,KAI9EC,IACHA,EAAc,MAGhB,IAAIgC,EAAWnC,EAAcU,GAEzByB,IAA+D,IAAnD,CAAE,OAAQ,QAAS,QAASx8B,QAAQw8B,GAClDlC,EAAO,IAAIvI,EAAW,wBAA0ByK,EAAW,IAAKzK,EAAW0K,gBAAiBzK,IAM9FlY,EAAQ4iB,KAAKlC,Q,6BCzNjB,IAAImC,EAAgB,EAAQ,IACxBC,EAAc,EAAQ,IAW1BzsC,EAAOD,QAAU,SAAuBkkB,EAASyoB,GAC/C,OAAIzoB,IAAYuoB,EAAcE,GACrBD,EAAYxoB,EAASyoB,GAEvBA,I,6BChBT1sC,EAAOD,QAAU,SAAkB4B,GACjC,SAAUA,IAASA,EAAM6gC,c,6BCD3B,IAAIb,EAAQ,EAAQ,GAUpB3hC,EAAOD,QAAU,SAAqB4sC,EAASC,GAE7CA,EAAUA,GAAW,GACrB,IAAI/K,EAAS,GAEb,SAASgL,EAAe3pC,EAAQiH,GAC9B,OAAIw3B,EAAMp1B,cAAcrJ,IAAWy+B,EAAMp1B,cAAcpC,GAC9Cw3B,EAAM1zB,MAAM/K,EAAQiH,GAClBw3B,EAAMp1B,cAAcpC,GACtBw3B,EAAM1zB,MAAM,GAAI9D,GACdw3B,EAAMx5B,QAAQgC,GAChBA,EAAOlB,QAETkB,EAIT,SAAS2iC,EAAoB19B,GAC3B,OAAKuyB,EAAMv1B,YAAYwgC,EAAQx9B,IAEnBuyB,EAAMv1B,YAAYugC,EAAQv9B,SAA/B,EACEy9B,OAAel9B,EAAWg9B,EAAQv9B,IAFlCy9B,EAAeF,EAAQv9B,GAAOw9B,EAAQx9B,IAOjD,SAAS29B,EAAiB39B,GACxB,IAAKuyB,EAAMv1B,YAAYwgC,EAAQx9B,IAC7B,OAAOy9B,OAAel9B,EAAWi9B,EAAQx9B,IAK7C,SAAS49B,EAAiB59B,GACxB,OAAKuyB,EAAMv1B,YAAYwgC,EAAQx9B,IAEnBuyB,EAAMv1B,YAAYugC,EAAQv9B,SAA/B,EACEy9B,OAAel9B,EAAWg9B,EAAQv9B,IAFlCy9B,OAAel9B,EAAWi9B,EAAQx9B,IAO7C,SAAS69B,EAAgB79B,GACvB,OAAIA,KAAQw9B,EACHC,EAAeF,EAAQv9B,GAAOw9B,EAAQx9B,IACpCA,KAAQu9B,EACVE,OAAel9B,EAAWg9B,EAAQv9B,SADpC,EAKT,IAAI89B,EAAW,CACb,IAAOH,EACP,OAAUA,EACV,KAAQA,EACR,QAAWC,EACX,iBAAoBA,EACpB,kBAAqBA,EACrB,iBAAoBA,EACpB,QAAWA,EACX,eAAkBA,EAClB,gBAAmBA,EACnB,QAAWA,EACX,aAAgBA,EAChB,eAAkBA,EAClB,eAAkBA,EAClB,iBAAoBA,EACpB,mBAAsBA,EACtB,WAAcA,EACd,iBAAoBA,EACpB,cAAiBA,EACjB,eAAkBA,EAClB,UAAaA,EACb,UAAaA,EACb,WAAcA,EACd,YAAeA,EACf,WAAcA,EACd,iBAAoBA,EACpB,eAAkBC,GASpB,OANAtL,EAAMp8B,QAAQnE,OAAOkE,KAAKqnC,GAASpoC,OAAOnD,OAAOkE,KAAKsnC,KAAW,SAA4Bx9B,GAC3F,IAAInB,EAAQi/B,EAAS99B,IAAS09B,EAC1BK,EAAcl/B,EAAMmB,GACvBuyB,EAAMv1B,YAAY+gC,IAAgBl/B,IAAUg/B,IAAqBpL,EAAOzyB,GAAQ+9B,MAG5EtL,I,cClGT7hC,EAAOD,QAAU,CACf,QAAW,W,gBCDb,IAAiDD,IASxC,IACO,MACN,aACA,IAAIstC,EAAsB,CAC7B,CAED,CAAEC,EAAqCC,EAAqB9sC,KAOlE,IACM+sC,EANN/sC,EAAoBgB,EAAE8rC,GACD9sC,EAAoBQ,EAAEssC,EAAqB,CACzC,QAAW,IAAM,IAmxGX,MAAME,GA/wG7BD,EAAiC,oBAAbzqC,UAA4BA,SAAS2qC,cAAgB3qC,SAAS2qC,cAAc5K,SAAMlzB,EAEnG,SACA+9B,EAAY,IAErB,IAAmBC,EAAIC,EAAnB9sC,EAAI4sC,EAKR,SAASG,IACP,SAASx/B,EAAEy/B,GACT,MAAM3rC,EAAInB,EACVD,EAAIuN,EAAI,EACRtN,EAAI,IAAIklB,IACR/jB,EAAEoD,QAAQ/C,IACR,IACEA,EAAEsrC,GACF,MAAOntC,GACP4b,QAAQ2D,MAAMvf,MAGlBP,KAAK2tC,KACLvqC,GAAKA,EAAEwqC,KAET,IAAI1/B,EAAI,EAAGvN,EAAI,EAAGC,EAAI,IAAIklB,IAAO1iB,EAAI,KAAMyqC,EAAI,KAC/C7tC,KAAK4Y,sBAAwB,SAAS80B,GACpCx/B,IAAMA,EAAI0K,sBAAsB3K,EAAEnM,KAAK9B,QACvC,MAAM+B,IAAMpB,EAEZ,OADAC,EAAEwmB,IAAIrlB,EAAG2rC,GACF3rC,GAET/B,KAAK8tC,qBAAuB,SAASJ,GACnC9sC,EAAEgmB,OAAO8mB,GACTx/B,GAAK,GAAKtN,EAAE+R,OAASm7B,qBAAqB5/B,GAAIA,EAAI,IAEpDlO,KAAK+tC,GAAK,SAASL,GACjBG,IAAMnrC,SAASgP,KAAK5L,OAAO+nC,GAAIA,EAAI,MACnCH,IAAMG,EAAInrC,SAASqC,cAAc,OAAQ8oC,EAAE/oC,MAAMkpC,gBAAkB,QAASH,EAAE/oC,MAAMuK,SAAW,QAASw+B,EAAE/oC,MAAMu/B,MAAQ,EAAGwJ,EAAE/oC,MAAMsL,IAAM,EAAGy9B,EAAE/oC,MAAM4N,MAAQ,QAASm7B,EAAE/oC,MAAMmpC,QAAU,MAAOJ,EAAEK,UAAY,WAAYR,EAAI,SAAS3rC,GACnO8rC,EAAEK,UAAY,YAAcnsC,EAAEosC,QAAQ,IACrCzrC,SAASgP,KAAKnM,YAAYsoC,IAC7BzqC,EAAI,IAAI,WACN,IAAIrB,EAAI,EAAGK,EAAI,EACfpC,KAAK4tC,GAAK,WACR,IAAIrtC,EAAI6tC,YAAY36B,MACpBrR,KAAOL,EAAW,KAARxB,GAAK6B,KAAgBsrC,EAAE,IAAO3rC,EAAIxB,GAAIwB,EAAIK,EAAI,KAAOA,EAAI7B,EAAGwB,EAAI,MAIhF/B,KAAKquC,GAAK,WACRR,IAAMnrC,SAASgP,KAAK5L,OAAO+nC,GAAIA,EAAI,MACnCzqC,EAAI,MAENpD,KAAK2tC,GAAK,aAGZ,SAASW,EAAGrgC,GACVkO,QAAQoyB,QAAO,GACf,MAAMrgC,EAAI,IAAI4X,IACd,IAAInlB,GAAI,IACRX,KAAK2E,KAAO,SAAS/D,GAQnB,OAPAA,EAAIA,IAAM,GAAKqN,GAAK,IAAMA,EAC1BC,EAAEmc,IAAIzpB,IAAMgT,aAAa1F,EAAE/M,IAAIP,IAC/BsN,EAAEkZ,IAAIxmB,EAAGkT,YAAW,WAClB5F,EAAE0Y,OAAOhmB,GACT,GAAKsN,EAAEzK,OAAS9C,GAAI,IAAYC,GAAKD,IAAMA,EAAIoV,KAAKC,OAAO9H,EAAEhJ,QAASiX,QAAQoyB,OAAO5tC,EAAIC,MACxF,MACHD,EAAIoV,KAAKC,IAAIpV,EAAGD,GACTA,GAAKsN,GA9DhBvN,EAAE8tC,MAAQ,IAAI3pB,QAAQ,CAAC5W,EAAGC,KACxBq/B,EAAKt/B,EACLu/B,EAAKt/B,IA+DP,MAAMugC,EAAK/tC,EAAEguC,qBACbhuC,EAAEguC,qBAAuB,WACvBD,GAAMA,IACN,IAAIxgC,EAAIvN,EAAEiuC,YACVjuC,EAAEiuC,YAAc,SAASvrC,EAAGyqC,GAE1BA,EADAzqC,EAAI6K,EAAE7K,KAGR,IAAI8K,EAAIxN,EAAEkuC,WACVluC,EAAEkuC,WAAa,SAASxrC,EAAGyqC,GAEzBA,EADAzqC,EAAI8K,EAAE9K,KAGR,MAAMzC,EAAID,EAAEmuC,gBACZnuC,EAAEouC,WAAa1rC,IACb,IAAIyqC,EAAIntC,EAAEquC,eAAe3rC,GACzB,OAAOyqC,EAAEmB,QAAUtuC,EAAEuuC,gBAAgB7rC,GAAKyqC,EAAEqB,OAASxuC,EAAEyuC,eAAe/rC,GAAKyqC,EAAEuB,QAAU1uC,EAAE2uC,gBAAgBjsC,GAAKyqC,GAEhHntC,EAAE4uC,sBAAwB3uC,EAAEqN,OAAO,wBAAyB,CAACuhC,YAAY,UAAUC,aAAapsC,IAC9FpD,KAAKyvC,SAASF,YAAY9uC,KAAKT,MAC/BA,KAAK0vC,GAAKtsC,GACTosC,aAAa,SAASpsC,EAAGyqC,GAE1B,OADAzqC,EAAI1C,EAAEouC,WAAW1rC,GACVpD,KAAK0vC,GAAGtsC,EAAGyqC,MAEpBntC,EAAEivC,mBAAqBhvC,EAAEqN,OAAO,qBAAsB,CAACuhC,YAAY,WACjEvvC,KAAKyvC,SAASF,YAAY9uC,KAAKT,OAC9BwvC,aAAa,SAASpsC,GACvB,IAAIyqC,EAAIntC,EAAEouC,WAAW1rC,GAErB,MAAI,MADJA,EAAIyqC,EAAE+B,WAIIlC,EAQPG,EAAEgC,WAAa,IAAMzsC,GAPlBhB,EAAI,IAAIyjC,gBACVe,aAAe,cACjBxkC,EAAE4oC,mBAAqB,WACrB,GAAK5oC,EAAE6oC,YAAc,KAAO7oC,EAAEoiB,QAIPkpB,KACzBG,EAAEiC,OAAO,IAAIhjC,WAAW4gC,EAAE9sB,YALgB7e,CAAEK,IAE5CA,EAAE0oC,KAAK,MAAO4C,GAAG,GACjBtrC,EAAE+pC,KAAK,OAIF,GAXP,IAAUuB,EACJtrC,KAYR1B,EAAEqvC,wBAA0BpvC,EAAEqN,OAAO,0BAA2B,CAACuhC,YAAY,WAC3EvvC,KAAKyvC,SAASF,YAAY9uC,KAAKT,MAC/BA,KAAKgwC,GAAK,IACTC,UAAU,SAAS7sC,GACpBpD,KAAKgwC,GAAGrrC,KAAKvB,IACZosC,aAAa,SAASpsC,EAAGyqC,GAC1B,IAAK,IAAIH,KAAK1tC,KAAKgwC,GACjB,GAAItC,EAAE8B,aAAapsC,EAAGyqC,GACpB,OAAO,EAGX,OAAO,KAET,IAAIjtC,EAAIF,EAAEwvC,iBACVxvC,EAAEwvC,iBAAmB,SAAS9sC,EAAGyqC,EAAGH,EAAG3rC,EAAGK,EAAI,GAC5C,OAAOxB,EAAEH,KAAKT,KAAMoD,EAAGyqC,EAAGH,EAAG3rC,EAAGK,KAGpC,MAAM+tC,EAAK,iNAAiNC,MAAM,KAAMC,EAAK,IAAI,WAC/O,SAASpiC,IACP,IAAKC,EAAG,CACN,IAAIoiC,EAAI5tC,SAASqC,cAAc,UAAWvD,EAAI,CAAC+uC,MAAM,EAAGC,MAAM,EAAGC,QAAQ,EAAGC,UAAU,EAAGC,mBAAmB,EAAGC,sBAAsB,EAAGC,gBAAgB,mBAAoBC,6BAA6B,EAAGC,0BAA0B,EAAGC,oBAAoB,EAAGC,6BAA6B,GAC7R,IAAI7vC,EACJ,GAAI,oBAAoB4H,KAAK2E,UAAUujC,YACrC,GAAI9vC,EAAIkvC,EAAE7+B,WAAW,QAASjQ,GAAIb,EAAI,GAAIS,EACxC,OAAO+a,QAAQjC,IAAI,oDAAoD,OAGzE,GAAI9Y,EAAIkvC,EAAE7+B,WAAW,SAAUjQ,GAC7Bb,EAAI,MACC,CACL,KAAIS,EAAIkvC,EAAE7+B,WAAW,QAASjQ,IAG5B,OAAO2a,QAAQjC,IAAI,oDAAoD,EAFvEvZ,EAAI,EAyBV,SAASwwC,EAAEC,EAAGC,EAAGC,GAKf,GAJAD,EAAIjwC,EAAEmwC,aAAaF,GACnBjwC,EAAEowC,aAAaH,EAAGC,GAClBlwC,EAAEqwC,cAAcJ,GAEZ,IADJC,EAAIlwC,EAAEswC,iBAAiBL,KACT,IAAI5tC,OAChB,MAAM6tC,EAERlwC,EAAEuwC,aAAaP,EAAGC,GASpB,GApCAjwC,EAAI,IAAIwwC,MAAMxwC,EAAG,CAACD,IAAG,CAACiwC,EAAGC,IACnBD,EAAES,iBACAzvC,IAAM+Z,QAAQ2D,MAAM,2EAA4EuxB,GAAIjvC,GAAI,GAAK,mBAAsBgvC,EAAEC,GAChI,kBADT,GAKO,mBAAsBD,EAAEC,GAAK,YAAYC,GAC9C,OAAOF,EAAEC,GAAGx9B,MAAMu9B,EAAGE,IACnBF,EAAEC,GAEP,IAAID,EAAGC,EAAGC,GACX,IAAIF,EAAES,gBAGJ,OAAOT,EAAEC,GAAKC,GAAG,EAFjBlvC,IAAM+Z,QAAQ2D,MAAM,iFAAmFuxB,GAAIjvC,GAAI,MAKnHxB,EAAImV,KAAKE,IAAI7U,EAAE0wC,aAAa1wC,EAAE2wC,uBAAwB3wC,EAAE0wC,aAAa1wC,EAAE4wC,mBAYvEb,EADAb,EAAIlvC,EAAE6wC,gBACD7wC,EAAE8wC,cAAe,2UACtBf,EAAEb,EAAGlvC,EAAE+wC,gBAAiB,kNACxB/wC,EAAEgxC,mBAAmB9B,EAAG,EAAG,UAC3BlvC,EAAEgxC,mBAAmB9B,EAAG,EAAG,MAC3BlvC,EAAEixC,YAAY/B,GAEV,IADJ9uC,EAAIJ,EAAEkxC,kBAAkBhC,KACV,IAAIliC,OAAO3K,OACvB,MAAMjC,EAER4B,EAAIhC,EAAEmxC,mBAAmBjC,EAAG,OAC5BzC,EAAIzsC,EAAEmxC,mBAAmBjC,EAAG,aAC5BlvC,EAAEoxC,WAAWlC,GACblvC,EAAEqxC,WAAWrxC,EAAEsxC,aAActxC,EAAEuxC,gBAC/BvxC,EAAEwxC,wBAAwB,GAC1BxxC,EAAEwxC,wBAAwB,GAC1BxxC,EAAEqxC,WAAWrxC,EAAEyxC,qBAAsBzxC,EAAEuxC,gBACvCvxC,EAAE0xC,UAAU1xC,EAAEmxC,mBAAmBjC,EAAG,SAAU,GAC9ClvC,EAAE2xC,YAAY3xC,EAAE4xC,gCAAgC,GAChD9kC,EAAI9M,EAEN,OAAO,EAET,IAAI8M,EAAI,KAAMvN,EAAI,EAAGC,EAAI,EAAGwC,EAAI,KAAMyqC,EAAI,KAAMH,EAAI,EAAG3rC,EAAI,EAAGK,GAAI,EAClE6L,IACAjO,KAAKizC,GAAK,WAER,OADAhlC,IACOrN,GAETZ,KAAKkzC,GAAK,SAAS5C,GACjBpiC,EAAEilC,eAAiBjlC,EAAEilC,cAAc7C,IAErCtwC,KAAKozC,GAAK,SAAS9C,GACjB,IAAKriC,IACH,OAAO,KAET,MAAMzM,EAAI0M,EAAEmlC,gBACZ,OAAK7xC,GAGL0M,EAAEolC,YAAYplC,EAAEqlC,WAAY/xC,GAC5B0M,EAAEslC,WAAWtlC,EAAEqlC,WAAY,EAAGrlC,EAAEulC,KAAMvlC,EAAEulC,KAAMvlC,EAAEwlC,cAAepD,GAC/DpiC,EAAEylC,cAAczlC,EAAEqlC,WAAYrlC,EAAE0lC,eAAgB1lC,EAAE2lC,eAClD3lC,EAAEylC,cAAczlC,EAAEqlC,WAAYrlC,EAAE4lC,eAAgB5lC,EAAE2lC,eAClD3lC,EAAEylC,cAAczlC,EAAEqlC,WAAYrlC,EAAE6lC,mBAAoB7lC,EAAE8lC,QACtD,GAAKrzC,GAAKuN,EAAEylC,cAAczlC,EAAEqlC,WAAYrlC,EAAE+lC,mBAAoB/lC,EAAEgmC,sBAAuBhmC,EAAEimC,eAAejmC,EAAEqlC,aAAerlC,EAAEylC,cAAczlC,EAAEqlC,WAAYrlC,EAAE+lC,mBAAoB/lC,EAAE8lC,QACxKxyC,GARE,MAUX,MAAMjB,EAAI,IAAI+tC,EAAG,GAAI8F,EAAI,IAAI9F,EAAG,GAAIpb,EAAI,IAAIob,EAAG,IAAK77B,EAAI,IAAI67B,EAAG,IAC/DtuC,KAAKq0C,GAAK,SAAS/D,EAAG9uC,EAAGJ,EAAG+vC,EAAGC,GAC7B,GAAInjC,IAAK,CACP,IAAIojC,EAAI9wC,EAAEoE,KAAK2rC,GAAIgB,EAAI8C,EAAEzvC,KAAKnD,GAC9B,GAAI0M,EAAEqD,OAAQ,CAaZ,IAAK,IAAI+iC,KAZLpmC,EAAEqD,OAAOvB,OAASqhC,GAAKnjC,EAAEqD,OAAOzB,QAAUwhC,IAC5CpjC,EAAEqD,OAAOvB,MAAQqhC,EAAGnjC,EAAEqD,OAAOzB,OAASwhC,GAExCpjC,EAAEqmC,SAAS,EAAGjD,EAAI9vC,EAAG8uC,EAAG9uC,GACxB0M,EAAEsmC,QAAQtmC,EAAEumC,cACZvmC,EAAEwmC,WAAW,EAAG,EAAG,EAAG,GACtBxmC,EAAEyD,MAAMzD,EAAEymC,kBACVzmC,EAAE0mC,OAAO1mC,EAAEumC,cACXrzC,EAAE8S,KAAK,CAAC2gC,EAAGC,IAAOA,EAAGC,GAAKF,EAAEE,IAC5B1D,EAAIne,EAAEvuB,KAAKwsC,GACXzD,GAAK2D,IAAMnjC,EAAE8mC,WAAW9mC,EAAEwkC,aAAc,EAAIrB,EAAGnjC,EAAE+mC,cAAevH,EAAI2D,GACpEA,EAAI,EACUjwC,GACZ8M,EAAEgnC,cAAchnC,EAAEwkC,aAAcrB,EAAGiD,EAAEa,IAAK9D,GAAK,EAAIiD,EAAEa,GAAG1xC,OAG1D,IAAK,IAAI2xC,KADTj5B,QAAQoyB,OAAO8C,GAAK,EAAIF,GACT/vC,GACb8M,EAAEgnC,cAAchnC,EAAEwkC,aAAcrB,EAAG+D,EAAGC,IAAKhE,GAAK,EAAI+D,EAAGC,GAAG5xC,OAM5D,IAAK,IAAI6xC,KAJTn5B,QAAQoyB,OAAO8C,GAAK,EAAIF,GACxBE,EAAI5+B,EAAE9N,KAAKysC,GACXrvC,GAAKsvC,IAAMnjC,EAAE8mC,WAAW9mC,EAAE2kC,qBAAsB,EAAIxB,EAAGnjC,EAAE+mC,cAAelzC,EAAIsvC,GAC5EiD,EAAI,EACWlzC,GACb8M,EAAEgnC,cAAchnC,EAAE2kC,qBAAsByB,EAAGgB,EAAGC,SAAUjB,GAAK,EAAIgB,EAAGC,QAAQ9xC,OAE9E0Y,QAAQoyB,OAAO+F,GAAK,EAAIlD,GACxBkE,EAAK,EACLF,GAAK,EACL/D,EAAIiD,EAAI,EACR,IAAK,MAAMO,KAAKzzC,EAAG,CACjByzC,EAAEW,MAAMC,IAAMH,IAAOpnC,EAAEolC,YAAYplC,EAAEqlC,WAAYsB,EAAEW,MAAME,IAAM,MAAOJ,EAAKT,EAAEW,MAAMC,IACnFZ,EAAEc,IAAMznC,EAAE0nC,QAAQf,EAAEgB,GAAIvE,EAAIuD,EAAEiB,GAAKjB,EAAEkB,GAAIlB,EAAEmB,GAAInB,EAAEkB,IAAKX,GAAK,GAAMA,IAAOlnC,EAAE0nC,QAAQ,EAAGtE,EAAI9vC,EAAG8uC,EAAG9uC,GAAI4zC,GAAK,GACxGh0C,EAAI,EAAIkvC,EACR,MAAMwE,GAAM,EAAItzC,EAChB0M,EAAE+nC,UAAU7yC,EAAGyxC,EAAEpG,GAAG,GAAKrtC,EAAIyzC,EAAEqB,GAAIrB,EAAEpG,GAAG,GAAKqG,EAAKD,EAAEsB,GAAItB,EAAEpG,GAAG,GAAKrtC,EAAIyzC,EAAEqB,GAAIrB,EAAEpG,GAAG,GAAKqG,EAAKD,EAAEsB,IAC7FjoC,EAAEkoC,UAAUvI,EAAGgH,EAAEpG,GAAG,GAAKrtC,EAAIyzC,EAAEqB,GAAK90C,GAAKyzC,EAAEgB,GAAKhB,EAAEwB,GAAKxB,EAAEqB,IAAM,EAAGrB,EAAEpG,GAAG,GAAKqG,EAAKD,EAAEsB,GAAKrB,GAAMD,EAAEiB,GAAKjB,EAAEyB,GAAKzB,EAAEsB,IAAM,GACpHjoC,EAAEqoC,oBAAoB,EAAG,EAAGroC,EAAEsoC,OAAO,EAAI,EAAGnF,GAC5CnjC,EAAEqoC,oBAAoB,EAAG,EAAGroC,EAAEsoC,OAAO,EAAI,EAAGnF,EAAI,EAAIF,GACpDjjC,EAAEuoC,aAAavoC,EAAEwoC,UAAW7B,EAAEU,QAAQ9xC,OAAQyK,EAAEyoC,eAAgBrC,GAChEjD,GAAK,EAAIwD,EAAEM,GAAG1xC,OACd6wC,GAAK,EAAIO,EAAEU,QAAQ9xC,OAErB0Y,QAAQoyB,OAAO8C,GAAK,EAAIF,GACxBh1B,QAAQoyB,OAAO+F,GAAK,EAAIlD,MAI9BpxC,KAAKuR,OAAS,WACZ,OAAOtD,KAAOC,EAAEqD,SAEfqlC,EAAKl2C,EAAEguC,qBACZhuC,EAAEguC,qBAAuB,WACvB,SAASzgC,EAAE4oC,GACT,OAAOA,GACL,KAAKt2C,EAAEu2C,QACL,MAAO,cACT,KAAKv2C,EAAEw2C,OACL,MAAO,SACT,KAAKx2C,EAAEm6B,QACL,MAAO,UACT,KAAKn6B,EAAEy2C,OACL,MAAO,SACT,KAAKz2C,EAAE02C,QACL,MAAO,UACT,KAAK12C,EAAE22C,WACL,MAAO,cACT,KAAK32C,EAAE42C,UACL,MAAO,aACT,KAAK52C,EAAE62C,UACL,MAAO,aACT,KAAK72C,EAAE82C,UACL,MAAO,aACT,KAAK92C,EAAE+T,WACL,MAAO,aACT,KAAK/T,EAAE+2C,UACL,MAAO,YACT,KAAK/2C,EAAEg3C,SACL,MAAO,WACT,KAAKh3C,EAAEi3C,IACL,MAAO,MACT,KAAKj3C,EAAEk3C,WACL,MAAO,aACT,KAAKl3C,EAAEmS,MACL,MAAO,QACT,KAAKnS,EAAEm3C,WACL,MAAO,cAGb,SAASxpC,EAAE2oC,GACT,MAAO,UAAY,SAAWA,KAAO,IAAM,MAAQ,MAAQA,KAAO,GAAK,MAAQ,IAAMA,KAAO,GAAK,MAAQ,WAAaA,KAAO,IAAM,IAAM,IAE3I,SAASl2C,IACP,EAAI2wC,EAAE7tC,SAAW4sC,EAAGgE,GAAGhD,EAAEsG,YAAatG,EAAEuG,aAActG,EAAGgD,EAAGc,GAAK9D,EAAI,GAAI8D,EAAKd,EAAI,EAAGjD,EAAEwG,MAAM,IAAK,MAClG,IAAK,MAAMhB,KAAKzF,EAAG,CACjB,IAAK,MAAM5+B,KAAKqkC,EAAEhC,EAChBriC,IAEFqkC,EAAEhC,EAAI,GAERzD,EAAEz/B,QAEJilC,GAAMA,IACN,IAAIh2C,EAAIF,EAAEo3C,iBACV,MAAM10C,EAAI1C,EAAEq3C,WAAYlK,EAAIntC,EAAEs3C,YAAatK,EAAIhtC,EAAEu3C,SAAUl2C,EAAIrB,EAAEw3C,UAAW91C,EAAI1B,EAAEy3C,WAAY53C,EAAIG,EAAE03C,UAAWhE,EAAIxzC,EAAEy3C,KAAMnlB,EAAItyB,EAAE03C,OAAQ7lC,EAAI/R,EAAE63C,SAASC,QACxJ,IAAIlI,EAAI,EACR,IAAI9uC,EAAId,EAAE+3C,YAAYzqC,OAAO,oBAAqB,CAACuhC,YAAY,UAAUmJ,GAAG7B,EAAG8B,GAAGnmC,GAAK,IACrFxS,KAAKyvC,SAASF,YAAY9uC,KAAKT,MAC/BA,KAAKy1C,GAAKnF,EACVA,EAAIA,EAAI,EAAI,YAAc,EAC1BtwC,KAAK04C,GAAK7B,EACV72C,KAAK24C,GAAKnmC,GACTomC,WAAW,WACZ54C,KAAK01C,KAAOrF,EAAG6C,GAAGlzC,KAAK01C,IAAKmD,IAAIC,gBAAgB94C,KAAK+4C,KACrD/4C,KAAKyvC,SAASmJ,WAAWn4C,KAAKT,OAC7B8vC,OAAO,SAAS+G,GACjB,IAAIrkC,EAAIxS,KACRwS,EAAEmmC,IAAMnmC,EAAEmmC,GAAGnmC,GACb,IAAIwmC,EAAI,IAAIC,MACZzmC,EAAEumC,GAAKF,IAAIK,gBAAgB,IAAIjQ,KAAK,CAAC4N,GAAI,CAAC/qC,KAAK,eAC/CktC,EAAEG,OAAS,WACT3mC,EAAE4mC,GAAKJ,EACPxmC,EAAEkjC,GAAKrF,EAAG+C,GAAG4F,GACbxmC,EAAEG,KAAKqmC,EAAEhpC,MAAOgpC,EAAElpC,QAClB0C,EAAEkmC,IAAMlmC,EAAEkmC,GAAGlmC,IAEfwmC,EAAEvW,IAAMjwB,EAAEumC,MACN33C,EAAIgC,EAAE4K,OAAO,mBAAoB,CAACuhC,YAAY,WAClDvvC,KAAKyvC,SAASF,YAAY9uC,KAAKT,MAC/BA,KAAKs0C,EAAI,IAAI+E,QACZC,OAAO,WACRt5C,KAAKs0C,EAAI,IAAI+E,QACZE,QAAQ,SAAS1C,EAAGrkC,EAAGwmC,EAAGQ,EAAGC,EAAGC,EAAGC,GACpC,IAAIC,EAAI55C,KAAKs0C,EAAGuF,EAAID,EAAEL,QACtB1C,EAAIA,EAAEvC,EACN,MAAMwF,EAAI,IAAIC,UACdD,EAAE7rC,EAAIuE,EACNsnC,EAAE5rC,EAAI8qC,EACNc,EAAEn5C,EAAI64C,EACNM,EAAEl5C,EAAI64C,EACNK,EAAE12C,EAAIs2C,EACNI,EAAEjM,EAAI8L,EACNE,EAAEp5C,KAAKm5C,EAAG/C,EAAGiD,IACZE,SAAS,SAASnD,GACnB72C,KAAKi6C,GAAKpD,GACTqD,OAAO,SAASrD,EAAGrkC,GACpBxS,KAAKs0C,EAAE4F,OAAOrD,EAAGrkC,IAChB2nC,OAAO,SAAStD,EAAGrkC,GACpBxS,KAAKs0C,EAAE6F,OAAOtD,EAAGrkC,IAChB4nC,QAAQ,SAASvD,EAAGrkC,EAAGwmC,EAAGQ,EAAGC,EAAGC,GACjC15C,KAAKs0C,EAAE+F,cAAcxD,EAAGrkC,EAAGwmC,EAAGQ,EAAGC,EAAGC,IACnCY,MAAM,WACPt6C,KAAKs0C,EAAEiG,eACHpJ,EAAItD,EAAE7/B,OAAO,oBAAqB,CAAC0E,MAAM,SAASmkC,GACtD72C,KAAKw6C,GAAKtsC,EAAE2oC,IACX4D,UAAU,SAAS5D,GACpB72C,KAAK06C,GAAK7D,GACTjxC,KAAK,SAASixC,GACf,OAAOA,GACL,KAAKz0C,EAAEu4C,MACL36C,KAAK46C,GAAK,QACV,MACF,KAAKx4C,EAAEy4C,MACL76C,KAAK46C,GAAK,QACV,MACF,KAAKx4C,EAAE04C,MACL96C,KAAK46C,GAAK,UAEbG,IAAI,SAASlE,GACd,OAAOA,GACL,KAAK90C,EAAEi5C,KACLh7C,KAAKi7C,GAAK,OACV,MACF,KAAKl5C,EAAE84C,MACL76C,KAAKi7C,GAAK,QACV,MACF,KAAKl5C,EAAEm5C,OACLl7C,KAAKi7C,GAAK,WAEbn2C,MAAM,SAAS+xC,GAChB72C,KAAKm7C,GAAKtE,GACTuE,UAAU,SAASvE,GACpB72C,KAAKq7C,GAAKptC,EAAE4oC,IACXyE,cAAc,WACft7C,KAAKqwC,GAAK,MACTkL,eAAe,SAAS1E,EAAGrkC,EAAGwmC,EAAGQ,GAClCx5C,KAAKqwC,GAAK,CAACmL,GAAG3E,EAAG4E,GAAGjpC,EAAGkpC,GAAG1C,EAAG2C,GAAGnC,EAAGoC,GAAG,KACrCC,eAAe,SAAShF,EAAGrkC,EAAGwmC,EAAGQ,GAClCx5C,KAAKqwC,GAAK,CAACmL,GAAG3E,EAAG4E,GAAGjpC,EAAGkpC,GAAG1C,EAAG2C,GAAGnC,EAAGoC,GAAG,GAAIE,IAAG,IAC5CC,QAAQ,SAASlF,EAAGrkC,GACrBxS,KAAKqwC,GAAGuL,GAAGj3C,KAAK,CAAC+N,MAAMmkC,EAAGjsB,KAAKpY,KAC9BwpC,iBAAiB,aACjBrjC,KAAK,SAASk+B,EAAGrkC,EAAGwmC,GACrB,IAAIQ,EAAIx5C,KAAKm7C,GACb,IAAI1B,EAAIz5C,KAAKw6C,GAAId,EAAI15C,KAAKqwC,GAE1B,GADAwG,EAAEoF,yBAA2Bj8C,KAAKq7C,GAC9B,MAAQ3B,EAAG,CACbD,EAAIC,EAAE8B,GACN,IAAI7B,EAAID,EAAE+B,GACV,MAAM5B,EAAIH,EAAEgC,GACZ,IAAI9B,EAAIF,EAAEiC,GACV,MAAM7B,EAAIJ,EAAEkC,GACZlC,EAAEoC,IAAMpC,EAAIG,EAAIJ,EAAGG,GAAKD,EAAGF,EAAI5C,EAAEqF,qBAAqBzC,EAAGE,EAAG,EAAGF,EAAGE,EAAG5jC,KAAKomC,KAAKzC,EAAIA,EAAIE,EAAIA,KAAOH,EAAI5C,EAAEuF,qBAAqB3C,EAAGE,EAAGE,EAAGD,GACtI,IAAK,IAAIyC,EAAI,EAAGC,EAAIxC,EAAEr2C,OAAQ44C,EAAIC,EAAGD,IACnC1C,EAAIG,EAAEuC,GAAI5C,EAAE8C,aAAa5C,EAAE/uB,KAAM1c,EAAEyrC,EAAEjnC,QAEvC1S,KAAKw6C,GAAKf,EACVz5C,KAAKqwC,GAAK,KAEZ,OAAOmJ,GACL,KAAKtmB,EACH2jB,EAAE3kC,YAAcunC,EAChB5C,EAAEjkC,UAAY5S,KAAK06C,GACnB7D,EAAE2F,QAAUx8C,KAAKi7C,GACjBpE,EAAE4F,SAAWz8C,KAAK46C,GAClB/D,EAAEyB,OAAO9lC,GACT,MACF,KAAK4hC,EACHyC,EAAExkC,UAAYonC,EAAG5C,EAAEwB,KAAK7lC,EAAGwmC,OAGjC,MAAM5H,EAAI,IAAIsL,IACd,IAAIrL,EAAI,KAAMC,EAAI,GAAIgD,EAAI,EAAGc,EAAK,EAClC,IAAIE,EAAK50C,EAAEi8C,eAAiBjP,EAAE1/B,OAAO,WAAY,CAACuhC,YAAY,SAASsH,GACrE72C,KAAKyvC,SAASF,YAAY9uC,KAAKT,MAC/BA,KAAK48C,EAAI,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GACzB58C,KAAK68C,EAAIhG,EAAEplC,WAAW,MACtBzR,KAAK88C,GAAKjG,EACV72C,KAAK60C,EAAI,IACRkI,KAAK,WACN/8C,KAAK48C,EAAEj4C,QAAQ3E,KAAK48C,EAAE/zC,MAAM7I,KAAK48C,EAAEn5C,OAAS,IAC5CzD,KAAK60C,EAAElwC,KAAK3E,KAAK68C,EAAEE,KAAKj7C,KAAK9B,KAAK68C,KACjCG,QAAQ,WACT,MAAMnG,EAAI72C,KAAK48C,EAAEn5C,OAAS,EAC1B,GAAI,EAAIozC,EACN,KAAM,4CAER72C,KAAK48C,EAAEj1C,OAAOkvC,GACd72C,KAAK60C,EAAElwC,KAAK3E,KAAK68C,EAAEG,QAAQl7C,KAAK9B,KAAK68C,KACpCI,UAAU,SAASpG,EAAGrkC,EAAGwmC,EAAGQ,EAAGC,EAAGC,GACnC,MAAMC,EAAI35C,KAAK48C,EAAGhD,EAAID,EAAEl2C,OAAS,EACjCk2C,EAAEhyC,OAAOiyC,EAAG,EAAGD,EAAEC,GAAK/C,EAAI8C,EAAEC,EAAI,GAAKpnC,EAAGmnC,EAAEC,EAAI,GAAK/C,EAAI8C,EAAEC,EAAI,GAAKpnC,EAAGmnC,EAAEC,GAAKZ,EAAIW,EAAEC,EAAI,GAAKJ,EAAGG,EAAEC,EAAI,GAAKZ,EAAIW,EAAEC,EAAI,GAAKJ,EAAGG,EAAEC,GAAKH,EAAIE,EAAEC,EAAI,GAAKF,EAAIC,EAAEC,EAAI,GAAID,EAAEC,EAAI,GAAKH,EAAIE,EAAEC,EAAI,GAAKF,EAAIC,EAAEC,EAAI,IACnM55C,KAAK60C,EAAElwC,KAAK3E,KAAK68C,EAAEI,UAAUn7C,KAAK9B,KAAK68C,EAAGhG,EAAGrkC,EAAGwmC,EAAGQ,EAAGC,EAAGC,KACxDwD,OAAO,SAASrG,GACjB,MAAMrkC,EAAIuD,KAAKonC,IAAItG,GACnBA,EAAI9gC,KAAKqnC,IAAIvG,GACb72C,KAAKi9C,UAAUpG,EAAGrkC,GAAIA,EAAGqkC,EAAG,EAAG,IAC9BwG,UAAU,SAASxG,EAAGrkC,GACvBxS,KAAK60C,EAAElwC,KAAK6N,EAAEmG,KAAK7W,KAAK0Q,EAAGxS,KAAK68C,EAAGhG,EAAEvC,EAAGuC,EAAEoD,KAAOxnC,EAAI,UAAY,aAChE6qC,eAAe,SAASzG,EAAGrkC,EAAGwmC,EAAGQ,GAClC,IAAIC,EAAI5C,EAAEuC,GACV,GAAIK,EAAG,CACL,IAAIC,EAAI15C,KAAK68C,EAAGlD,EAAI1rC,EAAE+qC,GACtBh5C,KAAK60C,EAAElwC,MAAK,WACV+0C,EAAEuC,yBAA2BtC,EAC7BD,EAAE6D,YAAc/D,EAChBE,EAAE8D,UAAU/D,EAAG,EAAG,GAClBC,EAAE6D,YAAc,OAGnBE,WAAW,SAAS5G,GACrB,MAAMrkC,EAAIxS,KAAK48C,EAAG5D,EAAIxmC,EAAE/O,OAAS,EACjC,IAAK,IAAI+1C,EAAI,EAAG,EAAIA,IAAKA,EACvB3C,EAAE2C,GAAKhnC,EAAEwmC,EAAIQ,IAEdkE,eAAe,SAAS7G,EAAGrkC,EAAGwmC,EAAGQ,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGuC,GACvD7pC,EAAIxS,KAAK68C,EAAEtrC,OAAOvB,MAClB,IAAIssC,EAAIt8C,KAAK68C,EAAEtrC,OAAOzB,OACtB,MAAM6tC,EAAK7D,EAAIF,EAAGgE,EAAKvB,EAAIxC,EAC3BD,EAAI7jC,KAAKC,IAAI4jC,EAAG,GAChBC,EAAI9jC,KAAKC,IAAI6jC,EAAG,GAChBC,EAAI/jC,KAAKE,IAAI6jC,EAAGtnC,GAChB6pC,EAAItmC,KAAKE,IAAIomC,EAAGC,GAChB,MAAMuB,EAAK/D,EAAIF,EAAGqB,EAAKoB,EAAIxC,EAG3B,GAFA19B,QAAQoyB,OAAOsP,GAAM9nC,KAAKE,IAAI0nC,EAAInrC,IAClC2J,QAAQoyB,OAAO0M,GAAMllC,KAAKE,IAAI2nC,EAAItB,MAC5B,GAAKuB,GAAM,GAAK5C,GAAK,CACzBnB,EAAI+D,EAAKF,GAAM1C,EAAK2C,EACpBprC,EAAI6pC,EAAI,EACR,IAAIyB,EAAK/nC,KAAKgoC,KAAKF,EAAKxB,GAAI2B,EAAKjoC,KAAKgoC,KAAK9C,EAAKzoC,GAChD8pC,EAAIjM,EAAG4C,KACP6K,EAAKxB,IAAMD,GAAKC,EAAIwB,EAAIA,EAAKxB,GAC7B0B,EAAK1B,IAAM9pC,GAAK8pC,EAAI0B,EAAIA,EAAK1B,GAC7BjL,IAAMA,EAAI,IAAI3wC,EAAEu9C,kBAAkB3B,GAAIjL,EAAEwG,MAAM,IAAK,MAEnD,GADAyE,EAAIjL,EAAE6M,QAAQJ,EAAIE,MACRr9C,IAAKywC,EAAE+M,IAAIn+C,MAAOs8C,EAAIjL,EAAE6M,QAAQJ,EAAIE,GAAK7hC,QAAQoyB,OAAO,GAAK+N,IACvE,IAAI8B,EAAS,MAAJ9B,EAAW+B,EAAK/B,GAAK,GAC9BhL,EAAE3sC,KAAK,CAAC8pC,GAAGzuC,KAAK48C,EAAE/zC,MAAM7I,KAAK48C,EAAEn5C,OAAS,GAAI+xC,MAAMqB,EAAGhB,GAAGuI,EAAItI,GAAGuI,EAAIhI,GAAGuD,EAAGtD,GAAGuD,EAAG7D,GAAG8H,EAAI/H,GAAGiI,EAAI9H,GAAGmG,EAAGlG,GAAG3jC,EAAG2iC,GAAG,IAAImJ,aAAa7E,GAAIpE,GAAG,IAAIiJ,aAAa5E,GAAInE,QAAQ,IAAIgJ,YAAY5E,GAAIhE,GAAGmE,EAAG/E,GAAG8B,EAAEpB,IAAM,GAAKqE,EAAI,EAAI,KACnNxF,GAAKmF,EAAEh2C,OACP2xC,GAAMuE,EAAEl2C,OACR,IAAI+6C,EAAKx+C,KAAK68C,EAAG4B,EAAKxwC,EAAE+qC,GACxBh5C,KAAK60C,EAAElwC,MAAK,WACV65C,EAAGzB,OACHyB,EAAGE,iBACHF,EAAGvC,yBAA2BwC,EAC9BD,EAAGjB,YAAc/D,EACjB,MAAMmF,EAAKtO,EAAG9+B,SACdotC,GAAMH,EAAGhB,UAAUmB,EAAIP,EAAIC,EAAIP,EAAIE,EAAIpE,EAAGC,EAAGgE,EAAI5C,GACjDuD,EAAGxB,eAGN4B,UAAU,SAAS/H,GACpB72C,KAAK60C,EAAElwC,KAAK3E,KAAK68C,EAAEgC,KAAK/8C,KAAK9B,KAAK68C,EAAGhG,EAAEvC,EAAGuC,EAAEoD,KAAOxnC,EAAI,UAAY,aAClEd,MAAM,WACPy/B,EAAE+M,IAAIn+C,MACNA,KAAK60C,EAAElwC,KAAK3E,KAAK68C,EAAEjrC,UAAU9P,KAAK9B,KAAK68C,EAAG,EAAG,EAAG78C,KAAK88C,GAAG9sC,MAAOhQ,KAAK88C,GAAGhtC,UACtEgvC,MAAM,aACNC,UAAU,SAASlI,EAAGrkC,GACvBxS,KAAKi9C,UAAU,EAAG,EAAG,EAAG,EAAGpG,EAAGrkC,MAEhC9R,EAAEs+C,aAAe,SAASnI,GACxB,MAAMrkC,EAAI,IAAI8iC,EAAGuB,GAAImC,EAAIxmC,EAAEqqC,EAC3B,OAAO,IAAIjL,MAAMp/B,EAAG,CAAC,IAAIgnC,EAAGC,GAC1B,GAAI,mBAAsBD,EAAEC,GAC1B,OAAO,YAAYC,GACjB,OAAOF,EAAEC,GAAG5lC,MAAM2lC,EAAGE,IAGzB,GAAI,mBAAsBV,EAAES,GAAI,CAC9B,IAAK,EAAItJ,EAAG1gC,QAAQgqC,GAClB,MAAMn0C,MAAM,kCAAoCm0C,EAAI,2IAEtD,OAAO,YAAYC,GACjBlnC,EAAEqiC,EAAElwC,KAAKq0C,EAAES,GAAG33C,KAAKk3C,KAAMU,KAG7B,OAAOF,EAAEC,IACR,IAAID,EAAGC,EAAGC,GACX,GAAID,KAAKT,EACP,OAAOxmC,EAAEqiC,EAAElwC,KAAK,KACdq0C,EAAES,GAAKC,KACL,MAIVh5C,EAAEu+C,YAAc,SAASpI,EAAGrkC,GAC1B,IAAKhR,EAAE,CAACk3C,GAAGlmC,IAAKs9B,OAAO+G,IAEzBn2C,EAAEw+C,cAAgB,CAACC,gBAAgB,WACjC,OAAO,IAAIhO,GACViO,eAAe,WAChB,OAAO,IAAIh+C,GACVi+C,gBAAgB,WACjB,IAAIxI,EAAI/B,EACR,OAAO,IAAItzC,EAAE,CAACm3C,GAAG,KACf9B,EAAEyI,SACD5G,GAAG,KAEJ,GADA7B,EAAE0I,SACE1I,EAAE0I,SAAW1I,EAAEyI,MAAO,CACxB,MAAM9sC,EAAIqkC,EAAErI,MACZh8B,IAAMA,IAAKqkC,EAAErI,MAAQ,YAI3B,IAAIqG,EAAIn0C,EAAE8+C,KAAM1K,EAAK,KACrBp0C,EAAE8+C,KAAO,SAAS3I,EAAGrkC,EAAGwmC,GAAI,GAC1B,MAAMQ,EAAI,IAAI94C,EAAEqvC,wBAGhB,YAFA,IAAWv9B,GAAKgnC,EAAEvJ,UAAUz9B,GAC5BwmC,IAAMxmC,EAAI,IAAI9R,EAAEivC,mBAAsB6J,EAAEvJ,UAAUz9B,IAC3C,IAAIqS,SAAQ,SAAS40B,GAC1B,IAAIC,EAAI,KACR5E,EAAK,CAACwK,MAAM,EAAGC,OAAO,EAAG/Q,MAAM,WAC7BiL,EAAEC,KAEJA,EAAI7E,EAAEgC,EAAG2C,GACT,GAAK1E,EAAGwK,OAAS7F,EAAEC,OAGvB,IAAI+F,EAAK/+C,EAAEg/C,gBAAgBx9C,UAAUy9C,MACrCj/C,EAAEg/C,gBAAgBx9C,UAAUy9C,MAAQ,SAAS9I,EAAGrkC,EAAGwmC,EAAGQ,EAAGC,EAAI,GAC3DgG,EAAGh/C,KAAKT,KAAM62C,EAAGrkC,EAAGwmC,EAAGQ,EAAGC,IAE5B74C,EAAI,IAAI6sC,EACR/sC,EAAEkY,sBAAwBhY,EAAEgY,sBAAsB9W,KAAKlB,GACvDF,EAAEotC,qBAAuBltC,EAAEktC,qBAAqBhsC,KAAKlB,GACrDF,EAAEk/C,iBAAmBh/C,EAAEmtC,GAAGjsC,KAAKlB,GAC/BF,EAAEm/C,kBAAoBj/C,EAAEytC,GACxBztC,EAAE+sC,GAAKhtC,EACPD,EAAEo/C,sBAAwBn/C,EAC1BD,EAAE0vB,QAAU,WACVihB,GAAKA,EAAEzqB,WAGX,IAAwIm5B,EAAIC,EAAxItH,EAAK13C,OAAO4N,OAAO,GAAIlO,GAAIu/C,EAAK,iBAAkBC,EAAK,iBAAmBz9C,OAAQ09C,EAAK,mBAAqBC,cAAeC,EAAK,IAChIH,GAAMC,KACRA,EAAKE,EAAKC,KAAKnzB,SAASozB,KAAO,oBAAsB79C,UAAYA,SAAS2qC,gBAAkBgT,EAAK39C,SAAS2qC,cAAc5K,KAAM0K,IAAekT,EAAKlT,GAAyCkT,EAA5B,IAAMA,EAAG5wC,QAAQ,SAAgB4wC,EAAGzY,OAAO,EAAGyY,EAAGhyC,QAAQ,SAAU,IAAImyC,YAAY,KAAO,GAAU,GAAIL,IAAOH,EAAK/xC,IACjR,IAAIC,EAAI,IAAI23B,eAIZ,OAHA33B,EAAE48B,KAAK,MAAO78B,GAAG,GACjBC,EAAE04B,aAAe,cACjB14B,EAAEi+B,KAAK,MACA,IAAIr/B,WAAWoB,EAAE0S,YACtBm/B,EAAK,CAAC9xC,EAAGC,EAAGvN,KACd,IAAIC,EAAI,IAAIilC,eACZjlC,EAAEkqC,KAAK,MAAO78B,GAAG,GACjBrN,EAAEgmC,aAAe,cACjBhmC,EAAEu4C,OAAS,KACT,KAAOv4C,EAAE4jB,QAAU,GAAK5jB,EAAE4jB,QAAU5jB,EAAEggB,SAAW1S,EAAEtN,EAAEggB,UAAYjgB,KAEnEC,EAAEyqC,QAAU1qC,EACZC,EAAEurC,KAAK,QAGX,IAIIwM,EAJA8H,EAAK//C,EAAEggD,OAASvkC,QAAQjC,IAAIpY,KAAKqa,SAAUwkC,EAAKjgD,EAAEkgD,UAAYzkC,QAAQ2D,MAAMhe,KAAKqa,SACrFnb,OAAO4N,OAAOlO,EAAGg4C,GACjBA,EAAK,KACLh4C,EAAEmgD,cAAgBZ,EAAKv/C,EAAEmgD,aAEzBngD,EAAEogD,aAAenI,EAAKj4C,EAAEogD,YACJpgD,EAAEqgD,cACtB,iBAAmBC,aAAeC,EAAG,mCACrC,IAAIC,EAAIC,EAAYtE,EAAGuE,EAAGjL,EAAIkL,EAAIC,EAAGC,EAAGC,EAAIC,EAAjCvL,GAAK,EAChB,SAAS0E,IACP,IAAI3sC,EAAIizC,EAAG7zC,OACX3M,EAAEghD,MAAQ7E,EAAI,IAAI8E,UAAU1zC,GAC5BvN,EAAEkhD,OAASzL,EAAK,IAAI0L,WAAW5zC,GAC/BvN,EAAEohD,OAASR,EAAI,IAAIS,WAAW9zC,GAC9BvN,EAAEshD,OAASZ,EAAI,IAAIt0C,WAAWmB,GAC9BvN,EAAEuhD,QAAUZ,EAAK,IAAI9C,YAAYtwC,GACjCvN,EAAEwhD,QAAUX,EAAI,IAAIY,YAAYl0C,GAChCvN,EAAE0hD,QAAUZ,EAAK,IAAIlD,aAAarwC,GAClCvN,EAAE2hD,QAAUZ,EAAK,IAAIa,aAAar0C,GAEpC,IAAIynC,EAAID,EAAK,GAAI8M,EAAK,GAAIC,EAAK,GAC/B,SAASC,IACP,IAAIx0C,EAAIvN,EAAEgiD,OAAO37B,QACjB0uB,EAAGkN,QAAQ10C,GAEb,IAeI20C,EAfAC,EAAK,EAAGC,EAAK,KAAMC,EAAK,KAC5B,SAAS9B,EAAGhzC,GASV,MARIvN,EAAEsiD,SACJtiD,EAAEsiD,QAAQ/0C,GAGZ0yC,EADA1yC,EAAI,WAAaA,EAAI,KAErBioC,GAAK,EACLjoC,EAAI,IAAI+yC,YAAYiC,aAAah1C,EAAI,4CACrCu/B,EAAGv/B,GACGA,EAER,SAAS2tC,EAAG3tC,GACV,OAAOA,EAAEmY,WAAW,yCAItB,IAAKw1B,EADLgH,EAAK,wBACQ,CACX,IAAIM,EAAKN,EACTA,EAAKliD,EAAEyiD,WAAaziD,EAAEyiD,WAAWD,EAAI7C,GAAMA,EAAK6C,EAElD,SAAS/N,EAAGlnC,GACV,GAAIA,GAAK20C,GAAMjK,EACb,OAAO,IAAI7rC,WAAW6rC,GAExB,GAAIqH,EACF,OAAOA,EAAG/xC,GAEZ,KAAM,kDAoBR,SAASgsC,EAAGhsC,EAAGC,EAAGvN,GAChB,OAnBF,SAAYsN,GACV,IAAK0qC,IAAOuH,GAAMC,GAAK,CACrB,GAAI,mBAAqBiD,QAAUn1C,EAAEmY,WAAW,WAC9C,OAAOg9B,MAAMn1C,EAAG,CAACo1C,YAAY,gBAAgBC,KAAKp1C,IAChD,IAAKA,EAAEq1C,GACL,KAAM,uCAAyCt1C,EAAI,IAErD,OAAOC,EAAEs1C,gBACRC,MAAM,IAAMtO,EAAGlnC,IAEpB,GAAI8xC,EACF,OAAO,IAAIl7B,QAAQ,CAAC3W,EAAGvN,KACrBo/C,EAAG9xC,EAAGrN,GAAKsN,EAAE,IAAIpB,WAAWlM,IAAKD,KAIvC,OAAOkkB,QAAQC,UAAUw+B,KAAK,IAAMnO,EAAGlnC,IAGhC6uC,CAAG7uC,GAAGq1C,KAAK1iD,GAAKogD,YAAY0C,YAAY9iD,EAAGsN,IAAIo1C,KAAK1iD,GAAKA,GAAG0iD,KAAK3iD,EAAGC,IACzE+/C,EAAG,0CAA4C//C,GAC/CqgD,EAAGrgD,KAWP,IAAI45C,EAAI3E,EAAI6F,EAAK,CAACiI,OAAO,CAAC11C,EAAGC,EAAGvN,EAAGC,EAAGwC,KACpC,GAAI,oBAAuBX,aAAU,KAAYA,OAAOmhD,cAAgBnhD,OAAOohD,oBAC7E,OAAO,EAET,QAAI,IAAuBphD,OAAOqhD,EAAG,CACnCrhD,OAAOqhD,EAAI,CAAC5C,GAAG,GACfz+C,OAAOqhD,EAAEtK,EAAI,GACb/2C,OAAOqhD,EAAEtK,EAAEyH,GAAKhzC,EAChBxL,OAAOqhD,EAAEtK,EAAEuK,QAAU71C,EACrBzL,OAAOqhD,EAAEtK,EAAE+I,GAAK5hD,EAChB8B,OAAOqhD,EAAEE,GAAK,GACdvhD,OAAOqhD,EAAEE,GAAGC,QAAUrjD,EACtB6B,OAAOqhD,EAAEE,GAAGE,GAAK9gD,EACjB,IAAIyqC,EAAIprC,OAAOqhD,EACfjW,EAAEuD,EAAI,GACNvD,EAAEsW,GAAK,SAASzW,GACd,IAAK,IAAI3rC,EAAI,EAAGA,EAAI8rC,EAAEuD,EAAE3tC,SAAU1B,EAChC,GAAI,MAAQ8rC,EAAEuD,EAAErvC,GACd,OAAO8rC,EAAEuD,EAAErvC,GAAK2rC,EAAG3rC,EAIvB,OADA8rC,EAAEuD,EAAEzsC,KAAK+oC,GACFG,EAAEuD,EAAE3tC,OAAS,GAEtBoqC,EAAEuW,GAAK,SAAS1W,GACd,IAAKG,EAAEuD,EAAE1D,GAAK,KAAM,EAAIG,EAAEuD,EAAE3tC,QACtB,MAAQoqC,EAAEuD,EAAEvD,EAAEuD,EAAE3tC,OAAS,IAC3BoqC,EAAEuD,EAAE7H,OAMVsE,EAAEwW,GAAK,SAAS3W,GACd,IAAK,IAAI3rC,EAAI,EAAGA,EAAI8rC,EAAEuD,EAAE3tC,SAAU1B,EAChC,GAAI8rC,EAAEuD,EAAErvC,IAAM2rC,EACZ,OAAOG,EAAEuW,GAAGriD,IAIlB8rC,EAAEyH,GAAK,SAAS5H,GACd,OAAOG,EAAEuD,EAAE1D,IAEbG,EAAEqV,GAAK,CAAC,WAAY,SACpBrV,EAAEyW,OAAS,WACT,IAAK,IAAI5W,EAAI,EAAGA,EAAIG,EAAEuD,EAAE3tC,SAAUiqC,EAAG,CACnC,IAAI3rC,EAAI8rC,EAAEuD,EAAE1D,GACZ,MAAQ3rC,GAAK,MAAQA,EAAE43C,GAAK53C,EAAE4qB,QAAUkhB,EAAEmW,GAAGE,IAAMniD,EAAE43C,EAAEpvC,SAAS+4C,KAAK,KACnExN,GAAG/zC,EAAEwiD,KACJniD,IACD+Z,QAAQ2D,MAAM,gCAAiC1d,KAGnDyrC,EAAEqV,GAAGp5C,KAAI,SAAS1H,GAChBM,SAAS6X,oBAAoBnY,EAAGyrC,EAAEyW,QAAQ,OAG9CzW,EAAEqV,GAAGp5C,KAAI,SAAS4jC,GAChBhrC,SAAS4W,iBAAiBo0B,EAAGG,EAAEyW,QAAQ,MAI3C,OADA7hD,OAAOqhD,EAAE5C,IAAM,EACR,GACNsD,OAAO,UACR,IAAuB/hD,OAAOqhD,IAAMrhD,OAAOqhD,EAAEZ,GAAGp5C,KAAI,SAASmE,GAC3DvL,SAAS6X,oBAAoBtM,EAAGxL,OAAOqhD,EAAEQ,QAAQ,QAC7C7hD,OAAOqhD,EAAE5C,GAAI,IAAMz+C,OAAOqhD,EAAE5C,WAAaz+C,OAAOqhD,IACrDW,OAAO,SAAM,IAAW92C,UAAU+2C,mBAAgB,IAAW/2C,UAAU+2C,aAAaC,aAAcC,OAAO,KAC1G,IACE,IAAI32C,EAAI,IAAKxL,OAAOmhD,cAAgBnhD,OAAOohD,oBAAuB31C,EAAID,EAAE42C,WAExE,OADA52C,EAAEqsC,QACKpsC,EACP,MAAOvN,GACP,OAAO,IAERmkD,OAAO,CAAC72C,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,KACxB,QAAI,IAAuBprC,OAAOqhD,EAChC,OAAQ,EAEV,IAAIpW,EAAI,GAAI3rC,EAAI,GAyChB,OAxCAkM,GAAKxL,OAAOqhD,EAAEtK,EAAEyH,IAAM,GAAKtgD,IAAMoB,EAAE8iD,WAAalkD,GAChD+sC,EAAEiM,EAAI,IAAKl3C,OAAOmhD,cAAgBnhD,OAAOohD,oBAAoB9hD,GAC7D2rC,EAAEiM,EAAEoL,UACJrX,EAAE/gB,MAAQlqB,OAAOqhD,EAAEE,GAAGC,QACtBtjD,EAAI,EACJsN,GAAKxL,OAAOqhD,EAAEtK,EAAEyH,KAAOtgD,EAAIuN,GAC3Bw/B,EAAEmM,EAAInM,EAAEiM,EAAEqL,sBAAsBpkD,EAAGD,EAAGuN,GACtCw/B,EAAEmM,EAAEoL,eAAiB,SAAS7iD,GAI5B,GAHI,MAAQsrC,EAAEoQ,IAAM,GAAKpQ,EAAEoQ,GAAGr6C,SAC5BiqC,EAAEoQ,GAAK,IAAIQ,aAAakD,EAAGn0C,OAAQjK,EAAGxC,EAAIsN,IAExCD,GAAKxL,OAAOqhD,EAAEtK,EAAEuK,SAAW91C,GAAKxL,OAAOqhD,EAAEtK,EAAE+I,GAAI,CACjD,IAAK,IAAIhiD,EAAI,EAAGA,EAAI2N,EAAG3N,GAAK,EAC1B,IAAK,IAAI6zC,EAAIhyC,EAAE8iD,YAAYC,eAAe5kD,GAAI2yB,EAAIwa,EAAEoQ,GAAIrrC,EAAI,EAAGA,EAAI7R,EAAG6R,GAAK,EACzEygB,EAAEzgB,EAAIvE,EAAI3N,GAAK6zC,EAAE3hC,GAGrB2yC,GAAGvX,EAAGjtC,EAAGwC,GAEX,GAAI6K,GAAKxL,OAAOqhD,EAAEtK,EAAEyH,IAAMhzC,GAAKxL,OAAOqhD,EAAEtK,EAAE+I,GACxC,IAAK8C,GAAGxX,EAAGjtC,EAAGwC,GAAI7C,EAAI,EAAGA,EAAI6B,EAAEkjD,aAAaC,mBAAoBhlD,EAC9D,IAAK6zC,EAAIhyC,EAAEkjD,aAAaH,eAAe5kD,GAAI2yB,EAAIwa,EAAEoQ,GAAIrrC,EAAI,EAAGA,EAAI7R,EAAG6R,GAAK,EACtE2hC,EAAE3hC,GAAKygB,EAAEzgB,EAAIvE,EAAI3N,QAIrB,IAAKA,EAAI,EAAGA,EAAI6B,EAAEkjD,aAAaC,mBAAoBhlD,EACjD6B,EAAEkjD,aAAaH,eAAe5kD,GAAG83C,KAAK,IAI5CpqC,GAAKxL,OAAOqhD,EAAEtK,EAAEuK,SAAW91C,GAAKxL,OAAOqhD,EAAEtK,EAAE+I,IAAM50C,UAAU+2C,aAAaC,aAAa,CAACa,OAAM,EAAIC,OAAM,IAAKnC,MAAK,SAASlhD,GACvHsrC,EAAE2T,GAAK3T,EAAEiM,EAAE+L,wBAAwBtjD,GACnCsrC,EAAE2T,GAAGsE,QAAQjY,EAAEmM,GACfnM,EAAEmM,EAAE8L,QAAQjY,EAAEiM,EAAEiM,gBACfnC,OAAM,SAASrhD,GAChB+Z,QAAQjC,IAAI,6BAA+B9X,MAE7C6L,GAAKxL,OAAOqhD,EAAEtK,EAAEyH,IAAMvT,EAAEmM,EAAE8L,QAAQjY,EAAEiM,EAAEiM,aACtClY,EAAE6W,GAAK1W,EACAprC,OAAOqhD,EAAEK,GAAGzW,IAClBmY,OAAO53C,GAAKxL,OAAOqhD,EAAExO,GAAGrnC,GAAG0rC,EAAEkL,WAAYiB,OAAO73C,SAEjD,KADAA,EAAIxL,OAAOqhD,EAAExO,GAAGrnC,IACH4rC,IAAM5rC,EAAE4rC,EAAEoL,eAAiB,aACrCh3C,EAAE4rC,EAAEkM,aAAc93C,EAAE4rC,OAAI,QAC3B,IAAW5rC,EAAEozC,KAAOpzC,EAAEozC,GAAG0E,aAAc93C,EAAEozC,QAAK,GAC9CpzC,EAAE0rC,EAAEW,QACJrsC,EAAE0rC,OAAI,EACN1rC,EAAEs2C,QAAK,GACNyB,OAAO/3C,IACRxL,OAAOqhD,EAAEM,GAAGn2C,IACXg4C,OAAOh4C,KACRA,EAAIxL,OAAOqhD,EAAExO,GAAGrnC,IACd0rC,EAAEpvC,SACJ0D,EAAE0e,MAAQlqB,OAAOqhD,EAAEE,GAAGE,IACrBgC,OAAOj4C,KACRA,EAAIxL,OAAOqhD,EAAExO,GAAGrnC,IACd0rC,EAAEoL,UACJ92C,EAAE0e,MAAQlqB,OAAOqhD,EAAEE,GAAGC,UACpBkC,EAAKl4C,IACP,KAAO,EAAIA,EAAExK,QACXwK,EAAE8Y,OAAF9Y,CAAUvN,IAEXi7C,EAAK,CAAC1tC,EAAGC,KACV,IAAK,IAAIvN,EAAI,EAAGC,EAAIqN,EAAExK,OAAS,EAAG,GAAK7C,EAAGA,IAAK,CAC7C,IAAIwC,EAAI6K,EAAErN,GACV,MAAQwC,EAAI6K,EAAEtG,OAAO/G,EAAG,GAAK,OAASwC,GAAK6K,EAAEtG,OAAO/G,EAAG,GAAID,KAAOA,IAAMsN,EAAEtG,OAAO/G,EAAG,GAAID,KAE1F,GAAIuN,EACF,KAAOvN,EAAGA,IACRsN,EAAE00C,QAAQ,MAGd,OAAO10C,GACNm4C,EAAKn4C,IACN,IAAIC,EAAI,MAAQD,EAAEo4C,OAAO,GAAI1lD,EAAI,MAAQsN,EAAE25B,QAAQ,GAGnD,OAFC35B,EAAI0tC,EAAG1tC,EAAEmiC,MAAM,KAAKzqC,OAAO/E,KAAOA,IAAKsN,GAAGtI,KAAK,OAASsI,IAAMD,EAAI,KACnEA,GAAKtN,IAAMsN,GAAK,MACRC,EAAI,IAAM,IAAMD,GACvBq4C,EAAKr4C,IACN,IAAIC,EAAI,gEAAgEq4C,KAAKt4C,GAAGpF,MAAM,GAGtF,OAFAoF,EAAIC,EAAE,GACNA,EAAIA,EAAE,GACDD,GAAMC,GAGXA,IAAMA,EAAIA,EAAE05B,OAAO,EAAG15B,EAAEzK,OAAS,IAC1BwK,EAAIC,GAHF,KAIRs4C,GAAKv4C,IACN,GAAI,MAAQA,EACV,MAAO,IAIT,IAAIC,GADJD,GADAA,EAAIm4C,EAAGn4C,IACDI,QAAQ,MAAO,KACXmyC,YAAY,KACtB,OAAQ,IAAMtyC,EAAID,EAAIA,EAAE25B,OAAO15B,EAAI,IAMlCu4C,GAAKx4C,IAAMw4C,GALN,MACN,GAAI,iBAAmBC,QAAU,mBAAqBA,OAAOC,gBAC3D,OAAO14C,GAAKy4C,OAAOC,gBAAgB14C,GAErCgzC,EAAG,qBACc2F,IAAM34C,GACzB,SAAS8nC,KACP,IAAK,IAAI9nC,EAAI,GAAIC,GAAI,EAAIvN,EAAIoN,UAAUtK,OAAS,GAAI,GAAK9C,IAAMuN,EAAGvN,IAAK,CAErE,GAAI,iBADJuN,EAAI,GAAKvN,EAAIoN,UAAUpN,GAAK,KAE1B,MAAM,IAAIuI,UAAU,6CAEtB,IAAKgF,EACH,MAAO,GAETD,EAAIC,EAAI,IAAMD,EACdC,EAAI,MAAQA,EAAEm4C,OAAO,GAGvB,OAAQn4C,EAAI,IAAM,KADlBD,EAAI0tC,EAAG1tC,EAAEmiC,MAAM,KAAKzqC,OAAO/E,KAAOA,IAAKsN,GAAGtI,KAAK,OAClB,IAE/B,IAAIoqC,GAAK,oBAAsB6W,YAAc,IAAIA,YAAY,aAAU,EAAQC,GAAK,CAAC74C,EAAGC,EAAGvN,KACzF,IAAIC,EAAIsN,EAAIvN,EACZ,IAAKA,EAAIuN,EAAGD,EAAEtN,MAAQA,GAAKC,MACvBD,EAEJ,GAAI,GAAKA,EAAIuN,GAAKD,EAAEZ,QAAU2iC,GAC5B,OAAOA,GAAGF,OAAO7hC,EAAE84C,SAAS74C,EAAGvN,IAEjC,IAAKC,EAAI,GAAIsN,EAAIvN,GAAI,CACnB,IAAIyC,EAAI6K,EAAEC,KACV,GAAQ,IAAJ9K,EAAS,CACX,IAAIyqC,EAAa,GAAT5/B,EAAEC,KACV,GAAI,MAAY,IAAJ9K,GACVxC,GAAK0O,OAAO03C,cAAkB,GAAJ5jD,IAAW,EAAIyqC,OACpC,CACL,IAAIH,EAAa,GAATz/B,EAAEC,KAEV,OADA9K,EAAI,MAAY,IAAJA,IAAgB,GAAJA,IAAW,GAAKyqC,GAAK,EAAIH,GAAS,EAAJtqC,IAAU,GAAKyqC,GAAK,GAAKH,GAAK,EAAa,GAATz/B,EAAEC,MAC9EtN,GAAK0O,OAAO03C,aAAa5jD,IAAMA,GAAK,MAAOxC,GAAK0O,OAAO03C,aAAa,MAAQ5jD,GAAK,GAAI,MAAY,KAAJA,UAG3GxC,GAAK0O,OAAO03C,aAAa5jD,GAG7B,OAAOxC,GACNqmD,GAAK,GAAIC,GAAKj5C,IACf,IAAK,IAAIC,EAAI,EAAGvN,EAAI,EAAGA,EAAIsN,EAAExK,SAAU9C,EAAG,CACxC,IAAIC,EAAIqN,EAAEM,WAAW5N,GACrB,KAAOC,EAAIsN,IAAM,MAAQtN,EAAIsN,GAAK,EAAI,OAAStN,GAAK,OAASA,GAAKsN,GAAK,IAAKvN,GAAKuN,GAAK,EAExF,OAAOA,GACNy/B,GAAK,CAAC1/B,EAAGC,EAAGvN,EAAGC,KAChB,KAAM,EAAIA,GACR,OAAO,EAET,IAAIwC,EAAIzC,EACRC,EAAID,EAAIC,EAAI,EACZ,IAAK,IAAIitC,EAAI,EAAGA,EAAI5/B,EAAExK,SAAUoqC,EAAG,CACjC,IAAIH,EAAIz/B,EAAEM,WAAWs/B,GAKrB,GAJI,OAASH,GAAK,OAASA,IAEzBA,EAAI,QAAc,KAAJA,IAAa,IAAU,KAD7Bz/B,EAAEM,aAAas/B,IAGrB,KAAOH,EAAG,CACZ,GAAI/sC,GAAKC,EACP,MAEFsN,EAAEvN,KAAO+sC,MACJ,CACL,GAAI,MAAQA,EAAG,CACb,GAAI/sC,EAAI,GAAKC,EACX,MAEFsN,EAAEvN,KAAO,IAAM+sC,GAAK,MACf,CACL,GAAI,OAASA,EAAG,CACd,GAAI/sC,EAAI,GAAKC,EACX,MAEFsN,EAAEvN,KAAO,IAAM+sC,GAAK,OACf,CACL,GAAI/sC,EAAI,GAAKC,EACX,MAEFsN,EAAEvN,KAAO,IAAM+sC,GAAK,GACpBx/B,EAAEvN,KAAO,IAAM+sC,GAAK,GAAK,GAE3Bx/B,EAAEvN,KAAO,IAAM+sC,GAAK,EAAI,GAE1Bx/B,EAAEvN,KAAO,IAAU,GAAJ+sC,GAInB,OADAx/B,EAAEvN,GAAK,EACAA,EAAIyC,GAEb,SAASmhD,GAAGt2C,EAAGC,GACb,IAAIvN,EAAImH,MAAMo/C,GAAGj5C,GAAK,GAGtB,OAFAA,EAAI0/B,GAAG1/B,EAAGtN,EAAG,EAAGA,EAAE8C,QAClByK,IAAMvN,EAAE8C,OAASwK,GACVtN,EAET,IAAIwmD,GAAK,GACT,SAASC,GAAGn5C,EAAGC,GACbi5C,GAAGl5C,GAAK,CAAC21B,MAAM,GAAIoV,EAAE,GAAIqO,EAAEn5C,GAC3Bo5C,GAAGr5C,EAAGs5C,IAER,IAAIA,GAAK,CAACzc,KAAK,SAAS78B,GACtB,IAAIC,EAAIi5C,GAAGl5C,EAAE2B,KAAK4uC,IAClB,IAAKtwC,EACH,MAAM,IAAIs5C,GAAE,IAEdv5C,EAAE5L,EAAI6L,EACND,EAAEw5C,UAAW,GACZnN,MAAM,SAASrsC,GAChBA,EAAE5L,EAAEglD,EAAEtH,GAAG9xC,EAAE5L,IACV09C,GAAG,SAAS9xC,GACbA,EAAE5L,EAAEglD,EAAEtH,GAAG9xC,EAAE5L,IACVupC,KAAK,SAAS39B,EAAGC,EAAGvN,EAAGC,GACxB,IAAKqN,EAAE5L,IAAM4L,EAAE5L,EAAEglD,EAAEZ,GACjB,MAAM,IAAIe,GAAE,IAEd,IAAK,IAAIpkD,EAAI,EAAGyqC,EAAI,EAAGA,EAAIjtC,EAAGitC,IAAK,CACjC,IACE,IAAIH,EAAIz/B,EAAE5L,EAAEglD,EAAEZ,GAAGx4C,EAAE5L,GACnB,MAAON,GACP,MAAM,IAAIylD,GAAE,IAEd,QAAI,IAAW9Z,GAAK,IAAMtqC,EACxB,MAAM,IAAIokD,GAAE,GAEd,GAAI,MAAS9Z,EACX,MAEFtqC,IACA8K,EAAEvN,EAAIktC,GAAKH,EAGb,OADAtqC,IAAM6K,EAAE2B,KAAK4W,UAAY9S,KAAKD,OACvBrQ,GACNskD,MAAM,SAASz5C,EAAGC,EAAGvN,EAAGC,GACzB,IAAKqN,EAAE5L,IAAM4L,EAAE5L,EAAEglD,EAAExE,GACjB,MAAM,IAAI2E,GAAE,IAEd,IACE,IAAK,IAAIpkD,EAAI,EAAGA,EAAIxC,EAAGwC,IACrB6K,EAAE5L,EAAEglD,EAAExE,GAAG50C,EAAE5L,EAAG6L,EAAEvN,EAAIyC,IAEtB,MAAOyqC,GACP,MAAM,IAAI2Z,GAAE,IAGd,OADA5mD,IAAMqN,EAAE2B,KAAK4W,UAAY9S,KAAKD,OACvBrQ,IACJukD,GAAK,CAAClB,GAAG,WACZx4C,EAAG,CACD,IAAKg5C,GAAGxjD,OAAQ,CACd,IAAIwK,EAAI,KAER,GADA,oBAAsBxL,QAAU,mBAAqBA,OAAOmlD,OAAwC,QAA9B35C,EAAIxL,OAAOmlD,OAAO,cAA2B35C,GAAK,MAAS,mBAAqB45C,UAA6B,QAAhB55C,EAAI45C,cAA2B55C,GAAK,OAClMA,EAAG,CACNA,EAAI,KACJ,MAAMA,EAERg5C,GAAK1C,GAAGt2C,GAAG,GAEbA,EAAIg5C,GAAGlgC,QAET,OAAO9Y,GACN40C,GAAG,SAAS50C,EAAGC,GAChB,OAASA,GAAK,KAAOA,GAAKuyC,EAAGqG,GAAG74C,EAAE+qC,EAAG,IAAK/qC,EAAE+qC,EAAI,IAAM,GAAK9qC,GAAKD,EAAE+qC,EAAEr0C,KAAKuJ,IACxE6xC,GAAG,SAAS9xC,GACbA,EAAE+qC,GAAK,EAAI/qC,EAAE+qC,EAAEv1C,SAAWg9C,EAAGqG,GAAG74C,EAAE+qC,EAAG,IAAK/qC,EAAE+qC,EAAI,KAC/C2F,GAAG,WACJ,MAAO,CAACmJ,GAAG,MAAOC,GAAG,EAAGC,GAAG,IAAKC,GAAG,MAAOC,GAAG,CAAC,EAAG,GAAI,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,KACrJC,GAAG,WACJ,OAAO,GACNC,GAAG,WACJ,MAAO,CAAC,GAAI,MACTC,GAAK,CAACxF,GAAG,SAAS50C,EAAGC,GACxB,OAASA,GAAK,KAAOA,GAAKyyC,EAAGmG,GAAG74C,EAAE+qC,EAAG,IAAK/qC,EAAE+qC,EAAI,IAAM,GAAK9qC,GAAKD,EAAE+qC,EAAEr0C,KAAKuJ,IACxE6xC,GAAG,SAAS9xC,GACbA,EAAE+qC,GAAK,EAAI/qC,EAAE+qC,EAAEv1C,SAAWk9C,EAAGmG,GAAG74C,EAAE+qC,EAAG,IAAK/qC,EAAE+qC,EAAI,MAElD,SAASjE,GAAG9mC,EAAGC,GACb,IAAIvN,EAAIsN,EAAEq6C,EAAIr6C,EAAEq6C,EAAE7kD,OAAS,EAC3B9C,GAAKuN,IAAMA,EAAI6H,KAAKC,IAAI9H,EAAGvN,GAAK,QAAUA,EAAI,EAAM,SAAW,GAAI,GAAKA,IAAMuN,EAAI6H,KAAKC,IAAI9H,EAAG,MAAOvN,EAAIsN,EAAEq6C,EAAGr6C,EAAEq6C,EAAI,IAAIx7C,WAAWoB,GAAI,EAAID,EAAEilB,GAAKjlB,EAAEq6C,EAAElhC,IAAIzmB,EAAEomD,SAAS,EAAG94C,EAAEilB,GAAI,IAEhL,IA0bG+f,GAuCAoD,GAAazI,GAAIwa,GAjehBG,GAAI,CAACf,EAAE,KAAMgB,EAAC,IACTD,GAAEE,WAAW,KAAM,IAAK,MAAO,GACrC,WAAWx6C,EAAGC,EAAGvN,EAAGC,GACrB,GAAI,QAAe,MAAJD,IAAc,OAAc,MAAJA,GACrC,MAAM,IAAI6mD,GAAE,IAOd,OALAe,GAAEf,IAAMe,GAAEf,EAAI,CAACkB,IAAI,CAAC94C,KAAK,CAAC+4C,EAAEJ,GAAEhoD,EAAEooD,EAAGJ,EAAEA,GAAEhoD,EAAEgoD,EAAG3R,GAAG2R,GAAEhoD,EAAEq2C,GAAI6J,GAAG8H,GAAEhoD,EAAEkgD,GAAIkH,GAAGY,GAAEhoD,EAAEonD,GAAIiB,GAAGL,GAAEhoD,EAAEqoD,GAAIP,GAAGE,GAAEhoD,EAAE8nD,GAAIf,GAAGiB,GAAEhoD,EAAE+mD,GAAI9F,GAAG+G,GAAEhoD,EAAEihD,IAAKqH,OAAO,CAACrb,GAAG+a,GAAE7nD,EAAE8sC,KAAMsb,KAAK,CAACl5C,KAAK,CAAC+4C,EAAEJ,GAAEhoD,EAAEooD,EAAGJ,EAAEA,GAAEhoD,EAAEgoD,GAAIM,OAAO,CAACrb,GAAG+a,GAAE7nD,EAAE8sC,GAAI5B,KAAK2c,GAAE7nD,EAAEkrC,KAAM8b,MAAMa,GAAE7nD,EAAEgnD,MAAOrH,GAAGkI,GAAE7nD,EAAE2/C,GAAIyG,GAAGyB,GAAE7nD,EAAEomD,GAAII,GAAGqB,GAAE7nD,EAAEwmD,KAAM6B,KAAK,CAACn5C,KAAK,CAAC+4C,EAAEJ,GAAEhoD,EAAEooD,EAAGJ,EAAEA,GAAEhoD,EAAEgoD,EAAGtI,GAAGsI,GAAEhoD,EAAE0/C,IAAK4I,OAAO,IAAKzD,GAAG,CAACx1C,KAAK,CAAC+4C,EAAEJ,GAAEhoD,EAAEooD,EAAGJ,EAAEA,GAAEhoD,EAAEgoD,GAAIM,OAAO3E,MAE9V,QAAoB,OADpBvjD,EAAI66C,GAAGvtC,EAAGC,EAAGvN,EAAGC,IACHa,OAAiBd,EAAEJ,EAAIgoD,GAAEf,EAAEkB,IAAI94C,KAAMjP,EAAED,EAAI6nD,GAAEf,EAAEkB,IAAIG,OAAQloD,EAAE2nD,EAAI,IAAM,QAAoB,MAAT3nD,EAAEc,OAAiBd,EAAEJ,EAAIgoD,GAAEf,EAAEsB,KAAKl5C,KAAMjP,EAAED,EAAI6nD,GAAEf,EAAEsB,KAAKD,OAAQloD,EAAEuyB,EAAI,EAAGvyB,EAAE2nD,EAAI,MAAQ,QAAoB,MAAT3nD,EAAEc,OAAiBd,EAAEJ,EAAIgoD,GAAEf,EAAEuB,KAAKn5C,KAAMjP,EAAED,EAAI6nD,GAAEf,EAAEuB,KAAKF,QAAU,OAAmB,MAATloD,EAAEc,QAAkBd,EAAEJ,EAAIgoD,GAAEf,EAAEpC,GAAGx1C,KAAMjP,EAAED,EAAI6nD,GAAEf,EAAEpC,GAAGyD,QAC/TloD,EAAE6lB,UAAY9S,KAAKD,MACnBxF,IAAMA,EAAEq6C,EAAEp6C,GAAKvN,EAAGsN,EAAEuY,UAAY7lB,EAAE6lB,WAC3B7lB,GACNqoD,GAAG/6C,GACGA,EAAEq6C,EAAIr6C,EAAEq6C,EAAEvB,SAAW94C,EAAEq6C,EAAEvB,SAAS,EAAG94C,EAAEilB,GAAK,IAAIpmB,WAAWmB,EAAEq6C,GAAK,IAAIx7C,WAAW,GACvFvM,EAAE,CAAC,EAAE0N,GACN,IAAIC,EAAI,GAcR,OAbAA,EAAE+6C,GAAK,OAAmB,MAATh7C,EAAExM,MAAgBwM,EAAEjK,GAAK,EAC1CkK,EAAEg7C,GAAKj7C,EAAEjK,GACTkK,EAAEzM,KAAOwM,EAAExM,KACXyM,EAAEi7C,GAAK,EACPj7C,EAAE4e,IAAM,EACR5e,EAAEk7C,GAAK,EACPl7C,EAAEswC,GAAKvwC,EAAEuwC,GACT,QAAoB,MAATvwC,EAAExM,MAAgByM,EAAEyE,KAAO,KAAO,QAAoB,MAAT1E,EAAExM,MAAgByM,EAAEyE,KAAO1E,EAAEilB,EAAI,QAAoB,MAATjlB,EAAExM,MAAgByM,EAAEyE,KAAO1E,EAAE86C,KAAKtlD,OAASyK,EAAEyE,KAAO,EACxJzE,EAAEm7C,GAAK,IAAI31C,KAAKzF,EAAEuY,WAClBtY,EAAEo7C,GAAK,IAAI51C,KAAKzF,EAAEuY,WAClBtY,EAAEq7C,GAAK,IAAI71C,KAAKzF,EAAEuY,WAClBtY,EAAEs7C,GAAK,KACPt7C,EAAEu7C,GAAK1zC,KAAKgoC,KAAK7vC,EAAEyE,KAAOzE,EAAEs7C,IACrBt7C,GACN,EAAED,EAAGC,GAGN,QAFA,IAAWA,EAAEzM,OAASwM,EAAExM,KAAOyM,EAAEzM,WACjC,IAAWyM,EAAEsY,YAAcvY,EAAEuY,UAAYtY,EAAEsY,gBACvC,IAAWtY,EAAEyE,OAASzE,EAAIA,EAAEyE,KAAM1E,EAAEilB,GAAKhlB,GAC3C,GAAI,GAAKA,EACPD,EAAEq6C,EAAI,KAAMr6C,EAAEilB,EAAI,MACb,CACL,IAAIvyB,EAAIsN,EAAEq6C,EACVr6C,EAAEq6C,EAAI,IAAIx7C,WAAWoB,GACrBvN,GAAKsN,EAAEq6C,EAAElhC,IAAIzmB,EAAEomD,SAAS,EAAGhxC,KAAKE,IAAI/H,EAAGD,EAAEilB,KACzCjlB,EAAEilB,EAAIhlB,IAGT,KACD,MAAMutC,GAAG,KACRgF,GAAE,CAACxyC,EAAGC,EAAGvN,EAAGC,IACN2nD,GAAEE,WAAWx6C,EAAGC,EAAGvN,EAAGC,GAC5B,GAAGqN,EAAGC,EAAGvN,GACV,GAAI,QAAoB,MAATsN,EAAExM,MAAe,CAC9B,IACE,IAAIb,EAAIgoD,GAAG16C,EAAGvN,GACd,MAAOktC,IAET,GAAIjtC,EACF,IAAK,IAAIwC,KAAKxC,EAAE0nD,EACd,MAAM,IAAId,GAAE,WAIXv5C,EAAEy7C,OAAOpB,EAAEr6C,EAAEpN,MACpBoN,EAAEy7C,OAAOljC,UAAY9S,KAAKD,MAC1BxF,EAAEpN,KAAOF,EACTuN,EAAEo6C,EAAE3nD,GAAKsN,EACTC,EAAEsY,UAAYvY,EAAEy7C,OAAOljC,UACvBvY,EAAEy7C,OAASx7C,GACV,GAAGD,EAAGC,UACAD,EAAEq6C,EAAEp6C,GACXD,EAAEuY,UAAY9S,KAAKD,OAClB,GAAGxF,EAAGC,GACP,IAAkBtN,EAAdD,EAAIioD,GAAG36C,EAAGC,GACd,IAAKtN,KAAKD,EAAE2nD,EACV,MAAM,IAAId,GAAE,WAEPv5C,EAAEq6C,EAAEp6C,GACXD,EAAEuY,UAAY9S,KAAKD,OAClB,GAAGxF,GACJ,IAAqBtN,EAAjBuN,EAAI,CAAC,IAAK,MACd,IAAKvN,KAAKsN,EAAEq6C,EACVr6C,EAAEq6C,EAAEnmD,eAAexB,IAAMuN,EAAEvJ,KAAKhE,GAElC,OAAOuN,GACNszC,GAAE,CAACvzC,EAAGC,EAAGvN,MACVsN,EAAIs6C,GAAEE,WAAWx6C,EAAGC,EAAG,MAAO,IAC5B66C,KAAOpoD,EACFsN,GACN,GAAGA,GACJ,GAAI,QAAoB,MAATA,EAAExM,MACf,MAAM,IAAI+lD,GAAE,IAEd,OAAOv5C,EAAE86C,OACNroD,EAAE,CAAC,KAAKuN,EAAGC,EAAGvN,EAAGC,EAAGwC,GACvB,IAAIyqC,EAAI5/B,EAAE2B,KAAK04C,EACf,GAAIllD,GAAK6K,EAAE2B,KAAKsjB,EACd,OAAO,EAGT,GAAI,GADJjlB,EAAI8H,KAAKE,IAAIhI,EAAE2B,KAAKsjB,EAAI9vB,EAAGxC,KACditC,EAAEkZ,SACb74C,EAAEkZ,IAAIymB,EAAEkZ,SAAS3jD,EAAGA,EAAI6K,GAAItN,QAE5B,IAAKC,EAAI,EAAGA,EAAIqN,EAAGrN,IACjBsN,EAAEvN,EAAIC,GAAKitC,EAAEzqC,EAAIxC,GAGrB,OAAOqN,GACN,MAAMA,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,GAEtB,GADA3/B,EAAEb,SAAWwvC,EAAExvC,SAAWwgC,GAAI,IACzBjtC,EACH,OAAO,EAIT,IAFAqN,EAAIA,EAAE2B,MACJ4W,UAAY9S,KAAKD,MACfvF,EAAE64C,YAAc94C,EAAEq6C,GAAKr6C,EAAEq6C,EAAEvB,UAAW,CACxC,GAAIlZ,EACF,OAAO5/B,EAAEq6C,EAAIp6C,EAAE64C,SAASpmD,EAAGA,EAAIC,GAAIqN,EAAEilB,EAAItyB,EAE3C,GAAI,IAAMqN,EAAEilB,GAAK,IAAM9vB,EACrB,OAAO6K,EAAEq6C,EAAIp6C,EAAErF,MAAMlI,EAAGA,EAAIC,GAAIqN,EAAEilB,EAAItyB,EAExC,GAAIwC,EAAIxC,GAAKqN,EAAEilB,EACb,OAAOjlB,EAAEq6C,EAAElhC,IAAIlZ,EAAE64C,SAASpmD,EAAGA,EAAIC,GAAIwC,GAAIxC,EAI7C,GADAm0C,GAAG9mC,EAAG7K,EAAIxC,GACNqN,EAAEq6C,EAAEvB,UAAY74C,EAAE64C,SACpB94C,EAAEq6C,EAAElhC,IAAIlZ,EAAE64C,SAASpmD,EAAGA,EAAIC,GAAIwC,QAE9B,IAAKyqC,EAAI,EAAGA,EAAIjtC,EAAGitC,IACjB5/B,EAAEq6C,EAAEllD,EAAIyqC,GAAK3/B,EAAEvN,EAAIktC,GAIvB,OADA5/B,EAAEilB,EAAInd,KAAKC,IAAI/H,EAAEilB,EAAG9vB,EAAIxC,GACjBA,GACN,GAAGqN,EAAGC,EAAGvN,GAEV,GADA,IAAMA,EAAIuN,GAAKD,EAAEoB,SAAW,IAAM1O,GAAK,QAAyB,MAAdsN,EAAE2B,KAAKnO,QAAkByM,GAAKD,EAAE2B,KAAKsjB,GACnF,EAAIhlB,EACN,MAAM,IAAIs5C,GAAE,IAEd,OAAOt5C,GACN,GAAGD,EAAGC,EAAGvN,GACVo0C,GAAG9mC,EAAE2B,KAAM1B,EAAIvN,GACfsN,EAAE2B,KAAKsjB,EAAInd,KAAKC,IAAI/H,EAAE2B,KAAKsjB,EAAGhlB,EAAIvN,IACjC,GAAGsN,EAAGC,EAAGvN,EAAGC,EAAGwC,GAChB,GAAI,QAAyB,MAAd6K,EAAE2B,KAAKnO,MACpB,MAAM,IAAI+lD,GAAE,IAGd,GADAv5C,EAAIA,EAAE2B,KAAK04C,EACH,EAAJllD,GAAS6K,EAAEZ,SAAWwvC,EAAExvC,OAAQ,CAOlC,IANI,EAAI1M,GAAKA,EAAIuN,EAAID,EAAExK,UACRwK,EAAbA,EAAE84C,SAAe94C,EAAE84C,SAASpmD,EAAGA,EAAIuN,GAASpG,MAAM5F,UAAU2G,MAAMpI,KAAKwN,EAAGtN,EAAGA,EAAIuN,IAEnFvN,GAAI,EACJsgD,MACA/yC,OAAI,GAEF,MAAM,IAAIs5C,GAAE,IAEd3K,EAAEz1B,IAAInZ,EAAGC,QAETvN,GAAI,EAAIuN,EAAID,EAAE07C,WAEhB,MAAO,CAAC5oD,EAAEmN,EAAGojC,EAAE3wC,IACdumD,GAAE,CAACj5C,EAAGC,EAAGvN,EAAGC,KACb2nD,GAAE7nD,EAAEgnD,MAAMz5C,EAAGC,EAAG,EAAGtN,EAAGD,GAAG,GAClB,KAQL00C,GAAK,KAAMgG,GAAK,GAAIjC,GAAK,GAAI1J,GAAK,EAAGyL,GAAK,KAAMT,IAAK,EAAI8M,GAAI,KAAM/L,GAAK,GAAImO,GAAK,CAAC37C,EAAGC,EAAI,MAE3F,KADAD,EAAI8nC,GAAG9nC,IAEL,MAAO,CAAC47C,KAAK,GAAIj6C,KAAK,MAGxB,GAAI,GADJ1B,EAAIlN,OAAO4N,OAAO,CAAC43C,IAAG,EAAIzD,GAAG,GAAI70C,IACvB60C,GACR,MAAM,IAAIyE,GAAE,IAEdv5C,EAAIA,EAAEmiC,MAAM,KAAKzqC,OAAO+nC,KAAOA,GAC/B,IAAK,IAAI/sC,EAAI00C,GAAIz0C,EAAI,IAAKwC,EAAI,EAAGA,EAAI6K,EAAExK,OAAQL,IAAK,CAClD,IAAIyqC,EAAIzqC,IAAM6K,EAAExK,OAAS,EACzB,GAAIoqC,GAAK3/B,EAAEw7C,OACT,MAKF,GAHA/oD,EAAIioD,GAAGjoD,EAAGsN,EAAE7K,IACZxC,EAAIwlD,EAAGxlD,EAAI,IAAMqN,EAAE7K,IACnBzC,EAAEggD,MAAQ9S,GAAKA,GAAK3/B,EAAEs4C,MAAQ7lD,EAAIA,EAAEggD,GAAGlhD,OAClCouC,GAAK3/B,EAAEo4C,GACV,IAAKzY,EAAI,EAAG,QAAoB,MAATltC,EAAEc,OACvB,GAAId,EAAI6oD,GAAG5oD,GAAIA,EAAIm1C,GAAGuQ,EAAG1lD,GAAID,GAAIA,EAAIipD,GAAGhpD,EAAG,CAACmiD,GAAG70C,EAAE60C,GAAK,IAAInzC,KAAM,GAAKi+B,IACnE,MAAM,IAAI2Z,GAAE,IAKpB,MAAO,CAACqC,KAAKjpD,EAAGgP,KAAKjP,IACpByyC,GAAKnlC,IACN,IAAK,IAAIC,IAAK,CACZ,GAAID,IAAMA,EAAEy7C,OACV,OAAOz7C,EAAIA,EAAEu6C,EAAEvB,GAAI/4C,EAAI,MAAQD,EAAEA,EAAExK,OAAS,GAAK,GAAGwK,KAAKC,IAAMD,EAAIC,EAAID,EAEzEC,EAAIA,EAAI,GAAGD,EAAEpN,QAAQqN,IAAMD,EAAEpN,KAC7BoN,EAAIA,EAAEy7C,SAEPxW,GAAK,CAACjlC,EAAGC,KACV,IAAK,IAAIvN,EAAI,EAAGC,EAAI,EAAGA,EAAIsN,EAAEzK,OAAQ7C,IACnCD,GAAKA,GAAK,GAAKA,EAAIuN,EAAEK,WAAW3N,GAAK,EAEvC,OAAQqN,EAAItN,IAAM,GAAKw6C,GAAG13C,QACzBmlD,GAAK,CAAC36C,EAAGC,KACV,IAAIvN,EACJ,GAAIA,GAAKA,EAAImpD,GAAG77C,EAAG,MAAQtN,EAAIsN,EAAE1N,EAAEq2C,GAAK,EAAI,EAC1C,MAAM,IAAI4Q,GAAE7mD,EAAGsN,GAEjB,IAAKtN,EAAIw6C,GAAGjI,GAAGjlC,EAAEjK,GAAIkK,IAAKvN,EAAGA,EAAIA,EAAEopD,GAAI,CACrC,IAAInpD,EAAID,EAAEE,KACV,GAAIF,EAAE+oD,OAAO1lD,KAAOiK,EAAEjK,IAAMpD,IAAMsN,EAChC,OAAOvN,EAGX,OAAOsN,EAAE1N,EAAEq2C,GAAG3oC,EAAGC,IAChBstC,GAAK,CAACvtC,EAAGC,EAAGvN,EAAGC,KAChBqN,EAAI,IAAIogC,GAAGpgC,EAAGC,EAAGvN,EAAGC,GACpBsN,EAAIglC,GAAGjlC,EAAEy7C,OAAO1lD,GAAIiK,EAAEpN,MACtBoN,EAAE87C,GAAK5O,GAAGjtC,GACHitC,GAAGjtC,GAAKD,GACd+7C,GAAK/7C,IACN,IAAIC,EAAI,CAAC,IAAK,IAAK,MAAU,EAAJD,GAEzB,OADI,IAAJA,IAAYC,GAAK,KACVA,GACN47C,GAAK,CAAC77C,EAAGC,IACNwsC,GACK,GAEJxsC,EAAEsG,SAAS,MAAiB,IAATvG,EAAExM,KACpByM,EAAEsG,SAAS,QAAmB,IAATvG,EAAExM,OAAeyM,EAAEsG,SAAS,QAAmB,GAATvG,EAAExM,MACxD,EAKJ,EAFE,EAGR4yC,GAAK,CAACpmC,EAAGC,KACV,IACE,OAAO06C,GAAG36C,EAAGC,GAAI,GACjB,MAAOvN,IAET,OAAOmpD,GAAG77C,EAAG,OAQZg8C,GAAKh8C,IAEN,KADAA,EAAImrC,GAAGnrC,IAEL,MAAM,IAAIu5C,GAAE,GAEd,OAAOv5C,GACNi8C,GAAK,CAACj8C,EAAGC,GAAI,KACd0/B,MAAOA,GAAK,WACV5tC,KAAK8jD,EAAI,KACL5hD,UAAY,GAAIlB,OAAOghC,iBAAiB4L,GAAG1rC,UAAW,CAACF,OAAO,CAAC,MACnE,OAAOhC,KAAK4P,MACX,IAAIjP,GACLX,KAAK4P,KAAOjP,IACVwpD,MAAM,CAAC,MACT,OAAOnqD,KAAK8jD,EAAEqG,OACb,IAAIxpD,GACLX,KAAK8jD,EAAEqG,MAAQxpD,IACZ0O,SAAS,CAAC,MACb,OAAOrP,KAAK8jD,EAAEz0C,UACb,IAAI1O,GACLX,KAAK8jD,EAAEz0C,SAAW1O,OAEpBsN,EAAIjN,OAAO4N,OAAO,IAAIg/B,GAAM3/B,IAC3B,GAAKC,IAAMA,EA9BN,MACN,IAAK,IAAID,EAAI,EAAG,MAAQA,EAAGA,IACzB,IAAKmrC,GAAGnrC,GACN,OAAOA,EAGX,MAAM,IAAIu5C,GAAE,KAwBIzZ,IAChB9/B,EAAEouC,EAAInuC,EACCkrC,GAAGlrC,GAAKD,GACdi2C,GAAK,CAACpZ,KAAK78B,IACZA,EAAEvN,EAAI26C,GAAGptC,EAAE2B,KAAK4uC,IAAI99C,EACpBuN,EAAEvN,EAAEoqC,MAAQ78B,EAAEvN,EAAEoqC,KAAK78B,IACpBu/B,GAAG,KACJ,MAAM,IAAIga,GAAE,MACTF,GAAK,CAACr5C,EAAGC,KACZmtC,GAAGptC,GAAK,CAACvN,EAAEwN,IACVk8C,GAAK,CAACn8C,EAAGC,KACV,IAAIvN,EAAI,MAAQuN,EAAGtN,GAAKsN,EACxB,GAAIvN,GAAK00C,GACP,MAAM,IAAImS,GAAE,IAEd,IAAK7mD,IAAMC,EAAG,CACZ,IAAIwC,EAAIwmD,GAAG17C,EAAG,CAACs4C,IAAG,IAGlB,GAFAt4C,EAAI9K,EAAEymD,MACNzmD,EAAIA,EAAEwM,MACA+wC,GACJ,MAAM,IAAI6G,GAAE,IAEd,GAAI,QAAoB,MAATpkD,EAAE3B,MACf,MAAM,IAAI+lD,GAAE,IAGhBt5C,EAAI,CAACpC,KAAKmC,EAAGo8C,GAAG,GAAIpD,GAAG/4C,EAAGo8C,GAAG,KAC7Br8C,EAAIA,EAAEu6C,EAAEt6C,IACNs6C,EAAIt6C,EACNA,EAAEzO,KAAOwO,EACTtN,EAAI00C,GAAKpnC,EAAI7K,IAAMA,EAAEu9C,GAAKzyC,EAAG9K,EAAEolD,GAAKplD,EAAEolD,EAAE8B,GAAG3lD,KAAKuJ,KAC/Cq8C,GAAK,CAACt8C,EAAGC,EAAGvN,KACb,IAAIC,EAAIgpD,GAAG37C,EAAG,CAACy7C,QAAO,IAAK95C,KAE3B,KADA3B,EAAIu4C,GAAGv4C,KACG,MAAQA,GAAK,OAASA,EAC9B,MAAM,IAAIu5C,GAAE,IAEd,IAAIpkD,EAAIixC,GAAGzzC,EAAGqN,GACd,GAAI7K,EACF,MAAM,IAAIokD,GAAEpkD,GAEd,IAAKxC,EAAEL,EAAEkgD,GACP,MAAM,IAAI+G,GAAE,IAEd,OAAO5mD,EAAEL,EAAEkgD,GAAG7/C,EAAGqN,EAAGC,EAAGvN,IACtB6pD,GAAK,CAACv8C,EAAGC,EAAGvN,UACb,IAAsBA,IAAMA,EAAIuN,EAAGA,EAAI,KACvCq8C,GAAGt8C,EAAO,KAAJC,EAAUvN,IACfwnD,GAAK,CAACl6C,EAAGC,KACV,IAAK6nC,GAAG9nC,GACN,MAAM,IAAIu5C,GAAE,IAEd,IAAI7mD,EAAIipD,GAAG17C,EAAG,CAACw7C,QAAO,IAAK95C,KAC3B,IAAKjP,EACH,MAAM,IAAI6mD,GAAE,IAEdt5C,EAAIs4C,GAAGt4C,GACP,IAAItN,EAAIyzC,GAAG1zC,EAAGuN,GACd,GAAItN,EACF,MAAM,IAAI4mD,GAAE5mD,GAEd,IAAKD,EAAEJ,EAAEihD,GACP,MAAM,IAAIgG,GAAE,IAEd7mD,EAAEJ,EAAEihD,GAAG7gD,EAAGuN,EAAGD,IACZu7C,GAAKv7C,IAEN,KADAA,EAAI27C,GAAG37C,GAAG2B,MAER,MAAM,IAAI43C,GAAE,IAEd,IAAKv5C,EAAE1N,EAAE0/C,GACP,MAAM,IAAIuH,GAAE,IAEd,OAAOzR,GAAG3C,GAAGnlC,EAAEy7C,QAASz7C,EAAE1N,EAAE0/C,GAAGhyC,KAC9B6tC,GAAK,CAAC7tC,EAAGC,EAAGvN,KACb,GAAI,KAAOsN,EACT,MAAM,IAAIu5C,GAAE,IAEd,GAAI,iBAAmBt5C,EAAG,CACxB,IAAItN,EAAI,CAACQ,EAAE,EAAG,KAAK,EAAGiwC,EAAE,IAAK,KAAK,IAAKpjC,EAAE,KAAM,KAAK,MAAOC,GAC3D,QAAI,IAAsBtN,EACxB,MAAM0E,MAAM,2BAA2B4I,GAEzCA,EAAItN,EAGN,GADAD,EAAQ,GAAJuN,EAA+C,WAArC,IAAsBvN,EAAI,IAAMA,GAAY,MAAQ,EAC9D,iBAAmBsN,EACrB,IAAI7K,EAAI6K,MACH,CACLA,EAAIm4C,EAAGn4C,GACP,IACE7K,EAAIwmD,GAAG37C,EAAG,CAACq4C,KAAS,OAAJp4C,KAAc0B,KAC9B,MAAOi+B,KAIX,GADAjtC,GAAI,EACI,GAAJsN,EACF,GAAI9K,GACF,GAAQ,IAAJ8K,EACF,MAAM,IAAIs5C,GAAE,SAGdpkD,EAAImnD,GAAGt8C,EAAGtN,EAAG,GAAIC,GAAI,EAGzB,IAAKwC,EACH,MAAM,IAAIokD,GAAE,IAGd,GADA,OAAmB,MAATpkD,EAAE3B,QAAkByM,IAAM,KAC5B,MAAJA,GAAa,QAAoB,MAAT9K,EAAE3B,MAC5B,MAAM,IAAI+lD,GAAE,IAEd,IAAK5mD,IAAMD,EAAIyC,EAAI,QAAoB,MAATA,EAAE3B,MAAgB,GAAK,QAAoB,MAAT2B,EAAE3B,QAAkB,MAAQuoD,GAAG97C,IAAU,IAAJA,GAAW,GAAK47C,GAAG1mD,EAAG4mD,GAAG97C,IAAM,IAClI,MAAM,IAAIs5C,GAAE7mD,GAEd,GAAQ,IAAJuN,IAAYtN,EAAG,CAGjB,KADAD,EAAI,iBADJA,EAAIyC,GACuBwmD,GAAGjpD,EAAG,CAAC2lD,IAAG,IAAK12C,KAAOjP,GAC1CJ,EAAEgoD,EACP,MAAM,IAAIf,GAAE,IAEd,GAAI,QAAoB,MAAT7mD,EAAEc,MACf,MAAM,IAAI+lD,GAAE,IAEd,GAAI,QAAoB,MAAT7mD,EAAEc,MACf,MAAM,IAAI+lD,GAAE,IAEd,GAAI5mD,EAAIkpD,GAAGnpD,EAAG,KACZ,MAAM,IAAI6mD,GAAE5mD,GAEdD,EAAEJ,EAAEgoD,EAAE5nD,EAAG,CAACgS,KAAK,EAAG6T,UAAU9S,KAAKD,QAMnC,OAJAvF,IAAM,QACN9K,EAAI8mD,GAAG,CAACt6C,KAAKxM,EAAGymD,KAAKzW,GAAGhwC,GAAI+mD,MAAMj8C,EAAGu5C,UAAS,EAAIp4C,SAAS,EAAG3O,EAAE0C,EAAE1C,EAAG+pD,GAAG,GAAI3qC,OAAM,KAChFpf,EAAEoqC,MAAQ1nC,EAAE1C,EAAEoqC,KAAK1nC,IACpB1C,EAAEgqD,cAAoB,EAAJx8C,IAAUk6C,KAAOA,GAAK,IAAKn6C,KAAKm6C,KAAOA,GAAGn6C,GAAK,IAC3D7K,GACNunD,GAAK,CAAC18C,EAAGC,EAAGvN,KACb,GAAI,OAASsN,EAAEouC,EACb,MAAM,IAAImL,GAAE,GAEd,IAAKv5C,EAAEw5C,WAAax5C,EAAEvN,EAAE8sC,GACtB,MAAM,IAAIga,GAAE,IAEd,GAAI,GAAK7mD,GAAK,GAAKA,GAAK,GAAKA,EAC3B,MAAM,IAAI6mD,GAAE,IAEdv5C,EAAEoB,SAAWpB,EAAEvN,EAAE8sC,GAAGv/B,EAAGC,EAAGvN,GAC1BsN,EAAEw8C,GAAK,IACNG,GAAK,KACNpD,MAAMA,GAAI,SAASv5C,EAAGC,GACpBlO,KAAKa,KAAO,aACZb,KAAK4P,KAAO1B,EACZlO,KAAK6qD,GAAK,SAASlqD,GACjBX,KAAKutC,GAAK5sC,GAEZX,KAAK6qD,GAAG58C,GACRjO,KAAK4kB,QAAU,aACZ1iB,UAAYoD,QAASkiD,GAAEtlD,UAAU4G,YAAc0+C,GAAG,CAAC,IAAIriD,QAAQ8I,IAClEwtC,GAAGxtC,GAAK,IAAIu5C,GAAEv5C,GACdwtC,GAAGxtC,GAAG8zB,MAAQ,gCAEXuU,GAAK,CAACroC,EAAGC,EAAGvN,KACjBsN,EAAIm4C,EAAG,QAAUn4C,GACjB,IAAIrN,EAvRN,SAAYqN,EAAGC,GACb,IAAIvN,EAAI,EAGR,OAFAsN,IAAMtN,GAAK,KACXuN,IAAMvN,GAAK,KACJA,EAmRCyjD,GAAKl2C,IAAKvN,GAClB01C,KAAOA,GAAK,IACZ,IAAIjzC,EAAIizC,MAAQ,EAAI,EACpBiR,GAAGlkD,EAAG,CAAC0nC,KAAK+C,IACVA,EAAE4Z,UAAW,GACZnN,MAAM,KACP35C,GAAKA,EAAE0M,QAAU1M,EAAE0M,OAAO5J,QAAU9C,EAAE,KACrCirC,KAAK,CAACiC,EAAGH,EAAG3rC,EAAGK,KAChB,IAAK,IAAI7B,EAAI,EAAG6zC,EAAI,EAAGA,EAAIhyC,EAAGgyC,IAAK,CACjC,IACE,IAAIlhB,EAAIhlB,IACR,MAAOuE,GACP,MAAM,IAAI+0C,GAAE,IAEd,QAAI,IAAWt0B,GAAK,IAAM3yB,EACxB,MAAM,IAAIinD,GAAE,GAEd,GAAI,MAASt0B,EACX,MAEF3yB,IACAmtC,EAAE3rC,EAAIqyC,GAAKlhB,EAGb,OADA3yB,IAAMstC,EAAEj+B,KAAK4W,UAAY9S,KAAKD,OACvBlT,GACNmnD,MAAM,CAAC7Z,EAAGH,EAAG3rC,EAAGK,KACjB,IAAK,IAAI7B,EAAI,EAAGA,EAAI6B,EAAG7B,IACrB,IACEI,EAAE+sC,EAAE3rC,EAAIxB,IACR,MAAO6zC,GACP,MAAM,IAAIoT,GAAE,IAIhB,OADAplD,IAAMyrC,EAAEj+B,KAAK4W,UAAY9S,KAAKD,OACvBlT,KAETiqD,GAAGv8C,EAAGrN,EAAGwC,IACJknD,GAAK,GAAYP,QAAK,EAC7B,SAASpU,KAEP,OAAO2L,GADPyI,IAAM,GACQ,GAAK,GAErB,SAASe,GAAG78C,GACV,QAAI,IAAWA,EACb,MAAO,WAGT,IAAIC,GADJD,EAAIA,EAAEI,QAAQ,iBAAkB,MACtBE,WAAW,GACrB,OAAO,IAAML,GAAK,IAAMA,EAAI,IAAID,EAAMA,EAExC,SAAS88C,GAAG98C,EAAGC,GAEb,MAAO,CAAC,CADRD,EAAI68C,GAAG78C,IACK,WACV,OAAOC,EAAE2F,MAAM7T,KAAM+N,aACpBE,GAEL,SAAS48C,KACP7qD,KAAKsxC,EAAI,MAAC,GACVtxC,KAAK4mD,GAAK,GAEZ,IAAIhK,GAAI,IAAIiO,GAAMG,QAAK,EACvB,SAASxC,GAAEv6C,GACT,MAAM,IAAI+8C,GAAG/8C,GAEf,IAAIg9C,GAAKh9C,IACPA,GAAKu6C,GAAE,oCAAsCv6C,GACtC2uC,GAAEz7C,IAAI8M,GAAG1M,OACf2pD,GAAKj9C,IACN,OAAOA,GACL,UAAK,EACH,OAAO,EACT,KAAK,KACH,OAAO,EACT,KAAK,EACH,OAAO,EACT,KAAK,EACH,OAAO,EACT,QACE,OAAO2uC,GAAEyD,GAAG,CAACkH,GAAG,EAAGhmD,MAAM0M,MAG/B,SAASk9C,GAAGl9C,GACV,IAAIC,EAAI5I,MAAO3E,EAAIoqD,GAAG98C,GAAG,SAASrN,GAChCZ,KAAKa,KAAOoN,EACZjO,KAAK4kB,QAAUhkB,OAEf,KADAA,EAAI0E,MAAM1E,GAAGmhC,SACI/hC,KAAK+hC,MAAQ/hC,KAAKuH,WAAa,KAAO3G,EAAEyN,QAAQ,qBAAsB,QAOzF,OALA1N,EAAEuB,UAAYlB,OAAOY,OAAOsM,EAAEhM,WAC9BvB,EAAEuB,UAAU4G,YAAcnI,EAC1BA,EAAEuB,UAAUqF,SAAW,WACrB,YAAO,IAAWvH,KAAK4kB,QAAU5kB,KAAKa,KAAO,GAAGb,KAAKa,SAASb,KAAK4kB,WAE9DjkB,EAET,IAAIyqD,QAAK,EAAQC,QAAK,EACtB,SAAShE,GAAEp5C,GACT,IAAK,IAAIC,EAAI,GAAIkzC,EAAEnzC,IACjBC,GAAKm9C,GAAGjK,EAAEnzC,MAEZ,OAAOC,EAET,IAAIo9C,GAAK,GACT,SAASC,KACP,KAAOD,GAAG7nD,QAAS,CACjB,IAAIwK,EAAIq9C,GAAG/hB,MACXt7B,EAAEy/B,EAAEY,IAAK,EACTrgC,EAAU,UAGd,IAAIk2C,QAAK,EAAQsG,GAAK,GACtB,SAASzU,GAAG/nC,EAAGC,GACb,SAAK,IAAWA,GAAKs6C,GAAE,+BAAgCv6C,EAAEkjC,GACvDjjC,EAAID,EAAEiyC,GAAGhyC,GAAID,EAAIA,EAAEkjC,EAErB,OAAOjjC,EAET,IAAIm7C,GAAK,GACT,SAASI,GAAGx7C,GAEV,IAAIC,EAAIm5C,GADRp5C,EAAIi6C,GAAGj6C,IAGP,OADA+5C,GAAG/5C,GACIC,EAET,SAAS45C,GAAG75C,EAAGC,GACb,IAAIvN,EAAI0oD,GAAGp7C,GAEX,YADA,IAAWtN,GAAK6nD,GAAEt6C,EAAI,qBAAuBu7C,GAAGx7C,IACzCtN,EAET,SAASsnD,MAET,IAAIF,IAAK,EACT,SAASwB,GAAGt7C,KACRA,EAAE/J,MAAM3C,MACV,IAAM0M,EAAE/J,MAAM3C,QAAU0M,EAAEyrC,EAAIzrC,EAAEqzC,EAAEkK,EAAEv9C,EAAEyrC,GAAKzrC,EAAEmmC,EAAE9zC,EAAEkrD,EAAEv9C,EAAElN,IAYvD,IAAIioD,GAAK,GAKLE,QAAK,EACT,SAASI,GAAGr7C,GACV,MAAM,IAAIi7C,GAAGj7C,GAEf,SAASk7C,GAAGl7C,EAAGC,GAIb,OAHAA,EAAEkmC,GAAKlmC,EAAEnN,GAAKuoD,GAAG,8CACfp7C,EAAEozC,KAAQpzC,EAAEwrC,GAAK4P,GAAG,oDACtBp7C,EAAEhK,MAAQ,CAAC3C,MAAM,GACVkqD,GAAGzqD,OAAOY,OAAOqM,EAAG,CAACy/B,EAAE,CAACnsC,MAAM2M,MAEvC,SAASu9C,GAAGx9C,GACV,MAAI,oBAAuBy9C,sBAClBD,GAAKv9C,GAAKA,EAAGD,IAEtB85C,GAAK,IAAI2D,qBAAqBx9C,IAC5Bq7C,GAAGr7C,EAAEw/B,KAOPua,GAAK/5C,IACH65C,GAAG4D,WAAWz9C,KANhBu9C,GAAKv9C,IACH,IAAIvN,EAAIuN,EAAEw/B,EAEV,OADA/sC,EAAE+4C,GAAKqO,GAAG6D,SAAS19C,EAAG,CAACw/B,EAAE/sC,GAAIuN,GACtBA,IAKCD,IAEZ,IAAIo8C,GAAK,GACT,SAASwB,GAAG59C,GACV,KAAOA,EAAExK,QAAS,CAChB,IAAIyK,EAAID,EAAEs7B,MACVt7B,EAAEs7B,KAAFt7B,CAAQC,IAGZ,SAASm2C,GAAGp2C,GACV,OAAOjO,KAAK8rD,aAAaxK,EAAErzC,GAAK,IAElC,IAAI89C,GAAK,GAAIC,GAAK,GAClB,SAASR,GAAEv9C,EAAGC,EAAGvN,GACf,SAASC,EAAEmB,IACTA,EAAIpB,EAAEoB,IACJ0B,SAAWwK,EAAExK,QAAU6lD,GAAG,mCAC5B,IAAK,IAAIlnD,EAAI,EAAGA,EAAI6L,EAAExK,SAAUrB,EAC9B6pD,GAAGh+C,EAAE7L,GAAIL,EAAEK,IAGf6L,EAAE9I,SAAQ,SAASpD,GACjBiqD,GAAGjqD,GAAKmM,KAEV,IAAI9K,EAAI0E,MAAMoG,EAAEzK,QAASoqC,EAAI,GAAIH,EAAI,EACrCx/B,EAAE/I,QAAQ,CAACpD,EAAGK,KACZinD,GAAGlnD,eAAeJ,GAAKqB,EAAEhB,GAAKinD,GAAGtnD,IAAM8rC,EAAElpC,KAAK5C,GAAIgqD,GAAG5pD,eAAeJ,KAAOgqD,GAAGhqD,GAAK,IAAKgqD,GAAGhqD,GAAG4C,KAAK,KACjGvB,EAAEhB,GAAKinD,GAAGtnD,KACR2rC,IACIG,EAAEpqC,QAAU7C,EAAEwC,QAGxB,IAAMyqC,EAAEpqC,QAAU7C,EAAEwC,GAEtB,SAAS8oD,GAAGj+C,GACV,OAAOA,GACL,KAAK,EACH,OAAO,EACT,KAAK,EACH,OAAO,EACT,KAAK,EACH,OAAO,EACT,KAAK,EACH,OAAO,EACT,QACE,MAAM,IAAI/E,UAAU,sBAAsB+E,IAgBhD,SAASg+C,GAAGh+C,EAAGC,EAAGvN,EAAI,IACpB,KAAM,mBAAoBuN,GACxB,MAAM,IAAIhF,UAAU,4DAfxB,SAAY+E,EAAGC,EAAGvN,EAAI,IACpB,IAAIC,EAAIsN,EAAErN,KAEV,GADAoN,GAAKu6C,GAAE,SAAS5nD,kDACZyoD,GAAGlnD,eAAe8L,GAAI,CACxB,GAAItN,EAAEy9C,GACJ,OAEFoK,GAAE,yBAAyB5nD,YAE7ByoD,GAAGp7C,GAAKC,SACD89C,GAAG/9C,GACV89C,GAAG5pD,eAAe8L,KAAOC,EAAI69C,GAAG99C,UAAW89C,GAAG99C,GAAIC,EAAE/I,QAAQ/B,GAAKA,MAMjE+oD,CAAGl+C,EAAGC,EAAGvN,GAEX,SAASyrD,GAAGn+C,GACVu6C,GAAEv6C,EAAEy/B,EAAE0G,EAAE9zC,EAAEO,KAAO,6BAEnB,SAASwrD,MAET,SAASC,GAAGr+C,EAAGC,EAAGvN,GAChB,QAAI,IAAWsN,EAAEC,GAAGurC,EAAG,CACrB,IAAI74C,EAAIqN,EAAEC,GACVD,EAAEC,GAAK,WAEL,OADAD,EAAEC,GAAGurC,EAAEt3C,eAAe4L,UAAUtK,SAAW+kD,GAAE,aAAa7nD,kDAAkDoN,UAAUtK,6BAA6BwK,EAAEC,GAAGurC,OACjJxrC,EAAEC,GAAGurC,EAAE1rC,UAAUtK,QAAQoQ,MAAM7T,KAAM+N,YAE9CE,EAAEC,GAAGurC,EAAI,GACTxrC,EAAEC,GAAGurC,EAAE74C,EAAEw0C,IAAMx0C,GAGnB,SAAS2rD,GAAGt+C,EAAGC,EAAGvN,GAChBD,EAAEyB,eAAe8L,UAAO,IAAWtN,QAAK,IAAWD,EAAEuN,GAAGwrC,QAAK,IAAW/4C,EAAEuN,GAAGwrC,EAAE94C,KAAO6nD,GAAE,gCAAgCv6C,YAAaq+C,GAAG5rD,EAAGuN,EAAGA,GAAIvN,EAAEyB,eAAexB,IAAM6nD,GAAE,uFAAuF7nD,OAAQD,EAAEuN,GAAGwrC,EAAE94C,GAAKuN,IAAMxN,EAAEuN,GAAKC,OAAG,IAAWvN,IAAMD,EAAEuN,GAAGw9C,GAAK9qD,IAEnU,SAAS6rD,GAAGv+C,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,EAAGH,EAAG3rC,GAC/B/B,KAAKa,KAAOoN,EACZjO,KAAK8I,YAAcoF,EACnBlO,KAAKuhD,EAAI5gD,EACTX,KAAKwrD,EAAI5qD,EACTZ,KAAKmxC,EAAI/tC,EACTpD,KAAKkqD,GAAKrc,EACV7tC,KAAKkgD,GAAKxS,EACV1tC,KAAKgqD,GAAKjoD,EACV/B,KAAKmnD,GAAK,GAEZ,SAASsF,GAAGx+C,EAAGC,EAAGvN,GAChB,KAAOuN,IAAMvN,GACXuN,EAAEgyC,IAAMsI,GAAE,gCAAgC7nD,EAAEE,4BAA4BqN,EAAErN,QAASoN,EAAIC,EAAEgyC,GAAGjyC,GAAIC,EAAIA,EAAEijC,EAExG,OAAOljC,EAET,SAASy+C,GAAGz+C,EAAGC,GACb,OAAI,OAASA,GACJlO,KAAKyiD,IAAM+F,GAAE,uBAAuBxoD,KAAKa,MAAS,IAE3DqN,EAAEw/B,GAAK8a,GAAE,gBAAgBmE,GAAGz+C,YAAYlO,KAAKa,QAC7CqN,EAAEw/B,EAAE3sC,GAAKynD,GAAE,mDAAmDxoD,KAAKa,MAC5D4rD,GAAGv+C,EAAEw/B,EAAE3sC,EAAGmN,EAAEw/B,EAAE0G,EAAE9zC,EAAGN,KAAKM,IAEjC,SAASssD,GAAG3+C,EAAGC,GACb,GAAI,OAASA,EAAG,CAEd,GADAlO,KAAKyiD,IAAM+F,GAAE,uBAAuBxoD,KAAKa,MACrCb,KAAKggD,GAAI,CACX,IAAIr/C,EAAIX,KAAK8iD,KAEb,OADA,OAAS70C,GAAKA,EAAEtJ,KAAK3E,KAAKwrD,EAAG7qD,GACtBA,EAET,OAAO,EAMT,GAJAuN,EAAEw/B,GAAK8a,GAAE,gBAAgBmE,GAAGz+C,YAAYlO,KAAKa,QAC7CqN,EAAEw/B,EAAE3sC,GAAKynD,GAAE,mDAAmDxoD,KAAKa,OAClEb,KAAKg+C,IAAM9vC,EAAEw/B,EAAE0G,EAAE4J,IAAMwK,GAAE,mCAAmCt6C,EAAEw/B,EAAE4T,EAAIpzC,EAAEw/B,EAAE4T,EAAEzgD,KAAOqN,EAAEw/B,EAAE0G,EAAEvzC,0BAA0Bb,KAAKa,QACvHF,EAAI8rD,GAAGv+C,EAAEw/B,EAAE3sC,EAAGmN,EAAEw/B,EAAE0G,EAAE9zC,EAAGN,KAAKM,GACxBN,KAAKggD,GACP,YAAO,IAAW9xC,EAAEw/B,EAAEgM,GAAK8O,GAAE,mDAAoDxoD,KAAKmrD,IACpF,KAAK,EACHj9C,EAAEw/B,EAAE4T,IAAMthD,KAAOW,EAAIuN,EAAEw/B,EAAEgM,EAAI8O,GAAE,mCAAmCt6C,EAAEw/B,EAAE4T,EAAIpzC,EAAEw/B,EAAE4T,EAAEzgD,KAAOqN,EAAEw/B,EAAE0G,EAAEvzC,0BAA0Bb,KAAKa,QAC5H,MACF,KAAK,EACHF,EAAIuN,EAAEw/B,EAAEgM,EACR,MACF,KAAK,EACH,GAAIxrC,EAAEw/B,EAAE4T,IAAMthD,KACZW,EAAIuN,EAAEw/B,EAAEgM,MACH,CACL,IAAI94C,EAAIsN,EAAE2+C,QACVlsD,EAAIX,KAAK+qD,GAAGpqD,EAAGuqD,IAAG,WAChBtqD,EAAU,aAEZ,OAASqN,GAAKA,EAAEtJ,KAAK3E,KAAKwrD,EAAG7qD,GAE/B,MACF,QACE6nD,GAAE,+BAGR,OAAO7nD,EAET,SAASmsD,GAAG7+C,EAAGC,GACb,OAAI,OAASA,GACJlO,KAAKyiD,IAAM+F,GAAE,uBAAuBxoD,KAAKa,MAAS,IAE3DqN,EAAEw/B,GAAK8a,GAAE,gBAAgBmE,GAAGz+C,YAAYlO,KAAKa,QAC7CqN,EAAEw/B,EAAE3sC,GAAKynD,GAAE,mDAAmDxoD,KAAKa,MACnEqN,EAAEw/B,EAAE0G,EAAE4J,IAAMwK,GAAE,mCAAmCt6C,EAAEw/B,EAAE0G,EAAEvzC,0BAA0Bb,KAAKa,QAC/E4rD,GAAGv+C,EAAEw/B,EAAE3sC,EAAGmN,EAAEw/B,EAAE0G,EAAE9zC,EAAGN,KAAKM,IAEjC,SAASysD,GAAG9+C,EAAGC,EAAGvN,EAAGC,GACnBZ,KAAKa,KAAOoN,EACZjO,KAAKM,EAAI4N,EACTlO,KAAKyiD,GAAK9hD,EACVX,KAAKg+C,GAAKp9C,EACVZ,KAAKggD,IAAK,EACVhgD,KAAKwrD,EAAIxrD,KAAK+qD,GAAK/qD,KAAK8iD,GAAK9iD,KAAKonD,GAAKpnD,KAAKmrD,GAAKnrD,KAAK8qD,QAAK,OAC3D,IAAW58C,EAAEijC,EAAInxC,KAAKgtD,WAAaJ,IAAM5sD,KAAKgtD,WAAapsD,EAAI8rD,GAAKI,GAAI9sD,KAAK45C,EAAI,MAEnF,SAASqT,GAAGh/C,EAAGC,EAAGvN,GAChBD,EAAEyB,eAAe8L,IAAMq7C,GAAG,4CAC1B,IAAW5oD,EAAEuN,GAAGwrC,QAAK,IAAW94C,EAAID,EAAEuN,GAAGwrC,EAAE94C,GAAKuN,GAAKxN,EAAEuN,GAAKC,EAAGxN,EAAEuN,GAAGmnC,GAAKz0C,GAE3E,IAAIusD,GAAK,GAAIC,GAAKl/C,IAChB,IAAIC,EAAIg/C,GAAGj/C,GAEX,OADAC,IAAMD,GAAKi/C,GAAGzpD,SAAWypD,GAAGzpD,OAASwK,EAAI,GAAIi/C,GAAGj/C,GAAKC,EAAIwnC,EAAGv0C,IAAI8M,IACzDC,GAeT,SAASy6C,GAAE16C,EAAGC,GAEZ,IAAIvN,GADJsN,EAAIo5C,GAAEp5C,IACIuG,SAAS,KAhBb,EAACvG,EAAGC,KACV,IAAIvN,EAAI,GACR,OAAO,WAGL,GAFAA,EAAE8C,OAAS,EACXzC,OAAO4N,OAAOjO,EAAGoN,WACbE,EAAEuG,SAAS,KAAM,CACnB,IAAI5T,EAAIF,EAAE,WAAauN,GACvBrN,EAAID,GAAKA,EAAE8C,OAAS7C,EAAEiT,MAAM,KAAM,CAAC3F,GAAG/J,OAAOxD,IAAMC,EAAEH,KAAK,KAAMyN,QAEhEtN,EAAIusD,GAAGj/C,GAAG2F,MAAM,KAAMlT,GAExB,OAAOC,IAKiBwsD,CAAGn/C,EAAGC,GAAKi/C,GAAGj/C,GAExC,MADA,mBAAqBvN,GAAK6nD,GAAE,2CAA2Cv6C,MAAMC,KACtEvN,EAET,IAAI0sD,QAAK,EACT,SAASC,GAAGr/C,EAAGC,GAIb,IAAItN,EAAI,GAAIwC,EAAI,GAEhB,MADA8K,EAAE/I,SAJF,SAASxE,EAAEktC,GACTzqC,EAAEyqC,IAAMwb,GAAGxb,KAAOme,GAAGne,GAAKme,GAAGne,GAAG1oC,QAAQxE,IAAMC,EAAE+D,KAAKkpC,GAAIzqC,EAAEyqC,IAAK,OAI5D,IAAIwf,GAAMp/C,EAAH,KAAWrN,EAAEkJ,IAAI2/C,IAAI7jD,KAAK,CAAC,QAE1C,SAAS2nD,GAAGt/C,EAAGC,EAAGvN,EAAGC,EAAGwC,GACtB,IAAIyqC,EAAI3/B,EAAEzK,OACV,EAAIoqC,GAAK2a,GAAE,kFACX,IAAI9a,EAAI,OAASx/B,EAAE,IAAM,OAASvN,EAAGoB,GAAI,EACzC,IAAKpB,EAAI,EAAGA,EAAIuN,EAAEzK,SAAU9C,EAC1B,GAAI,OAASuN,EAAEvN,SAAM,IAAWuN,EAAEvN,GAAGi5C,EAAG,CACtC73C,GAAI,EACJ,MAGJ,IAAIK,EAAI,SAAW8L,EAAE,GAAGrN,KAAMN,EAAIstC,EAAI,EAAGuG,EAAItsC,MAAMvH,GAAI2yB,EAAI,GAAIzgB,EAAI,GACnE,OAAO,WAKL,GAJA1E,UAAUtK,SAAWlD,GAAKioD,GAAE,YAAYv6C,iBAAiBF,UAAUtK,8BAA8BlD,WACjGkS,EAAEhP,OAAS,EACXyvB,EAAEzvB,OAASiqC,EAAI,EAAI,EACnBxa,EAAE,GAAK9vB,EACHsqC,EAAG,CACL,IAAI4C,EAAIpiC,EAAE,GAAG8+C,WAAWv6C,EAAGzS,MAC3BkzB,EAAE,GAAKod,EAET,IAAK,IAAI9uC,EAAI,EAAGA,EAAIjB,IAAKiB,EACvB4yC,EAAE5yC,GAAK0M,EAAE1M,EAAI,GAAGwrD,WAAWv6C,EAAG1E,UAAUvM,IAAK0xB,EAAEvuB,KAAKyvC,EAAE5yC,IAGxD,GADAA,EAAIZ,EAAEiT,MAAM,KAAMqf,GACdnxB,EACF8pD,GAAGp5C,QAEH,IAAK,IAAIrR,EAAIssC,EAAI,EAAI,EAAGtsC,EAAI8M,EAAEzK,OAAQrC,IAAK,CACzC,IAAI+vC,EAAI,IAAM/vC,EAAIkvC,EAAI8D,EAAEhzC,EAAI,GAC5B,OAAS8M,EAAE9M,GAAGw4C,GAAK1rC,EAAE9M,GAAGw4C,EAAEzI,GAI9B,OADAb,EAAIluC,EAAI8L,EAAE,GAAG49C,aAAatqD,QAAK,GAInC,SAASgsD,GAAGv/C,EAAGC,GACb,IAAK,IAAIvN,EAAI,GAAIC,EAAI,EAAGA,EAAIqN,EAAGrN,IAC7BD,EAAEgE,KAAK48C,EAAErzC,EAAI,EAAItN,GAAK,IAExB,OAAOD,EAET,SAAS8sD,GAAGx/C,EAAGC,EAAGvN,GAIhB,OAHAsN,aAAajN,QAAUwnD,GAAE,GAAG7nD,0BAA0BsN,KACtDA,aAAaC,EAAE5N,EAAEwI,aAAe0/C,GAAE,GAAG7nD,sCAAsCsN,EAAEnF,YAAYjI,QACzFoN,EAAEy/B,EAAE3sC,GAAKynD,GAAE,yCAAyC7nD,uBAC7C8rD,GAAGx+C,EAAEy/B,EAAE3sC,EAAGkN,EAAEy/B,EAAE0G,EAAE9zC,EAAG4N,EAAE5N,GAE9B,SAASotD,GAAGz/C,GACVA,GAAK2uC,GAAEkH,GAAK,KAAQlH,GAAEz7C,IAAI8M,GAAGs5C,IAAM3K,GAAEgB,GAAG3vC,GAE1C,SAAS0/C,GAAG1/C,EAAGC,EAAGvN,GAChB,OAAOuN,GACL,KAAK,EACH,OAAO,SAAStN,GACd,OAAOZ,KAAK8rD,cAAcnrD,EAAIk8C,EAAIuE,GAAGxgD,KAEzC,KAAK,EACH,OAAO,SAASA,GACd,OAAOZ,KAAK8rD,cAAcnrD,EAAIw1C,EAAKkL,GAAIzgD,GAAK,KAEhD,KAAK,EACH,OAAO,SAASA,GACd,OAAOZ,KAAK8rD,cAAcnrD,EAAI2gD,EAAIC,GAAG3gD,GAAK,KAE9C,QACE,MAAM,IAAIsI,UAAU,yBAA2B+E,IAGrD,SAAS0+C,GAAG1+C,GACV,GAAI,OAASA,EACX,MAAO,OAET,IAAIC,SAAWD,EACf,MAAO,WAAaC,GAAK,UAAYA,GAAK,aAAeA,EAAID,EAAE1G,WAAa,GAAK0G,EAEnF,SAAS2/C,GAAG3/C,EAAGC,GACb,OAAOA,GACL,KAAK,EACH,OAAO,SAASvN,GACd,OAAOX,KAAK8rD,aAAatK,EAAG7gD,GAAK,KAErC,KAAK,EACH,OAAO,SAASA,GACd,OAAOX,KAAK8rD,aAAarK,EAAG9gD,GAAK,KAErC,QACE,MAAM,IAAIuI,UAAU,uBAAyB+E,IAGnD,SAAS4/C,GAAG5/C,EAAGC,EAAGvN,GAChB,OAAOuN,GACL,KAAK,EACH,OAAOvN,EAAI,SAASC,GAClB,OAAOi8C,EAAEj8C,IACP,SAASA,GACX,OAAOwgD,EAAExgD,IAEb,KAAK,EACH,OAAOD,EAAI,SAASC,GAClB,OAAOu1C,EAAGv1C,GAAK,IACb,SAASA,GACX,OAAOygD,EAAGzgD,GAAK,IAEnB,KAAK,EACH,OAAOD,EAAI,SAASC,GAClB,OAAO0gD,EAAE1gD,GAAK,IACZ,SAASA,GACX,OAAO2gD,EAAE3gD,GAAK,IAElB,QACE,MAAM,IAAIsI,UAAU,yBAA2B+E,IAGrD,IAAI6/C,GAAK,oBAAsBjH,YAAc,IAAIA,YAAY,iBAAc,EAAQkH,GAAK,CAAC9/C,EAAGC,KAE1F,IADA,IAAIvN,EAAIsN,GAAK,EACJrN,EAAID,EAAIuN,EAAI,IAAKvN,GAAKC,IAAMygD,EAAG1gD,MACpCA,EAGJ,GAAI,IADJA,IAAM,GACOsN,GAAK6/C,GAChB,OAAOA,GAAGhe,OAAOsR,EAAE2F,SAAS94C,EAAGtN,IAGjC,IADAA,EAAI,GACCC,EAAI,IAAKA,GAAKsN,EAAI,KAAMtN,EAAG,CAC9B,IAAIwC,EAAI+yC,EAAGloC,EAAI,EAAIrN,GAAK,GACxB,GAAI,GAAKwC,EACP,MAEFzC,GAAK2O,OAAO03C,aAAa5jD,GAE3B,OAAOzC,GACNqtD,GAAK,CAAC//C,EAAGC,EAAGvN,KAEb,QADA,IAAWA,IAAMA,EAAI,YACjB,EAAIA,EACN,OAAO,EAGT,IAAIC,EAAIsN,EACRvN,GAFAA,GAAK,GAEG,EAAIsN,EAAExK,OAAS9C,EAAI,EAAIsN,EAAExK,OACjC,IAAK,IAAIL,EAAI,EAAGA,EAAIzC,IAAKyC,EACvB+yC,EAAGjoC,GAAK,GAAKD,EAAEM,WAAWnL,GAAI8K,GAAK,EAGrC,OADAioC,EAAGjoC,GAAK,GAAK,EACNA,EAAItN,GACVqtD,GAAKhgD,GAAK,EAAIA,EAAExK,OAAQyqD,GAAK,CAACjgD,EAAGC,KAClC,IAAK,IAAIvN,EAAI,EAAGC,EAAI,KAAMD,GAAKuN,EAAI,IAAK,CACtC,IAAI9K,EAAIk+C,EAAErzC,EAAI,EAAItN,GAAK,GACvB,GAAI,GAAKyC,EACP,QAEAzC,EACF,OAASyC,GAAKA,GAAK,MAAOxC,GAAK0O,OAAO03C,aAAa,MAAQ5jD,GAAK,GAAI,MAAY,KAAJA,IAAaxC,GAAK0O,OAAO03C,aAAa5jD,GAEpH,OAAOxC,GACNutD,GAAK,CAAClgD,EAAGC,EAAGvN,KAEb,QADA,IAAWA,IAAMA,EAAI,YACjB,EAAIA,EACN,OAAO,EAET,IAAIC,EAAIsN,EACRvN,EAAIC,EAAID,EAAI,EACZ,IAAK,IAAIyC,EAAI,EAAGA,EAAI6K,EAAExK,SAAUL,EAAG,CACjC,IAAIyqC,EAAI5/B,EAAEM,WAAWnL,GAOrB,GANI,OAASyqC,GAAK,OAASA,IAEzBA,EAAI,QAAc,KAAJA,IAAa,IAAU,KAD7B5/B,EAAEM,aAAanL,IAGzBk+C,EAAEpzC,GAAK,GAAK2/B,GACZ3/B,GAAK,GACG,EAAIvN,EACV,MAIJ,OADA2gD,EAAEpzC,GAAK,GAAK,EACLA,EAAItN,GACVwtD,GAAKngD,IACN,IAAK,IAAIC,EAAI,EAAGvN,EAAI,EAAGA,EAAIsN,EAAExK,SAAU9C,EAAG,CACxC,IAAIC,EAAIqN,EAAEM,WAAW5N,GACrB,OAASC,GAAK,OAASA,KAAOD,EAC9BuN,GAAK,EAEP,OAAOA,GACNmgD,GAAK,GACR,SAASC,GAAGrgD,GACV,IAAIC,EAAImgD,GAAGpgD,GACX,YAAO,IAAWC,EAAIm5C,GAAEp5C,GAAKC,EAE/B,IAyBGqgD,GAzBCC,GAAK,GAYLC,GAAK,GAAIC,GAAK,GAAIC,GAAK,GAAIC,GAAK,KAClC,IAAKL,GAAI,CACP,IAA6OrgD,EAAzOD,EAAI,CAAC4gD,KAAK,WAAYC,QAAQ,WAAYC,KAAK,IAAKC,IAAI,IAAKC,KAAK,iBAAkBC,MAAM,iBAAmBvhD,WAAaA,UAAUwhD,WAAaxhD,UAAUwhD,UAAU,IAAM,KAAK9gD,QAAQ,IAAK,KAAO,SAAU6pB,EAAE+nB,GAAM,kBAC1N,IAAK/xC,KAAKygD,QACR,IAAWA,GAAGzgD,UAAYD,EAAEC,GAAKD,EAAEC,GAAKygD,GAAGzgD,GAE7C,IAAIvN,EAAI,GACR,IAAKuN,KAAKD,EACRtN,EAAEgE,KAAK,GAAGuJ,KAAKD,EAAEC,MAEnBqgD,GAAK5tD,EAEP,OAAO4tD,IACFa,GAAKnhD,GAAK,GAAMA,EAAI,IAAM,GAAMA,EAAI,KAAO,GAAMA,EAAI,KAAMohD,GAAK,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAKC,GAAK,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAiG3K,SAASjhB,GAAGpgC,EAAGC,EAAGvN,EAAGC,GACnBqN,IAAMA,EAAIjO,MACVA,KAAK0pD,OAASz7C,EACdjO,KAAKwoD,EAAIv6C,EAAEu6C,EACXxoD,KAAK2gD,GAAK,KACV3gD,KAAKgE,GAAK0rC,KACV1vC,KAAKa,KAAOqN,EACZlO,KAAKyB,KAAOd,EACZX,KAAKO,EAAI,GACTP,KAAKU,EAAI,GACTV,KAAKw+C,GAAK59C,EAEZI,OAAOghC,iBAAiBqM,GAAGnsC,UAAW,CAAC0pC,KAAK,CAACzqC,IAAI,WAC/C,OAAO,MAAqB,IAAZnB,KAAKyB,OACpB2lB,IAAI,SAASnZ,GACdA,EAAIjO,KAAKyB,MAAQ,IAAMzB,KAAKyB,OAAS,MACnCimD,MAAM,CAACvmD,IAAI,WACb,OAAO,MAAqB,IAAZnB,KAAKyB,OACpB2lB,IAAI,SAASnZ,GACdA,EAAIjO,KAAKyB,MAAQ,IAAMzB,KAAKyB,OAAS,QAEvCmpD,KACAzP,GAAKrzC,MAAM,MACXsiD,GAAG7B,GAAG,KACNgC,GAAG,OAAQ,MAAO,GAClBA,GAAG,QAAS,MAAO,GACnBA,GAAG,iBAAkB,MAAO,GAC5B,MACEA,GAAG,OAAQ,MAAO,GAClBjD,GAAG,IAAK,CAAC1b,KAAK,IAAM,EAAG8b,MAAM,CAAC9mD,EAAGwC,EAAGyqC,EAAGH,IAAMA,IAC7C8c,GAAG,YAAa,KAChBpD,GAAG,KAAMO,IACTP,GAAG,KAAMiB,IACTmC,GAAG,WAAY,MACfA,GAAG,YAAa,MAChB,IAAIv8C,EAAI,IAAInB,WAAW,MAAOoB,EAAI,EAAGvN,EAAI,KACvC,IAAMuN,IAAMA,EAAIu4C,GAAGx4C,GAAGshD,YACfthD,IAAIC,IAEbooC,GAAG,SAAU31C,GACb21C,GAAG,UAAW31C,GACd4pD,GAAG,WAAY,MAAO,GACtBA,GAAG,eAAgB,MAAO,IAf5B,GAiBA,MACEA,GAAG,QAAS,MAAO,GACnB,IAAIt8C,EAAIs8C,GAAG,aAAc,MAAO,GAChCA,GAAG,gBAAiB,MAAO,GAC3BH,GAAG,CAAC5B,EAAE,KACJ,IAAIt6C,EAAIstC,GAAGvtC,EAAG,KAAM,MAAO,IAM3B,OALAC,EAAE3N,EAAI,CAACq2C,GAAG,CAACj2C,EAAGC,KACZ,IAAIwC,EAAI6mD,IAAIrpD,GAEZ,OADAD,EAAI,CAAC+oD,OAAO,KAAMlB,EAAE,CAACvB,GAAG,QAAS1mD,EAAE,CAAC0/C,GAAG,IAAM78C,EAAEymD,QACtCH,OAAS/oD,IAEbuN,IACL,kBAZN,GAcAlN,OAAO4N,OAAOi8C,GAAG3oD,UAAW,CAAC,IAAI+L,GAC/B,OAAOjO,KAAKsxC,EAAErjC,IACb,IAAIA,GACL,YAAO,IAAWjO,KAAKsxC,EAAErjC,IACxB,GAAGA,GACJ,IAAIC,EAAIlO,KAAK4mD,GAAGrd,OAASvpC,KAAKsxC,EAAE7tC,OAEhC,OADAzD,KAAKsxC,EAAEpjC,GAAKD,EACLC,GACN,GAAGD,GACJjO,KAAKsxC,EAAErjC,QAAK,EACZjO,KAAK4mD,GAAGjiD,KAAKsJ,MAEf+8C,GAAKtqD,EAAE8uD,aAAe,cAAclqD,MAClC,YAAY2I,GACV2Z,MAAM3Z,GACNjO,KAAKa,KAAO,iBAGhB+7C,GAAEtL,EAAE3sC,KAAK,CAACpD,WAAM,GAAS,CAACA,MAAM,MAAO,CAACA,OAAM,GAAK,CAACA,OAAM,IAC1Dq7C,GAAEkH,EAAIlH,GAAEtL,EAAE7tC,OACV/C,EAAE+uD,oBAAsB,WACtB,IAAK,IAAIxhD,EAAI,EAAGC,EAAI0uC,GAAEkH,EAAG51C,EAAI0uC,GAAEtL,EAAE7tC,SAAUyK,OACzC,IAAW0uC,GAAEtL,EAAEpjC,MAAQD,EAEzB,OAAOA,GAETm9C,GAAK1qD,EAAEgvD,iBAAmBvE,GAAG,oBAC7B,IAAK,IAAIwE,GAAK7nD,MAAM,KAAM8nD,GAAK,EAAG,IAAMA,KAAMA,GAC5CD,GAAGC,IAAMtgD,OAAO03C,aAAa4I,IAE/BvE,GAAKsE,GACLjvD,EAAEmvD,0BAA4B,WAC5B,OAAO7uD,OAAOkE,KAAKulD,IAAIhnD,QAEzB/C,EAAEovD,0BAA4B,WAC5B,IAAY5hD,EAARD,EAAI,GACR,IAAKC,KAAKu8C,GACRA,GAAGtoD,eAAe+L,IAAMD,EAAEtJ,KAAK8lD,GAAGv8C,IAEpC,OAAOD,GAETvN,EAAEqvD,oBAAsBxE,GACxB7qD,EAAEsvD,iBAAmB,SAAS/hD,GAC5Bk2C,GAAKl2C,EACLq9C,GAAG7nD,QAAU0gD,IAAMA,GAAGoH,KAExBrC,GAAKxoD,EAAEuvD,cAAgB,cAAc3qD,MACnC,YAAY2I,GACV2Z,MAAM3Z,GACNjO,KAAKa,KAAO,kBAGhBwrD,GAAGnqD,UAAUguD,UAAY,SAASjiD,GAChC,KAAMjO,gBAAgBqsD,IAAMp+C,aAAao+C,IACvC,OAAO,EAET,IAAIn+C,EAAIlO,KAAK0tC,EAAE0G,EAAE9zC,EAAGK,EAAIX,KAAK0tC,EAAE3sC,EAAGH,EAAIqN,EAAEy/B,EAAE0G,EAAE9zC,EAC5C,IAAK2N,EAAIA,EAAEy/B,EAAE3sC,EAAGmN,EAAEijC,GAChBxwC,EAAIuN,EAAEgyC,GAAGv/C,GAAIuN,EAAIA,EAAEijC,EAErB,KAAOvwC,EAAEuwC,GACPljC,EAAIrN,EAAEs/C,GAAGjyC,GAAIrN,EAAIA,EAAEuwC,EAErB,OAAOjjC,IAAMtN,GAAKD,IAAMsN,GAE1Bo+C,GAAGnqD,UAAU2qD,MAAQ,WAEnB,GADA7sD,KAAK0tC,EAAE3sC,GAAKqrD,GAAGpsD,MACXA,KAAK0tC,EAAEyC,GACT,OAAOnwC,KAAK0tC,EAAExpC,MAAM3C,OAAS,EAAGvB,KAElC,IAAIiO,EAAIw9C,GAAIv9C,EAAIlN,OAAQL,EAAIuN,EAAEtM,OAAQhB,EAAII,OAAOoL,eAAepM,MAAOoD,EAAIpD,KAAK0tC,EAIhF,OAHAz/B,EAAIA,EAAEtN,EAAEF,KAAKyN,EAAGtN,EAAG,CAAC8sC,EAAE,CAACnsC,MAAM,CAAC2C,MAAMd,EAAEc,MAAOoqC,GAAGlrC,EAAEkrC,GAAI6B,GAAG/sC,EAAE+sC,GAAIpvC,EAAEqC,EAAErC,EAAGqzC,EAAEhxC,EAAEgxC,EAAGsF,EAAEt2C,EAAEs2C,EAAG4H,EAAEl+C,EAAEk+C,QACtF5T,EAAExpC,MAAM3C,OAAS,EACnB0M,EAAEy/B,EAAEY,IAAK,EACFrgC,GAETo+C,GAAGnqD,UAAkB,OAAI,WACvBlC,KAAK0tC,EAAE3sC,GAAKqrD,GAAGpsD,MACfA,KAAK0tC,EAAEY,KAAOtuC,KAAK0tC,EAAEyC,IAAMqY,GAAE,yCAC7BP,GAAGjoD,MACHupD,GAAGvpD,KAAK0tC,GACR1tC,KAAK0tC,EAAEyC,KAAOnwC,KAAK0tC,EAAEgM,OAAI,EAAQ15C,KAAK0tC,EAAE3sC,OAAI,IAE9CsrD,GAAGnqD,UAAUiuD,UAAY,WACvB,OAAQnwD,KAAK0tC,EAAE3sC,GAEjBsrD,GAAGnqD,UAAUkuD,YAAc,WAMzB,OALApwD,KAAK0tC,EAAE3sC,GAAKqrD,GAAGpsD,MACfA,KAAK0tC,EAAEY,KAAOtuC,KAAK0tC,EAAEyC,IAAMqY,GAAE,yCAC7B8C,GAAG3mD,KAAK3E,MACR,IAAMsrD,GAAG7nD,QAAU0gD,IAAMA,GAAGoH,IAC5BvrD,KAAK0tC,EAAEY,IAAK,EACLtuC,MAET+sD,GAAG7qD,UAAUkoD,GAAK,SAASn8C,GAEzB,OADAjO,KAAKonD,KAAOn5C,EAAIjO,KAAKonD,GAAGn5C,IACjBA,GAET8+C,GAAG7qD,UAAUmjD,GAAK,SAASp3C,GACzBjO,KAAKwrD,GAAKxrD,KAAKwrD,EAAEv9C,IAEnB8+C,GAAG7qD,UAAUmuD,eAAiB,EAC9BtD,GAAG7qD,UAAUouD,qBAAuBjM,GACpC0I,GAAG7qD,UAAUquD,aAAe,SAAStiD,GAC/B,OAASA,GACXA,EAAU,UAGd8+C,GAAG7qD,UAAU4pD,aAAe,SAAS79C,GACnC,SAASC,IACP,OAAOlO,KAAKggD,GAAKmJ,GAAGnpD,KAAKM,EAAEihD,EAAG,CAACnN,EAAEp0C,KAAK8qD,GAAI/pD,EAAEJ,EAAG2gD,EAAEthD,KAAM05C,EAAEzrC,IAAOk7C,GAAGnpD,KAAKM,EAAEihD,EAAG,CAACnN,EAAEp0C,KAAMe,EAAEkN,IAE1F,IAAItN,EAAIX,KAAKoqD,GAAGn8C,GAChB,IAAKtN,EACH,OAAOX,KAAKqlD,GAAGp3C,GAAI,KAErB,IAAIrN,EA9sBN,SAAYqN,EAAGC,GAEb,OADAA,EAAI8nC,GAAG/nC,EAAGC,GACHu8C,GAAGv8C,GA4sBFk7C,CAAGppD,KAAKM,EAAGK,GACnB,QAAI,IAAWC,EACb,OAAI,IAAMA,EAAE8sC,EAAExpC,MAAM3C,OACXX,EAAE8sC,EAAE3sC,EAAIJ,EAAGC,EAAE8sC,EAAEgM,EAAIzrC,EAAGrN,EAAEisD,UAEjCjsD,EAAIA,EAAEisD,QACN7sD,KAAKqlD,GAAGp3C,GACDrN,GAIT,GAFAA,EAAIZ,KAAKM,EAAE4pD,GAAGvpD,KACdC,EAAIooD,GAAGpoD,IAEL,OAAOsN,EAAEzN,KAAKT,MAEhBY,EAAIZ,KAAKg+C,GAAKp9C,EAAEgpD,GAAKhpD,EAAE4vD,YACvB,IAAIptD,EAxuBN,SAAS6lD,EAAGh7C,EAAGC,EAAGvN,GAChB,OAAIuN,IAAMvN,EACDsN,OAEL,IAAWtN,EAAEwwC,GAIV,QADPljC,EAAIg7C,EAAGh7C,EAAGC,EAAGvN,EAAEwwC,IAFN,KAGkBxwC,EAAEqpD,GAAG/7C,GAguBxBg7C,CAAGtoD,EAAGX,KAAKM,EAAGM,EAAEN,GACxB,OAAO,OAAS8C,EAAI8K,EAAEzN,KAAKT,MAAQA,KAAKggD,GAAKmJ,GAAGvoD,EAAEN,EAAEihD,EAAG,CAACnN,EAAExzC,EAAGG,EAAEqC,EAAGk+C,EAAEthD,KAAM05C,EAAEzrC,IAAOk7C,GAAGvoD,EAAEN,EAAEihD,EAAG,CAACnN,EAAExzC,EAAGG,EAAEqC,KAEvGiqD,GAAK3sD,EAAE+vD,iBAAmBtF,GAAG,oBAC7B,IAAIuF,GAAK,CAACC,kBAAkB,SAAS1iD,EAAGC,EAAGvN,GACzCopD,GAAKppD,EACL,IACE,IAAIC,EAAIqpD,GAAGh8C,GACX,OAAOC,GACL,KAAK,EACH,IAAI9K,EAAIuyC,KACR,OAAO,EAAIvyC,GAAK,GAAK8mD,GAAGtpD,EAAGwC,GAAGi5C,EAChC,KAAK,EACL,KAAK,EACH,OAAO,EACT,KAAK,EACH,OAAOz7C,EAAEupD,MACX,KAAK,EACH,OAAO/mD,EAAIuyC,KAAM/0C,EAAEupD,OAAS/mD,EAAG,EACjC,KAAK,EACH,OAAOA,EAAIuyC,KAAMQ,EAAG/yC,EAAI,GAAK,GAAK,EAAG,EACvC,KAAK,EACL,KAAK,EACH,OAAO,EACT,KAAK,GACL,KAAK,EACH,OAAQ,GACV,KAAK,EACH,OAAOk+C,EAAEsP,MAAQ,GAAK,IAAK,EAC7B,QACE,OAAQ,IAEZ,MAAO/iB,GACP,QAAI,IAAsByc,IAAM,eAAiBzc,EAAEhtC,KACjD,MAAMgtC,EAER,OAAQA,EAAEN,KAEXsjB,gBAAgB,SAAS5iD,EAAGC,EAAGvN,GAChCopD,GAAKppD,EACL,IACE,IAAIC,EAAIqpD,GAAGh8C,GACX,OAAOC,GACL,KAAK,MACH,OAAOtN,EAAEyB,EAAI,GAAK,GACpB,KAAK,MACH,IAAKzB,EAAEyB,EACL,OAAQ,GAEV,GAAIzB,EAAEyB,EAAEglD,EAAE1I,GAAI,CACZzwC,EAAI,CAAC,EAAG,GAAI,IAAK,GAAI,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,EAAG,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAC7G,IAAI9K,EAAIuyC,KACR2L,EAAEl+C,GAAK,GAAK,MACZk+C,EAAEl+C,EAAI,GAAK,GAAK,EAChBk+C,EAAEl+C,EAAI,GAAK,GAAK,IAChBk+C,EAAEl+C,EAAI,IAAM,GAAK,MACjB,IAAK,IAAIyqC,EAAI,EAAG,GAAKA,EAAGA,IACtBgP,EAAEz5C,EAAIyqC,EAAI,IAAM,GAAK3/B,EAAE2/B,IAAM,EAGjC,OAAO,EACT,KAAK,MACL,KAAK,MACL,KAAK,MACH,OAAOjtC,EAAEyB,EAAI,GAAK,GACpB,KAAK,MACL,KAAK,MACL,KAAK,MACH,IAAKzB,EAAEyB,EACL,OAAQ,GAEV,GAAIzB,EAAEyB,EAAEglD,EAAEc,GACR,IAAK/kD,EAAIuyC,KAAMznC,EAAI,GAAI2/B,EAAI,EAAG,GAAKA,EAAGA,IACpC3/B,EAAEvJ,KAAKk4C,EAAEz5C,EAAIyqC,EAAI,IAAM,IAG3B,OAAO,EACT,KAAK,MACH,OAAKjtC,EAAEyB,GAGPe,EAAIuyC,KACG2L,EAAEl+C,GAAK,GAAK,IAHT,GAIZ,KAAK,MACH,OAAOxC,EAAEyB,GAAK,IAAM,GACtB,KAAK,MAEH,GADAe,EAAIuyC,MACC/0C,EAAEF,EAAE29C,GACP,MAAM,IAAImJ,GAAE,IAEd,OAAO5mD,EAAEF,EAAE29C,GAAGz9C,EAAGsN,EAAG9K,GACtB,KAAK,MACH,OAAKxC,EAAEyB,GAGPzB,EAAEyB,EAAEglD,EAAEe,KAAOva,EAAI,CAAC,GAAI,IAAKzqC,EAAIuyC,KAAMQ,EAAG/yC,GAAK,GAAKyqC,EAAE,GAAIsI,EAAG/yC,EAAI,GAAK,GAAKyqC,EAAE,IACpE,IAHG,GAIZ,KAAK,MAEL,KAAK,MACH,OAAOjtC,EAAEyB,EAAI,GAAK,GACpB,QACE,OAAQ,IAEZ,MAAOqrC,GACP,QAAI,IAAsB4c,IAAM,eAAiB5c,EAAE7sC,KACjD,MAAM6sC,EAER,OAAQA,EAAEH,KAEXujB,iBAAiB,SAAS7iD,EAAGC,EAAGvN,EAAGC,GACpCmpD,GAAKnpD,EACL,IAEE,IAAIwC,EADJ8K,EAAIA,EAAI44C,GAAG1F,EAAGlzC,GAAK,GAEnB,GAAI,MAAQ9K,EAAEijD,OAAO,GACnBn4C,EAAI9K,MACC,CACL,IAAIyqC,GAAK,MAAQ5/B,EAAI,IAAMg8C,GAAGh8C,GAAG47C,KACjC,GAAI,GAAKzmD,EAAEK,OACT,MAAM,IAAI+jD,GAAE,IAEdt5C,EAAIk4C,EAAGvY,EAAI,IAAMzqC,GAEnB,IAAIsqC,EAAI9sC,EAAI+0C,KAAO,EACnB,OAAOmG,GAAG5tC,EAAGvN,EAAG+sC,GAAG2O,EACnB,MAAOt6C,GACP,QAAI,IAAsBuoD,IAAM,eAAiBvoD,EAAElB,KACjD,MAAMkB,EAER,OAAQA,EAAEwrC,KAEXwjB,sCAAsC,SAAS9iD,EAAGC,EAAGvN,GACtDsN,EAAIo5C,GAAEp5C,GACNC,EAAI45C,GAAG55C,EAAG,WACVvN,EAAIsqD,GAAGtqD,GACP,IAAIC,EAAI,GAAGiI,MAAOzF,EAAI8K,EAAE5N,EAAGutC,EAAIzqC,EAAEm+C,EAAG7T,EAAItqC,EAAE+tC,EAAEoQ,EAAGx/C,EAAIqB,EAAE+tC,EAAEroC,YA+BvD,IAAK,IAAI1G,KA9BT6L,EAAI88C,GAAG98C,GAAG,WACR7K,EAAE+tC,EAAEgW,GAAGhiD,QAAQ,SAAS5E,GACtB,GAAIP,KAAKO,KAAOmtC,EAAEntC,GAChB,MAAM,IAAI6qD,GAAG,yBAAyB7qD,wCAExCuB,KAAK9B,OACPgB,OAAOC,eAAejB,KAAM,WAAY,CAACuB,MAAMssC,IAC/C7tC,KAAKuvC,YAAY17B,MAAM7T,KAAMY,EAAEH,KAAKsN,eAEtC8/B,EAAE0B,YAAc,WACdvvC,OAAS6tC,GAAK2a,GAAE,sCAChB,IAAIjoD,EAAIwB,EAAEivD,UAAUn9C,WAAM,EAAQ,CAAC7T,MAAMmE,OAAOvD,EAAEH,KAAKsN,aACvDk6C,GAAG1nD,GACH,IAAI6zC,EAAI7zC,EAAEmtC,EACVntC,EAAE0wD,sBACF7c,EAAEjE,IAAK,EACPnvC,OAAOghC,iBAAiBhiC,KAAM,CAAC0tC,EAAE,CAACnsC,MAAM6yC,KACxCqX,GAAGzrD,MACHO,EAAI6zC,EAAErzC,EACNR,EAAIy1C,GAAG5yC,EAAG7C,GACVkqD,GAAGtoD,eAAe5B,GAAKioD,GAAE,0CAA0CjoD,GAAOkqD,GAAGlqD,GAAKP,MAEpF6tC,EAAE+K,WAAa,WACb54C,OAAS6tC,GAAK2a,GAAE,qCAChBP,GAAGjoD,MACH,IAAIO,EAAIP,KAAK0tC,EAAE3sC,EACfR,EAAIy1C,GAAG5yC,EAAG7C,GACVkqD,GAAGtoD,eAAe5B,UAAYkqD,GAAGlqD,GAAKioD,GAAE,8CAA8CjoD,IAExF0N,EAAE/L,UAAYlB,OAAOY,OAAOisC,GACdltC,EACZsN,EAAE/L,UAAUE,GAAKzB,EAAEyB,GAErB,OAAO8oD,GAAGj9C,IACTijD,8BAA8B,SAASjjD,GACxC,IAAIC,EAAIm8C,GAAGp8C,UACJo8C,GAAGp8C,GACV,IAAItN,EAAIuN,EAAE40C,GAAIliD,EAAIsN,EAAEs9C,EAAGpoD,EAAI8K,EAAEk4C,GAC7BoF,GAAE,CAACv9C,GADkC7K,EAAE0G,IAAI4jC,GAAKA,EAAEiQ,IAAIx5C,OAAOf,EAAE0G,IAAI4jC,GAAKA,EAAEud,KAChEvd,IACR,IAAI3rC,EAAI,GASR,OARAqB,EAAE+B,QAAQ,CAAC/C,EAAG7B,KACZ,IAAI6zC,EAAI1G,EAAEntC,GAAI2yB,EAAI9wB,EAAEmoD,GAAI93C,EAAIrQ,EAAEooD,GAAIla,EAAI5C,EAAEntC,EAAI6C,EAAEK,QAASjC,EAAIY,EAAE4oD,GAAI5pD,EAAIgB,EAAE8oD,GACvEnpD,EAAEK,EAAE6nD,IAAM,CAACre,KAAKuF,GAAKiD,EAAE0X,aAAa54B,EAAEzgB,EAAG0+B,IAAKuW,MAAM,CAACvW,EAAGC,KACtD,IAAIC,EAAI,GACR7vC,EAAEJ,EAAG+vC,EAAGb,EAAE0c,WAAW3b,EAAGD,IACxBya,GAAGxa,OAGA,CAAC,CAACxwC,KAAKqN,EAAErN,KAAMirD,aAAa,SAAS1pD,GAC1C,IAAYgyC,EAAR7zC,EAAI,GACR,IAAK6zC,KAAKryC,EACRxB,EAAE6zC,GAAKryC,EAAEqyC,GAAGxI,KAAKxpC,GAGnB,OADAxB,EAAEwB,GACK7B,GACNysD,WAAW,SAAS5qD,EAAG7B,GACxB,IAAK,IAAI6zC,KAAKryC,EACZ,KAAMqyC,KAAK7zC,GACT,MAAM,IAAI2I,UAAU,mBAAmBkrC,MAG3C,IAAIlhB,EAAIvyB,IACR,IAAKyzC,KAAKryC,EACRA,EAAEqyC,GAAGsT,MAAMx0B,EAAG3yB,EAAE6zC,IAGlB,OADA,OAAShyC,GAAKA,EAAEuC,KAAK/D,EAAGsyB,GACjBA,GACNm9B,eAAe,EAAGC,qBAAqBjM,GAAIzK,EAAEh5C,OAEjDuwD,wBAAwB,aACxBC,sBAAsB,SAASnjD,EAAGC,EAAGvN,EAAGC,EAAGwC,GAC5C,IAAIyqC,EAAIqe,GAAGvrD,GAEXsrD,GAAGh+C,EAAG,CAACpN,KADPqN,EAAIm5C,GAAEn5C,GACS49C,aAAa,SAASpe,GACnC,QAASA,GACRsf,WAAW,SAAStf,EAAG3rC,GACxB,OAAOA,EAAInB,EAAIwC,GACditD,eAAe,EAAGC,qBAAqB,SAAS5iB,GACjD,GAAI,IAAM/sC,EACR,IAAIoB,EAAI86C,OACH,GAAI,IAAMl8C,EACfoB,EAAIo0C,MACC,IAAI,IAAMx1C,EAGf,MAAM,IAAIuI,UAAU,8BAAgCgF,GAFpDnM,EAAIu/C,EAIN,OAAOthD,KAAK8rD,aAAa/pD,EAAE2rC,GAAKG,KAC/B+L,EAAE,QACJyX,uBAAuB,SAASpjD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,EAAGH,EAAG3rC,EAAGK,EAAG7B,EAAG6zC,EAAGlhB,EAAGzgB,GACrE2hC,EAAIiT,GAAEjT,GACNvG,EAAI8a,GAAEvlD,EAAGyqC,GACT9rC,IAAMA,EAAI4mD,GAAEjb,EAAG3rC,IACfxB,IAAMA,EAAIooD,GAAEvmD,EAAG7B,IACfkS,EAAIk2C,GAAEz1B,EAAGzgB,GACT,IAAI69B,EAAIwa,GAAG1W,GACXmY,GAAGjc,GAAG,WACJgd,GAAG,oBAAoBlZ,yBAA0B,CAACxzC,OAEpD4qD,GAAE,CAACv9C,EAAGC,EAAGvN,GAAIC,EAAI,CAACA,GAAK,IAAI,SAASY,GAElC,GADAA,EAAIA,EAAE,GACFZ,EACF,IAAIQ,EAAII,EAAElB,EACN6wC,EAAI/vC,EAAEmgD,OAEVpQ,EAAIkb,GAAGnqD,UAETV,EAAIupD,GAAGza,GAAG,WACR,GAAItvC,OAAOoL,eAAepM,QAAUoxC,EAClC,MAAM,IAAI4Z,GAAG,0BAA4B5W,GAE3C,QAAI,IAAW/C,EAAEigB,EACf,MAAM,IAAItG,GAAG5W,EAAI,kCAEnB,IAAIE,EAAIjD,EAAEigB,EAAEvjD,UAAUtK,QACtB,QAAI,IAAW6wC,EACb,MAAM,IAAI0W,GAAG,2BAA2B5W,wCAAwCrmC,UAAUtK,uBAAuBzC,OAAOkE,KAAKmsC,EAAEigB,GAAG/pD,mCAEpI,OAAO+sC,EAAEzgC,MAAM7T,KAAM+N,cAEvB,IAAIqjC,EAAIpwC,OAAOY,OAAOuvC,EAAG,CAACroC,YAAY,CAACvH,MAAMC,KAC7CA,EAAEU,UAAYkvC,EACd,IAAIC,EAAI,IAAImb,GAAGpY,EAAG5yC,EAAG4vC,EAAG3+B,EAAGrR,EAAGysC,EAAG9rC,EAAGxB,GACpC8wC,EAAEF,SAAM,IAAWE,EAAEF,EAAEgP,KAAO9O,EAAEF,EAAEgP,GAAK,IAAK9O,EAAEF,EAAEgP,GAAGx7C,KAAK0sC,IACxDjwC,EAAI,IAAI2rD,GAAG3Y,EAAG/C,GAAG,GAAI,GACrBF,EAAI,IAAI4b,GAAG3Y,EAAI,IAAK/C,GAAG,GAAI,GAC3B,IAAIC,EAAI,IAAIyb,GAAG3Y,EAAI,UAAW/C,GAAG,GAAI,GAGrC,OAFA2X,GAAG/6C,GAAK,CAACuiD,YAAYrf,EAAGyY,GAAGtY,GAC3B2b,GAAG3c,EAAG9uC,GACC,CAACJ,EAAG+vC,EAAGG,OAEfigB,sCAAsC,SAAStjD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,EAAGH,GAClE,IAAI3rC,EAAIyrD,GAAG7sD,EAAGC,GACdsN,EAAIm5C,GAAEn5C,GACN2/B,EAAI8a,GAAEvlD,EAAGyqC,GACT2d,GAAE,GAAI,CAACv9C,IAAI,SAAS7L,GAClB,SAAS7B,IACP+sD,GAAG,eAAelZ,yBAA0BryC,GAG9C,IAAIqyC,EAAI,IADRhyC,EAAIA,EAAE,IACOvB,QAAQqN,IACrBA,EAAEkY,WAAW,QAAUlY,EAAI7M,OAAO6M,EAAEuU,UAAU,KAC9C,IAAIyQ,EAAI9wB,EAAE9B,EAAEwI,YAYZ,YAXA,IAAWoqB,EAAEhlB,IAAM3N,EAAE60C,GAAKz0C,EAAI,EAAGuyB,EAAEhlB,GAAK3N,IAAM+rD,GAAGp5B,EAAGhlB,EAAGkmC,GAAIlhB,EAAEhlB,GAAGurC,EAAE94C,EAAI,GAAKJ,GAC3EirD,GAAE,GAAIzpD,GAAG,SAAS0Q,GAGhB,GAFAA,EAAI86C,GAAGnZ,EAAG,CAAC3hC,EAAE,GAAI,MAAMtO,OAAOsO,EAAE5J,MAAM,IAAK,KAAMglC,EAAGH,QACpD,IAAWxa,EAAEhlB,GAAGurC,GAAKhnC,EAAE2iC,GAAKz0C,EAAI,EAAGuyB,EAAEhlB,GAAKuE,GAAKygB,EAAEhlB,GAAGurC,EAAE94C,EAAI,GAAK8R,EAC3DrQ,EAAE9B,EAAE6/C,GACN,IAAK,MAAM7P,KAAKluC,EAAE9B,EAAE6/C,GAClB7P,EAAExnC,YAAY3G,eAAe+L,KAAOoiC,EAAExnC,YAAYoF,GAAKuE,GAG3D,MAAO,MAEF,OAER++C,sCAAsC,SAASvjD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,EAAGH,EAAG3rC,GACrEmM,EAAIm5C,GAAEn5C,GACN2/B,EAAI8a,GAAEvlD,EAAGyqC,GACT2d,GAAE,GAAI,CAACv9C,IAAI,SAAS7L,GAElB,IAAI7B,EAAI,IADR6B,EAAIA,EAAE,IACOvB,QAAQqN,IAAKkmC,EAAI,CAAC,MAC7BkZ,GAAG,iBAAiB/sD,yBAA0B,CAACI,KAC9CO,YAAW,EAAIuwD,cAAa,GAoB/B,OAnBArd,EAAEhtB,IAAMrlB,EAAI,KACVurD,GAAG,iBAAiB/sD,yBAA0B,CAACI,KAC7C,KACF6nD,GAAKjoD,EAAH,6BAEJS,OAAOC,eAAemB,EAAE9B,EAAEwI,YAAaoF,EAAGkmC,GAC1CoX,GAAE,GAAI,CAAC7qD,IAAI,SAASuyB,GAClBA,EAAIA,EAAE,GACN,IAAIzgB,EAAI,CAACtR,IAAG,IACH+xB,EAAE44B,aAAaje,EAAEjtC,IACvBM,YAAW,GAOd,OANAa,IAAMA,EAAI4mD,GAAEjb,EAAG3rC,GAAI0Q,EAAE2U,IAAMkpB,IACzB,IAAI9uC,EAAI,GACRO,EAAEnB,EAAGsyB,EAAE85B,WAAWxrD,EAAG8uC,IACrBub,GAAGrqD,KAELR,OAAOC,eAAemB,EAAE9B,EAAEwI,YAAaoF,EAAGuE,GACnC,MAEF,OAERi/C,mCAAmC,SAASzjD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,GAC5D,IAAIH,EAAI8f,GAAGt/C,EAAGvN,GACdyC,EAAIulD,GAAE/nD,EAAGwC,GACTooD,GAAE,GAAI,CAACv9C,IAAI,SAASlM,GAElB,IAAIK,EAAI,gBADRL,EAAIA,EAAE,IACmBlB,KAEzB,QADA,IAAWkB,EAAEzB,EAAEgxD,IAAMvvD,EAAEzB,EAAEgxD,EAAI,SACzB,IAAWvvD,EAAEzB,EAAEgxD,EAAEpjD,EAAI,GACvB,MAAM,IAAI88C,GAAG,8EAA8E98C,EAAI,iBAAiBnM,EAAElB,2GAUpH,OARAkB,EAAEzB,EAAEgxD,EAAEpjD,EAAI,GAAK,KACbo/C,GAAG,oBAAoBvrD,EAAElB,4BAA6B6sC,IAExD8d,GAAE,GAAI9d,GAAG,SAASntC,GAGhB,OAFAA,EAAEoH,OAAO,EAAG,EAAG,MACf5F,EAAEzB,EAAEgxD,EAAEpjD,EAAI,GAAKq/C,GAAGnrD,EAAG7B,EAAG,KAAM6C,EAAGyqC,GAC1B,MAEF,OAER8jB,gCAAgC,SAAS1jD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,EAAGH,EAAG3rC,GAC/D,IAAIK,EAAIorD,GAAG7sD,EAAGC,GACdsN,EAAIm5C,GAAEn5C,GACN2/B,EAAI8a,GAAEvlD,EAAGyqC,GACT2d,GAAE,GAAI,CAACv9C,IAAI,SAAS1N,GAClB,SAAS6zC,IACPkZ,GAAG,eAAep6B,yBAA0B9wB,GAG9C,IAAI8wB,EAAI,IADR3yB,EAAIA,EAAE,IACOM,QAAQqN,IACrBA,EAAEkY,WAAW,QAAUlY,EAAI7M,OAAO6M,EAAEuU,UAAU,KAC9C1gB,GAAKxB,EAAED,EAAE6mD,GAAGxiD,KAAKuJ,GACjB,IAAIuE,EAAIlS,EAAED,EAAEihD,EAAGjR,EAAI79B,EAAEvE,GAOrB,YANA,IAAWoiC,QAAK,IAAWA,EAAEmJ,GAAKnJ,EAAEshB,YAAcrxD,EAAEM,MAAQyvC,EAAE8E,KAAOz0C,EAAI,GAAKyzC,EAAEgB,GAAKz0C,EAAI,EAAGyzC,EAAEwd,UAAYrxD,EAAEM,KAAM4R,EAAEvE,GAAKkmC,IAAMkY,GAAG75C,EAAGvE,EAAGglB,GAAIzgB,EAAEvE,GAAGurC,EAAE94C,EAAI,GAAKyzC,GAC5JoX,GAAE,GAAIppD,GAAG,SAASZ,GAGhB,OAFAA,EAAI+rD,GAAGr6B,EAAG1xB,EAAGjB,EAAGstC,EAAGH,QACnB,IAAWj7B,EAAEvE,GAAGurC,GAAKj4C,EAAE4zC,GAAKz0C,EAAI,EAAG8R,EAAEvE,GAAK1M,GAAKiR,EAAEvE,GAAGurC,EAAE94C,EAAI,GAAKa,EACxD,MAEF,OAERqwD,gCAAgC,SAAS5jD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,EAAGH,EAAG3rC,EAAGK,EAAG7B,GACrE2N,EAAIm5C,GAAEn5C,GACN9K,EAAIulD,GAAE/nD,EAAGwC,GACTooD,GAAE,GAAI,CAACv9C,IAAI,SAASmmC,GAElB,IAAIlhB,EAAI,IADRkhB,EAAIA,EAAE,IACOvzC,QAAQqN,IAAKuE,EAAI,CAAC,MAC7B66C,GAAG,iBAAiBp6B,yBAA0B,CAACvyB,EAAG+sC,KACjDxsC,YAAW,EAAIuwD,cAAa,GAwB/B,OAvBAh/C,EAAE2U,IAAMhlB,EAAI,KACVkrD,GAAG,iBAAiBp6B,yBAA0B,CAACvyB,EAAG+sC,KAChD,KACF8a,GAAEt1B,EAAI,6BAERlyB,OAAOC,eAAemzC,EAAE9zC,EAAEihD,EAAGrzC,EAAGuE,GAChC+4C,GAAE,GAAIppD,EAAI,CAACzB,EAAG+sC,GAAK,CAAC/sC,IAAI,SAAS2vC,GAC/B,IAAI9uC,EAAI8uC,EAAE,GAAIlvC,EAAI,CAAC,MACjB,IAAIgwC,EAAIqc,GAAGztD,KAAMo0C,EAAGlhB,EAAI,WACxB,OAAO1xB,EAAEsqD,aAAa1oD,EAAEyqC,EAAGuD,KAC1BlwC,YAAW,GACd,GAAIkB,EAAG,CACLA,EAAIumD,GAAE5mD,EAAGK,GACT,IAAI+uC,EAAIb,EAAE,GACVlvC,EAAEgmB,IAAM,SAASgqB,GACf,IAAIC,EAAIoc,GAAGztD,KAAMo0C,EAAGlhB,EAAI,WAAYoe,EAAI,GACxClvC,EAAE7B,EAAG8wC,EAAGF,EAAE6b,WAAW1b,EAAGF,IACxBya,GAAGva,IAIP,OADAtwC,OAAOC,eAAemzC,EAAE9zC,EAAEihD,EAAGrzC,EAAG9M,GACzB,MAEF,OAER0wD,uBAAuB,SAAS7jD,EAAGC,GAEpC+9C,GAAGh+C,EAAG,CAACpN,KADPqN,EAAIm5C,GAAEn5C,GACS49C,aAAa,SAASnrD,GACnC,IAAIC,EAAIqqD,GAAGtqD,GAEX,OADA+sD,GAAG/sD,GACIC,GACNosD,WAAW,SAASrsD,EAAGC,GACxB,OAAOsqD,GAAGtqD,IACTyvD,eAAe,EAAGC,qBAAqBjM,GAAIzK,EAAE,QAC/CmY,sBAAsB,SAAS9jD,EAAGC,EAAGvN,EAAGC,GACzC,SAASwC,KAETzC,EAAIurD,GAAGvrD,GACPuN,EAAIm5C,GAAEn5C,GACN9K,EAAEmR,OAAS,GACX03C,GAAGh+C,EAAG,CAACpN,KAAKqN,EAAGpF,YAAY1F,EAAG0oD,aAAa,SAASje,GAClD,OAAO7tC,KAAK8I,YAAYyL,OAAOs5B,IAC9Bmf,WAAW,SAASnf,EAAGH,GACxB,OAAOA,EAAEnsC,OACR8uD,eAAe,EAAGC,qBAAqB3C,GAAGz/C,EAAGvN,EAAGC,GAAIg5C,EAAE,OACzD2S,GAAGr+C,EAAG9K,IACL4uD,4BAA4B,SAAS/jD,EAAGC,EAAGvN,GAC5C,IAAIC,EAAIknD,GAAG75C,EAAG,QACdC,EAAIm5C,GAAEn5C,GACND,EAAIrN,EAAEkI,YACNlI,EAAII,OAAOY,OAAOhB,EAAEkI,YAAY5G,UAAW,CAACX,MAAM,CAACA,MAAMZ,GAAImI,YAAY,CAACvH,MAAMwpD,GAAG,GAAGnqD,EAAEC,QAAQqN,KAAK,kBAErGD,EAAEsG,OAAO5T,GAAKC,EACdqN,EAAEC,GAAKtN,GACNqxD,uBAAuB,SAAShkD,EAAGC,EAAGvN,GACvCA,EAAIurD,GAAGvrD,GAEPsrD,GAAGh+C,EAAG,CAACpN,KADPqN,EAAIm5C,GAAEn5C,GACS49C,aAAa,SAASlrD,GACnC,OAAOA,GACNosD,WAAW,SAASpsD,EAAGwC,GACxB,OAAOA,GACNitD,eAAe,EAAGC,qBAAqB1C,GAAG1/C,EAAGvN,GAAIi5C,EAAE,QACrDsY,0BAA0B,SAASjkD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,GACnD,IAAIH,EAAI8f,GAAGt/C,EAAGvN,GACdsN,EAAIo5C,GAAEp5C,GACN7K,EAAIulD,GAAE/nD,EAAGwC,GACTmpD,GAAGt+C,GAAG,WACJq/C,GAAG,eAAer/C,yBAA0By/B,KAC3Cx/B,EAAI,GACPs9C,GAAE,GAAI9d,GAAG,SAAS3rC,GAEhB,OADAkrD,GAAGh/C,EAAGs/C,GAAGt/C,EAAG,CAAClM,EAAE,GAAI,MAAMoC,OAAOpC,EAAE8G,MAAM,IAAK,KAAMzF,EAAGyqC,GAAI3/B,EAAI,GACvD,OAERikD,yBAAyB,SAASlkD,EAAGC,EAAGvN,EAAGC,EAAGwC,GAC/C8K,EAAIm5C,GAAEn5C,IACL,IAAM9K,IAAMA,EAAI,YACjBA,EAAI8oD,GAAGvrD,GACP,IAAIktC,EAAI9rC,GAAKA,EACb,GAAI,IAAMnB,EAAG,CACX,IAAI8sC,EAAI,GAAK,EAAI/sC,EACjBktC,EAAI9rC,GAAKA,GAAK2rC,IAAMA,EAEtB/sC,EAAIuN,EAAEsG,SAAS,YAAc,SAASzS,EAAGK,GACvC,OAAOA,IAAM,GACX,SAASL,EAAGK,GACd,OAAOA,GAET6pD,GAAGh+C,EAAG,CAACpN,KAAKqN,EAAG49C,aAAaje,EAAGmf,WAAWrsD,EAAG0vD,eAAe,EAAGC,qBAAqBzC,GAAG3/C,EAAG9K,EAAG,IAAMxC,GAAIg5C,EAAE,QACxGwY,6BAA6B,SAASnkD,EAAGC,EAAGvN,GAC7C,SAASC,EAAEitC,GACTA,IAAM,EACN,IAAIH,EAAI6T,EACR,OAAO,IAAIn+C,EAAEsqC,EAAErgC,OAAQqgC,EAAEG,EAAI,GAAIH,EAAEG,IAErC,IAAIzqC,EAAI,CAACu+C,UAAW70C,WAAY+0C,WAAYtD,YAAawD,WAAYI,YAAa7D,aAAcgE,cAAep0C,GAE/G+9C,GAAGh+C,EAAG,CAACpN,KADPF,EAAI0mD,GAAE1mD,GACSmrD,aAAalrD,EAAGyvD,eAAe,EAAGC,qBAAqB1vD,GAAK,CAACw9C,IAAG,KAC9EiU,4BAA4B,SAASpkD,EAAGC,GAEzC,IAAIvN,EAAI,iBADRuN,EAAIm5C,GAAEn5C,IAEN+9C,GAAGh+C,EAAG,CAACpN,KAAKqN,EAAG49C,aAAa,SAASlrD,GACnC,IAAIwC,EAAIm+C,EAAE3gD,GAAK,GAAIitC,EAAIjtC,EAAI,EAC3B,GAAID,EACF,IAAK,IAAI+sC,EAAIG,EAAG9rC,EAAI,EAAGA,GAAKqB,IAAKrB,EAAG,CAClC,IAAIK,EAAIyrC,EAAI9rC,EACZ,GAAIA,GAAKqB,GAAK,GAAKg+C,EAAEh/C,GAAI,CAEvB,GADAsrC,EAAIA,EAAIoZ,GAAG1F,EAAG1T,EAAGtrC,EAAIsrC,GAAK,QACtB,IAAWntC,EACb,IAAIA,EAAImtC,OAERntC,GAAK+O,OAAO03C,aAAa,GAAIzmD,GAAKmtC,EAEpCA,EAAItrC,EAAI,OAGP,CAEL,IADA7B,EAAIuH,MAAM1E,GACLrB,EAAI,EAAGA,EAAIqB,IAAKrB,EACnBxB,EAAEwB,GAAKuN,OAAO03C,aAAa5F,EAAEvT,EAAI9rC,IAEnCxB,EAAIA,EAAEqF,KAAK,IAGb,OADAoiD,GAAGpnD,GACIL,GACNysD,WAAW,SAASpsD,EAAGwC,GACxBA,aAAa+J,cAAgB/J,EAAI,IAAI0J,WAAW1J,IAChD,IAAIyqC,EAAI,iBAAmBzqC,EAC3ByqC,GAAKzqC,aAAa0J,YAAc1J,aAAakvD,mBAAqBlvD,aAAau+C,WAAa6G,GAAE,yCAC9F,IAAI9a,EAAI/sC,GAAKktC,EAAIqZ,GAAG9jD,GAAKA,EAAEK,OACvB1B,EAAIwwD,GAAG,EAAI7kB,EAAI,GAAItrC,EAAIL,EAAI,EAE/B,GADAw/C,EAAEx/C,GAAK,GAAK2rC,EACR/sC,GAAKktC,EACPF,GAAGvqC,EAAGg+C,EAAGh/C,EAAGsrC,EAAI,QAEhB,GAAIG,EACF,IAAKA,EAAI,EAAGA,EAAIH,IAAKG,EAAG,CACtB,IAAIttC,EAAI6C,EAAEmL,WAAWs/B,GACrB,IAAMttC,IAAMynD,GAAG5lD,GAAIomD,GAAE,2DACrBpH,EAAEh/C,EAAIyrC,GAAKttC,OAGb,IAAKstC,EAAI,EAAGA,EAAIH,IAAKG,EACnBuT,EAAEh/C,EAAIyrC,GAAKzqC,EAAEyqC,GAKnB,OADA,OAASjtC,GAAKA,EAAE+D,KAAKqjD,GAAIjmD,GAClBA,GACNsuD,eAAe,EAAGC,qBAAqBjM,GAAIzK,EAAE,SAASh5C,GACvDonD,GAAGpnD,OAEJ4xD,6BAA6B,SAASvkD,EAAGC,EAAGvN,GAE7C,GADAA,EAAI0mD,GAAE1mD,GACF,IAAMuN,EACR,IAAItN,EAAImtD,GACJ3qD,EAAI4qD,GACJngB,EAAIogB,GACJvgB,EAAI,IAAM2T,EACVt/C,EAAI,OAER,IAAMmM,IAAMtN,EAAIstD,GAAI9qD,EAAI+qD,GAAItgB,EAAIugB,GAAI1gB,EAAI,IAAM6T,EAAGx/C,EAAI,GAEvDkqD,GAAGh+C,EAAG,CAACpN,KAAKF,EAAGmrD,aAAa,SAAS1pD,GACnC,IAAK,IAA4B8wB,EAAxB3yB,EAAIghD,EAAEn/C,GAAK,GAAIgyC,EAAI1G,IAAQj7B,EAAIrQ,EAAI,EAAGkuC,EAAI,EAAGA,GAAK/vC,IAAK+vC,EAAG,CACjE,IAAI9uC,EAAIY,EAAI,EAAIkuC,EAAIpiC,EAChBoiC,GAAK/vC,GAAK,GAAK6zC,EAAE5yC,GAAKO,KACxB0Q,EAAI7R,EAAE6R,EAAGjR,EAAIiR,QAAI,IAAWygB,EAAIA,EAAIzgB,GAAKygB,GAAK5jB,OAAO03C,aAAa,GAAI9zB,GAAKzgB,GAAIA,EAAIjR,EAAI0M,GAI3F,OADA85C,GAAG5lD,GACI8wB,GACN85B,WAAW,SAAS5qD,EAAG7B,GACxB,iBAAmBA,GAAKioD,GAAE,6CAA6C7nD,GACvE,IAAIyzC,EAAIvG,EAAEttC,GAAI2yB,EAAIq/B,GAAG,EAAIne,EAAIlmC,GAI7B,OAHAqzC,EAAEruB,GAAK,GAAKkhB,GAAKryC,EACjBqB,EAAE7C,EAAG2yB,EAAI,EAAGkhB,EAAIlmC,GAChB,OAAS9L,GAAKA,EAAEuC,KAAKqjD,GAAI90B,GAClBA,GACNm9B,eAAe,EAAGC,qBAAqBjM,GAAIzK,EAAE,SAASx3C,GACvD4lD,GAAG5lD,OAEJqwD,8BAA8B,SAASxkD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,GACvDwc,GAAGp8C,GAAK,CAACpN,KAAKwmD,GAAEn5C,GAAI40C,GAAG6F,GAAEhoD,EAAGC,GAAI4qD,EAAE7C,GAAEvlD,EAAGyqC,GAAIuY,GAAG,KAC7CsM,oCAAoC,SAASzkD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,EAAGH,EAAG3rC,EAAGK,EAAG7B,GACzE8pD,GAAGp8C,GAAGm4C,GAAGzhD,KAAK,CAACslD,GAAG5C,GAAEn5C,GAAIyvC,GAAGh9C,EAAG4pD,GAAG5B,GAAE/nD,EAAGwC,GAAIonD,GAAG3c,EAAGod,GAAGvd,EAAGsd,GAAGrC,GAAE5mD,EAAGK,GAAI8oD,GAAG3qD,KACpEoyD,sBAAsB,SAAS1kD,EAAGC,GAEnC+9C,GAAGh+C,EAAG,CAAC08C,IAAG,EAAI9pD,KADdqN,EAAIm5C,GAAEn5C,GACgBmiD,eAAe,EAAGvE,aAAa,aAClDkB,WAAW,gBAEb4F,iCAAiC,KAAM,EAAIC,UAAU,SAAS5kD,EAAGC,EAAGvN,GACrEsN,EAAIg9C,GAAGh9C,GACPC,EAAI45C,GAAG55C,EAAG,aACV,IAAItN,EAAI,GAAIwC,EAAI8nD,GAAGtqD,GAEnB,OADA2gD,EAAE5gD,GAAK,GAAKyC,EACL8K,EAAE8+C,WAAWpsD,EAAGqN,IACtB6kD,mBAAmB,SAAS7kD,EAAGC,EAAGvN,EAAGC,EAAGwC,GACzC6K,EAAIugD,GAAGvgD,GACPC,EAAI+8C,GAAG/8C,GACPvN,EAAI2tD,GAAG3tD,GACP,IAAIktC,EAAI,GAER,OADA0T,EAAE3gD,GAAK,GAAKsqD,GAAGrd,GACR5/B,EAAEC,EAAGvN,EAAGktC,EAAGzqC,IACjB2vD,wBAAwB,SAAS9kD,EAAGC,EAAGvN,EAAGC,IAC3CqN,EAAIugD,GAAGvgD,IACPC,EAAI+8C,GAAG/8C,GACPvN,EAAI2tD,GAAG3tD,GACC,KAAMC,IACboyD,cAActF,GAAIuF,yBAAyB,SAAShlD,EAAGC,GACxD,IAAIvN,EAr3BN,SAAYsN,EAAGC,GACb,IAAK,IAAIvN,EAAImH,MAAMmG,GAAIrN,EAAI,EAAGA,EAAIqN,IAAKrN,EACrCD,EAAEC,GAAKknD,GAAGvG,EAAErzC,EAAI,EAAItN,GAAK,GAAI,aAAeA,GAE9C,OAAOD,EAi3BCuyD,CAAGjlD,EAAGC,GAAItN,EAAID,EAAE,GACxBuN,EAAItN,EAAEC,KAAO,KAAOF,EAAEkI,MAAM,GAAGiB,KAAI,SAAS4jC,GAC1C,OAAOA,EAAE7sC,QACR+E,KAAK,KAAO,IACf,IAAIxC,EAAIqrD,GAAGvgD,GACX,QAAI,IAAW9K,EACb,OAAOA,EAET,IAAIyqC,EAAI/lC,MAAMmG,EAAI,GAalB,OAZA7K,EAn4BF,SAAY6K,GACV,IAAIC,EAAIsgD,GAAG/qD,OAEX,OADA+qD,GAAG7pD,KAAKsJ,GACDC,EAg4BHilD,CAAG,CAACzlB,EAAG3rC,EAAGK,EAAG7B,KACf,IAAK,IAAI6zC,EAAI,EAAGlhB,EAAI,EAAGA,EAAIjlB,EAAI,IAAKilB,EAClC2a,EAAE3a,GAAKvyB,EAAEuyB,EAAI,GAAGo9B,qBAAqB/vD,EAAI6zC,GAAIA,GAAKzzC,EAAEuyB,EAAI,GAAGm9B,eAG7D,IADA3iB,EAAIA,EAAE3rC,GAAG8R,MAAM65B,EAAGG,GACb3a,EAAI,EAAGA,EAAIjlB,EAAI,IAAKilB,EACvBvyB,EAAEuyB,EAAI,GAAG42B,IAAMnpD,EAAEuyB,EAAI,GAAG42B,GAAGjc,EAAE3a,IAE/B,IAAKtyB,EAAE+pD,GACL,OAAO/pD,EAAEosD,WAAW5qD,EAAGsrC,KAGpB+gB,GAAGvgD,GAAK9K,GACdgwD,2BAA2B,SAASnlD,GAErC,OADAA,EAAIqgD,GAAGrgD,GACAi9C,GAAGxqD,EAAEuN,KACXolD,oBAAoB,SAASplD,EAAGC,GAGjC,OAFAD,EAAIg9C,GAAGh9C,GACPC,EAAI+8C,GAAG/8C,GACAg9C,GAAGj9C,EAAEC,KACXolD,cAAc,SAASrlD,GACxB,EAAIA,IAAM2uC,GAAEz7C,IAAI8M,GAAGs5C,IAAM,IACxBgM,iBAAiB,WAClB,OAAOrI,GAAG,KACTsI,mBAAmB,SAASvlD,GAC7B,OAAOi9C,GAAGoD,GAAGrgD,KACZwlD,kBAAkB,WACnB,OAAOvI,GAAG,KACTwI,uBAAuB,SAASzlD,GAEjC49C,GADQZ,GAAGh9C,IAEXy/C,GAAGz/C,IACF0lD,oBAAoB,SAAS1lD,EAAGC,EAAGvN,GACpCsN,EAAIg9C,GAAGh9C,GACPC,EAAI+8C,GAAG/8C,GACPvN,EAAIsqD,GAAGtqD,GACPsN,EAAEC,GAAKvN,GACNizD,kBAAkB,SAAS3lD,EAAGC,GAG/B,OADAD,GADAA,EAAI65C,GAAG75C,EAAG,sBACJqiD,qBAAqBpiD,GACpBg9C,GAAGj9C,IACTsc,MAAM,KACP02B,EAAG,KACF4S,yBAAyB,CAAC5lD,EAAGC,EAAGvN,KAEjC,IAAIC,EACJ,IAFA8tD,GAAGjrD,OAAS,EAEP9C,IAAM,EAAGC,EAAIwgD,EAAElzC,MAClBvN,GAAK,KAAOC,EAAID,EAAG+tD,GAAG/pD,KAAK,KAAO/D,EAAI0gD,EAAE3gD,GAAK8gD,EAAG9gD,KAAO,MAAOA,EAEhE,OAAO+6C,EAAGztC,GAAG4F,MAAM,KAAM66C,KACxBoF,oBAAoB,WACrB,OAAOpgD,KAAKD,OACXsgD,mBAAmB,IAAM3lB,YAAY36B,MAAOugD,sBAAsB,CAAC/lD,EAAGC,EAAGvN,IAAMygD,EAAE6S,WAAWhmD,EAAGC,EAAGA,EAAIvN,GAAIuzD,uBAAuBjmD,IAClI,IAAIC,EAAIkzC,EAAE39C,OAEV,GAAI,YADJwK,KAAO,GAEL,OAAO,EAET,IAAK,IAAItN,EAAI,EAAG,GAAKA,EAAGA,GAAK,EAAG,CAC9B,IAAIC,EAAIsN,GAAK,EAAI,GAAMvN,GACvBC,EAAImV,KAAKE,IAAIrV,EAAGqN,EAAI,WACpB,IAAI7K,EAAI2S,KACRnV,EAAImV,KAAKC,IAAI/H,EAAGrN,GAChBqN,EAAG,CACD7K,EAAIA,EAAE6S,IAAIxV,KAAK2C,EAAG,WAAYxC,GAAK,MAAQA,EAAI,OAAS,OAASsgD,EAAG7zC,OAAOkiD,WAAa,QAAU,GAClG,IACErO,EAAGiT,KAAK/wD,GACRw3C,IACA,IAAI/M,EAAI,EACR,MAAM5/B,EACN,MAAOy/B,IAETG,OAAI,EAEN,GAAIA,EACF,OAAO,EAGX,OAAO,GACNumB,YAAY,CAACnmD,EAAGC,KACjB,IAAIvN,EAAI,EAUR,OATAiuD,KAAKzpD,SAAQ,SAASvE,EAAGwC,GACvB,IAAIyqC,EAAI3/B,EAAIvN,EAEZ,IADAyC,EAAIm+C,EAAEtzC,EAAI,EAAI7K,GAAK,GAAKyqC,EACnBA,EAAI,EAAGA,EAAIjtC,EAAE6C,SAAUoqC,EAC1BgP,EAAEz5C,KAAO,GAAKxC,EAAE2N,WAAWs/B,GAE7BgP,EAAEz5C,GAAK,GAAK,EACZzC,GAAKC,EAAE6C,OAAS,KAEX,GACN4wD,kBAAkB,CAACpmD,EAAGC,KACvB,IAAIvN,EAAIiuD,KACRrN,EAAEtzC,GAAK,GAAKtN,EAAE8C,OACd,IAAI7C,EAAI,EAKR,OAJAD,EAAEwE,SAAQ,SAAS/B,GACjBxC,GAAKwC,EAAEK,OAAS,KAElB89C,EAAErzC,GAAK,GAAKtN,EACL,GACN0zD,SAAS,SAASrmD,GACnB,IACE,IAAIC,EAAI+7C,GAAGh8C,GACX,GAAI,OAASC,EAAEmuC,EACb,MAAM,IAAImL,GAAE,GAEdt5C,EAAEs0C,KAAOt0C,EAAEs0C,GAAK,MAChB,IACEt0C,EAAExN,EAAE45C,OAASpsC,EAAExN,EAAE45C,MAAMpsC,GACvB,MAAOvN,GACP,MAAMA,EACN,QACAy4C,GAAGlrC,EAAEmuC,GAAK,KAGZ,OADAnuC,EAAEmuC,EAAI,KACC,EACP,MAAO17C,GACP,QAAI,IAAsB2pD,IAAM,eAAiB3pD,EAAEE,KACjD,MAAMF,EAER,OAAOA,EAAE4sC,KAEVgnB,QAAQ,SAAStmD,EAAGC,EAAGvN,EAAGC,GAC3B,IACEqN,EAAG,CACD,IAAI7K,EAAI6mD,GAAGh8C,GACXA,EAAIC,EACJ,IAAK,IAAI2/B,EAAGH,EAAIx/B,EAAI,EAAGw/B,EAAI/sC,EAAG+sC,IAAK,CACjC,IAAI3rC,EAAIw/C,EAAEtzC,GAAK,GAAI7L,EAAIm/C,EAAEtzC,EAAI,GAAK,GAClCA,GAAK,EACL,IAAI1N,EAAI6C,EAAGgxC,EAAIryC,EAAGmxB,EAAI9wB,EAAGqQ,EAAIo7B,EAAGyC,EAAIuM,EACpC,GAAI,EAAI3pB,GAAK,EAAIzgB,EACf,MAAM,IAAI+0C,GAAE,IAEd,GAAI,OAASjnD,EAAE87C,EACb,MAAM,IAAImL,GAAE,GAEd,GAAI,IAAiB,QAAVjnD,EAAE4pD,OACX,MAAM,IAAI3C,GAAE,GAEd,GAAI,QAAyB,MAAdjnD,EAAEqP,KAAKnO,MACpB,MAAM,IAAI+lD,GAAE,IAEd,IAAKjnD,EAAEG,EAAEkrC,KACP,MAAM,IAAI4b,GAAE,IAEd,IAAIhmD,OAAI,IAAsBiR,EAC9B,GAAKjR,GAEE,IAAKjB,EAAEknD,SACZ,MAAM,IAAID,GAAE,SAFZ/0C,EAAIlS,EAAE8O,SAIR,IAAIjO,EAAIb,EAAEG,EAAEkrC,KAAKrrC,EAAG+vC,EAAG8D,EAAGlhB,EAAGzgB,GAC7BjR,IAAMjB,EAAE8O,UAAYjO,GACpB,IAAI+vC,EAAI/vC,EACR,GAAI,EAAI+vC,EAAG,CACT,IAAIC,GAAK,EACT,MAAMnjC,EAGR,GADAC,GAAKijC,EACDA,EAAI/uC,EACN,WAEF,IAAuByrC,IAAMA,GAAKsD,GAEpCC,EAAIljC,EAGN,OADAqzC,EAAE3gD,GAAK,GAAKwwC,EACL,EACP,MAAOC,GACP,QAAI,IAAsBiZ,IAAM,eAAiBjZ,EAAExwC,KACjD,MAAMwwC,EAER,OAAOA,EAAE9D,KAEVinB,QAAQ,SAASvmD,EAAGC,EAAGvN,EAAGC,EAAGwC,GAC9B8K,EAAIvN,EAAI,UAAY,EAAI,UAAYuN,GAAKA,IAAM,GAAK,WAAavN,EAAI8zD,IACrE,IACE,GAAIC,MAAMxmD,GACR,OAAO,GAET,IAAI2/B,EAAIoc,GAAGh8C,GAMX,OALA08C,GAAG9c,EAAG3/B,EAAGtN,GACTi1C,EAAK,CAAChI,EAAEx+B,WAAa,GAAImrC,EAAK3M,EAAEx+B,SAAU,IAAQ0G,KAAKG,IAAIskC,GAAM,EAAMA,GAAMzkC,KAAK4+C,MAAMna,EAAK,cAAkB,KAAOzkC,KAAKgoC,MAAMvD,MAASA,IAAO,IAAM,cAAkB,EAAI,IAC7K8G,EAAEl+C,GAAK,GAAKyyC,EAAG,GACfyL,EAAEl+C,EAAI,GAAK,GAAKyyC,EAAG,GACnBhI,EAAE2U,IAAM,IAAMt0C,GAAK,IAAMtN,IAAMitC,EAAE2U,GAAK,MAC/B,EACP,MAAO9U,GACP,QAAI,IAAsB4c,IAAM,eAAiB5c,EAAE7sC,KACjD,MAAM6sC,EAER,OAAOA,EAAEH,KAEVqnB,SAAS,SAAS3mD,EAAGC,EAAGvN,EAAGC,GAC5B,IACEqN,EAAG,CACD,IAAI7K,EAAI6mD,GAAGh8C,GACXA,EAAIC,EACJ,IAAK,IAAI2/B,EAAGH,EAAIx/B,EAAI,EAAGw/B,EAAI/sC,EAAG+sC,IAAK,CACjC,IAAI3rC,EAAIw/C,EAAEtzC,GAAK,GAAI7L,EAAIm/C,EAAEtzC,EAAI,GAAK,GAClCA,GAAK,EACL,IAAI1N,EAAI6C,EAAGgxC,EAAIryC,EAAGmxB,EAAI9wB,EAAGqQ,EAAIo7B,EAAGyC,EAAIuM,EACpC,GAAI,EAAI3pB,GAAK,EAAIzgB,EACf,MAAM,IAAI+0C,GAAE,IAEd,GAAI,OAASjnD,EAAE87C,EACb,MAAM,IAAImL,GAAE,GAEd,GAAI,IAAiB,QAAVjnD,EAAE4pD,OACX,MAAM,IAAI3C,GAAE,GAEd,GAAI,QAAyB,MAAdjnD,EAAEqP,KAAKnO,MACpB,MAAM,IAAI+lD,GAAE,IAEd,IAAKjnD,EAAEG,EAAEgnD,MACP,MAAM,IAAIF,GAAE,IAEdjnD,EAAEknD,UAAsB,KAAVlnD,EAAE4pD,OAAgBQ,GAAGpqD,EAAG,EAAG,GACzC,IAAIiB,OAAI,IAAsBiR,EAC9B,GAAKjR,GAEE,IAAKjB,EAAEknD,SACZ,MAAM,IAAID,GAAE,SAFZ/0C,EAAIlS,EAAE8O,SAIR,IAAIjO,EAAIb,EAAEG,EAAEgnD,MAAMnnD,EAAG+vC,EAAG8D,EAAGlhB,EAAGzgB,OAAG,GACjCjR,IAAMjB,EAAE8O,UAAYjO,GACpB,IAAI+vC,EAAI/vC,EACR,GAAI,EAAI+vC,EAAG,CACT,IAAIC,GAAK,EACT,MAAMnjC,EAERC,GAAKijC,OACL,IAAuBtD,IAAMA,GAAKsD,GAEpCC,EAAIljC,EAGN,OADAqzC,EAAE3gD,GAAK,GAAKwwC,EACL,EACP,MAAOC,GACP,QAAI,IAAsBiZ,IAAM,eAAiBjZ,EAAExwC,KACjD,MAAMwwC,EAER,OAAOA,EAAE9D,KAEVsnB,WAAW,CAAC5mD,EAAGC,EAAGvN,EAAGC,IAhmC6J,EAACqN,EAAGC,EAAGvN,EAAGC,KAC7L,SAASwC,EAAEktC,EAAG9uC,EAAGJ,GACf,IAAKkvC,EAAI,iBAAmBA,EAAIA,EAAE/oC,WAAa+oC,GAAK,GAAIA,EAAE7sC,OAASjC,GACjE8uC,EAAIlvC,EAAE,GAAKkvC,EAEb,OAAOA,EAET,SAASzC,EAAEyC,EAAG9uC,GACZ,OAAO4B,EAAEktC,EAAG9uC,EAAG,KAEjB,SAASksC,EAAE4C,EAAG9uC,GACZ,SAASJ,EAAEgwC,GACT,OAAO,EAAIA,GAAK,EAAI,EAAIA,EAAI,EAAI,EAElC,IAAID,EAEJ,OADA,KAAOA,EAAI/vC,EAAEkvC,EAAEwkB,cAAgBtzD,EAAEszD,iBAAmB,KAAO3jB,EAAI/vC,EAAEkvC,EAAEykB,WAAavzD,EAAEuzD,eAAiB5jB,EAAI/vC,EAAEkvC,EAAE0kB,UAAYxzD,EAAEwzD,YAClH7jB,EAET,SAASpvC,EAAEuuC,GACT,OAAOA,EAAE2kB,UACP,KAAK,EACH,OAAO,IAAIvhD,KAAK48B,EAAEwkB,cAAgB,EAAG,GAAI,IAC3C,KAAK,EACH,OAAOxkB,EACT,KAAK,EACH,OAAO,IAAI58B,KAAK48B,EAAEwkB,cAAe,EAAG,GACtC,KAAK,EACH,OAAO,IAAIphD,KAAK48B,EAAEwkB,cAAe,EAAG,GACtC,KAAK,EACH,OAAO,IAAIphD,KAAK48B,EAAEwkB,cAAe,EAAG,GACtC,KAAK,EACH,OAAO,IAAIphD,KAAK48B,EAAEwkB,cAAgB,EAAG,GAAI,IAC3C,KAAK,EACH,OAAO,IAAIphD,KAAK48B,EAAEwkB,cAAgB,EAAG,GAAI,KAG/C,SAAS1yD,EAAEkuC,GACT,IAAI9uC,EAAI8uC,EAAE7C,GACV,IAAK6C,EAAI,IAAI58B,KAAK,IAAKA,KAAK48B,EAAEwE,GAAK,KAAM,EAAG,GAAIogB,WAAY,EAAI1zD,GAAI,CAClE,IAAIJ,EAAIkvC,EAAEykB,WAAY5jB,GAAKie,GAAG9e,EAAEwkB,eAAiBzF,GAAKC,IAAIluD,GAC1D,KAAII,EAAI2vC,EAAIb,EAAE0kB,WAEP,CACL1kB,EAAE6kB,QAAQ7kB,EAAE0kB,UAAYxzD,GACxB,MAHAA,GAAK2vC,EAAIb,EAAE0kB,UAAY,EAAG1kB,EAAE6kB,QAAQ,GAAI,GAAK/zD,EAAIkvC,EAAE8kB,SAASh0D,EAAI,IAAMkvC,EAAE8kB,SAAS,GAAI9kB,EAAE+kB,YAAY/kB,EAAEwkB,cAAgB,IASzH,OAHA1zD,EAAI,IAAIsS,KAAK48B,EAAEwkB,cAAgB,EAAG,EAAG,GACrCtzD,EAAIO,EAAE,IAAI2R,KAAK48B,EAAEwkB,cAAe,EAAG,IACnC1zD,EAAIW,EAAEX,GACC,GAAKssC,EAAElsC,EAAG8uC,GAAK,GAAK5C,EAAEtsC,EAAGkvC,GAAKA,EAAEwkB,cAAgB,EAAIxkB,EAAEwkB,cAAgBxkB,EAAEwkB,cAAgB,EAEjG,IAAIv0D,EAAI+gD,EAAE1gD,EAAI,IAAM,GAIpB,IAAK,IAAIwzC,KAHTxzC,EAAI,CAAC0qD,GAAGhK,EAAE1gD,GAAK,GAAIyqD,GAAG/J,EAAE1gD,EAAI,GAAK,GAAI6gD,GAAGH,EAAE1gD,EAAI,GAAK,GAAIgiD,GAAGtB,EAAE1gD,EAAI,IAAM,GAAIi9C,GAAGyD,EAAE1gD,EAAI,IAAM,GAAIk0C,GAAGwM,EAAE1gD,EAAI,IAAM,GAAI07C,EAAEgF,EAAE1gD,EAAI,IAAM,GAAI6sC,GAAG6T,EAAE1gD,EAAI,IAAM,GAAIirD,GAAGvK,EAAE1gD,EAAI,IAAM,GAAIwqD,GAAG9J,EAAE1gD,EAAI,IAAM,GAAI2qD,GAAGhrD,GAAIA,EAAIumD,GAAG1F,EAAG7gD,GAAU,IACtNI,EAAIA,EAAImmD,GAAG1F,EAAGzgD,GAAK,GACnBJ,EAAI,CAAC,KAAK,uBAAwB,KAAK,WAAY,KAAK,WAAY,KAAK,KAAM,KAAK,cAAe,KAAK,QAAS,KAAK,WAAY,KAAK,WAAY,KAAK,WAAY,MAAM,KAAM,MAAM,KAAM,MAAM,WAAY,MAAM,WAAY,MAAM,KAAM,MAAM,KAAM,MAAM,KAAM,MAAM,KAAM,MAAM,KAAM,MAAM,KAAM,MAAM,KAAM,MAAM,KAAM,MAAM,KAAM,MAAM,KAAM,MAAM,KAAM,MAAM,KAAM,MAAM,KAAM,MAAM,KAAM,MAAM,MAE5YI,EAAIA,EAAE0N,QAAQ,IAAIinD,OAAOlhB,EAAG,KAAM7zC,EAAE6zC,IAEtC,IAAIlhB,EAAI,2DAA2Dkd,MAAM,KAAM39B,EAAI,wFAAwF29B,MAAM,KA2BjL,IAAKgE,KA1BL7zC,EAAI,CAAC,KAAK+vC,GAAKpd,EAAEod,EAAEgM,GAAG75B,UAAU,EAAG,GAAI,KAAK6tB,GAAKpd,EAAEod,EAAEgM,GAAI,KAAKhM,GAAK79B,EAAE69B,EAAEuN,IAAIp7B,UAAU,EAAG,GAAI,KAAK6tB,GAAK79B,EAAE69B,EAAEuN,IAAK,KAAKvN,GAAKzC,GAAGyC,EAAEwE,GAAK,MAAQ,IAAM,EAAG,GAAI,KAAKxE,GAAKzC,EAAEyC,EAAEsS,GAAI,GAAI,KAAKtS,GAAKltC,EAAEktC,EAAEsS,GAAI,EAAG,KAAM,KAAKtS,GAAKluC,EAAEkuC,GAAG/oC,WAAWkb,UAAU,GAAI,KAAK6tB,GAAKluC,EAAEkuC,GAAI,KAAKA,GAAKzC,EAAEyC,EAAEmR,GAAI,GAAI,KAAKnR,IAE1R,IADAA,EAAIA,EAAEmR,IACGnR,EAAI,GAAK,GAAKA,IAAMA,GAAK,IAC3BzC,EAAEyC,EAAG,IACX,KAAKA,IACN,IAAK,IAAI9uC,EAAI,EAAGJ,EAAI,EAAGA,GAAKkvC,EAAEuN,GAAK,EAAGr8C,IAAM4tD,GAAG9e,EAAEwE,GAAK,MAAQua,GAAKC,IAAIluD,MAEvE,OAAOysC,EAAEyC,EAAEsS,GAAKphD,EAAG,IAClB,KAAK8uC,GAAKzC,EAAEyC,EAAEuN,GAAK,EAAG,GAAI,KAAKvN,GAAKzC,EAAEyC,EAAE+a,GAAI,GAAI,KAAK,IAAM,KAAM,KAAK/a,GAAK,GAAKA,EAAEmR,IAAM,GAAKnR,EAAEmR,GAAK,KAAO,KAAM,KAAKnR,GAAKzC,EAAEyC,EAAEgb,GAAI,GAAI,KAAK,IAAM,KAAM,KAAKhb,GAAKA,EAAEgM,GAAK,EAAG,KAAKhM,GAAKzC,EAAE93B,KAAK4+C,OAAOrkB,EAAE7C,GAAK,EAAI6C,EAAEgM,GAAK,GAAI,GAAI,KAAKhM,IACpO,IAAI9uC,EAAIuU,KAAK4+C,OAAOrkB,EAAE7C,GAAK,GAAK6C,EAAEgM,EAAI,GAAK,GAAK,GAEhD,GADA,IAAMhM,EAAEgM,EAAI,IAAMhM,EAAE7C,GAAK,GAAK,GAAKjsC,IAC/BA,EACF,IAAMA,IAAkC,IAA5BJ,GAAKkvC,EAAEgM,EAAI,IAAMhM,EAAE7C,IAAM,IAAa,GAAKrsC,GAAKguD,GAAG9e,EAAEwE,MAAQtzC,EAAI,QACxE,CACLA,EAAI,GACJ,IAAIJ,GAAKkvC,EAAEgM,EAAI,EAAIhM,EAAE7C,GAAK,GAAK,GAC9B,GAAKrsC,GAAK,GAAKA,GAAKguD,GAAG9e,EAAEwE,GAAK,IAAM,KAAOtzC,IAE9C,OAAOqsC,EAAErsC,EAAG,IACX,KAAK8uC,GAAKA,EAAEgM,EAAG,KAAKhM,GAAKzC,EAAE93B,KAAK4+C,OAAOrkB,EAAE7C,GAAK,GAAK6C,EAAEgM,EAAI,GAAK,GAAK,GAAI,GAAI,KAAKhM,IAAMA,EAAEwE,GAAK,MAAMvtC,WAAWkb,UAAU,GAAI,KAAK6tB,GAAKA,EAAEwE,GAAK,KAAM,KAAKxE,IAEzJ,IAAI9uC,EAAI,IADR8uC,EAAIA,EAAE8a,IAGN,OADA9a,EAAIv6B,KAAKG,IAAIo6B,GAAK,IACV9uC,EAAI,IAAM,KAAO8N,OAAO,QAAUghC,EAAI,GAAK,IAAMA,EAAI,KAAKznC,OAAO,IACxE,KAAKynC,GAAKA,EAAEib,GAAI,KAAK,IAAM,KAC9B5qD,EAAIA,EAAE0N,QAAQ,MAAO,QACX9N,EACRI,EAAE6T,SAAS4/B,KAAOzzC,EAAIA,EAAE0N,QAAQ,IAAIinD,OAAOlhB,EAAG,KAAM7zC,EAAE6zC,GAAGxzC,KAI3D,OADAwzC,EAAImQ,GADJ5jD,EAAIA,EAAE0N,QAAQ,QAAS,MACb,IACJ5K,OAASyK,EACN,GAET2uC,EAAEz1B,IAAIgtB,EAAGnmC,GACFmmC,EAAE3wC,OAAS,IAigCU8xD,CAAGtnD,EAAGC,EAAGvN,EAAGC,KAC1C,WACE,SAASqN,EAAEtN,GAQT,GAPAwgD,EAAIxgD,EAAIA,EAAEhB,QACVuhD,EAAKC,EAAEqU,OACP5a,IACAlF,EAAKyL,EAAEsU,0BACPlT,EAAGI,QAAQxB,EAAEuU,mBACb7S,IACAniD,EAAEi1D,wBAA0Bj1D,EAAEi1D,uBAAuB9S,GACjD,GAAKA,IAAO,OAASC,IAAO8S,cAAc9S,GAAKA,EAAK,MAAOC,GAAK,CAClE,IAAIniD,EAAImiD,EACRA,EAAK,KACLniD,IAEF,OAAOD,EAET,IAAIuN,EAAI,CAACi4B,IAAIuqB,GAAImF,uBAAuBnF,IAGxC,GAFA7N,IACAniD,EAAEi1D,wBAA0Bj1D,EAAEi1D,uBAAuB9S,GACjDniD,EAAEo1D,gBACJ,IACE,OAAOp1D,EAAEo1D,gBAAgB5nD,EAAGD,GAC5B,MAAOtN,GACPggD,EAAG,sDAAwDhgD,GAAI6sC,EAAG7sC,IAt/ExE,SAAYsN,EAAGC,GACb,IAAIvN,EAAIiiD,EACR,OAAOjK,GAAM,mBAAqBqI,YAAY+U,sBAAwBna,EAAGj7C,IAAMA,EAAEylB,WAAW,YAAc,mBAAqBg9B,MAAQnJ,EAAGt5C,EAAGsN,EAAGC,GAAKk1C,MAAMziD,EAAG,CAAC0iD,YAAY,gBAAgBC,KAAK1iD,GAAKogD,YAAY+U,qBAAqBn1D,EAAGqN,GAAGq1C,KAAKp1C,GAAG,SAAS9K,GAG3P,OAFAu9C,EAAG,kCAAoCv9C,GACvCu9C,EAAG,6CACI1G,EAAGt5C,EAAGsN,EAAGC,QAo/ElB6qC,CAAG7qC,GAAG,SAASvN,GACbsN,EAAEtN,EAAEsoB,aACHw6B,MAAMjW,GA5BX,GA+BA,IAAIwa,GAAK/5C,IAAM+5C,GAAK7G,EAAE6U,MAAM/nD,GAAIskD,GAAKtkD,IAAMskD,GAAKpR,EAAE8U,QAAQhoD,GAAI2iD,GAAK,KAAOA,GAAKzP,EAAE+U,oBAAqBpgB,GAAKp1C,EAAEy1D,qCAAuCloD,IAAM6nC,GAAKp1C,EAAEy1D,qCAAuChV,EAAEiV,qCAAqCnoD,GAC/OvN,EAAE21D,sBAAwB,CAACpoD,EAAGC,KAAOxN,EAAE21D,sBAAwBlV,EAAEmV,sBAAsBroD,EAAGC,GAC1FxN,EAAE61D,oBAAsB,CAACtoD,EAAGC,KAAOxN,EAAE61D,oBAAsBpV,EAAEqV,oBAAoBvoD,EAAGC,GACpF,IAWIuoD,GAXArR,GAAK1kD,EAAEg2D,gDAAkD,CAACzoD,EAAGC,EAAGvN,KAAOykD,GAAK1kD,EAAEg2D,gDAAkDvV,EAAEwV,gDAAgD1oD,EAAGC,EAAGvN,GAAI0kD,GAAK3kD,EAAEk2D,iDAAmD,CAAC3oD,EAAGC,EAAGvN,KAAO0kD,GAAK3kD,EAAEk2D,iDAAmDzV,EAAE0V,iDAAiD5oD,EAAGC,EAAGvN,GAAIunD,GAAKj6C,IAAMi6C,GAAK/G,EAAE2V,eAAe7oD,GAgBha,SAAS8oD,KACP,SAAS9oD,IACP,IAAKwoD,KAAOA,IAAK,EAAI/1D,EAAEs2D,WAAY,GAAK9gB,GAAK,CAQ3C,GAPAx1C,EAAEu2D,UAAYhkB,KAAOA,IAAK,EAAI2X,KAAMlqD,EAAEw2D,MAAQx2D,EAAEw2D,MAAOx2D,EAAEy2D,OAASz2D,EAAEy2D,OAAQz2D,EAAE02D,OAAS12D,EAAE02D,OAAQ12D,EAAEw2D,MAAQ5gB,GAAG,QAAS51C,EAAEw2D,OAAS/O,GAAG,WAAY,cAAeznD,EAAEy2D,OAAS7gB,GAAG,SAAU,KAAM51C,EAAEy2D,QAAUhP,GAAG,WAAY,eAAgBznD,EAAE02D,OAAS9gB,GAAG,SAAU,KAAM51C,EAAE02D,QAAUjP,GAAG,YAAa,eAAgBrM,GAAG,aAAc,GAAIA,GAAG,cAAe,GAAIA,GAAG,cAAe,IAChXpB,IAAK,EACLyL,EAAG5D,GACHhV,EAAG7sC,GACCA,EAAEguC,sBACJhuC,EAAEguC,uBAEAhuC,EAAE22D,QACJ,IAAK,mBAAqB32D,EAAE22D,UAAY32D,EAAE22D,QAAU,CAAC32D,EAAE22D,UAAW32D,EAAE22D,QAAQ5zD,QAAS,CACnF,IAAIyK,EAAIxN,EAAE22D,QAAQtwC,QAClBy7B,EAAGG,QAAQz0C,GAGfi4C,EAAG3D,IAGP,KAAM,EAAIK,GAAK,CACb,GAAIniD,EAAEgiD,OACJ,IAAK,mBAAqBhiD,EAAEgiD,SAAWhiD,EAAEgiD,OAAS,CAAChiD,EAAEgiD,SAAUhiD,EAAEgiD,OAAOj/C,QACtEg/C,IAGJ0D,EAAG1Q,GACH,EAAIoN,IAAOniD,EAAE42D,WAAa52D,EAAE42D,UAAU,cAAexjD,YAAW,WAC9DA,YAAW,WACTpT,EAAE42D,UAAU,MACX,GACHrpD,MACC,IAAMA,MAGb,GAjDAvN,EAAE62D,6BAA+B,KAAO72D,EAAE62D,6BAA+BpW,EAAEqW,+BAC3E92D,EAAE+2D,aAAe,CAACxpD,EAAGC,EAAGvN,EAAGC,EAAGwC,KAAO1C,EAAE+2D,aAAetW,EAAEsW,cAAcxpD,EAAGC,EAAGvN,EAAGC,EAAGwC,GAClF1C,EAAEg3D,aAAe,CAACzpD,EAAGC,EAAGvN,EAAGC,EAAGwC,KAAO1C,EAAEg3D,aAAevW,EAAEuW,cAAczpD,EAAGC,EAAGvN,EAAGC,EAAGwC,GAClF1C,EAAEi3D,cAAgB,CAAC1pD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,KAAOntC,EAAEi3D,cAAgBxW,EAAEwW,eAAe1pD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,GAC3FntC,EAAEk3D,YAAc,CAAC3pD,EAAGC,EAAGvN,EAAGC,KAAOF,EAAEk3D,YAAczW,EAAEyW,aAAa3pD,EAAGC,EAAGvN,EAAGC,GACzEF,EAAEm3D,YAAc,CAAC5pD,EAAGC,EAAGvN,KAAOD,EAAEm3D,YAAc1W,EAAE0W,aAAa5pD,EAAGC,EAAGvN,GACnED,EAAEo3D,eAAiB,CAAC7pD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,EAAGH,KAAOhtC,EAAEo3D,eAAiB3W,EAAE2W,gBAAgB7pD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,EAAGH,GACpGhtC,EAAEq3D,eAAiB,CAAC9pD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,EAAGH,KAAOhtC,EAAEq3D,eAAiB5W,EAAE4W,gBAAgB9pD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,EAAGH,GACpGhtC,EAAEs3D,gBAAkB,CAAC/pD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,EAAGH,EAAG3rC,EAAGK,KAAO1B,EAAEs3D,gBAAkB7W,EAAE6W,iBAAiB/pD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,EAAGH,EAAG3rC,EAAGK,GACnH1B,EAAEu3D,iBAAmB,CAAChqD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,EAAGH,EAAG3rC,EAAGK,EAAG7B,KAAOG,EAAEu3D,iBAAmB9W,EAAE8W,kBAAkBhqD,EAAGC,EAAGvN,EAAGC,EAAGwC,EAAGyqC,EAAGH,EAAG3rC,EAAGK,EAAG7B,GAE5HwiD,EAAK,SAASmV,IACZzB,IAAMM,KACNN,KAAO1T,EAAKmV,IAoCVx3D,EAAEy3D,QACJ,IAAK,mBAAqBz3D,EAAEy3D,UAAYz3D,EAAEy3D,QAAU,CAACz3D,EAAEy3D,UAAW,EAAIz3D,EAAEy3D,QAAQ10D,QAC9E/C,EAAEy3D,QAAQ5uB,KAAV7oC,GAOF,OAJFq2D,KAISzpB,EAAUkB,SASX5uC,IAERA,EAAOD,QAAuBgH,KAAK8f,MAAM,kxBAInC,CAAE2xC,EAAyBlrB,EAAqB9sC,KAEtDA,EAAoBgB,EAAE8rC,GACD9sC,EAAoBQ,EAAEssC,EAAqB,CACzCmrB,UAAW,IAA2BC,EAAiD,YAEzF,IAAIA,EAA0Cl4D,EAAoB,IAMjF,CAAEg4D,EAAyBlrB,EAAqB9sC,KAEtDA,EAAoBgB,EAAE8rC,GACD9sC,EAAoBQ,EAAEssC,EAAqB,CACzCmrB,UAAW,IAAM,IAaxC,IAAIA,EAA2B,WAO3B,SAASA,EAAUE,EAAWC,EAAUC,EAASC,GAC7C14D,KAAKu4D,UAAYA,EACjBv4D,KAAKw4D,SAAWA,EAChBx4D,KAAK04D,QAAUA,EACf14D,KAAK24D,UAAY,EAKjB34D,KAAK44D,QAAU,KACf54D,KAAKipB,SAAW,IAAIwvC,EAAQI,wBAAwBN,EAAWC,GAiFnE,OA/EAx3D,OAAOC,eAAeo3D,EAAUn2D,UAAW,OAAQ,CAI/Cf,IAAK,WACD,OAAOnB,KAAKu4D,UAAU13D,MAE1BK,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeo3D,EAAUn2D,UAAW,OAAQ,CAI/Cf,IAAK,WACD,OAAOnB,KAAKipB,SAAS6vC,MAKzB1xC,IAAK,SAAU7lB,GACXvB,KAAKipB,SAAS6vC,KAAOv3D,GAEzBL,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeo3D,EAAUn2D,UAAW,YAAa,CAIpDf,IAAK,WACD,OAAOnB,KAAKu4D,UAAUQ,WAE1B73D,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeo3D,EAAUn2D,UAAW,aAAc,CAKrDf,IAAK,WACD,OAAwB,OAAjBnB,KAAK44D,SAEhB13D,YAAY,EACZuwD,cAAc,IAOlB4G,EAAUn2D,UAAU82D,QAAU,SAAUF,GACf,OAAjB94D,KAAK44D,QACL54D,KAAKipB,SAAS+vC,QAAQF,IAGtB94D,KAAKipB,SAAS6vC,KAAO,EACrB94D,KAAKipB,SAAS+vC,QAAQh5D,KAAK44D,SAC3B54D,KAAK44D,QAAU,OAUvBP,EAAUn2D,UAAU2R,MAAQ,SAAUolD,GAClCj5D,KAAKipB,SAASpV,MAAMolD,IAMxBZ,EAAUn2D,UAAUkuB,QAAU,WAC1BpwB,KAAKipB,SAASrC,UAEXyxC,EAlGmB,IAyGxB,CAAED,EAAyBlrB,EAAqB9sC,KAEtDA,EAAoBgB,EAAE8rC,GACD9sC,EAAoBQ,EAAEssC,EAAqB,CACzCgsB,kBAAmB,IAA2BC,EAAoE,kBAClHC,aAAc,IAA2BD,EAA+D,aACxGE,UAAW,IAA2BC,EAAmD,UACzFC,6BAA8B,IAA2BJ,EAA+E,6BACxIK,iBAAkB,IAA2BL,EAAmE,iBAChHM,YAAa,IAA2BN,EAA8D,YACtGO,iBAAkB,IAA2BP,EAAmE,iBAChHQ,YAAa,IAA2BR,EAA8D,YACtGS,kBAAmB,IAA2BT,EAAoE,kBAClHU,aAAc,IAA2BV,EAA+D,aACxGW,qBAAsB,IAA2BX,EAAuE,qBACxHY,0BAA2B,IAA2BC,EAAiF,0BACvIC,YAAa,IAA2BX,EAAqD,cAE/F,IAAIU,EAA0D55D,EAAoB,GAC9Ek5D,EAA4Cl5D,EAAoB,GAChE+4D,EAAqD/4D,EAAoB,IAQ5F,CAAEg4D,EAAyBlrB,EAAqB9sC,KAEtDA,EAAoBgB,EAAE8rC,GACD9sC,EAAoBQ,EAAEssC,EAAqB,CACzC6sB,0BAA2B,IAAM,IAExD,IAwCIA,EAA4B,SAAUG,GACtC,IAAI3oD,EAAS2oD,EAAG3oD,OAAQinD,EAAW0B,EAAG1B,SAAU2B,EAAKD,EAAGt3B,cAAeA,OAAuB,IAAPu3B,EAAgB,GAAKA,EAAIj7B,EAAWg7B,EAAGh7B,SAAUk7B,EAAOF,EAAGE,KAAMC,EAAMH,EAAGG,IAAKC,EAAYJ,EAAGI,UAAWC,EAAKL,EAAGM,qBAAsBA,OAA8B,IAAPD,GAAwBA,EAAIjyD,EAAK4xD,EAAGO,kBAAmBA,OAA2B,IAAPnyD,EAAgB,EAAMA,EACtV,KAAKiJ,GACAqxB,EAAcn/B,QACdy7B,GACAk7B,GACA5B,GACiB,oBAAX/1D,QACP,OAAO,KAgBX,IAAIi4D,EAAiB,KACjBC,GAAyB,EA4FzBjqD,EA3FuB,SAAU8I,GAIjC,GAAImhD,GAA0BnhD,aAAiBohD,WAEzB,WAAdphD,EAAM1N,OACN6uD,GAAyB,OAHjC,CASAA,EACIH,GACmB,aAAfhhD,EAAM1N,MACa,eAAnB4uD,EACRA,EAAiBlhD,EAAM1N,KACvB,IAAI+uD,EAAerhD,EAAMshD,cAAcC,wBACnCb,EA7Ee,SAAU1gD,EAAOghD,GACxC,IAAIN,EAAIC,EACR,MAAI,CAAC,aAAc,aAAa1qD,QAAQ+J,EAAM1N,OAAS,IACzB,QAAxBouD,EAAK1gD,EAAMwhD,eAA4B,IAAPd,OAAgB,EAASA,EAAGz2D,SAGzD+2D,GACDhhD,EAAME,iBAEH,CACHuhD,QAASzhD,EAAMwhD,QAAQ,GAAGC,QAC1BC,QAAS1hD,EAAMwhD,QAAQ,GAAGE,UAGV,aAAf1hD,EAAM1N,OACsB,QAA/BquD,EAAK3gD,EAAM2hD,sBAAmC,IAAPhB,OAAgB,EAASA,EAAG12D,QAC9D,CACHw3D,QAASzhD,EAAM2hD,eAAe,GAAGF,QACjCC,QAAS1hD,EAAM2hD,eAAe,GAAGD,SAI9B,CACHD,QAASzhD,EAAMyhD,QACfC,QAAS1hD,EAAM0hD,SAqDVE,CAAqB5hD,EAAOghD,GAAuBS,EAAUf,EAAGe,QAASC,EAAUhB,EAAGgB,QAC/F,GAAKD,GAAYC,EAAjB,CAGA,IAAIG,EAAUJ,EAAUJ,EAAa3qD,KACjCorD,EAAUJ,EAAUL,EAAazqD,IACjCmrD,EAAgBnB,EAAKlqB,iBAAiBmqB,EAAKC,EAAW,CACtDkB,KAAM,EACNC,KAAM,EACNC,KAAMb,EAAa7qD,MACnB2rD,KAAMd,EAAa/qD,QACpB0oD,EAASoD,OAAQnB,GAChBoB,EAAiB,IAAIzB,EAAK0B,MAC9BP,EAAcQ,OAAOF,GACrB,IAAIG,EAA0B,IAAI5B,EAAK6B,MAAMZ,EAASC,GAClDY,EAAoB9B,EAAK+B,MAAMN,EAAgBG,GAC/CI,EAAeF,EAAkB1pD,IACjC6pD,EAAeH,EAAkBzpD,IAKrC,OAJAypD,EAAkBt1C,SAClBi1C,EAAej1C,SACfo1C,EAAwBp1C,SACxB20C,EAAc30C,SACNpN,EAAM1N,MAaV,IAAK,WACD,IAAK,IAAIrE,EAAK,EAAG60D,EAAkB15B,EAAen7B,EAAK60D,EAAgB74D,OAAQgE,IACxD60D,EAAgB70D,GACtB80D,YAAYH,EAAcC,GAE3C,MAEJ,IAAK,YACL,IAAK,YACL,IAAK,YACD,IAAK,IAAIlC,EAAK,EAAGqC,EAAkB55B,EAAeu3B,EAAKqC,EAAgB/4D,OAAQ02D,IACxDqC,EAAgBrC,GACtBoC,YAAYH,EAAcC,GAE3C,MAGJ,IAAK,aACL,IAAK,YACD,IAAK,IAAI9B,EAAK,EAAGkC,EAAkB75B,EAAe23B,EAAKkC,EAAgBh5D,OAAQ82D,IACxDkC,EAAgBlC,GACtBmC,YAAYN,EAAcC,GAE3C,MAGJ,IAAK,WACL,IAAK,UACD,IAAK,IAAI/zD,EAAK,EAAGq0D,EAAkB/5B,EAAet6B,EAAKq0D,EAAgBl5D,OAAQ6E,IACxDq0D,EAAgBr0D,GACtBs0D,UAAUR,EAAcC,OAOjBv6D,UA7J5ByN,GA0KR,OAZAgC,EAAO+H,iBAAiB,YAAa5I,GACrCa,EAAO+H,iBAAiB,WAAY5I,GACpCa,EAAO+H,iBAAiB,YAAa5I,GACrCa,EAAO+H,iBAAiB,YAAa5I,GACrCa,EAAO+H,iBAAiB,UAAW5I,GACnCa,EAAO+H,iBAAiB,YAAa5I,EAAU,CAC3CmsD,QAASrC,IAEbjpD,EAAO+H,iBAAiB,aAAc5I,EAAU,CAC5CmsD,QAASrC,IAEbjpD,EAAO+H,iBAAiB,WAAY5I,GAC7B,WACHa,EAAOgJ,oBAAoB,YAAa7J,GACxCa,EAAOgJ,oBAAoB,WAAY7J,GACvCa,EAAOgJ,oBAAoB,YAAa7J,GACxCa,EAAOgJ,oBAAoB,YAAa7J,GACxCa,EAAOgJ,oBAAoB,UAAW7J,GACtCa,EAAOgJ,oBAAoB,YAAa7J,GACxCa,EAAOgJ,oBAAoB,aAAc7J,GACzCa,EAAOgJ,oBAAoB,WAAY7J,MAOzC,CAAE0nD,EAAyBlrB,EAAqB9sC,KAEtDA,EAAoBgB,EAAE8rC,GACD9sC,EAAoBQ,EAAEssC,EAAqB,CACzCmsB,UAAW,IAAM,EACjBY,YAAa,IAAM,IAG1C,IAAI6C,EAAuB,wCACvBC,EAAoB,mBACpBC,EAAsB,oBACtBC,EAAsB,qDACtBC,EAAiB,oBACjBC,EAA0B,CAAC,IAAK,KAChC9D,EAAY,cAWhB,SAASY,EAAY1rC,GACjB,IAAKA,EACD,OAAO8qC,EAEX,IAV0B1tD,EAUtByxD,GAVsBzxD,EAUc4iB,EATlB5iB,EAAI0C,QAAQ4uD,EAAqB,IAChC5uD,QAAQ0uD,GAAmB,SAAUM,EAAOC,GAC/D,OAAOhuD,OAAO03C,aAAasW,OAQ1BjvD,QAAQ2uD,EAAqB,IAC7B3uD,QAAQ4uD,EAAqB,IAC7B7uD,OACL,IAAKgvD,EACD,OAAO/D,EAEX,GArBJ,SAAsC9qC,GAClC,OAAO4uC,EAAwB1tD,QAAQ8e,EAAI,KAAO,EAoB9CgvC,CAA6BH,GAC7B,OAAOA,EAEX,IAAII,EAAwBJ,EAAaC,MAAMH,GAC/C,IAAKM,EACD,OAAOJ,EAEX,IAAIK,EAAYD,EAAsB,GACtC,OAAIV,EAAqB9zD,KAAKy0D,GACnBpE,EAEJ+D,IAML,CAAEhF,EAAyBlrB,EAAqB9sC,KAEtDA,EAAoBgB,EAAE8rC,GACD9sC,EAAoBQ,EAAEssC,EAAqB,CACzCgsB,kBAAmB,IAAM,EACzBE,aAAc,IAAM,EACpBG,6BAA8B,IAAM,EACpCC,iBAAkB,IAAM,EACxBC,YAAa,IAAM,EACnBC,iBAAkB,IAAM,EACxBC,YAAa,IAAM,EACnBC,kBAAmB,IAAM,EACzBC,aAAc,IAAM,EACpBC,qBAAsB,IAAM,IAEnD,IACQ4D,EADJC,GACID,EAAgB,SAAU98D,EAAGsN,GAI7B,OAHAwvD,EAAgB18D,OAAO48D,gBAClB,CAAEC,UAAW,cAAgB/1D,OAAS,SAAUlH,EAAGsN,GAAKtN,EAAEi9D,UAAY3vD,IACvE,SAAUtN,EAAGsN,GAAK,IAAK,IAAI9L,KAAK8L,EAAOlN,OAAOkB,UAAUC,eAAe1B,KAAKyN,EAAG9L,KAAIxB,EAAEwB,GAAK8L,EAAE9L,MAC3ExB,EAAGsN,IAErB,SAAUtN,EAAGsN,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIhF,UAAU,uBAAyBoG,OAAOpB,GAAK,iCAE7D,SAAS4vD,IAAO99D,KAAK8I,YAAclI,EADnC88D,EAAc98D,EAAGsN,GAEjBtN,EAAEsB,UAAkB,OAANgM,EAAalN,OAAOY,OAAOsM,IAAM4vD,EAAG57D,UAAYgM,EAAEhM,UAAW,IAAI47D,KAGnFrE,EACA,WACIz5D,KAAK+9D,WAAY,GAIrBlE,EAA8B,SAAUmE,GAExC,SAASnE,EAAarkB,GAClB,IAAIyoB,EAAQD,EAAOv9D,KAAKT,OAASA,KAEjC,OADAi+D,EAAMC,aAAe1oB,EACdyoB,EAcX,OAlBAN,EAAU9D,EAAcmE,GAMxBh9D,OAAOC,eAAe44D,EAAa33D,UAAW,cAAe,CACzDf,IAAK,WACD,OAAOnB,KAAKk+D,cAEhBh9D,YAAY,EACZuwD,cAAc,IAElBoI,EAAa33D,UAAUi8D,MAAQ,WACvBn+D,KAAK+9D,WACL/9D,KAAKk+D,aAAaC,SAGnBtE,EAnBsB,CAoB/BJ,GACEL,EAA8B,SAAU4E,GAExC,SAAS5E,EAAa5T,GAClB,IAAIyY,EAAQD,EAAOv9D,KAAKT,OAASA,KAEjC,OADAi+D,EAAMG,aAAe5Y,EACdyY,EAcX,OAlBAN,EAAUvE,EAAc4E,GAMxBh9D,OAAOC,eAAem4D,EAAal3D,UAAW,cAAe,CACzDf,IAAK,WACD,OAAOnB,KAAKo+D,cAEhBl9D,YAAY,EACZuwD,cAAc,IAElB2H,EAAal3D,UAAUi8D,MAAQ,WACvBn+D,KAAK+9D,WACL/9D,KAAKo+D,aAAaD,SAGnB/E,EAnBsB,CAoB/BK,GACEE,EAA6B,SAAUqE,GAEvC,SAASrE,EAAYvnD,GACjB,IAAI6rD,EAAQD,EAAOv9D,KAAKT,OAASA,KAEjC,OADAi+D,EAAMI,YAAcjsD,EACb6rD,EAcX,OAlBAN,EAAUhE,EAAaqE,GAMvBh9D,OAAOC,eAAe04D,EAAYz3D,UAAW,aAAc,CACvDf,IAAK,WACD,OAAOnB,KAAKq+D,aAEhBn9D,YAAY,EACZuwD,cAAc,IAElBkI,EAAYz3D,UAAUi8D,MAAQ,WACtBn+D,KAAK+9D,WACL/9D,KAAKq+D,YAAYF,SAGlBxE,EAnBqB,CAoB9BF,GACEF,EAA8C,WAC9C,SAASA,EAA6Bd,EAAS6F,GAC3Ct+D,KAAKu+D,qBAAuBD,EAC5Bt+D,KAAKw+D,YAAc,IAAI/F,EAAQnpB,sBAAsB,CACjDE,aAAcxvC,KAAKwvC,aAAa1tC,KAAK9B,QAgB7C,OAbAu5D,EAA6Br3D,UAAUstC,aAAe,SAAUivB,EAAOC,GACnE,IAAIC,EAUJ,OATIF,EAAMzvB,QACN2vB,EAAe,IAAI/E,EAAkB6E,GAEhCA,EAAMrvB,QACXuvB,EAAe,IAAIzF,EAAkBuF,GAEhCA,EAAMvvB,SACXyvB,EAAe,IAAIjF,EAAiB+E,IAEjCz+D,KAAKu+D,qBAAqBI,EAAcD,IAE5CnF,EApBsC,GA0B7CC,EAAkC,WAClC,SAASA,EAAiBoF,GACtB5+D,KAAK6+D,iBAAmBD,EA6D5B,OA3DApF,EAAiBt3D,UAAU4tC,OAAS,SAAU4uB,GAC1C1+D,KAAK6+D,iBAAiB/uB,OAAO4uB,IAEjC19D,OAAOC,eAAeu4D,EAAiBt3D,UAAW,OAAQ,CACtDf,IAAK,WACD,OAAOnB,KAAK6+D,iBAAiBh+D,MAEjCK,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeu4D,EAAiBt3D,UAAW,gBAAiB,CAC/Df,IAAK,WACD,OAAOnB,KAAK6+D,iBAAiBC,eAEjC59D,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeu4D,EAAiBt3D,UAAW,iBAAkB,CAChEf,IAAK,WACD,OAAOnB,KAAK6+D,iBAAiBE,gBAEjC79D,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeu4D,EAAiBt3D,UAAW,UAAW,CACzDf,IAAK,WACD,OAAOnB,KAAK6+D,iBAAiBzvB,SAEjCluC,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeu4D,EAAiBt3D,UAAW,UAAW,CACzDf,IAAK,WACD,OAAOnB,KAAK6+D,iBAAiB7vB,SAEjC9tC,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeu4D,EAAiBt3D,UAAW,SAAU,CACxDf,IAAK,WACD,OAAOnB,KAAK6+D,iBAAiB3vB,QAEjChuC,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeu4D,EAAiBt3D,UAAW,UAAW,CACzDf,IAAK,WACD,OAAOnB,KAAK6+D,iBAAiBjvB,SAEjC1uC,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeu4D,EAAiBt3D,UAAW,kBAAmB,CACjEf,IAAK,WACD,OAAOnB,KAAK6+D,kBAEhB39D,YAAY,EACZuwD,cAAc,IAEX+H,EA/D0B,GAqEjCI,EAAmC,SAAUoE,GAE7C,SAASpE,IACL,OAAkB,OAAXoE,GAAmBA,EAAOnqD,MAAM7T,KAAM+N,YAAc/N,KAK/D,OAPA29D,EAAU/D,EAAmBoE,GAI7BpE,EAAkB13D,UAAU88D,eAAiB,SAAUxpB,GACnDx1C,KAAK6+D,iBAAiBG,eAAexpB,EAAMypB,cAExCrF,EAR2B,CASpCJ,GAKEN,EAAmC,SAAU8E,GAE7C,SAAS9E,IACL,OAAkB,OAAX8E,GAAmBA,EAAOnqD,MAAM7T,KAAM+N,YAAc/N,KAK/D,OAPA29D,EAAUzE,EAAmB8E,GAI7B9E,EAAkBh3D,UAAUg9D,eAAiB,SAAU1Z,GACnDxlD,KAAK6+D,iBAAiBK,eAAe1Z,EAAM2Z,cAExCjG,EAR2B,CASpCM,GAKEE,EAAkC,SAAUsE,GAE5C,SAAStE,IACL,OAAkB,OAAXsE,GAAmBA,EAAOnqD,MAAM7T,KAAM+N,YAAc/N,KAK/D,OAPA29D,EAAUjE,EAAkBsE,GAI5BtE,EAAiBx3D,UAAUk9D,QAAU,SAAUhtD,GAC3CpS,KAAK6+D,iBAAiBO,QAAQhtD,EAAKitD,aAEhC3F,EAR0B,CASnCF,GACE8F,EAA0C,SAAUtB,GAEpD,SAASsB,EAAyB3yD,GAC9B,OAAOqxD,EAAOv9D,KAAKT,KAAM2M,IAAO3M,KAMpC,OARA29D,EAAU2B,EAA0BtB,GAIpCsB,EAAyBp9D,UAAU0pD,SAAW,SAAU5pD,GACpDA,EAAO+7D,WAAY,GAEvBuB,EAAyBp9D,UAAUypD,WAAa,SAAUzzB,KACnDonC,EATkC,CAU3C5T,sBAEEoO,EAAuB,IADEpO,sBAAwB4T,IACC,SAAUpY,GAC5DA,EAAGiX,aASOoB,EAA2B,GAG/B,SAASn/D,EAAoBC,GAE5B,IAAIm/D,EAAeD,EAAyBl/D,GAC5C,QAAqBkP,IAAjBiwD,EACH,OAAOA,EAAa7/D,QAGrB,IAAIC,EAAS2/D,EAAyBl/D,GAAY,CAGjDV,QAAS,IAOV,OAHAqtC,EAAoB3sC,GAAUT,EAAQA,EAAOD,QAASS,GAG/CR,EAAOD,QAOdS,EAAoBQ,EAAI,CAACjB,EAAS8/D,KACjC,IAAI,IAAI59D,KAAO49D,EACXr/D,EAAoBW,EAAE0+D,EAAY59D,KAASzB,EAAoBW,EAAEpB,EAASkC,IAC5Eb,OAAOC,eAAetB,EAASkC,EAAK,CAAEX,YAAY,EAAMC,IAAKs+D,EAAW59D,MAQ3EzB,EAAoBW,EAAI,CAACsD,EAAK2K,IAAUhO,OAAOkB,UAAUC,eAAe1B,KAAK4D,EAAK2K,GAMlF5O,EAAoBgB,EAAKzB,IACH,oBAAX0B,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAetB,EAAS0B,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAetB,EAAS,aAAc,CAAE4B,OAAO,KAKlE,IAAI2rC,EAAsB,GAgnHhB,MA9mHV,MACA9sC,EAAoBgB,EAAE8rC,GACD9sC,EAAoBQ,EAAEssC,EAAqB,CACzCwyB,UAAW,IAAM,EACjBC,SAAU,IAAM,EAChBC,UAAW,IAAM,EACjBC,IAAK,IAAM,EACXC,OAAQ,IAAM,EACdC,SAAU,IAAM,EAChB19B,KAAM,IAAM,EACZ29B,cAAe,IAAM,EACrBC,SAAU,IAAM,EAChBC,cAAe,IAAM,EACrBC,kBAAmB,IAAM,EACzBC,sBAAuB,IAAM,EAC7BC,QAAS,IAAM,EACf7gD,UAAW,IAAM,EACjB8gD,kBAAmB,IAAM,EACzBC,4BAA6B,IAAM,EACnCC,yBAA0B,IAAM,EAChCC,uBAAwB,IAAM,EAC9BC,sBAAuB,IAAM,EAC7BC,sBAAuB,IAAM,EAC7BC,wBAAyB,IAAM,EAC/BC,wBAAyB,IAAM,EAC/BC,yBAA0B,IAAM,EAChCC,uBAAwB,IAAM,EAC9BpyB,YAAa,IAAM,EACnBC,WAAY,IAAM,EAClBqQ,YAAa,IAAM,IAErB,IAKbye,EA2FJmC,EAYAH,EA5GqBsB,EAAkD5gE,EAAoB,GACtE6gE,EAA4C7gE,EAAoB,GAChE8gE,EAA0C9gE,EAAoB,GAC9D+gE,EAAsC/gE,EAAoB,GAC/Eu9D,GACID,EAAgB,SAAU98D,EAAGsN,GAI7B,OAHAwvD,EAAgB18D,OAAO48D,gBAClB,CAAEC,UAAW,cAAgB/1D,OAAS,SAAUlH,EAAGsN,GAAKtN,EAAEi9D,UAAY3vD,IACvE,SAAUtN,EAAGsN,GAAK,IAAK,IAAI9L,KAAK8L,EAAOlN,OAAOkB,UAAUC,eAAe1B,KAAKyN,EAAG9L,KAAIxB,EAAEwB,GAAK8L,EAAE9L,MAC3ExB,EAAGsN,IAErB,SAAUtN,EAAGsN,GAChB,GAAiB,mBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIhF,UAAU,uBAAyBoG,OAAOpB,GAAK,iCAE7D,SAAS4vD,IAAO99D,KAAK8I,YAAclI,EADnC88D,EAAc98D,EAAGsN,GAEjBtN,EAAEsB,UAAkB,OAANgM,EAAalN,OAAOY,OAAOsM,IAAM4vD,EAAG57D,UAAYgM,EAAEhM,UAAW,IAAI47D,KAGnFsD,EAAgD,WAShD,OARAA,EAAWpgE,OAAO4N,QAAU,SAASpN,GACjC,IAAK,IAAIa,EAAG/B,EAAI,EAAGyB,EAAIgM,UAAUtK,OAAQnD,EAAIyB,EAAGzB,IAE5C,IAAK,IAAI8B,KADTC,EAAI0L,UAAUzN,GACOU,OAAOkB,UAAUC,eAAe1B,KAAK4B,EAAGD,KACzDZ,EAAEY,GAAKC,EAAED,IAEjB,OAAOZ,IAEKqS,MAAM7T,KAAM+N,YAE5BszD,EAAkD,SAAUlzD,EAASmzD,EAAY/Y,EAAGgZ,GAEpF,OAAO,IAAKhZ,IAAMA,EAAI1jC,WAAU,SAAUC,EAASilB,GAC/C,SAASy3B,EAAUjgE,GAAS,IAAMkgE,EAAKF,EAAUh5D,KAAKhH,IAAW,MAAO6B,GAAK2mC,EAAO3mC,IACpF,SAASs+D,EAASngE,GAAS,IAAMkgE,EAAKF,EAAiB,MAAEhgE,IAAW,MAAO6B,GAAK2mC,EAAO3mC,IACvF,SAASq+D,EAAKj+D,GAJlB,IAAejC,EAIaiC,EAAOgF,KAAOsc,EAAQthB,EAAOjC,QAJ1CA,EAIyDiC,EAAOjC,MAJhDA,aAAiBgnD,EAAIhnD,EAAQ,IAAIgnD,GAAE,SAAUzjC,GAAWA,EAAQvjB,OAIT+hD,KAAKke,EAAWE,GAClGD,GAAMF,EAAYA,EAAU1tD,MAAM1F,EAASmzD,GAAc,KAAK/4D,YAGlEo5D,EAAsD,SAAUxzD,EAASuD,GACzE,IAAsGm8B,EAAGp7B,EAAGjR,EAAxG02B,EAAI,CAAE0pC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPrgE,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOsgE,KAAM,GAAIC,IAAK,IAAer0B,EAAI1sC,OAAOY,QAA4B,mBAAbogE,SAA0BA,SAAWhhE,QAAQkB,WACtL,OAAOwrC,EAAEnlC,KAAO05D,EAAK,GAAIv0B,EAAS,MAAIu0B,EAAK,GAAIv0B,EAAU,OAAIu0B,EAAK,GAAsB,mBAAX5gE,SAA0BqsC,EAAErsC,OAAO4G,UAAY,WAAa,OAAOjI,OAAU0tC,EAC1J,SAASu0B,EAAKlgE,GAAK,OAAO,SAAUmxB,GAAK,OACzC,SAAcgvC,GACV,GAAIr0B,EAAG,MAAM,IAAI3kC,UAAU,mCAC3B,KAAOwkC,IAAMA,EAAI,EAAGw0B,EAAG,KAAOhqC,EAAI,IAAKA,GAAG,IACtC,GAAI2V,EAAI,EAAGp7B,IAAMjR,EAAY,EAAR0gE,EAAG,GAASzvD,EAAU,OAAIyvD,EAAG,GAAKzvD,EAAS,SAAOjR,EAAIiR,EAAU,SAAMjR,EAAEf,KAAKgS,GAAI,GAAKA,EAAElK,SAAW/G,EAAIA,EAAEf,KAAKgS,EAAGyvD,EAAG,KAAK15D,KAAM,OAAOhH,EAE3J,OADIiR,EAAI,EAAGjR,IAAG0gE,EAAK,CAAS,EAARA,EAAG,GAAQ1gE,EAAED,QACzB2gE,EAAG,IACP,KAAK,EAAG,KAAK,EAAG1gE,EAAI0gE,EAAI,MACxB,KAAK,EAAc,OAAXhqC,EAAE0pC,QAAgB,CAAErgE,MAAO2gE,EAAG,GAAI15D,MAAM,GAChD,KAAK,EAAG0vB,EAAE0pC,QAASnvD,EAAIyvD,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKhqC,EAAE6pC,IAAIx4B,MAAOrR,EAAE4pC,KAAKv4B,MAAO,SACxC,QACI,MAAkB/nC,GAAZA,EAAI02B,EAAE4pC,MAAYr+D,OAAS,GAAKjC,EAAEA,EAAEiC,OAAS,KAAkB,IAAVy+D,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEhqC,EAAI,EAAG,SACjG,GAAc,IAAVgqC,EAAG,MAAc1gE,GAAM0gE,EAAG,GAAK1gE,EAAE,IAAM0gE,EAAG,GAAK1gE,EAAE,IAAM,CAAE02B,EAAE0pC,MAAQM,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYhqC,EAAE0pC,MAAQpgE,EAAE,GAAI,CAAE02B,EAAE0pC,MAAQpgE,EAAE,GAAIA,EAAI0gE,EAAI,MAC7D,GAAI1gE,GAAK02B,EAAE0pC,MAAQpgE,EAAE,GAAI,CAAE02B,EAAE0pC,MAAQpgE,EAAE,GAAI02B,EAAE6pC,IAAIp9D,KAAKu9D,GAAK,MACvD1gE,EAAE,IAAI02B,EAAE6pC,IAAIx4B,MAChBrR,EAAE4pC,KAAKv4B,MAAO,SAEtB24B,EAAKxwD,EAAKjR,KAAK0N,EAAS+pB,GAC1B,MAAO90B,GAAK8+D,EAAK,CAAC,EAAG9+D,GAAIqP,EAAI,EAAK,QAAUo7B,EAAIrsC,EAAI,EACtD,GAAY,EAAR0gE,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAE3gE,MAAO2gE,EAAG,GAAKA,EAAG,QAAK,EAAQ15D,MAAM,GArB9Bi5D,CAAK,CAAC1/D,EAAGmxB,OAwBzDivC,EAA0D,SAAUjpC,EAAInwB,EAAMq5D,GAC9E,GAAIA,GAA6B,IAArBr0D,UAAUtK,OAAc,IAAK,IAA4B4+D,EAAxB/hE,EAAI,EAAGC,EAAIwI,EAAKtF,OAAYnD,EAAIC,EAAGD,KACxE+hE,GAAQ/hE,KAAKyI,IACRs5D,IAAIA,EAAKv6D,MAAM5F,UAAU2G,MAAMpI,KAAKsI,EAAM,EAAGzI,IAClD+hE,EAAG/hE,GAAKyI,EAAKzI,IAGrB,OAAO44B,EAAG/0B,OAAOk+D,GAAMv6D,MAAM5F,UAAU2G,MAAMpI,KAAKsI,KAMlDu5D,EAA2B,SAAUtE,GAErC,SAASsE,IACL,IAAIrE,EAAmB,OAAXD,GAAmBA,EAAOnqD,MAAM7T,KAAM+N,YAAc/N,KAEhE,OADAi+D,EAAMsE,gBAAiB,EAChBtE,EAEX,OANAN,EAAU2E,EAAWtE,GAMdsE,EAPmB,CAQ5Bh9D,QAUF,SAAWu6D,GACPA,EAAW,MAAI,QACfA,EAAa,QAAI,UACjBA,EAAU,KAAI,OACdA,EAAc,SAAI,WAClBA,EAAe,UAAI,YACnBA,EAAU,KAAI,OACdA,EAAe,UAAI,YACnBA,EAAY,OAAI,SARpB,CASGA,IAAQA,EAAM,KAGjB,SAAWH,GACPA,EAAkB,OAAI,SACtBA,EAAmB,QAAI,UACvBA,EAAqB,UAAI,YACzBA,EAAoB,SAAI,WACxBA,EAAsB,WAAI,aAC1BA,EAAuB,YAAI,cAC3BA,EAAsB,WAAI,aAC1BA,EAAwB,aAAI,eAC5BA,EAAuB,YAAI,cAT/B,CAUGA,IAAcA,EAAY,KAE7B,IA0LIU,EA1LAN,EAAwB,WACxB,SAASA,EAAO76C,GACZ,IAAIi1C,EAAIC,EAAII,EAAIjyD,EAAIH,EAAIq6D,EAAIC,EAC5BziE,KAAKq6D,IAA4E,QAArEH,EAAKj1C,aAAuC,EAASA,EAAOo1C,WAAwB,IAAPH,EAAgBA,EAAK2F,EAAI6C,QAClH1iE,KAAKs6D,UAAwF,QAA3EH,EAAKl1C,aAAuC,EAASA,EAAOq1C,iBAA8B,IAAPH,EAAgBA,EAAKuF,EAAUiD,OACpI3iE,KAAKy6D,kBAAwG,QAAnFF,EAAKt1C,aAAuC,EAASA,EAAOw1C,yBAAsC,IAAPF,EAAgBA,EAAK,EAC1Iv6D,KAAKw7D,KAA8E,QAAtElzD,EAAK2c,aAAuC,EAASA,EAAOu2C,YAAyB,IAAPlzD,EAAgBA,EAAK,EAChHtI,KAAKy7D,KAA8E,QAAtEtzD,EAAK8c,aAAuC,EAASA,EAAOw2C,YAAyB,IAAPtzD,EAAgBA,EAAK,EAChHnI,KAAK07D,KAA8E,QAAtE8G,EAAKv9C,aAAuC,EAASA,EAAOy2C,YAAyB,IAAP8G,EAAgBA,EAAK,EAChHxiE,KAAK27D,KAA8E,QAAtE8G,EAAKx9C,aAAuC,EAASA,EAAO02C,YAAyB,IAAP8G,EAAgBA,EAAK,EAyEpH,OAtEA3C,EAAO8C,IAAM,SAAU1I,GACnB,IAAIG,EAAMH,EAAGG,IAAKC,EAAYJ,EAAGI,UAAWkB,EAAOtB,EAAGsB,KAAMC,EAAOvB,EAAGuB,KAAMC,EAAOxB,EAAGwB,KAAMC,EAAOzB,EAAGyB,KAEtG,OADAx/C,QAAQkF,KAAK,oEACN,IAAIy+C,EAAO,CAAEzF,IAAKA,EAAKC,UAAWA,EAAWkB,KAAMA,EAAMC,KAAMA,EAAMC,KAAMA,EAAMC,KAAMA,KAKlGmE,EAAO59D,UAAU2gE,SAAW,SAAU3I,GAClC,IAAIG,EAAMH,EAAGG,IAAKC,EAAYJ,EAAGI,UAAWG,EAAoBP,EAAGO,kBAAmBe,EAAOtB,EAAGsB,KAAMC,EAAOvB,EAAGuB,KAAMC,EAAOxB,EAAGwB,KAAMC,EAAOzB,EAAGyB,KAChJ,OAAO,IAAImE,EAAO,CACdzF,IAAKA,QAAiCA,EAAMr6D,KAAKq6D,IACjDC,UAAWA,QAA6CA,EAAYt6D,KAAKs6D,UACzEG,kBAAmBA,QAA6DA,EAAoBz6D,KAAKy6D,kBACzGe,KAAMA,QAAmCA,EAAOx7D,KAAKw7D,KACrDC,KAAMA,QAAmCA,EAAOz7D,KAAKy7D,KACrDC,KAAMA,QAAmCA,EAAO17D,KAAK07D,KACrDC,KAAMA,QAAmCA,EAAO37D,KAAK27D,QAI7DmE,EAAO59D,UAAU4gE,WAAa,SAAU1I,GACpC,OAAIp6D,KAAK+iE,iBACE/iE,KAAK+iE,kBAGZ1I,EADAr6D,KAAKq6D,MAAQwF,EAAImD,MACX5I,EAAKyF,IAAIoD,MACVjjE,KAAKq6D,MAAQwF,EAAI6C,QAChBtI,EAAKyF,IAAIqD,QACVljE,KAAKq6D,MAAQwF,EAAIsD,KAChB/I,EAAKyF,IAAIxnB,KACVr4C,KAAKq6D,MAAQwF,EAAIuD,SAChBhJ,EAAKyF,IAAIwD,SACVrjE,KAAKq6D,MAAQwF,EAAIyD,UAChBlJ,EAAKyF,IAAI0D,UACVvjE,KAAKq6D,MAAQwF,EAAI2D,UAChBpJ,EAAKyF,IAAI4D,UACVzjE,KAAKq6D,MAAQwF,EAAIC,OAChB1F,EAAKyF,IAAI9tD,OAETqoD,EAAKyF,IAAI6D,KACnB1jE,KAAK+iE,iBAAmB1I,EACjBA,GAlBP,IAAIA,GAqBRyF,EAAO59D,UAAUyhE,iBAAmB,SAAUvJ,GAC1C,OAAIp6D,KAAK4jE,uBACE5jE,KAAK4jE,wBAGZtJ,EADAt6D,KAAKs6D,YAAcoF,EAAUmE,QACjBzJ,EAAKsF,UAAUoE,QACtB9jE,KAAKs6D,YAAcoF,EAAUqE,UACtB3J,EAAKsF,UAAUsE,UACtBhkE,KAAKs6D,YAAcoF,EAAUuE,SACtB7J,EAAKsF,UAAUwE,SACtBlkE,KAAKs6D,YAAcoF,EAAUyE,WACtB/J,EAAKsF,UAAU0E,WACtBpkE,KAAKs6D,YAAcoF,EAAU2E,YACtBjK,EAAKsF,UAAU4E,YACtBtkE,KAAKs6D,YAAcoF,EAAU6E,WACtBnK,EAAKsF,UAAU8E,WACtBxkE,KAAKs6D,YAAcoF,EAAU+E,aACtBrK,EAAKsF,UAAUgF,aACtB1kE,KAAKs6D,YAAcoF,EAAUiF,YACtBvK,EAAKsF,UAAUkF,YAEfxK,EAAKsF,UAAUmF,OAC/B7kE,KAAK4jE,uBAAyBtJ,EACvBA,GApBP,IAAIA,GAsBDwF,EAlFgB,GAuFvBI,EAA+B,WAE/B,SAASA,KA4FT,OAzFAA,EAAc4E,YAAc,WACxB9D,EAAyD,QAAE,CAEvD7d,WAAY,WAAc,OAAO+c,EAAc6E,WAE9CzhB,MAAK,SAAU8W,GAChB,IAAIF,EAGJ,IAFAgG,EAAczH,QAAU2B,EAEjB8F,EAAc8E,cAAcvhE,OAAS,GACO,QAA9Cy2D,EAAKgG,EAAc8E,cAAcj+C,eAA4B,IAAPmzC,GAAyBA,EAAGgG,EAAczH,YAGpGhV,OAAM,SAAU3jC,GAEjB,IAAImlD,EAAe,CACfrgD,SAAU9E,aAAqC,EAASA,EAAM8E,UAAY,gBAC1E9Y,MAAOgU,aAAqC,EAASA,EAAMjf,OAAS,QAEpEqkE,UAAWplD,aAAiBkhC,YAAYmkB,cACpCrlD,aAAiBkhC,YAAYiC,aACjCmiB,cAAetlD,GAGnB3D,QAAQnE,MAAM,gCAAiCitD,GAI/C,IAAII,EAAoB,gCAAgClhE,OAAO88D,EAA0CpgE,KAAM,KAAKsD,OAAO88D,EAA0Cr7C,QAAS,uBAC9K,GAAIs6C,EAAc6E,QAAQn5D,gBAAkBy5D,EACxClpD,QAAQkF,KAAK,4BAA4Bld,OAAO+7D,EAAc6E,QAAS,MAAM5gE,OAAO8gE,EAAargD,QAAS,mCAC1Gs7C,EAAcoF,WAAWD,GACzBnF,EAAc4E,kBAEb,CACD,IAAIS,EAAe,CACf,sCAAsCphE,OAAO+7D,EAAc6E,QAAS,QAAQ5gE,OAAOkhE,EAAmB,KACtG,oBACA,+BACA,qDACA,+CACA,mBACA,WAAWlhE,OAAO8gE,EAAan5D,MAC/B,cAAc3H,OAAO8gE,EAAargD,SAClC,iCAAiCzgB,OAAO8gE,EAAaC,WACrD,iCACA,mCACA,0DACA,6CACFt/D,KAAK,MACPuW,QAAQ2D,MAAMylD,QAK1BrF,EAAc50C,YAAc,SAAU5a,GAE7BwvD,EAAcsF,YACftF,EAAcsF,WAAY,EAC1BtF,EAAc4E,eAEb5E,EAAczH,QAIf/nD,EAASwvD,EAAczH,SAHvByH,EAAc8E,cAAcrgE,KAAK+L,IAOzCwvD,EAAcuF,cAAgB,WAC1B,OAAO,IAAI5gD,SAAQ,SAAUC,GACzB,OAAOo7C,EAAc50C,aAAY,SAAU8uC,GAAQ,OAAOt1C,EAAQs1C,UAI1E8F,EAAcoF,WAAa,SAAU/2C,GACjC2xC,EAAc6E,QAAUx2C,GAG5B2xC,EAAcwF,WAAa,WACvB,OAAOxF,EAAc6E,SAGzB7E,EAAcsF,WAAY,EAE1BtF,EAAc8E,cAAgB,GAG9B9E,EAAc6E,QAAU,qBAAqB5gE,OAAO88D,EAA0CpgE,KAAM,KAAKsD,OAAO88D,EAA0Cr7C,QAAS,cAC5Js6C,EA9FuB,IAoGlC,SAAWE,GACPA,EAAsBA,EAA8B,OAAI,IAAM,SAC9DA,EAAsBA,EAA+B,QAAI,IAAM,UAC/DA,EAAsBA,EAA+B,QAAI,IAAM,UAHnE,CAIGA,IAA0BA,EAAwB,KAIrD,IAgDIJ,EAhDAG,EAAmC,WACnC,SAASA,EAAkBr0D,EAAM65D,GAC7B3lE,KAAK8L,KAAOA,EACZ9L,KAAK2lE,aAAeA,EA0CxB,OAxCA3kE,OAAOC,eAAek/D,EAAkBj+D,UAAW,OAAQ,CAIvDf,IAAK,WACD,OAAOnB,KAAK2lE,aAAa9kE,MAE7BK,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAek/D,EAAkBj+D,UAAW,QAAS,CAIxDf,IAAK,WACD,OAAOnB,KAAK2lE,aAAapkE,OAK7B6lB,IAAK,SAAU7lB,GACXvB,KAAK2lE,aAAapkE,MAAQA,GAE9BL,YAAY,EACZuwD,cAAc,IAKlB0O,EAAkBj+D,UAAU2hC,KAAO,WAC3B7jC,KAAK8L,OAASs0D,EAAsBwF,SACpC5lE,KAAK2lE,aAAa9hC,QAM1Bs8B,EAAkBj+D,UAAU0kB,OAAS,WACjC5mB,KAAK2lE,aAAe,MAEjBxF,EA7C2B,IAiDtC,SAAWH,GACPA,EAAcA,EAAuB,QAAI,KAAO,UAChDA,EAAcA,EAAuB,QAAI,KAAO,UAFpD,CAGGA,IAAkBA,EAAgB,KACrC,IA4eIJ,EAiBAG,EA7fA8F,EAA8B,WAM9B,SAASA,EAAaC,EAAcrN,EAASC,EAASF,GAClDx4D,KAAK8lE,aAAeA,EACpB9lE,KAAK04D,QAAUA,EACf14D,KAAKw4D,SAAWA,EAIhBx4D,KAAKyjC,OAAS,GACdzjC,KAAKipB,SAAW,IAAIwvC,EAAQsN,qBAAqBD,EAActN,GAC/Dx4D,KAAKgmE,WAAWvN,GAgGpB,OA9FAz3D,OAAOC,eAAe4kE,EAAa3jE,UAAW,OAAQ,CAClDf,IAAK,WACD,OAAOnB,KAAK8lE,aAAajlE,MAE7BK,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAe4kE,EAAa3jE,UAAW,gBAAiB,CAI3Df,IAAK,WAED,IADA,IAAI8kE,EAAQ,GACH3lE,EAAI,EAAGA,EAAIN,KAAKipB,SAASi9C,oBAAqB5lE,IACnD2lE,EAAMthE,KAAK3E,KAAKipB,SAASk9C,wBAAwB7lE,IAErD,OAAO2lE,GAEX/kE,YAAY,EACZuwD,cAAc,IAMlBoU,EAAa3jE,UAAU82D,QAAU,SAAUF,GACvC94D,KAAKipB,SAAS+vC,QAAQF,IAM1B+M,EAAa3jE,UAAUkkE,gBAAkB,SAAUtN,GAC/C94D,KAAKipB,SAASm9C,gBAAgBtN,IAMlC+M,EAAa3jE,UAAUmkE,mBAAqB,WACxC,OAAOrmE,KAAKipB,SAASo9C,sBASzBR,EAAa3jE,UAAUokE,gBAAkB,SAAUhmE,GAC/C,OAAON,KAAKipB,SAASq9C,gBAAgBhmE,IAMzCulE,EAAa3jE,UAAU8jE,WAAa,SAAUvN,GAE1C,IAAK,IAAIn4D,EAAI,EAAGA,EAAIN,KAAKipB,SAASs9C,aAAcjmE,IAAK,CACjD,IAAIsjC,EAAQ5jC,KAAKipB,SAAS2a,MAAMtjC,GAChCN,KAAKyjC,OAAO9+B,KAAK3E,KAAKwmE,gBAAgB5iC,EAAO60B,MAOrDoN,EAAa3jE,UAAUskE,gBAAkB,SAAU5iC,EAAO60B,GACtD,OAAI70B,EAAM93B,OAAS2sD,EAAQgO,SAASC,KACzB,IAAIvG,EAAkBC,EAAsB59D,QAASohC,EAAM+iC,UAE7D/iC,EAAM93B,OAAS2sD,EAAQgO,SAAS9kC,OAC9B,IAAIw+B,EAAkBC,EAAsB7nD,OAAQqrB,EAAMgjC,YAE5DhjC,EAAM93B,OAAS2sD,EAAQgO,SAASI,QAC9B,IAAI1G,EAAkBC,EAAsBwF,QAAShiC,EAAMkjC,kBADjE,GAQTjB,EAAa3jE,UAAUkuB,QAAU,WAC7BpwB,KAAKyjC,OAAOt+B,SAAQ,SAAUy+B,GAC1BA,EAAMhd,YAEV5mB,KAAKyjC,OAAOhgC,OAAS,EACrBzD,KAAKipB,SAASrC,UAElBi/C,EAAa3jE,UAAU6kE,sBAAwB,SAAUC,GACZ,MAArCA,EAAkBC,iBAClBjnE,KAAKipB,SAAS89C,sBAAsBC,EAAkBC,kBAGvDpB,EA/GsB,GAsH7BqB,EAA0B,WAS1B,SAASA,EAASzO,EAASD,EAAU2O,EAAcC,EAAYxkC,QACxC,IAAfwkC,IAAyBA,EAAa,SACpB,IAAlBxkC,IAA4BA,EAAgB,IAChD5iC,KAAKy4D,QAAUA,EACfz4D,KAAKw4D,SAAWA,EAChBx4D,KAAKmnE,aAAeA,EACpBnnE,KAAKonE,WAAaA,EAClBpnE,KAAK4iC,cAAgBA,EA+VzB,OAtVAskC,EAAShlE,UAAUi8C,IAAM,SAAUkpB,EAAa3O,EAAS4O,GAIrD,QAHkB,IAAdA,IAAwBA,GAAY,GAGb,KAF3BD,EAAcE,EAAiBF,IAEf5jE,OACZzD,KAAKonE,WAAWjiE,SAAQ,SAAU8I,GAAK,OAAQA,EAAEyqD,QAAUA,KAC3D14D,KAAK4iC,cAAcz9B,SAAQ,SAAUzE,GAAK,OAAQA,EAAEg4D,QAAUA,UAM9D,IAFA,IAAI8O,EAA0BxnE,KAAKonE,WAAWt9D,KAAI,SAAUmE,GAAK,OAAOA,EAAEpN,QACtE4mE,EAAwBznE,KAAK4iC,cAAc94B,KAAI,SAAUpJ,GAAK,OAAOA,EAAEG,QAClEP,EAAI,EAAGA,EAAI+mE,EAAY5jE,OAAQnD,IAAK,CACzC,IAAIonE,EAASF,EAAwB/3D,QAAQ43D,EAAY/mE,IACrDqnE,EAASF,EAAsBh4D,QAAQ43D,EAAY/mE,IACvD,GAAIonE,GAAU,GAAKC,GAAU,EACrBD,GAAU,EAEV1nE,KAAKonE,WAAWM,GAAQhP,QAAUA,EAIlC14D,KAAK4iC,cAAc+kC,GAAQjP,QAAUA,MAGxC,CAED,IAAIkP,EAAO5nE,KAAKw4D,SAASqP,gBAAgBR,EAAY/mE,IACrD,GAAIsnE,EAAM,CACN,IAAIE,EAAe,IAAI5G,EAAwC7I,UAAUuP,EAAM5nE,KAAKw4D,SAAUx4D,KAAKy4D,QAASC,GAE5GoP,EAAa9O,QAAQ,GACrB8O,EAAaj0D,MAAM,GACnB7T,KAAKonE,WAAWziE,KAAKmjE,OAEpB,CAED,IAAIC,EAAK/nE,KAAKw4D,SAASwP,mBAAmBX,EAAY/mE,IACtD,GAAIynE,EAAI,CACJ,IAAIE,EAAkB,IAAIpC,EAAakC,EAAI/nE,KAAKy4D,QAASC,EAAS14D,KAAKw4D,UACvEx4D,KAAK4iC,cAAcj+B,KAAKsjE,MAqB5C,OAdIX,IACI5O,EACA14D,KAAKmnE,aAAatjC,KAAK,CACnB/3B,KAAM8zD,EAAUsI,KAChBx+D,KAAM1J,KAAK04D,UAIf14D,KAAKmnE,aAAatjC,KAAK,CACnB/3B,KAAM8zD,EAAUuI,MAChBz+D,KAAM1J,KAAK4X,UAIhB8gD,EAAU14D,KAAK04D,QAAU14D,KAAK4X,QAOzCsvD,EAAShlE,UAAUkmE,qBAAuB,SAAUf,EAAa3O,GAM7D,IADA,IAAI8O,EAA0BxnE,KAAKonE,WAAWt9D,KAAI,SAAUmE,GAAK,OAAOA,EAAEpN,QACjEP,EAAI,EAAGA,EAAI+mE,EAAY5jE,OAAQnD,IAAK,CACzC,IAAIonE,EAASF,EAAwB/3D,QAAQ43D,EAAY/mE,IACzD,GAAIonE,GAAU,EACV1nE,KAAKonE,WAAWM,GAAQhP,QAAUA,MAEjC,CAED,IAAIkP,EAAO5nE,KAAKw4D,SAASqP,gBAAgBR,EAAY/mE,IACrD,GAAIsnE,EAAM,CACN,IAAIE,EAAe,IAAI5G,EAAwC7I,UAAUuP,EAAM5nE,KAAKw4D,SAAUx4D,KAAKy4D,QAASC,GAE5GoP,EAAa9O,QAAQ,GACrB8O,EAAaj0D,MAAM,GACnB7T,KAAKonE,WAAWziE,KAAKmjE,QAGrB3rD,QAAQ2D,MAAM,uBAAuB3b,OAAOkjE,EAAY/mE,GAAI,mBAU5E4mE,EAAShlE,UAAUmmE,kBAAoB,SAAUhB,EAAa3O,GAM1D,IADA,IAAI4P,EAA6BtoE,KAAK4iC,cAAc94B,KAAI,SAAUmE,GAAK,OAAOA,EAAEpN,QACvEP,EAAI,EAAGA,EAAI+mE,EAAY5jE,OAAQnD,IAAK,CACzC,IAAIonE,EAASY,EAA2B74D,QAAQ43D,EAAY/mE,IAC5D,GAAIonE,GAAU,EACV1nE,KAAK4iC,cAAc8kC,GAAQhP,QAAUA,MAEpC,CAED,IAAIqP,EAAK/nE,KAAKw4D,SAASwP,mBAAmBX,EAAY/mE,IACtD,GAAIynE,EAAI,CACJ,IAAIE,EAAkB,IAAIpC,EAAakC,EAAI/nE,KAAKy4D,QAASC,EAAS14D,KAAKw4D,UACvEx4D,KAAK4iC,cAAcj+B,KAAKsjE,GACnBvP,GACDuP,EAAgB7B,gBAAgB,QAIpCjqD,QAAQkF,KAAK,2BAA2Bld,OAAOkjE,EAAY/mE,GAAI,gBAG/DN,KAAKooE,qBAAqB,CAACf,EAAY/mE,IAAKo4D,MAU5DwO,EAAShlE,UAAUqmE,KAAO,SAAUlB,GAChC,OAAOrnE,KAAKm+C,IAAIkpB,GAAa,IAQjCH,EAAShlE,UAAUoI,MAAQ,SAAU+8D,GACjC,OAAOrnE,KAAKm+C,IAAIkpB,GAAa,IAQjCH,EAAShlE,UAAUsmE,MAAQ,SAAUnB,EAAa9lE,GAC9C,IAAIknE,EAAezoE,KAAKonE,WAAWzhE,QAAO,SAAUsI,GAChD,OAAOo5D,EAAY7yD,SAASvG,EAAEpN,SAGlC,OADA4nE,EAAatjE,SAAQ,SAAU8I,GAAK,OAAQA,EAAE2qD,QAAUr3D,KACjDknE,EAAa3+D,KAAI,SAAUmE,GAAK,OAAOA,EAAEpN,SAEpDG,OAAOC,eAAeimE,EAAShlE,UAAW,UAAW,CAKjDf,IAAK,WACD,OAAOnB,KAAKonE,WACPzhE,QAAO,SAAUsI,GAAK,OAAOA,EAAEyqD,WAC/B5uD,KAAI,SAAUmE,GAAK,OAAOA,EAAEpN,QAC5BsD,OAAOnE,KAAK4iC,cAAcj9B,QAAO,SAAUjF,GAAK,OAAOA,EAAEg4D,WAAY5uD,KAAI,SAAUpJ,GAAK,OAAOA,EAAEG,UAE1GK,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeimE,EAAShlE,UAAW,SAAU,CAKhDf,IAAK,WACD,OAAOnB,KAAKonE,WACPzhE,QAAO,SAAUsI,GAAK,OAAQA,EAAEyqD,WAChC5uD,KAAI,SAAUmE,GAAK,OAAOA,EAAEpN,QAC5BsD,OAAOnE,KAAK4iC,cAAcj9B,QAAO,SAAUjF,GAAK,OAAQA,EAAEg4D,WAAY5uD,KAAI,SAAUpJ,GAAK,OAAOA,EAAEG,UAE3GK,YAAY,EACZuwD,cAAc,IAOlByV,EAAShlE,UAAU0oB,KAAO,SAAUy8C,GAChC,IAAIpJ,EAAQj+D,KAGR0oE,EAAe,GAEnB,GAA2B,KAJ3BrB,EAAcE,EAAiBF,IAIf5jE,OACZilE,EAAe1oE,KAAKonE,WACft9D,KAAI,SAAUmE,GAAK,OAAOA,EAAEpN,QAC5BsD,OAAOnE,KAAK4iC,cAAc94B,KAAI,SAAUpJ,GAAK,OAAOA,EAAEG,SAE3Db,KAAKonE,WAAWjiE,SAAQ,SAAU8I,GAAK,OAAOA,EAAEmiB,aAChDpwB,KAAK4iC,cAAcz9B,SAAQ,SAAUzE,GAAK,OAAOA,EAAE0vB,aAEnDpwB,KAAKonE,WAAWz/D,OAAO,EAAG3H,KAAKonE,WAAW3jE,QAC1CzD,KAAK4iC,cAAcj7B,OAAO,EAAG3H,KAAK4iC,cAAcn/B,YAE/C,CAED,IAAIklE,EAAqB3oE,KAAKonE,WAAWzhE,QAAO,SAAUsI,GACtD,OAAOo5D,EAAY7yD,SAASvG,EAAEpN,SAElC8nE,EAAmBxjE,SAAQ,SAAU8I,GACjCA,EAAEmiB,UACF6tC,EAAMmJ,WAAWz/D,OAAOs2D,EAAMmJ,WAAW33D,QAAQxB,GAAI,MAEzD,IAAI26D,EAAmB5oE,KAAK4iC,cAAcj9B,QAAO,SAAUjF,GACvD,OAAO2mE,EAAY7yD,SAAS9T,EAAEG,SAElC+nE,EAAiBzjE,SAAQ,SAAUzE,GAC/BA,EAAE0vB,UACF6tC,EAAMr7B,cAAcj7B,OAAOs2D,EAAMr7B,cAAcnzB,QAAQ/O,GAAI,MAE/DgoE,EAAeC,EACV7+D,KAAI,SAAUmE,GAAK,OAAOA,EAAEpN,QAC5BsD,OAAOykE,EAAiB9+D,KAAI,SAAUpJ,GAAK,OAAOA,EAAEG,SAO7D,OALAb,KAAKmnE,aAAatjC,KAAK,CACnB/3B,KAAM8zD,EAAUiJ,KAChBn/D,KAAMg/D,IAGHA,GAEX1nE,OAAOC,eAAeimE,EAAShlE,UAAW,YAAa,CAInDf,IAAK,WACD,OAAQnB,KAAKonE,WAAWlkD,QAAO,SAAUC,EAAK2lD,GAAQ,OAAO3lD,GAAO2lD,EAAKpQ,WAAY,IACjF14D,KAAK4iC,cAAc1f,QAAO,SAAUC,EAAK2lD,GAAQ,OAAO3lD,GAAO2lD,EAAKpQ,WAAY,IAExFx3D,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeimE,EAAShlE,UAAW,WAAY,CAIlDf,IAAK,WACD,OAASnB,KAAK+oE,YACT/oE,KAAKonE,WAAW3jE,OAAS,GAAKzD,KAAK4iC,cAAcn/B,OAAS,IAEnEvC,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeimE,EAAShlE,UAAW,YAAa,CAInDf,IAAK,WACD,OAAkC,IAA3BnB,KAAKonE,WAAW3jE,QAA8C,IAA9BzD,KAAK4iC,cAAcn/B,QAE9DvC,YAAY,EACZuwD,cAAc,IAMlByV,EAAShlE,UAAU8mE,WAAa,SAAUtQ,EAAS4O,GAE/C,IAAI2B,EAWJ,YAZkB,IAAd3B,IAAwBA,GAAY,GAET,IAA3BtnE,KAAKonE,WAAW3jE,QAA8C,IAA9BzD,KAAK4iC,cAAcn/B,SAC/CzD,KAAKw4D,SAAS0Q,iBAAmB,EAEjClpE,KAAKm+C,IAAI,CAAE8qB,EAAgBjpE,KAAKw4D,SAAS2Q,iBAAiB,GAAGtoE,MAAQ63D,EAAS4O,GAEzEtnE,KAAKw4D,SAAS4Q,oBAAsB,GAEzCppE,KAAKm+C,IAAI,CAAE8qB,EAAgBjpE,KAAKw4D,SAAS6Q,oBAAoB,GAAGxoE,MAAQ63D,EAAS4O,IAGlF2B,GAKX/B,EAAShlE,UAAUonE,cAAgB,WAC/B,IAAK,IAAI7hE,EAAK,EAAGyyD,EAAKl6D,KAAKonE,WAAWzhE,QAAO,SAAUsI,GAAK,OAAOA,EAAEyqD,WAAajxD,EAAKyyD,EAAGz2D,OAAQgE,IAAM,CACpG,IAAI8wD,EAAY2B,EAAGzyD,GAES,IAAxB8wD,EAAUQ,WAAmBR,EAAUI,WACvCJ,EAAUI,UAAY,EAEtB34D,KAAK4qB,KAAK2tC,EAAU13D,OAES,IAAxB03D,EAAUQ,WAAmBR,EAAUI,WAC5C34D,KAAKmnE,aAAatjC,KAAK,CACnB/3B,KAAM8zD,EAAU2J,KAChB7/D,KAAM,CAAE6uD,UAAWA,EAAU13D,KAAMiL,KAAMi0D,EAASwJ,QAEtDhR,EAAUI,UAAY,GAKO,IAAxBJ,EAAUQ,WAAmBR,EAAUI,UAAY,IACxD34D,KAAKmnE,aAAatjC,KAAK,CACnB/3B,KAAM8zD,EAAU2J,KAChB7/D,KAAM,CAAE6uD,UAAWA,EAAU13D,KAAMiL,KAAMi0D,EAASyJ,YAEtDjR,EAAUI,UAAY,KAQlCuO,EAAShlE,UAAUunE,mBAAqB,WAEpC,IADA,IAAIC,EAAgB,GACXjiE,EAAK,EAAGyyD,EAAKl6D,KAAK4iC,cAAcj9B,QAAO,SAAUoiE,GAAM,OAAOA,EAAGrP,WAAajxD,EAAKyyD,EAAGz2D,OAAQgE,IAAM,CACzG,IAAIq+D,EAAe5L,EAAGzyD,GACtBiiE,EAAc/kE,KAAKkP,MAAM61D,EAAe5D,EAAa4D,eAErDA,EAAcjmE,OAAS,GACvBzD,KAAKmnE,aAAatjC,KAAK,CACnB/3B,KAAM8zD,EAAU+J,YAChBjgE,KAAMggE,KAIlBxC,EAAShlE,UAAU0nE,gBAAkB,SAAU9Q,GAC3C94D,KAAKmnE,aAAatjC,KAAK,CACnB/3B,KAAM8zD,EAAUiK,QAChBngE,KAAMovD,KAGPoO,EA/WkB,IAuX7B,SAAWtH,GACPA,EAAgB,KAAI,OACpBA,EAAqB,UAAI,YACzBA,EAAgB,KAAI,OACpBA,EAAiB,MAAI,QACrBA,EAAgB,KAAI,OACpBA,EAAgB,KAAI,OACpBA,EAAgB,KAAI,OACpBA,EAAmB,QAAI,UACvBA,EAAuB,YAAI,cAC3BA,EAAqB,UAAI,YACzBA,EAA6B,kBAAI,oBAXrC,CAYGA,IAAcA,EAAY,KAK7B,SAAWG,GACPA,EAAkB,QAAI,UACtBA,EAAe,KAAI,OACnBA,EAAmB,SAAI,WAH3B,CAIGA,IAAaA,EAAW,KAE3B,IAmFI+J,EAnFAC,EAA8B,WAC9B,SAASA,EAAa3+D,QACA,IAAdA,IAAwBA,EAAY,IACxCpL,KAAKoL,UAAYA,EAoDrB,OAjDA2+D,EAAa7nE,UAAU8nE,aAAe,SAAUl+D,GAC5C,OAAO9L,KAAKoL,UAAUzF,QAAO,SAAUvC,GAAK,OAAOA,EAAE0I,OAASA,MAGlEi+D,EAAa7nE,UAAUi8C,IAAM,SAAUhzC,GAC9BnL,KAAKoL,UAAUoJ,SAASrJ,IACzBnL,KAAKoL,UAAUzG,KAAKwG,IAO5B4+D,EAAa7nE,UAAU4D,OAAS,SAAUqF,GAItC,IAAK,IAAI7K,EAAI,EAAGA,EAAIN,KAAKoL,UAAU3H,OAAQnD,IAAK,CAC5C,IAAI2pE,EAAkBjqE,KAAKoL,UAAU9K,GACrC,GAAI2pE,EAAgBn+D,OAASX,EAASW,MAC9Bm+D,EAAgBv5D,WAAavF,EAASuF,SAAU,CAChD1Q,KAAKoL,UAAUzD,OAAOrH,EAAG,GACzB,SAWhBypE,EAAa7nE,UAAUgoE,UAAY,SAAUp+D,GACzC,IAAImyD,EAAQj+D,KACP8L,EAID9L,KAAKoL,UACAzF,QAAO,SAAUpF,GAAK,OAAOA,EAAEuL,OAASA,KACxC3G,SAAQ,SAAU5E,GAAK,OAAO09D,EAAMn4D,OAAOvF,MALhDP,KAAKoL,UAAUzD,OAAO,EAAG3H,KAAKoL,UAAU3H,SAShDsmE,EAAa7nE,UAAU2hC,KAAO,SAAUrqB,GACfxZ,KAAKgqE,aAAaxwD,EAAM1N,MAC9B3G,SAAQ,SAAUgG,GAAY,OAAOA,EAASuF,SAAS8I,OAEnEuwD,EAvDsB,GA0D7BI,EAAkC,WAClC,SAASA,EAAiBhD,GACtBnnE,KAAKmnE,aAAeA,EACpBnnE,KAAK07B,MAAQ,GAkBjB,OAfAyuC,EAAiBjoE,UAAUi8C,IAAM,SAAUisB,GACvCpqE,KAAK07B,MAAM/2B,KAAKylE,IAGpBD,EAAiBjoE,UAAU4jC,QAAU,WACjC,KAAO9lC,KAAK07B,MAAMj4B,OAAS,GAAG,CAC1B,IAAI2mE,EAAOpqE,KAAK07B,MAAM3U,SAClBqjD,aAAmC,EAASA,EAAKC,SACjDD,EAAKC,UAELD,aAAmC,EAASA,EAAK5wD,QACjDxZ,KAAKmnE,aAAatjC,KAAKumC,EAAK5wD,SAIjC2wD,EArB0B,IA0BrC,SAAWL,GACPA,EAAkBA,EAA6B,UAAI,GAAK,YACxDA,EAAkBA,EAA+B,YAAI,GAAK,cAF9D,CAGGA,IAAsBA,EAAoB,KAE7C,IA42DIQ,EA9sDAC,EAAe,IA9Je,SAAUvM,GAExC,SAASwM,IACL,IAAIvM,EAAmB,OAAXD,GAAmBA,EAAOnqD,MAAM7T,KAAM+N,YAAc/N,KAIhE,OAHAi+D,EAAMwM,UAAW,EACjBxM,EAAMyM,UAAW,EACjBzM,EAAM0M,QAAUb,EAAkBc,YAC3B3M,EAqJX,OA3JAN,EAAU6M,EAAcxM,GAQxBwM,EAAatoE,UAAU6hB,MAAQ,SAAU+0C,GACrC,OAAOuI,EAAUrhE,UAAM,OAAQ,GAAQ,WACnC,OAAO2hE,EAAY3hE,MAAM,SAAUk6D,GAC/B,MAAO,CAAC,EAAc,IAAIr1C,SAAQ,SAAUC,GAAW,OAAOhR,WAAWgR,EAASg0C,cAI9F0R,EAAatoE,UAAUoR,QAAU,WAC7B,OAAO+tD,EAAUrhE,UAAM,OAAQ,GAAQ,WACnC,OAAO2hE,EAAY3hE,MAAM,SAAUk6D,GAC/B,MAAO,CAAC,EAAc,IAAIr1C,SAAQ,SAAUqT,EAAG6R,GAAU,OAAOj2B,WAAWi2B,EAAQ,eAK/FygC,EAAatoE,UAAU2oE,kBAAoB,WACvC7qE,KAAK6jC,KAAK,CAAE/3B,KAAM8zD,EAAUkL,oBAC5B9qE,KAAKkqE,aAOTM,EAAatoE,UAAU6oE,YAAc,WACjC,OAAO1J,EAAUrhE,UAAM,OAAQ,GAAQ,WACnC,OAAO2hE,EAAY3hE,MAAM,SAAUk6D,GAM/B,OALKl6D,KAAK0qE,WACN1qE,KAAK0qE,UAAW,EAChB1qE,KAAK2qE,QAAUb,EAAkBkB,UACjChrE,KAAK6qE,qBAEF,CAAC,UAUpBL,EAAatoE,UAAU+oE,UAAY,WAC/B,OAAO5J,EAAUrhE,UAAM,OAAQ,GAAQ,WAEnC,OAAO2hE,EAAY3hE,MAAM,SAAUm6D,GAC/B,OAAQA,EAAGyH,OACP,KAAK,EACD,GAAM5hE,KAAK2qE,UAAYb,EAAkBc,aACd,OAAvB5qE,KAAKkrE,cAAyB,MAAO,CAAC,EAAa,GACvD/Q,EAAGyH,MAAQ,EACf,KAAK,EAED,OADAzH,EAAG2H,KAAKn9D,KAAK,CAAC,EAAG,EAAG,CAAE,IACf,CAAC,EAAakgB,QAAQsmD,KAAK,CAACnrE,KAAKkrE,cAAc3gE,SAAUvK,KAAKsT,aACzE,KAAK,EAGD,OAFA6mD,EAAG0H,OACH7hE,KAAK+qE,cACE,CAAC,EAAa,GACzB,KAAK,EAED,OADK5Q,EAAG0H,OACD,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,WAUhC2I,EAAatoE,UAAUkpE,gBAAkB,WACrC,OAAO/J,EAAUrhE,UAAM,OAAQ,GAAQ,WACnC,OAAO2hE,EAAY3hE,MAAM,SAAUk6D,GAC/B,OAAQA,EAAG0H,OACP,KAAK,EACD,OAAM5hE,KAAKyqE,SAAiB,CAAC,EAAa,IAC1CzqE,KAAKyqE,UAAW,EACO,oBAAVhoE,OAA+B,CAAC,EAAa,IAC1DzC,KAAK+qE,cACE,CAAC,EAAa,KACzB,KAAK,EACD/qE,KAAKkrE,cAAgB,IAAItnB,aACzB5jD,KAAKqrE,sBACLnR,EAAG0H,MAAQ,EACf,KAAK,EACD,OAAM5hE,KAAK2qE,UAAYb,EAAkBc,YAAqB,CAAC,EAAa,GACrE,CAAC,EAAa5qE,KAAKirE,aAC9B,KAAK,EAED,OADA/Q,EAAG2H,OACI,CAAC,EAAa7hE,KAAK+jB,MAAM,MACpC,KAAK,EAED,OADAm2C,EAAG2H,OACI,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,WAKhC2I,EAAatoE,UAAUmpE,oBAAsB,WACzC,IAAIpN,EAAQj+D,KAaZ0C,SAAS4W,iBAAiB,eAVL,WAAc,OAAO+nD,EAAUpD,OAAO,OAAQ,GAAQ,WACvE,OAAO0D,EAAY3hE,MAAM,SAAUk6D,GAK/B,OADAl6D,KAAK+qE,cACE,CAAC,WAIyC,CACrDO,MAAM,KAMdd,EAAatoE,UAAUqpE,eAAiB,WACpC,OAAOlK,EAAUrhE,UAAM,OAAQ,GAAQ,WACnC,OAAO2hE,EAAY3hE,MAAM,SAAUk6D,GAE/B,OADAl6D,KAAKorE,kBACE,CAAC,UAIpBpqE,OAAOC,eAAeupE,EAAatoE,UAAW,eAAgB,CAC1Df,IAAK,WACD,OAAInB,KAAK2qE,UAAYb,EAAkBc,aAEnC5qE,KAAKirE,YACE,GAEJ,GAEX/pE,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeupE,EAAatoE,UAAW,SAAU,CACpDf,IAAK,WACD,OAAOnB,KAAK2qE,SAEhBzpE,YAAY,EACZuwD,cAAc,IAEX+Y,EA5JsB,CA6J/BT,IAEEyB,EAAoC,WACpC,SAASA,KAKT,OAHAA,EAAmBtpE,UAAUupE,QAAU,aACvCD,EAAmBtpE,UAAUwpE,UAAY,aACzCF,EAAmBtpE,UAAU6jD,WAAa,aACnCylB,EAN4B,GAQnCG,EAAmB3iD,WAAW4iD,gBAAkBJ,EA6ChDK,EAAY,IAvCqB,WACjC,SAASC,IACL,IAAI7N,EAAQj+D,KACZA,KAAK+rE,aAAe,IAAIjmD,IAKxB9lB,KAAKgsE,iBAAmB,SAAUC,GAC9B,IAAIC,EAAWjO,EAAM8N,aAAa5qE,IAAI8qE,EAAMnpE,QAC3B,OAAbopE,EACAA,EAASC,SAAqC,GAA5BF,EAAMnpE,OAAOspE,aAAiD,GAA7BH,EAAMnpE,OAAOupE,cAGhEpO,EAAMqO,gBAAgBZ,UAAUO,EAAMnpE,SAG9C9C,KAAKusE,YAAc,SAAUzzD,GACzBA,EAAQ3T,QAAQ84D,EAAM+N,mBAE1BhsE,KAAKssE,gBAAkB,IAAIX,EAAiB3rE,KAAKusE,aAiBrD,OAdAT,EAAgB5pE,UAAUi8C,IAAM,SAAUquB,EAASL,GAC/C,IAAID,EAAW,CACXC,SAAUA,EACVK,QAASA,GAIb,OAFAxsE,KAAK+rE,aAAa3kD,IAAIolD,EAASN,GAC/BlsE,KAAKssE,gBAAgBb,QAAQe,GACtBN,GAGXJ,EAAgB5pE,UAAU4D,OAAS,SAAUomE,GACzClsE,KAAKssE,gBAAgBZ,UAAUQ,EAASM,SACxCxsE,KAAK+rE,aAAanlD,OAAOslD,EAASM,UAE/BV,EArCyB,IAwChC7L,EAA0B,WAC1B,SAASA,EAASh7C,GAEdjlB,KAAKysE,oBAAqB,EAC1BzsE,KAAK0sE,eAAiB,EACtB1sE,KAAK2sE,WAAY,EACjB3sE,KAAKyiC,IAAMxd,EAAOwd,IAClBziC,KAAKqN,OAAS4X,EAAO5X,OACjB4X,EAAOu5C,cACPx+D,KAAKw+D,YAAcv5C,EAAOu5C,aAC9Bx+D,KAAKysE,mBACmC,kBAA7BxnD,EAAOwnD,oBACRxnD,EAAOwnD,mBAGjBzsE,KAAKmnE,aAAe,IAAI4C,EACpB9kD,EAAO4d,QACP7iC,KAAK4sE,GAAGhN,EAAUiN,KAAM5nD,EAAO4d,QAC/B5d,EAAO8d,aACP/iC,KAAK4sE,GAAGhN,EAAUkN,UAAW7nD,EAAO8d,aA4I5C,OA1IAk9B,EAAS/9D,UAAU6qE,SAAW,WAC1B,OAAO1L,EAAUrhE,UAAM,OAAQ,GAAQ,WACnC,IAAIk6D,EAAI8S,EAAQC,EAAe9S,EAC3BI,EACJ,OAAOoH,EAAY3hE,MAAM,SAAUsI,GAC/B,OAAQA,EAAGs5D,OACP,KAAK,EACD,OAAK5hE,KAAKyiC,KACVy3B,EAAKl6D,KACE,CAAC,EAAaktE,EAAaltE,KAAKyiC,OAFjB,CAAC,EAAa,GAGxC,KAAK,EACDy3B,EAAG7sD,OAAS/E,EAAGu5D,OACfv5D,EAAGs5D,MAAQ,EACf,KAAK,EACD,OAAI5hE,KAAK2sE,UACE,CAAC,IAER3sE,KAAKw+D,cACLyO,EAAgB,IAAI9L,EAAoC5H,6BAA6Bv5D,KAAKy4D,QAASz4D,KAAKw+D,aACxGwO,EAASC,EAAczO,aAG3BrE,EAAKn6D,KACE,CAAC,EAAaA,KAAKy4D,QAAQjZ,KAAK,IAAI1yC,WAAW9M,KAAKqN,QAAS2/D,EAAQhtE,KAAKysE,sBACrF,KAAK,EAGD,OADAtS,EAAGrR,KAAOxgD,EAAGu5D,OACT7hE,KAAK2sE,WACgB,QAApBpS,EAAKv6D,KAAK8oD,YAAyB,IAAPyR,GAAyBA,EAAG3zC,SACzD5mB,KAAK8oD,KAAO,KACL,CAAC,KAEM,OAAd9oD,KAAK8oD,KACL9oD,KAAKmnE,aAAatjC,KAAK,CACnB/3B,KAAM8zD,EAAUiN,KAChBnjE,KAAM1J,OAIVA,KAAKmtE,cAAclN,EAASmN,sBAEzB,CAAC,YAK5BnN,EAAS/9D,UAAUuI,KAAO,WACtB,OAAO42D,EAAUrhE,UAAM,OAAQ,GAAQ,WACnC,IAAIk6D,EAAImT,EACR,OAAO1L,EAAY3hE,MAAM,SAAUm6D,GAC/B,OAAQA,EAAGyH,OACP,KAAK,EAED,IAAK5hE,KAAKyiC,MAAQziC,KAAKqN,OAEnB,OADArN,KAAKmtE,cAAclN,EAASqN,qBACrB,CAAC,GAEZnT,EAAGyH,MAAQ,EACf,KAAK,EAGD,OAFAzH,EAAG2H,KAAKn9D,KAAK,CAAC,EAAG,EAAG,CAAE,IACtBu1D,EAAKl6D,KACE,CAAC,EAAakgE,EAAcuF,iBACvC,KAAK,EAED,OADAvL,EAAGzB,QAAU0B,EAAG0H,OACZ7hE,KAAK2sE,UACE,CAAC,GAEL,CAAC,EAAa3sE,KAAK+sE,YAC9B,KAAK,EAED,OADA5S,EAAG0H,OACI,CAAC,EAAa,GACzB,KAAK,EAGD,OAFAwL,EAAUlT,EAAG0H,OACb7hE,KAAKmtE,cAAcE,aAAmB/nE,MAAQ+nE,EAAQzoD,QAAUq7C,EAASmN,sBAClE,CAAC,EAAa,GACzB,KAAK,EAAG,MAAO,CAAC,WAKhCnN,EAAS/9D,UAAUirE,cAAgB,SAAUvoD,GAKzC,MAJA5kB,KAAKmnE,aAAatjC,KAAK,CACnB/3B,KAAM8zD,EAAUkN,UAChBpjE,KAAMkb,IAEJ,IAAItf,MAAMsf,IAOpBq7C,EAAS/9D,UAAU0qE,GAAK,SAAU9gE,EAAM4E,GACpC1Q,KAAKmnE,aAAahpB,IAAI,CAClBryC,KAAMA,EACN4E,SAAUA,KAQlBuvD,EAAS/9D,UAAUqrE,IAAM,SAAUzhE,EAAM4E,GACrC1Q,KAAKmnE,aAAarhE,OAAO,CACrBgG,KAAMA,EACN4E,SAAUA,KAGlBuvD,EAAS/9D,UAAUkuB,QAAU,WACzB,IAAI8pC,EACJl6D,KAAK0sE,gBAAkB,EACnB1sE,KAAK0sE,gBAAkB,IACvB1sE,KAAKwtE,8BACgB,QAApBtT,EAAKl6D,KAAK8oD,YAAyB,IAAPoR,GAAyBA,EAAGtzC,SACzD5mB,KAAK8oD,KAAO,KACZ9oD,KAAK2sE,WAAY,IASzB1M,EAAS/9D,UAAUsrE,4BAA8B,SAAU1hE,GACvD9L,KAAKmnE,aAAa+C,UAAUp+D,IAEhCm0D,EAAS/9D,UAAUopB,YAAc,WAC7B,GAAkB,OAAdtrB,KAAK8oD,KAEL,OADA9oD,KAAK0sE,gBAAkB,EAChB1sE,KAAK8oD,MAIpBmX,EAASqN,oBAAsB,2CAE/BrN,EAASmN,qBAAuB,0BACzBnN,EA/JkB,GAkKzB59B,EAAsB,WACtB,SAASA,EAAKpd,GACV,IACIi1C,EADA+D,EAAQj+D,KAGZA,KAAKu/C,QAAS,EAEdv/C,KAAK2sE,WAAY,EAEjB3sE,KAAKytE,UAAY,KAQjBztE,KAAK0tE,iBAAkB,EAEvB1tE,KAAKw4D,SAAW,KAEhBx4D,KAAK2tE,aAAe,KACpB3tE,KAAK4tE,4BAA6B,EAClC5tE,KAAK6tE,2BAA4B,EAEjC7tE,KAAKysE,oBAAqB,EAE1BzsE,KAAK8tE,QAAU,EAEf9tE,KAAK+tE,oBAAiBx+D,EAEtBvP,KAAKguE,qBAAkBz+D,EAEvBvP,KAAKiuE,sBAAwB,EAE7BjuE,KAAKkuE,cAAe,EAEpBluE,KAAKmuE,oBAAsB,KAE3BnuE,KAAKouE,WAAa,KAClBpuE,KAAKquE,mBAAqB,KAC1BruE,KAAKsuE,WAAa,KAElBtuE,KAAKuuE,UAAY,GACjBvuE,KAAKwuE,WAAa,GAClBxuE,KAAKyuE,WAAa,EAClBzuE,KAAKw6D,sBAAuB,EAC5Bx6D,KAAK0uE,eAAiB,SAAUC,GAC5B,IAAIC,EAAiB3Q,EAAMiQ,eAAiBS,EAC5C1Q,EAAMiQ,aAAeS,EAChBA,EAKK1Q,EAAM4Q,QAAQnT,MAASuC,EAAM4Q,QAAQlT,MAC3CsC,EAAM6Q,iBALFF,GACA3Q,EAAM36B,gCAWlBtjC,KAAK+uE,kBAAoB,EACzB/uE,KAAKouE,WAAapuE,KAAK2Y,KAAK7W,KAAK9B,MACjCA,KAAKuR,OAAS0T,EAAO1T,OACjB0T,EAAO1T,OAAOzI,cAAgBkmE,oBAC9BhvE,KAAKytE,UAAY5B,EAAU1tB,IAAIn+C,KAAKuR,OAAQvR,KAAK0uE,iBAErD1uE,KAAKyiC,IAAMxd,EAAOwd,IAClBziC,KAAKqN,OAAS4X,EAAO5X,OACrBrN,KAAKivE,SAAWhqD,EAAOgqD,SACvBjvE,KAAK+R,OAAkC,QAAxBmoD,EAAKj1C,EAAOlT,cAA2B,IAAPmoD,EAAgBA,EAAK,IAAI4F,EACxE9/D,KAAK4tE,6BAA+B3oD,EAAO2oD,2BAC3C5tE,KAAKw6D,uBAAyBv1C,EAAOu1C,qBACrCx6D,KAAK6tE,4BAA8B5oD,EAAO4oD,0BAC1C7tE,KAAKysE,wBAC6Bl9D,IAA9B0V,EAAOwnD,oBAEDxnD,EAAOwnD,mBAEjBzsE,KAAKmnE,aAAe,IAAI4C,EACpB9kD,EAAO4d,QACP7iC,KAAK4sE,GAAGhN,EAAUiN,KAAM5nD,EAAO4d,QAC/B5d,EAAO8d,aACP/iC,KAAK4sE,GAAGhN,EAAUkN,UAAW7nD,EAAO8d,aACpC9d,EAAOiqD,QACPlvE,KAAK4sE,GAAGhN,EAAUsI,KAAMjjD,EAAOiqD,QAC/BjqD,EAAOkqD,SACPnvE,KAAK4sE,GAAGhN,EAAUuI,MAAOljD,EAAOkqD,SAChClqD,EAAOmqD,QACPpvE,KAAK4sE,GAAGhN,EAAUiJ,KAAM5jD,EAAOmqD,QAC/BnqD,EAAOoqD,QACPrvE,KAAK4sE,GAAGhN,EAAU2J,KAAMtkD,EAAOoqD,QAC/BpqD,EAAOqqD,eACPtvE,KAAK4sE,GAAGhN,EAAU+J,YAAa1kD,EAAOqqD,eACtCrqD,EAAOsqD,WACPvvE,KAAK4sE,GAAGhN,EAAUiK,QAAS5kD,EAAOsqD,WAIlCtqD,EAAOk0B,SAAWl0B,EAAO4d,QACzB7iC,KAAK4sE,GAAGhN,EAAUiN,KAAM5nD,EAAOk0B,QAC/Bl0B,EAAOuqD,cAAgBvqD,EAAO8d,aAC9B/iC,KAAK4sE,GAAGhN,EAAUkN,UAAW7nD,EAAOuqD,aACpCvqD,EAAOwqD,SAAWxqD,EAAOiqD,QACzBlvE,KAAK4sE,GAAGhN,EAAUsI,KAAMjjD,EAAOwqD,QAC/BxqD,EAAOyqD,UAAYzqD,EAAOkqD,SAC1BnvE,KAAK4sE,GAAGhN,EAAUuI,MAAOljD,EAAOyqD,SAChCzqD,EAAO0qD,SAAW1qD,EAAOmqD,QACzBpvE,KAAK4sE,GAAGhN,EAAUiJ,KAAM5jD,EAAO0qD,QAC/B1qD,EAAO2qD,SAAW3qD,EAAOoqD,QACzBrvE,KAAK4sE,GAAGhN,EAAU2J,KAAMtkD,EAAO2qD,QAC/B3qD,EAAO4qD,gBAAkB5qD,EAAOqqD,eAChCtvE,KAAK4sE,GAAGhN,EAAU+J,YAAa1kD,EAAO4qD,eAItC5qD,EAAOu5C,cACPx+D,KAAKw+D,YAAcv5C,EAAOu5C,aAE9Bx+D,KAAK8vE,UAAY,IAAI3F,EAAiBnqE,KAAKmnE,cAC3CnnE,KAAKyK,KAAK,CACNg4B,IAAKziC,KAAKyiC,IACVp1B,OAAQrN,KAAKqN,OACb4hE,SAAUjvE,KAAKivE,SACfvsC,SAAUzd,EAAOyd,SACjBqtC,SAAU9qD,EAAO8qD,SACjB3I,WAAYniD,EAAOmiD,WACnBxkC,cAAe3d,EAAO2d,cACtB41B,SAAUvzC,EAAOuzC,SACjBwX,qBAAsB/qD,EAAO+qD,uBA2xCrC,OAxxCAhvE,OAAOC,eAAeohC,EAAKngC,UAAW,iBAAkB,CACpDf,IAAK,WACD,OAAOnB,KAAK8oD,KAAKmnB,kBAErB/uE,YAAY,EACZuwD,cAAc,IAGlBpvB,EAAKugC,IAAM,SAAU39C,GAEjB,OADA9I,QAAQkF,KAAK,kEACN,IAAIghB,EAAKpd,IAGpBod,EAAKngC,UAAUguE,qBAAuB,WAClClwE,KAAKmwE,OAASnwE,KAAK8tE,SAGvBzrC,EAAKngC,UAAUuI,KAAO,SAAUyvD,GAC5B,IAAI+D,EAAQj+D,KACRyiC,EAAMy3B,EAAGz3B,IAAKp1B,EAAS6sD,EAAG7sD,OAAQ4hE,EAAW/U,EAAG+U,SAAU7H,EAAalN,EAAGkN,WAAYxkC,EAAgBs3B,EAAGt3B,cAAe41B,EAAW0B,EAAG1B,SAAU2B,EAAKD,EAAGx3B,SAAUA,OAAkB,IAAPy3B,GAAwBA,EAAII,EAAKL,EAAG8V,qBAAsBA,OAA8B,IAAPzV,GAAwBA,EAAIjyD,EAAK4xD,EAAG6V,SAAUA,OAAkB,IAAPznE,GAAwBA,EACnV,IAAItI,KAAK2sE,UAAT,CAOA,GAJA3sE,KAAKyiC,IAAMA,EACXziC,KAAKqN,OAASA,EACdrN,KAAKivE,SAAWA,GAEXjvE,KAAKyiC,MAAQziC,KAAKqN,SAAWrN,KAAKivE,SACnC,MAAM,IAAI3M,EAAUjgC,EAAKirC,qBAG7B,IAAI8C,EAAyB7I,EAAiBH,GAE1CiJ,EAA4B9I,EAAiB3kC,GAEjD5iC,KAAKu/C,QAAS,EACdv/C,KAAK0tE,iBAAkB,EAEvBxN,EAAcuF,gBACTniB,MAAK,SAAUmV,GACZwF,EAAM0O,YAGV1O,EAAMxF,QAAUA,EAChBwF,EAAMqS,sBACNrS,EAAMsS,qBAENtS,EAAM/+B,SAAW++B,EAAMxF,QAAQzZ,aAAaif,EAAM1sD,OAAQy+D,GAGpD/R,EAAM1sD,OAAOvB,OAASiuD,EAAM1sD,OAAOzB,QACrCmuD,EAAM36B,+BAGV26B,EAAM8O,SAASvU,EAAU4X,EAAwBC,EAA2B3tC,EAAUqtC,GACjFzsB,MAAK,SAAUktB,GAChB,GAAIA,EACA,OAAOvS,EAAMwS,wBAGhBhtB,OAAM,SAAUrgD,GACjB+Y,QAAQ2D,MAAM1c,UAGjBqgD,OAAM,SAAUrgD,GACjB+Y,QAAQ2D,MAAM1c,QAStBi/B,EAAKngC,UAAUuuE,mBAAqB,SAAUC,GAC1C,IAAIzS,EAAQj+D,KAIZ,GAHIA,KAAK2tE,cACL3tE,KAAK2tE,gBAEJ3tE,KAAK4tE,2BAA4B,CAClC,IAAI+C,GAAuB3wE,KAAK4wE,SAAShuC,eAAiB,IACrDj9B,QAAO,SAAUoiE,GAAM,OAAOA,EAAGrP,SAAWuF,EAAMxF,QAAQoY,aAAa9I,EAAG9+C,aAC1Enf,KAAI,SAAUi+D,GAAM,OAAOA,EAAG9+C,YAC/B6nD,EAA2B9wE,KAAKw6D,qBAChCkW,GACA,yBAA0BA,IAC1BI,EAA2BJ,EAAoBlW,sBAEnDx6D,KAAK2tE,cAAe,EAAGxM,EAAoCpH,2BAA2B,CAClFxoD,OAAQvR,KAAKuR,OACbinD,SAAUx4D,KAAKw4D,SACf51B,cAAe+tC,EACfzxC,SAAUl/B,KAAKk/B,SACfk7B,KAAMp6D,KAAKy4D,QACX4B,IAAKr6D,KAAK6uE,QAAQ/L,WAAW9iE,KAAKy4D,SAClC6B,UAAWt6D,KAAK6uE,QAAQlL,iBAAiB3jE,KAAKy4D,SAC9C+B,qBAAsBsW,EACtBrW,kBAAmBz6D,KAAK6uE,QAAQpU,sBAO5Cp4B,EAAKngC,UAAUouE,oBAAsB,WAC7BtwE,KAAK2tE,eACL3tE,KAAK2tE,eACL3tE,KAAK2tE,aAAe,OAO5BtrC,EAAKngC,UAAU6uE,gBAAkB,WAC7B,IACI7W,EADA+D,EAAQj+D,KAGRuqE,EAAa/lD,QAAUslD,EAAkBc,cACX,QAAxB1Q,EAAKl6D,KAAKw4D,gBAA6B,IAAP0B,OAAgB,EAASA,EAAG8W,WAA0C,OAA7BhxE,KAAKmuE,sBAChFnuE,KAAKmuE,oBAAsB,CACvBriE,KAAM8zD,EAAUkL,kBAChBp6D,SAAU,WAAc,OAAOutD,EAAMiS,yBAEzC3F,EAAapsB,IAAIn+C,KAAKmuE,qBACtB5D,EAAagB,mBAIzBlpC,EAAKngC,UAAU+uE,iBAAmB,WACzBjxE,KAAKw4D,WAGVx4D,KAAK+tE,eAAiB/tE,KAAKw4D,SAASxoD,MAChChQ,KAAK+tE,gBAAkB/tE,KAAKw4D,SAASxoD,MACzChQ,KAAKguE,gBAAkBhuE,KAAKw4D,SAAS1oD,OACjC9P,KAAKguE,iBAAmBhuE,KAAKw4D,SAAS1oD,SAI9CuyB,EAAKngC,UAAU6qE,SAAW,SAAUmE,EAAcC,EAAgBC,EAAmB1uC,EAAUqtC,GAC3F,OAAO1O,EAAUrhE,UAAM,OAAQ,GAAQ,WACnC,IAAIqxE,EAASC,EACTpX,EACJ,OAAOyH,EAAY3hE,MAAM,SAAUm6D,GAC/B,OAAQA,EAAGyH,OACP,KAAK,EAED,OADAzH,EAAG2H,KAAKn9D,KAAK,CAAC,EAAG,EAAG,CAAE,IACC,MAAjB3E,KAAKivE,SAA0B,CAAC,EAAa,IACnDjvE,KAAKivE,SAAW,IAAIhP,EAAS,CACzBx9B,IAAKziC,KAAKyiC,IACVp1B,OAAQrN,KAAKqN,OACbo/D,mBAAoBzsE,KAAKysE,mBACzBjO,YAAax+D,KAAKw+D,cAEf,CAAC,EAAax+D,KAAKivE,SAASxkE,SACvC,KAAK,EACD0vD,EAAG0H,OACH1H,EAAGyH,MAAQ,EACf,KAAK,EAED,OAAK5hE,KAAKivE,UAGVjvE,KAAK8oD,KAAO9oD,KAAKivE,SAAS3jD,cAE1BtrB,KAAKuxE,aAAaL,EAAcC,EAAgBC,EAAmB1uC,EAAUqtC,GAE7E/vE,KAAKixE,mBAELjxE,KAAK+wE,kBAEL/wE,KAAKu/C,QAAS,EACdv/C,KAAKmnE,aAAatjC,KAAK,CACnB/3B,KAAM8zD,EAAUiN,KAChBnjE,KAA0B,QAAnBwwD,EAAKl6D,KAAKyiC,WAAwB,IAAPy3B,EAAgBA,EAAK,WAI3Dl6D,KAAK0tE,iBAAkB,EACvB1tE,KAAK8vE,UAAUhqC,UACf9lC,KAAKwxE,YACE,CAAC,GAAc,IApBX,CAAC,GAAc,GAqB9B,KAAK,EAKD,OAJAH,EAAUlX,EAAG0H,OACbyP,GA3iDYxxD,EA2iDcuxD,IA1iD9BvxD,EAAMyiD,eAChBziD,EAAM8E,QACN,wCAyiDczI,QAAQkF,KAAKiwD,GACbtxE,KAAKmnE,aAAatjC,KAAK,CAAE/3B,KAAM8zD,EAAUkN,UAAWpjE,KAAM4nE,IACnD,CAAC,EAAczsD,QAAQklB,OAAOunC,IACzC,KAAK,EAAG,MAAO,CAAC,GA/iDV,IAAUxxD,SAqjDhCuiB,EAAKngC,UAAUqvE,aAAe,SAAUL,EAAcC,EAAgBC,EAAmB1uC,EAAUqtC,GAC/F,GAAK/vE,KAAK8oD,KAAV,CAIA,IAwBI2oB,EAxBAC,EAAeR,EACblxE,KAAK8oD,KAAK6oB,eAAeT,GACzBlxE,KAAK8oD,KAAK8oB,kBAEhB,IAAKF,EAAc,CACf,IAAIJ,EAAM,+CAGV,OAFAn1D,QAAQkF,KAAKiwD,QACbtxE,KAAKmnE,aAAatjC,KAAK,CAAE/3B,KAAM8zD,EAAUkN,UAAWpjE,KAAM4nE,IAM9D,GAHAtxE,KAAKw4D,SAAWkZ,EAChBA,EAAavB,OAASnwE,KAAK8tE,QAAUvD,EAAasH,aAE9C7xE,KAAKw4D,SAAS0Q,iBAAmB,EAGjC,MAFIoI,EAAM,6BACVtxE,KAAKmnE,aAAatjC,KAAK,CAAE/3B,KAAM8zD,EAAUkN,UAAWpjE,KAAM4nE,IACpDA,EAwBV,GArBAtxE,KAAK4wE,SAAW,IAAI1J,EAASlnE,KAAKy4D,QAASz4D,KAAKw4D,SAAUx4D,KAAKmnE,cAM3DgK,EAAe1tE,OAAS,GAAK2tE,EAAkB3tE,OAAS,GACxDguE,EAAgBN,EAAehtE,OAAOitE,GACtCpxE,KAAK4wE,SAASxI,qBAAqB+I,EAAgBzuC,GACnD1iC,KAAK4wE,SAASvI,kBAAkB+I,EAAmB1uC,IAGnD+uC,EAAgB,CAACzxE,KAAK4wE,SAAS5H,WAAWtmC,GAAU,IAGxD1iC,KAAK8vE,UAAU3xB,IAAI,CACf3kC,MAAO,CACH1N,KAAM42B,EAAWk9B,EAAUsI,KAAOtI,EAAUuI,MAC5Cz+D,KAAM+nE,KAGV1B,EAAU,CACV,IAAI+B,EAAY9xE,KAAK8oD,KAAKipB,yBAAyBL,GACnD,GAAkB,OAAdI,EAAoB,CACpB,IAAI7K,EAAkB6K,EAAUE,kBAChC,GAAwB,OAApB/K,EAA0B,CAC1B,IAAID,EAAoB,IAAI1G,EAAkB2G,EAAiB,MAC/DjnE,KAAK+mE,sBAAsBC,QAM3C3kC,EAAKngC,UAAUsvE,UAAY,WACvB,IAAItX,EAAIC,GAC6E,QAAhFD,EAAkB,OAAbx3D,eAAkC,IAAbA,cAAsB,EAASA,SAASuvE,gBAA6B,IAAP/X,OAAgB,EAASA,EAAGgY,aACjHlyE,KAAKu/C,QAAUv/C,KAAKw4D,WAAax4D,KAAKmyE,iBACtCnyE,KAAKouE,WAAW1rE,SAASuvE,SAASC,aACV,QAAvB/X,EAAKn6D,KAAKy4D,eAA4B,IAAP0B,GAAyBA,EAAGra,yBAIhE9/C,KAAKoyE,kBAOb/vC,EAAKngC,UAAUyW,KAAO,SAAUmgD,EAAMuZ,GAClC,IAAInY,EAEJl6D,KAAKmyE,eAAiB,KACtB,IAAIG,EAASlkC,YAAY36B,MAEpBzT,KAAKuyE,iBACNvyE,KAAKuyE,eAAiBzZ,GAG1B94D,KAAK+uE,mBAAqBjW,EAAO94D,KAAKuyE,eAClCvyE,KAAK+uE,kBAAoB,MACzB/uE,KAAK+uE,kBAAoB,EACzBsD,SAAoDA,KAGxD,IAAIG,GAAe1Z,EAAO94D,KAAKuyE,gBAAkB,IACjDvyE,KAAKuyE,eAAiBzZ,EAStB,IALA,IAKSrxD,EAAK,EAAGgrE,EALMzyE,KAAK4wE,SAASxJ,WAChCzhE,QAAO,SAAUsI,GAAK,OAAOA,EAAEyqD,SAAWzqD,EAAEykE,cAG5Cx+D,MAAK,SAAUG,GAAS,OAAQA,EAAMq+D,YAAc,EAAI,KACLjrE,EAAKgrE,EAAmBhvE,OAAQgE,IAAM,CAC1F,IAAI8wD,EAAYka,EAAmBhrE,GACnC8wD,EAAUS,QAAQwZ,GACdja,EAAUtvC,SAAS0pD,UACnBpa,EAAUI,WAAa,GAE3BJ,EAAU1kD,MAAM,GAKpB,IADA,IACSsmD,EAAK,EAAGyY,EADS5yE,KAAK4wE,SAAShuC,cAAcj9B,QAAO,SAAUsI,GAAK,OAAOA,EAAEyqD,WACvByB,EAAKyY,EAAsBnvE,OAAQ02D,IAAM,CACnG,IAAI2L,EAAe8M,EAAsBzY,GAErC0Y,EAAoB/M,EAAaO,qBACrC,GAAIwM,EACA,IAAK,IAAIvyE,EAAI,EAAGA,EAAIuyE,EAAmBvyE,IAAK,CACxC,IAAIwyE,EAAUhN,EAAaQ,gBAAgBhmE,GAC3C,GAAIwyE,EACA,GAAIA,EAAQhnE,OAASk0D,EAAc+S,SAM/B,GALA/yE,KAAKmnE,aAAatjC,KAAK,CACnB/3B,KAAM8zD,EAAUoT,UAChBtpE,KAAMopE,IAGN9yE,KAAK6tE,0BAA2B,CAChC,IAAIoF,EAAevwE,SAASqC,cAAc,KACtCw1D,EAAKuY,EAASvkD,EAAMgsC,EAAGhsC,IAAKzrB,EAASy3D,EAAGz3D,OACxCs6D,GAAe,EAAG+D,EAAoClH,aAAa1rC,GACvEA,GAAO0kD,EAAa7tE,aAAa,OAAQg4D,GACzCt6D,GAAUmwE,EAAa7tE,aAAa,SAAUtC,GAC1Cs6D,GAAgBA,IAAiB+D,EAAoC9H,WACrE4Z,EAAaC,cAKrBlzE,KAAKmnE,aAAatjC,KAAK,CACnB/3B,KAAM8zD,EAAUoT,UAChBtpE,KAAMopE,IAM1BhN,EAAaM,gBAAgBoM,GAKS,GAAtCxyE,KAAK4wE,SAAShuC,cAAcn/B,QAC5BzD,KAAKw4D,SAASQ,QAAQwZ,GAE1B,IAAItzC,EAAWl/B,KAAKk/B,SAEpBA,EAASvtB,QACTutB,EAAS6d,OAET/8C,KAAKmzE,gBAEAnzE,KAAKkuE,cACNluE,KAAKw4D,SAAS7/C,KAAKumB,GAEvBA,EAAS8d,UACT9d,EAAS4f,QAET9+C,KAAK4wE,SAAStH,gBAEdtpE,KAAK4wE,SAASnH,qBAEdzpE,KAAK4wE,SAAShH,gBAAgB4I,GAE9BxyE,KAAKyuE,aACL,IAAI2E,EAAQhlC,YAAY36B,MAGxB,IAFAzT,KAAKwuE,WAAW7pE,KAAKyuE,GACrBpzE,KAAKuuE,UAAU5pE,KAAKyuE,EAAQd,GACrBtyE,KAAKwuE,WAAW,IAAM4E,EAAQ,KACjCpzE,KAAKwuE,WAAWznD,QAChB/mB,KAAKuuE,UAAUxnD,QAEgB,QAAlCmzC,EAAKl6D,KAAKquE,0BAAuC,IAAPnU,GAAyBA,EAAGmZ,kBAGnErzE,KAAK4wE,SAAS7H,UAEd/oE,KAAKoyE,kBAEApyE,KAAK4wE,SAAS0C,UAIdtzE,KAAK4wE,SAAS2C,aAFnBvzE,KAAKuyE,eAAiB,IAa9BlwC,EAAKngC,UAAUixE,cAAgB,WAC3B,IAAej0C,EAANl/B,KAAoBk/B,SAAUu5B,EAA9Bz4D,KAA2Cy4D,QAASoW,EAApD7uE,KAAiE6uE,QAASrW,EAA1Ex4D,KAAwFw4D,SAEjGt5B,EAASygB,MAAMkvB,EAAQ/L,WAAWrK,GAAUoW,EAAQlL,iBAAiBlL,GAAU,CAC3E+C,KAAMqT,EAAQrT,KACdC,KAAMoT,EAAQpT,KACdC,KAAMmT,EAAQnT,KACdC,KAAMkT,EAAQlT,MACfnD,EAASoD,OAAQ57D,KAAKiuE,sBAAwBY,EAAQpU,oBAE7Dz5D,OAAOC,eAAeohC,EAAKngC,UAAW,MAAO,CACzCf,IAAK,WACD,OAAOnB,KAAKuuE,UAAU9qE,QAE1BvC,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeohC,EAAKngC,UAAW,YAAa,CAC/Cf,IAAK,WACD,OAA8B,IAA1BnB,KAAKuuE,UAAU9qE,OACR,GAEHzD,KAAKuuE,UAAUrrD,QAAO,SAAUjV,EAAGC,GAAK,OAAOD,EAAIC,IAAM,GAAKlO,KAAKuuE,UAAU9qE,QAAQ0qC,QAAQ,IAEzGjtC,YAAY,EACZuwD,cAAc,IAUlBpvB,EAAKngC,UAAUkuB,QAAU,WACrB,IAAI8pC,EAAIC,EACRn6D,KAAK2sE,WAAY,EAEjB3sE,KAAKwzE,gBAELxzE,KAAKyzE,mBAEkB,OAAnBzzE,KAAKytE,WACL5B,EAAU/lE,OAAO9F,KAAKytE,WAE1BztE,KAAKswE,sBACDtwE,KAAK8oD,OACoB,QAAxBoR,EAAKl6D,KAAKivE,gBAA6B,IAAP/U,GAAyBA,EAAG9pC,UAC7DpwB,KAAK8oD,KAAO,MAEhB9oD,KAAKivE,SAAW,KAChBjvE,KAAKuwE,qBAC4B,OAA7BvwE,KAAKmuE,sBACL5D,EAAazkE,OAAO9F,KAAKmuE,qBACzBnuE,KAAKmuE,oBAAsB,MAEI,QAAlChU,EAAKn6D,KAAKquE,0BAAuC,IAAPlU,GAAyBA,EAAG/pC,UACvEpwB,KAAKquE,mBAAqB,KAC1BruE,KAAKsuE,WAAa,MAMtBjsC,EAAKngC,UAAUquE,mBAAqB,WAChC,IAAIrW,EACqB,QAAxBA,EAAKl6D,KAAKk/B,gBAA6B,IAAPg7B,GAAyBA,EAAGtzC,SAC7D5mB,KAAKk/B,SAAW,MASpBmD,EAAKngC,UAAUuxE,iBAAmB,WACJ,OAAtBzzE,KAAK2tE,cACL3tE,KAAK2tE,eAGT3tE,KAAK4qB,OACD5qB,KAAKw4D,WACLx4D,KAAKw4D,SAAS5xC,SACd5mB,KAAKw4D,SAAW,OASxBn2B,EAAKngC,UAAUwxE,gBAAkB,SAAUC,GACvC,IAAIzZ,EACJ,GAAKyZ,EAIL,GAAK3zE,KAAKw4D,SAAV,CAIA,IAAIob,EAAU5zE,KAAKw4D,SAASob,QAAQD,GACpC,GAAKC,EAIL,OAAOA,EAHHz3D,QAAQkF,KAAK,0CAA0Cld,OAAOwvE,EAAa,cAAcxvE,OAAgC,QAAxB+1D,EAAKl6D,KAAKw4D,gBAA6B,IAAP0B,OAAgB,EAASA,EAAGr5D,KAAM,mHALnKsb,QAAQkF,KAAK,2DAJblF,QAAQkF,KAAK,8BAqBrBghB,EAAKngC,UAAU2xE,gBAAkB,SAAUF,GACvC,IAAIC,EAAU5zE,KAAK0zE,gBAAgBC,GACnC,OAAOC,EAAUA,EAAQrnD,UAAOhd,GAQpC8yB,EAAKngC,UAAU4xE,gBAAkB,SAAUH,EAAaI,GACpD,IAAIH,EAAU5zE,KAAK0zE,gBAAgBC,GAC/BC,IACAA,EAAQrnD,KAAOwnD,IAIvB1xC,EAAKngC,UAAUqmE,KAAO,SAAU4I,EAAgBzuC,GAC5C,IAAIu7B,EAAQj+D,KACZmxE,EAAiB5J,EAAiB4J,GAE7BnxE,KAAK0tE,iBAMV1tE,KAAK4wE,SAASrI,KAAK4I,GACfnxE,KAAK2tE,cACL3tE,KAAK2tE,eAET3tE,KAAKywE,qBACLzwE,KAAKoyE,kBAVDpyE,KAAK8vE,UAAU3xB,IAAI,CACfksB,OAAQ,WAAc,OAAOpM,EAAMsK,KAAK4I,EAAgBzuC,OAYpEL,EAAKngC,UAAUoI,MAAQ,SAAU6mE,GAC7B,IAAIlT,EAAQj+D,KACZmxE,EAAiB5J,EAAiB4J,GAE7BnxE,KAAK0tE,iBAMN1tE,KAAK2tE,cACL3tE,KAAK2tE,eAET3tE,KAAK4wE,SAAStmE,MAAM6mE,IARhBnxE,KAAK8vE,UAAU3xB,IAAI,CACfksB,OAAQ,WAAc,OAAOpM,EAAM3zD,MAAM6mE,OASrD9uC,EAAKngC,UAAUsmE,MAAQ,SAAU2I,EAAgB5vE,GAC7C,IAAI08D,EAAQj+D,KACZmxE,EAAiB5J,EAAiB4J,GAE7BnxE,KAAK0tE,iBAQV1tE,KAAK4wE,SAASpI,MAAM2I,EAAgB5vE,GAAS,GAC7CvB,KAAKwxE,aARDxxE,KAAK8vE,UAAU3xB,IAAI,CACfksB,OAAQ,WAAc,OAAOpM,EAAMuK,MAAM2I,EAAgB5vE,OAUrE8gC,EAAKngC,UAAU0oB,KAAO,SAAUumD,GAC5B,IAAIlT,EAAQj+D,KACZmxE,EAAiB5J,EAAiB4J,GAE7BnxE,KAAK0tE,iBAON1tE,KAAK4wE,UACL5wE,KAAK4wE,SAAShmD,KAAKumD,GAEnBnxE,KAAK2tE,cACL3tE,KAAK2tE,gBAVL3tE,KAAK8vE,UAAU3xB,IAAI,CACfksB,OAAQ,WAAc,OAAOpM,EAAMrzC,KAAKumD,OAoBpD9uC,EAAKngC,UAAU21C,MAAQ,SAAU5yB,GAC7B,IAAIi1C,EAAIC,EAEJ6Z,EAAe/uD,aAAuC,EAASA,EAAOuzC,SACtE2Y,EAAiB5J,EAAiBtiD,aAAuC,EAASA,EAAOmiD,YACzFgK,EAAoB7J,EAAiBtiD,aAAuC,EAASA,EAAO2d,eAC5FF,EAAsF,QAA1Ew3B,EAAKj1C,aAAuC,EAASA,EAAOyd,gBAA6B,IAAPw3B,GAAgBA,EAC9G6V,EAAsF,QAA1E5V,EAAKl1C,aAAuC,EAASA,EAAO8qD,gBAA6B,IAAP5V,GAAgBA,EAElHn6D,KAAKyzE,mBAELzzE,KAAKuxE,aAAayC,EAAc7C,EAAgBC,EAAmB1uC,EAAUqtC,GAC7E/vE,KAAK8vE,UAAUhqC,WAGnBzD,EAAKngC,UAAUs9C,KAAO,SAAUv6B,GAC5BjlB,KAAK8oD,KAAO,KAEZ9oD,KAAK4qB,OAEL5qB,KAAKyK,KAAKwa,IAEdjkB,OAAOC,eAAeohC,EAAKngC,UAAW,SAAU,CAM5Cf,IAAK,WACD,OAAOnB,KAAK6uE,SAGhBznD,IAAK,SAAUrV,GACX/R,KAAK6uE,QAAU98D,EAEVA,EAAO2pD,MAAS3pD,EAAO4pD,MACxB37D,KAAK8uE,iBAEL9uE,KAAKu/C,SAAWv/C,KAAK4wE,SAAS7H,WAC9B/oE,KAAKwxE,aAGbtwE,YAAY,EACZuwD,cAAc,IAMlBpvB,EAAKngC,UAAU4sE,eAAiB,WAC5B9uE,KAAK6uE,QAAU7uE,KAAK+R,OAAO8wD,SAAS,CAChCrH,KAAM,EACNC,KAAM,EACNC,KAAM17D,KAAKuR,OAAOvB,MAClB2rD,KAAM37D,KAAKuR,OAAOzB,UAc1BuyB,EAAKngC,UAAUohC,6BAA+B,SAAU2wC,GACpD,GAAIj0E,KAAKuR,kBAAkBy9D,mBAAuBvsE,OAAQ,CACtD,IAAIy3D,EAAKl6D,KAAKuR,OAAOwpD,wBAAyB/qD,EAAQkqD,EAAGlqD,MAAOF,EAASoqD,EAAGpqD,OACxEokE,EAAMD,GAA0BxxE,OAAO0xE,kBAAoB,EAM/D,GALAn0E,KAAKo0E,qBAAuBF,EAC5Bl0E,KAAKuR,OAAOvB,MAAQkkE,EAAMlkE,EAC1BhQ,KAAKuR,OAAOzB,OAASokE,EAAMpkE,EAC3B9P,KAAK8uE,iBACL9uE,KAAKwxE,YACDxxE,KAAK+R,OAAOsoD,MAAQwF,EAAIC,OAAQ,CAChC,IAAIuU,EAAcr0E,KAAK6uE,QAAQpU,kBAC/Bz6D,KAAKw4D,SAASxoD,MAAQA,EAAQqkE,EAC9Br0E,KAAKw4D,SAAS1oD,OAASA,EAASukE,KAI5CrzE,OAAOC,eAAeohC,EAAKngC,UAAW,SAAU,CAE5Cf,IAAK,WACD,OAAOnB,KAAKyiC,KAEhBvhC,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeohC,EAAKngC,UAAW,iBAAkB,CAIpDf,IAAK,WACD,OAAOnB,KAAKw4D,SAAWx4D,KAAKw4D,SAAS33D,KAAO,IAEhDK,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeohC,EAAKngC,UAAW,iBAAkB,CAEpDf,IAAK,WAED,IAAKnB,KAAKu/C,SAAWv/C,KAAKw4D,SACtB,MAAO,GAGX,IADA,IAAI2Y,EAAiB,GACZ7wE,EAAI,EAAGA,EAAIN,KAAKw4D,SAAS0Q,iBAAkB5oE,IAChD6wE,EAAexsE,KAAK3E,KAAKw4D,SAAS2Q,iBAAiB7oE,GAAGO,MAE1D,OAAOswE,GAEXjwE,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeohC,EAAKngC,UAAW,oBAAqB,CAIvDf,IAAK,WAED,IAAKnB,KAAKu/C,SAAWv/C,KAAKw4D,SACtB,MAAO,GAGX,IADA,IAAI4Y,EAAoB,GACf9wE,EAAI,EAAGA,EAAIN,KAAKw4D,SAAS4Q,oBAAqB9oE,IACnD8wE,EAAkBzsE,KAAK3E,KAAKw4D,SAAS6Q,oBAAoB/oE,GAAGO,MAEhE,OAAOuwE,GAEXlwE,YAAY,EACZuwD,cAAc,IAQlBpvB,EAAKngC,UAAUwhC,mBAAqB,SAAU7iC,GAE1C,GAAKb,KAAKu/C,OAAV,CAGA,IAAIumB,EAAe9lE,KAAK4wE,SAAShuC,cAAcvpB,MAAK,SAAU3Y,GAAK,OAAOA,EAAEG,OAASA,KACrF,OAAOilE,aAAmD,EAASA,EAAariC,SAGpFpB,EAAKngC,UAAUoyE,oBAAsB,SAAUzzE,EAAMgpD,GACjD,GAAKhpD,EAIL,GAAKb,KAAKw4D,SAAV,CAIA,IAAI50B,EAAQ5jC,KAAKw4D,SAAS+b,YAAY1zE,EAAMgpD,GAC5C,GAAKjmB,EAIL,OAAOA,EAHHznB,QAAQkF,KAAK,yCAAyCld,OAAOtD,EAAM,gBAAgBsD,OAAO0lD,EAAM,WALhG1tC,QAAQkF,KAAK,2BAA2Bld,OAAOtD,EAAM,iBAAiBsD,OAAO0lD,EAAM,qCAJnF1tC,QAAQkF,KAAK,oCAAoCld,OAAO0lD,EAAM,OAoBtExnB,EAAKngC,UAAUsyE,sBAAwB,SAAUC,EAAWlzE,EAAOsoD,GAC/D,IAAIjmB,EAAQ5jC,KAAKs0E,oBAAoBG,EAAW5qB,GAC3CjmB,IAEDA,EAAM93B,OAASs0D,EAAsB59D,QACrCohC,EAAM+iC,SAASplE,MAAQA,EAGvB4a,QAAQkF,KAAK,qBAAqBld,OAAOswE,EAAW,gBAAgBtwE,OAAO0lD,EAAM,yBASzFxnB,EAAKngC,UAAUwyE,qBAAuB,SAAUD,EAAWlzE,EAAOsoD,GAC9D,IAAIjmB,EAAQ5jC,KAAKs0E,oBAAoBG,EAAW5qB,GAC3CjmB,IAEDA,EAAM93B,OAASs0D,EAAsB7nD,OACrCqrB,EAAMgjC,WAAWrlE,MAAQA,EAGzB4a,QAAQkF,KAAK,qBAAqBld,OAAOswE,EAAW,gBAAgBtwE,OAAO0lD,EAAM,wBAQzFxnB,EAAKngC,UAAUyyE,gBAAkB,SAAUF,EAAW5qB,GAClD,IAAIjmB,EAAQ5jC,KAAKs0E,oBAAoBG,EAAW5qB,GAC3CjmB,IAEDA,EAAM93B,OAASs0D,EAAsBwF,QACrChiC,EAAMkjC,YAAYjjC,OAGlB1nB,QAAQkF,KAAK,qBAAqBld,OAAOswE,EAAW,gBAAgBtwE,OAAO0lD,EAAM,yBAIzFxnB,EAAKngC,UAAU0yE,mBAAqB,SAAU/zE,EAAMgpD,GAChD,GAAKhpD,EAIL,GAAKgpD,EAIL,GAAK7pD,KAAKw4D,SAAV,CAIA,IAAIjsC,EAAOvsB,KAAKw4D,SAASqc,WAAWh0E,EAAMgpD,GAC1C,GAAKt9B,EAIL,OAAOA,EAHHpQ,QAAQkF,KAAK,qCAAqCld,OAAOtD,EAAM,gBAAgBsD,OAAO0lD,EAAM,WAL5F1tC,QAAQkF,KAAK,0BAA0Bld,OAAOtD,EAAM,iBAAiBsD,OAAO0lD,EAAM,qCAJlF1tC,QAAQkF,KAAK,8BAA8Bld,OAAOtD,EAAM,WAJxDsb,QAAQkF,KAAK,mCAAmCld,OAAO0lD,EAAM,OAmCrExnB,EAAKngC,UAAU4yE,sBAAwB,SAAUC,EAAUlrB,GACvD,IAAImrB,EAAMh1E,KAAK40E,mBAAmBG,EAAUlrB,GAC5C,GAAKmrB,EAIL,OAAOA,EAAIzoD,KAHPpQ,QAAQkF,KAAK,kCAAkCld,OAAO4wE,EAAU,gBAAgB5wE,OAAO0lD,EAAM,OAuBrGxnB,EAAKngC,UAAUqhC,sBAAwB,SAAUwxC,EAAUxzE,EAAOsoD,GAC9D,IAAImrB,EAAMh1E,KAAK40E,mBAAmBG,EAAUlrB,GACvCmrB,EAILA,EAAIzoD,KAAOhrB,EAHP4a,QAAQkF,KAAK,kCAAkCld,OAAO4wE,EAAU,gBAAgB5wE,OAAO0lD,EAAM,OAKrG7oD,OAAOC,eAAeohC,EAAKngC,UAAW,2BAA4B,CAE9Df,IAAK,WAED,OAAKnB,KAAKu/C,OAGHv/C,KAAK4wE,SAAShuC,cAChBj9B,QAAO,SAAUjF,GAAK,OAAOA,EAAEg4D,WAC/B5uD,KAAI,SAAUpJ,GAAK,OAAOA,EAAEG,QAJtB,IAMfK,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeohC,EAAKngC,UAAW,wBAAyB,CAE3Df,IAAK,WAED,OAAKnB,KAAKu/C,OAGHv/C,KAAK4wE,SAASxJ,WAAWzhE,QAAO,SAAUsI,GAAK,OAAOA,EAAEyqD,WAAY5uD,KAAI,SAAUmE,GAAK,OAAOA,EAAEpN,QAF5F,IAIfK,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeohC,EAAKngC,UAAW,uBAAwB,CAE1Df,IAAK,WAED,OAAKnB,KAAKu/C,OAGHv/C,KAAK4wE,SAASxJ,WAChBzhE,QAAO,SAAUsI,GAAK,OAAQA,EAAEyqD,WAChC5uD,KAAI,SAAUmE,GAAK,OAAOA,EAAEpN,QAJtB,IAMfK,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeohC,EAAKngC,UAAW,0BAA2B,CAK7Df,IAAK,WAED,OAAKnB,KAAKu/C,OAGHv/C,KAAK4wE,SAAShuC,cAChBj9B,QAAO,SAAUjF,GAAK,OAAQA,EAAEg4D,WAChC5uD,KAAI,SAAUpJ,GAAK,OAAOA,EAAEG,QAJtB,IAMfK,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeohC,EAAKngC,UAAW,YAAa,CAI/Cf,IAAK,WACD,OAAOnB,KAAK4wE,SAAS7H,WAEzB7nE,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeohC,EAAKngC,UAAW,WAAY,CAI9Cf,IAAK,WACD,OAAOnB,KAAK4wE,SAAS0C,UAEzBpyE,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeohC,EAAKngC,UAAW,YAAa,CAI/Cf,IAAK,WACD,OAAOnB,KAAK4wE,SAAS2C,WAEzBryE,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeohC,EAAKngC,UAAW,SAAU,CAK5Cf,IAAK,WACD,OAAOnB,KAAKw4D,SAAWx4D,KAAKw4D,SAASoD,YAASrsD,GAElDrO,YAAY,EACZuwD,cAAc,IAOlBpvB,EAAKngC,UAAU0qE,GAAK,SAAU9gE,EAAM4E,GAChC1Q,KAAKmnE,aAAahpB,IAAI,CAClBryC,KAAMA,EACN4E,SAAUA,KAQlB2xB,EAAKngC,UAAUqrE,IAAM,SAAUzhE,EAAM4E,GACjC1Q,KAAKmnE,aAAarhE,OAAO,CACrBgG,KAAMA,EACN4E,SAAUA,KAQlB2xB,EAAKngC,UAAUioC,YAAc,SAAUr+B,EAAM4E,GACzCyL,QAAQkF,KAAK,4DACbrhB,KAAKutE,IAAIzhE,EAAM4E,IAQnB2xB,EAAKngC,UAAUsrE,4BAA8B,SAAU1hE,GACnD9L,KAAKmnE,aAAa+C,UAAUp+D,IAShCu2B,EAAKngC,UAAU+yE,eAAiB,SAAUnpE,GACtCqQ,QAAQkF,KAAK,oFACbrhB,KAAKwtE,4BAA4B1hE,IAWrCu2B,EAAKngC,UAAUsxE,cAAgB,WACvBxzE,KAAKu/C,QAAUv/C,KAAKmyE,iBAChBnyE,KAAKy4D,QAAQ3qB,qBACb9tC,KAAKy4D,QAAQ3qB,qBAAqB9tC,KAAKmyE,gBAGvCrkC,qBAAqB9tC,KAAKmyE,gBAE9BnyE,KAAKmyE,eAAiB,OAO9B9vC,EAAKngC,UAAUkwE,eAAiB,WACxBpyE,KAAKu/C,QAAUv/C,KAAKw4D,WAAax4D,KAAKmyE,iBAClCnyE,KAAKy4D,QAAQ7/C,sBACb5Y,KAAKmyE,eAAiBnyE,KAAKy4D,QAAQ7/C,sBAAsB5Y,KAAKouE,YAG9DpuE,KAAKmyE,eAAiBv5D,sBAAsB5Y,KAAKouE,cAU7D/rC,EAAKngC,UAAU09C,iBAAmB,SAAUs1B,GACxCl1E,KAAKy4D,QAAQ7Y,iBAAiBs1B,IAKlC7yC,EAAKngC,UAAU29C,kBAAoB,WAC/B7/C,KAAKy4D,QAAQ5Y,qBAEjB7+C,OAAOC,eAAeohC,EAAKngC,UAAW,WAAY,CAI9Cf,IAAK,WACD,GAAKnB,KAAKu/C,OAAV,CAMA,IAHA,IAAI41B,EAAe,CACfC,UAAW,IAEN90E,EAAI,EAAGA,EAAIN,KAAK8oD,KAAKusB,gBAAiB/0E,IAAK,CAOhD,IANA,IAAIk4D,EAAWx4D,KAAK8oD,KAAKwsB,gBAAgBh1E,GACrCi1E,EAAmB,CACnB10E,KAAM23D,EAAS33D,KACfumE,WAAY,GACZxkC,cAAe,IAEV0lB,EAAI,EAAGA,EAAIkQ,EAAS0Q,iBAAkB5gB,IAAK,CAChD,IAAIiQ,EAAYC,EAAS2Q,iBAAiB7gB,GAC1CitB,EAAiBnO,WAAWziE,KAAK4zD,EAAU13D,MAE/C,IAAK,IAAIyvC,EAAI,EAAGA,EAAIkoB,EAAS4Q,oBAAqB94B,IAAK,CAKnD,IAJA,IAAIw1B,EAAetN,EAAS6Q,oBAAoB/4B,GAC5CklC,EAAS1P,EAAajlE,KACtBooB,EAAW,IAAIjpB,KAAKy4D,QAAQsN,qBAAqBD,EAActN,GAC/Did,EAAgB,GACXl1E,EAAI,EAAGA,EAAI0oB,EAASs9C,aAAchmE,IAAK,CAC5C,IAAIqjC,EAAQ3a,EAAS2a,MAAMrjC,GAC3Bk1E,EAAc9wE,KAAK,CAAE9D,KAAM+iC,EAAM/iC,KAAMiL,KAAM83B,EAAM93B,OAEvDypE,EAAiB3yC,cAAcj+B,KAAK,CAChC9D,KAAM20E,EACN/xC,OAAQgyC,IAGhBN,EAAaC,UAAUzwE,KAAK4wE,GAEhC,OAAOJ,IAEXj0E,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeohC,EAAKngC,UAAW,SAAU,CAI5Cf,IAAK,WAID,OAHInB,KAAKw4D,UAAYx4D,KAAKw4D,SAAS2X,SAAWnwE,KAAK8tE,UAC/C9tE,KAAK8tE,QAAU9tE,KAAKw4D,SAAS2X,QAE1BnwE,KAAK8tE,SAEhB1mD,IAAK,SAAU7lB,GACXvB,KAAK8tE,QAAUvsE,EACXvB,KAAKw4D,WACLx4D,KAAKw4D,SAAS2X,OAAS5uE,EAAQgpE,EAAasH,eAGpD3wE,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeohC,EAAKngC,UAAW,gBAAiB,CAWnDf,IAAK,WACD,IAAI+4D,EACJ,OAAIl6D,KAAKw4D,SACEx4D,KAAKw4D,SAASxoD,MAEa,QAA9BkqD,EAAKl6D,KAAK+tE,sBAAmC,IAAP7T,EAAgBA,EAAK,GAEvE9yC,IAAK,SAAU7lB,GACXvB,KAAK+tE,eAAiBxsE,EAClBvB,KAAKw4D,WACLx4D,KAAKw4D,SAASxoD,MAAQzO,IAG9BL,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeohC,EAAKngC,UAAW,iBAAkB,CAWpDf,IAAK,WACD,IAAI+4D,EACJ,OAAIl6D,KAAKw4D,SACEx4D,KAAKw4D,SAAS1oD,OAEc,QAA/BoqD,EAAKl6D,KAAKguE,uBAAoC,IAAP9T,EAAgBA,EAAK,GAExE9yC,IAAK,SAAU7lB,GACXvB,KAAKguE,gBAAkBzsE,EACnBvB,KAAKw4D,WACLx4D,KAAKw4D,SAAS1oD,OAASvO,IAG/BL,YAAY,EACZuwD,cAAc,IAKlBpvB,EAAKngC,UAAUwzE,kBAAoB,WAC3B11E,KAAKw4D,UACLx4D,KAAKw4D,SAASkd,oBACd11E,KAAK+tE,eAAiB/tE,KAAKw4D,SAASxoD,MACpChQ,KAAKguE,gBAAkBhuE,KAAKw4D,SAAS1oD,SAIrC9P,KAAK+tE,oBAAiBx+D,EACtBvP,KAAKguE,qBAAkBz+D,IAG/BvO,OAAOC,eAAeohC,EAAKngC,UAAW,uBAAwB,CAO1Df,IAAK,WACD,OAAOnB,KAAKiuE,uBAEhB7mD,IAAK,SAAU7lB,GACXvB,KAAKiuE,sBAAwB1sE,GAEjCL,YAAY,EACZuwD,cAAc,IAKlBpvB,EAAKngC,UAAU6kE,sBAAwB,SAAUC,GAC7C,IAAI9M,EACAl6D,KAAKw4D,WAAax4D,KAAK2sE,WACnB3F,GAAqBA,EAAkBC,kBACvCD,EAAkB2O,kCACiB,QAAlCzb,EAAKl6D,KAAKquE,0BAAuC,IAAPnU,GAAyBA,EAAG9pC,UACvEpwB,KAAKquE,mBAAqBrH,EACtBhnE,KAAK4wE,SAAShuC,cAAcn/B,OAAS,EACrCzD,KAAK4wE,SAAShuC,cAAcz9B,SAAQ,SAAU2gE,GAC1C,OAAOA,EAAaiB,sBAAsBC,MAI9ChnE,KAAKw4D,SAASuO,sBAAsBC,EAAkBC,mBAKtEjmE,OAAOC,eAAeohC,EAAKngC,UAAW,oBAAqB,CACvDf,IAAK,WACD,OAAOnB,KAAKquE,oBAEhBntE,YAAY,EACZuwD,cAAc,IAElBpvB,EAAKngC,UAAU0zE,iBAAmB,SAAUxxE,GACxC,IAAI0tE,EAAY9xE,KAAK8oD,KAAK8sB,iBAAiBxxE,GAC3C,OAAkB,OAAd0tE,EACO,IAAItyD,EAAUsyD,GAElB,MAEXzvC,EAAKngC,UAAU2zE,gBAAkB,SAAUh1E,GACvC,IAAIixE,EAAY9xE,KAAK8oD,KAAK+sB,gBAAgBh1E,GAC1C,OAAkB,OAAdixE,EACO,IAAItyD,EAAUsyD,GAElB,MAEXzvC,EAAKngC,UAAU4zE,MAAQ,WACnB,GAAwB,OAApB91E,KAAKsuE,WAAqB,CAC1B,IAAIyH,EAAY/1E,KAAK8oD,KAAKgtB,QAC1B91E,KAAKsuE,WAAayH,EAAUjsE,KAAI,SAAUksE,GACtC,OAAO,IAAIrW,EAASqW,MAG5B,OAAOh2E,KAAKsuE,YAEhBjsC,EAAKngC,UAAU+zE,iBAAmB,WAC9B,GAAIj2E,KAAKw4D,SAAU,CACf,IAAIsZ,EAAY9xE,KAAK8oD,KAAKipB,yBAAyB/xE,KAAKw4D,UACxD,GAAIsZ,EACA,OAAO,IAAItyD,EAAUsyD,GAG7B,OAAO,MAGXzvC,EAAKirC,oBAAsB,2CAE3BjrC,EAAK6zC,oBAAsB,6CACpB7zC,EA95Cc,GAi6CrB7iB,EAA2B,WAC3B,SAASA,EAAUsyD,GACf9xE,KAAKm2E,WAAarE,EA0DtB,OAxDA9wE,OAAOC,eAAeue,EAAUtd,UAAW,gBAAiB,CACxDf,IAAK,WACD,OAAOnB,KAAKm2E,WAAWC,eAE3Bl1E,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeue,EAAUtd,UAAW,OAAQ,CAC/Cf,IAAK,WACD,OAAOnB,KAAKm2E,WAAWt1E,MAE3BK,YAAY,EACZuwD,cAAc,IAElBjyC,EAAUtd,UAAUm0E,gBAAkB,SAAUjyE,GAC5C,IAAI6kB,EAAWjpB,KAAKm2E,WAAWE,gBAAgBjyE,GAC/C,OAAiB,OAAb6kB,EACO,IAAIq3C,EAAkBr3C,EAAU,MAEpC,MAEXzJ,EAAUtd,UAAUo0E,eAAiB,SAAUz1E,GAC3C,IAAIooB,EAAWjpB,KAAKm2E,WAAWG,eAAez1E,GAC9C,OAAiB,OAAbooB,EACO,IAAIq3C,EAAkBr3C,EAAU,MAEpC,MAEXzJ,EAAUtd,UAAU8vE,gBAAkB,WAClC,IAAI/K,EAAkBjnE,KAAKm2E,WAAWnE,kBACtC,OAAwB,OAApB/K,EACO,IAAI3G,EAAkB2G,EAAiB,MAE3C,MAEXznD,EAAUtd,UAAU+mB,SAAW,WAC3B,IAAIg+C,EAAkBjnE,KAAKm2E,WAAWltD,WACtC,OAAwB,OAApBg+C,EACO,IAAI3G,EAAkB2G,EAAiB,MAE3C,MAEXjmE,OAAOC,eAAeue,EAAUtd,UAAW,aAAc,CACrDf,IAAK,WACD,OAAOnB,KAAKm2E,WAAWI,iBAE3Br1E,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAeue,EAAUtd,UAAW,gBAAiB,CACxDf,IAAK,WACD,OAAOnB,KAAKm2E,WAAWK,oBAE3Bt1E,YAAY,EACZuwD,cAAc,IAEXjyC,EA5DmB,GA+D1BmgD,EAA0B,WAC1B,SAASA,EAASqW,GACdh2E,KAAKy2E,UAAYT,EAgBrB,OAdAh1E,OAAOC,eAAe0+D,EAASz9D,UAAW,OAAQ,CAC9Cf,IAAK,WACD,OAAOnB,KAAKy2E,UAAU51E,MAE1BK,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAe0+D,EAASz9D,UAAW,SAAU,CAChDf,IAAK,WACD,OAAOnB,KAAKy2E,UAAUliE,QAE1BrT,YAAY,EACZuwD,cAAc,IAEXkO,EAlBkB,IAsB7B,SAAW2K,GACPA,EAAqB,OAAI,SACzBA,EAAqB,OAAI,SACzBA,EAAsB,QAAI,UAC1BA,EAAoB,MAAI,QACxBA,EAAsB,QAAI,UAC1BA,EAAmB,KAAI,OACvBA,EAAmB,KAAI,OACvBA,EAAoB,MAAI,QAR5B,CASGA,IAAiBA,EAAe,KACnC,IAAIhK,EAAmC,WACnC,SAASA,EAAkB2G,EAAiBvd,GACxC1pD,KAAK02E,SAAW,GAChB12E,KAAK22E,UAAY,GACjB32E,KAAK42E,oBAAsB,IAAI9wD,IAC/B9lB,KAAK62E,yBAA2B,GAChC72E,KAAK82E,gBAAkB,EACvB92E,KAAK+2E,iBAAmB9P,EACT,OAAXvd,GACA1pD,KAAK02E,SAAS/xE,KAAK+kD,GA+W3B,OA5WA1oD,OAAOC,eAAeq/D,EAAkBp+D,UAAW,kBAAmB,CAClEf,IAAK,WACD,OAAOnB,KAAK+2E,kBAEhB71E,YAAY,EACZuwD,cAAc,IAElB6O,EAAkBp+D,UAAUmxE,gBAAkB,WACG,IAAzCrzE,KAAK62E,yBAAyBpzE,SAC9BzD,KAAK62E,yBAAyB1xE,SAAQ,SAAUlD,GAC5CA,EAASoxE,qBAEbrzE,KAAK62E,yBAAyB1xE,SAAQ,SAAUlD,GAC5CA,EAAS+0E,mBAGjBh3E,KAAK22E,UAAUxxE,SAAQ,SAAU8xE,GAAS,OAAOA,EAAM5D,sBAE3D/S,EAAkBp+D,UAAUg1E,UAAY,SAAUxtB,GACzC1pD,KAAK02E,SAASliE,SAASk1C,KACxB1pD,KAAK02E,SAAS/xE,KAAK+kD,IACf1pD,KAAK62E,yBAAyBpzE,OAAS,GACvCzD,KAAK22E,UAAUlzE,OAAS,IACxBimD,EAAOytB,wBAAwBn3E,QAI3CsgE,EAAkBp+D,UAAUk1E,aAAe,SAAU1tB,GACjD,IAAItlD,EAAQpE,KAAK02E,SAASjnE,QAAQi6C,IACnB,IAAXtlD,IACepE,KAAK02E,SAAStyE,GACpBizE,6BAA6Br3E,MACtCA,KAAK02E,SAAS/uE,OAAOvD,EAAO,KAMpCk8D,EAAkBp+D,UAAUo1E,uBAAyB,SAAUr1E,GAC3D,IAAIg8D,EAAQj+D,KACPA,KAAK62E,yBAAyBriE,SAASvS,KACxCjC,KAAK62E,yBAAyBlyE,KAAK1C,GAC/BjC,KAAK62E,yBAAyBpzE,OAAS,GACvCzD,KAAK02E,SAASvxE,SAAQ,SAAUukD,GAC5BA,EAAOytB,wBAAwBlZ,QAQ/CqC,EAAkBp+D,UAAUq1E,4BAA8B,SAAUt1E,GAChE,IAAIg8D,EAAQj+D,KACRA,KAAK62E,yBAAyBriE,SAASvS,KACvCjC,KAAK62E,yBAA2B72E,KAAK62E,yBAAyBlxE,QAAO,SAAUqJ,GAAQ,OAAOA,IAAS/M,KACzE,IAA1BjC,KAAK22E,UAAUlzE,QAC0B,IAAzCzD,KAAK62E,yBAAyBpzE,QAC9BzD,KAAK02E,SAASvxE,SAAQ,SAAUukD,GAC5BA,EAAO2tB,6BAA6BpZ,QAQpDqC,EAAkBp+D,UAAUi1E,wBAA0B,SAAUluD,GAC5D,IAAIg1C,EAAQj+D,KACPA,KAAK22E,UAAUniE,SAASyU,KACzBjpB,KAAK22E,UAAUhyE,KAAKskB,GACpBjpB,KAAK02E,SAASvxE,SAAQ,SAAUukD,GAC5BA,EAAOytB,wBAAwBlZ,QAO3CqC,EAAkBp+D,UAAUm1E,6BAA+B,SAAUpuD,GACjE,IAAIg1C,EAAQj+D,KACRA,KAAK22E,UAAUniE,SAASyU,KACxBjpB,KAAK22E,UAAY32E,KAAK22E,UAAUhxE,QAAO,SAAUsxE,GAAS,OAAOA,IAAUhuD,KAC7C,IAA1BjpB,KAAK22E,UAAUlzE,QAC0B,IAAzCzD,KAAK62E,yBAAyBpzE,QAC9BzD,KAAK02E,SAASvxE,SAAQ,SAAUukD,GAC5BA,EAAO2tB,6BAA6BpZ,QAKpDqC,EAAkBp+D,UAAUs1E,eAAiB,WACzCx3E,KAAK62E,yBAAyB1xE,SAAQ,SAAUlD,GAC5CA,EAASu1E,qBAGjBlX,EAAkBp+D,UAAUu1E,iBAAmB,SAAU5tB,EAAM/9C,GAC3D,IAAI4rE,EAAe7tB,EAAKzZ,MAAM,KAC9B,OAAOpwC,KAAK23E,yBAAyBD,EAAc,EAAG5rE,IAE1Dw0D,EAAkBp+D,UAAU01E,0BAA4B,SAAUF,EAActzE,GAC5E,IAAI4iE,EAAoBhnE,KAAK63E,0BAA0BH,EAAatzE,IACpE,OAA0B,OAAtB4iE,EACI5iE,GAASszE,EAAaj0E,OAAS,EACxBujE,EAGAA,EAAkB4Q,0BAA0BF,EAActzE,KAGlE,MAEXk8D,EAAkBp+D,UAAUy1E,yBAA2B,SAAUD,EAActzE,EAAO0H,GAClF,IAAIouD,EAAIC,EAAII,EAAIjyD,EAAIH,EAAIq6D,EAAIC,EAAIqV,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAChE,GAAIl0E,EAAQszE,EAAaj0E,OAAS,EAAG,CACjC,IAAIujE,EAAoBhnE,KAAK63E,0BAA0BH,EAAatzE,IACpE,OAA0B,OAAtB4iE,EACOA,EAAkB2Q,yBAAyBD,EAActzE,EAAQ,EAAG0H,GAGpE,KAGf,IAAImd,EAAW,KACf,OAAQnd,GACJ,KAAKw+D,EAAa/xD,OAEd,GAAiB,QADjB0Q,EAAuH,QAA3GkxC,EAAsC,QAAhCD,EAAKl6D,KAAK+2E,wBAAqC,IAAP7c,OAAgB,EAASA,EAAGv4B,OAAO+1C,EAAatzE,WAA4B,IAAP+1D,EAAgBA,EAAK,MAEhJ,OAAO,IAAIyG,EAAwB33C,EAAUjpB,MAEjD,MACJ,KAAKsqE,EAAah7D,OAEd,GAAiB,QADjB2Z,EAAuH,QAA3G3gB,EAAsC,QAAhCiyD,EAAKv6D,KAAK+2E,wBAAqC,IAAPxc,OAAgB,EAASA,EAAGhyB,OAAOmvC,EAAatzE,WAA4B,IAAPkE,EAAgBA,EAAK,MAEhJ,OAAO,IAAIu4D,EAAwB53C,EAAUjpB,MAEjD,MACJ,KAAKsqE,EAAa9nE,QAEd,GAAiB,QADjBymB,EAAwH,QAA5Gu5C,EAAsC,QAAhCr6D,EAAKnI,KAAK+2E,wBAAqC,IAAP5uE,OAAgB,EAASA,EAAGowE,QAAQb,EAAatzE,WAA4B,IAAPo+D,EAAgBA,EAAK,MAEjJ,OAAO,IAAIhC,EAAyBv3C,EAAUjpB,MAElD,MACJ,KAAKsqE,EAAakO,MAEd,GAAiB,QADjBvvD,EAAsH,QAA1G6uD,EAAsC,QAAhCrV,EAAKziE,KAAK+2E,wBAAqC,IAAPtU,OAAgB,EAASA,EAAG/vD,MAAMglE,EAAatzE,WAA4B,IAAP0zE,EAAgBA,EAAK,MAE/I,OAAO,IAAIrX,EAAuBx3C,EAAUjpB,MAEhD,MACJ,KAAKsqE,EAAa1E,QAEd,GAAiB,QADjB38C,EAAwH,QAA5G+uD,EAAsC,QAAhCD,EAAK/3E,KAAK+2E,wBAAqC,IAAPgB,OAAgB,EAASA,EAAGlR,QAAQ6Q,EAAatzE,WAA4B,IAAP4zE,EAAgBA,EAAK,MAEjJ,OAAO,IAAIlX,EAAyB73C,EAAUjpB,MAElD,MACJ,KAAKsqE,EAAamO,KAEd,GAAiB,QADjBxvD,EAAqH,QAAzGivD,EAAsC,QAAhCD,EAAKj4E,KAAK+2E,wBAAqC,IAAPkB,OAAgB,EAASA,EAAGS,KAAKhB,EAAatzE,WAA4B,IAAP8zE,EAAgBA,EAAK,MAE9I,OAAO,IAAIxX,EAAsBz3C,EAAUjpB,MAE/C,MACJ,KAAKsqE,EAAaqO,KAEd,GAAiB,QADjB1vD,EAAqH,QAAzGmvD,EAAsC,QAAhCD,EAAKn4E,KAAK+2E,wBAAqC,IAAPoB,OAAgB,EAASA,EAAGx0E,KAAK+zE,EAAatzE,WAA4B,IAAPg0E,EAAgBA,EAAK,MAE9I,OAAO,IAAIzX,EAAsB13C,EAAUjpB,MAE/C,MACJ,KAAKsqE,EAAarxB,MAEd,GAAiB,QADjBhwB,EAAsH,QAA1GqvD,EAAsC,QAAhCD,EAAKr4E,KAAK+2E,wBAAqC,IAAPsB,OAAgB,EAASA,EAAG7iC,MAAMkiC,EAAatzE,WAA4B,IAAPk0E,EAAgBA,EAAK,MAE/I,OAAO,IAAI/X,EAA4Bt3C,EAAUjpB,MAI7D,OAAO,MAEXsgE,EAAkBp+D,UAAU21E,0BAA4B,SAAUh3E,GAC9D,IAAIq5D,EACJ,GAAIl6D,KAAK42E,oBAAoBvsD,IAAIxpB,GAC7B,OAAOb,KAAK42E,oBAAoBz1E,IAAIN,GAExC,IAAI+3E,EAA4D,QAAhC1e,EAAKl6D,KAAK+2E,wBAAqC,IAAP7c,OAAgB,EAASA,EAAG4X,UAAUjxE,GAC9G,GAAiC,OAA7B+3E,EAAmC,CACnC,IAAI5R,EAAoB,IAAI1G,EAAkBsY,EAA0B54E,MAGxE,OAFAgnE,EAAkB2O,kCAClB31E,KAAK42E,oBAAoBxvD,IAAIvmB,EAAMmmE,GAC5BA,EAEX,OAAO,MAOX1G,EAAkBp+D,UAAUy/B,OAAS,SAAUkoB,GAE3C,OAD6B7pD,KAAKy3E,iBAAiB5tB,EAAMygB,EAAa/xD,SAQ1E+nD,EAAkBp+D,UAAUqmC,OAAS,SAAUshB,GAE3C,OAD6B7pD,KAAKy3E,iBAAiB5tB,EAAMygB,EAAah7D,SAQ1EgxD,EAAkBp+D,UAAUq2E,QAAU,SAAU1uB,GAE5C,OAD6B7pD,KAAKy3E,iBAAiB5tB,EAAMygB,EAAa9nE,UAQ1E89D,EAAkBp+D,UAAUwQ,MAAQ,SAAUm3C,GAE1C,OAD6B7pD,KAAKy3E,iBAAiB5tB,EAAMygB,EAAakO,QAQ1ElY,EAAkBp+D,UAAU2kE,QAAU,SAAUhd,GAE5C,OAD6B7pD,KAAKy3E,iBAAiB5tB,EAAMygB,EAAa1E,UAQ1EtF,EAAkBp+D,UAAUw2E,KAAO,SAAU7uB,GAEzC,OAD6B7pD,KAAKy3E,iBAAiB5tB,EAAMygB,EAAamO,OAQ1EnY,EAAkBp+D,UAAUyB,KAAO,SAAUkmD,GAEzC,OAD6B7pD,KAAKy3E,iBAAiB5tB,EAAMygB,EAAaqO,OAQ1ErY,EAAkBp+D,UAAUszC,MAAQ,SAAUqU,GAE1C,OAD6B7pD,KAAKy3E,iBAAiB5tB,EAAMygB,EAAarxB,QAQ1EqnB,EAAkBp+D,UAAU4vE,UAAY,SAAUjoB,GAC9C,IAAI6tB,EAAe7tB,EAAKzZ,MAAM,KAC1ByoC,EAA0BnB,EAAaj0E,OAAS,EAC9CzD,KAAK43E,0BAA0BF,EAAa7uE,MAAM,EAAG6uE,EAAaj0E,OAAS,GAAI,GAC/EzD,KACN,OAA+B,MAA3B64E,EACOA,EAAwBhB,0BAA0BH,EAAaA,EAAaj0E,OAAS,IAEzF,MAEX68D,EAAkBp+D,UAAU42E,yBAA2B,SAAUj4E,EAAMU,GACnE,IAAI24D,EACJ,GAA8B,OAA1B34D,EAAM0lE,gBAA0B,CAChC,IAAIzjE,GAA2C,QAAhC02D,EAAKl6D,KAAK+2E,wBAAqC,IAAP7c,OAAgB,EAASA,EAAG6e,iBAAiBl4E,EAAMU,EAAM0lE,oBAC5G,EACJ,GAAIzjE,EAAQ,CACRjC,EAAMo0E,kCACN,IAAIqD,EAAgBh5E,KAAK63E,0BAA0Bh3E,GAC7B,OAAlBm4E,IACAA,EAAc5B,aAAap3E,MACvBA,KAAK22E,UAAUniE,SAASwkE,KACxBh5E,KAAK22E,UAAY32E,KAAK22E,UAAUhxE,QAAO,SAAUsxE,GAAS,OAAOA,IAAU+B,MAE/EA,EAAc5oD,WAElBpwB,KAAK42E,oBAAoBxvD,IAAIvmB,EAAMU,GACnCA,EAAM21E,UAAUl3E,MAEpB,OAAOwD,EAEX,OAAO,GAOX88D,EAAkBp+D,UAAU62E,iBAAmB,SAAUlvB,EAAMtoD,GAC3D,IAAI24D,EACAwd,EAAe7tB,EAAKzZ,MAAM,KAC1B42B,EAAoB0Q,EAAaj0E,OAAS,EACxCzD,KAAK43E,0BAA0BF,EAAa7uE,MAAM,EAAG6uE,EAAaj0E,OAAS,GAAI,GAC/EzD,KACN,OAAkL,QAAzKk6D,EAAK8M,aAA6D,EAASA,EAAkB8R,yBAAyBpB,EAAaA,EAAaj0E,OAAS,GAAIlC,UAA2B,IAAP24D,GAAgBA,GAM9MoG,EAAkBp+D,UAAU+2E,wBAA0B,WAClD,IAAI/e,EACJl6D,KAAK82E,kBAC4B,QAAhC5c,EAAKl6D,KAAK+2E,wBAAqC,IAAP7c,GAAyBA,EAAG+e,2BAMzE3Y,EAAkBp+D,UAAUg3E,wBAA0B,WAClD,IAAIhf,EACJl6D,KAAK82E,kBAC4B,QAAhC5c,EAAKl6D,KAAK+2E,wBAAqC,IAAP7c,GAAyBA,EAAGgf,2BAEzEl4E,OAAOC,eAAeq/D,EAAkBp+D,UAAW,aAAc,CAC7Df,IAAK,WACD,IAAI+4D,EACJ,OAA0C,QAAhCA,EAAKl6D,KAAK+2E,wBAAqC,IAAP7c,OAAgB,EAASA,EAAGqc,gBAAgBzsE,KAAI,SAAUkF,GAAQ,OAAQoyD,EAAS,GAAIpyD,QAAe,IAE5J9N,YAAY,EACZuwD,cAAc,IAElB6O,EAAkBp+D,UAAUyzE,gCAAkC,WAC1D31E,KAAK82E,mBAETxW,EAAkBp+D,UAAUkuB,QAAU,WAClC,IAAI6tC,EAAQj+D,KAEZ,GADAA,KAAK82E,kBACD92E,KAAK82E,iBAAmB,EAAG,CAC3B92E,KAAK+2E,iBAAmB,KACxB/2E,KAAKw3E,iBACLx3E,KAAK62E,yBAA2B,GAChC72E,KAAK42E,oBAAoBzxE,SAAQ,SAAU5D,GACvCA,EAAM6uB,aAEVpwB,KAAK42E,oBAAoBjlE,QACzB,IAAI6K,EAAW2lD,EAAc,GAAIniE,KAAK22E,WAAW,GACjD32E,KAAK22E,UAAUlzE,OAAS,EACxB,IAAI6a,EAAU6jD,EAAc,GAAIniE,KAAK02E,UAAU,GAC/C12E,KAAK02E,SAASjzE,OAAS,EACvB+Y,EAASrX,SAAQ,SAAU8xE,GACvBA,EAAMG,aAAanZ,MAEvB3/C,EAAQnZ,SAAQ,SAAUukD,GACtBA,EAAO2tB,6BAA6BpZ,QAIzCqC,EAxX2B,GA2XlCS,EAAwC,WACxC,SAASA,EAAuB93C,EAAUygC,GACtC1pD,KAAKm5E,UAAY,GACjBn5E,KAAKo5E,wBAA0BnwD,EAC/BjpB,KAAKq5E,iBAAmB3vB,EA8C5B,OA5CAqX,EAAuB7+D,UAAU0qE,GAAK,SAAUl8D,GAGd,IAA1B1Q,KAAKm5E,UAAU11E,QACfzD,KAAKo5E,wBAAwBpC,eAE5Bh3E,KAAKm5E,UAAU3kE,SAAS9D,KACzB1Q,KAAKm5E,UAAUx0E,KAAK+L,GACpB1Q,KAAKq5E,iBAAiB/B,uBAAuBt3E,QAGrD+gE,EAAuB7+D,UAAUqrE,IAAM,SAAU78D,GACxCA,EAID1Q,KAAKm5E,UAAYn5E,KAAKm5E,UAAUxzE,QAAO,SAAU+1C,GAAM,OAAOA,IAAOhrC,KAHrE1Q,KAAKm5E,UAAU11E,OAAS,EAKE,IAA1BzD,KAAKm5E,UAAU11E,QACfzD,KAAKq5E,iBAAiB9B,4BAA4Bv3E,OAG1D+gE,EAAuB7+D,UAAUo3E,uBAAyB,SAAU5oE,KACpEqwD,EAAuB7+D,UAAUmxE,gBAAkB,WAC/C,IAAIpV,EAAQj+D,KACRA,KAAKo5E,wBAAwBG,YAC7Bv5E,KAAKm5E,UAAUh0E,SAAQ,SAAUuL,GAC7ButD,EAAMqb,uBAAuB5oE,OAIzCqwD,EAAuB7+D,UAAU80E,aAAe,WAC5Ch3E,KAAKo5E,wBAAwBpC,gBAEjCjW,EAAuB7+D,UAAUs1E,eAAiB,WAC9Cx3E,KAAKm5E,UAAU11E,OAAS,GAE5BzC,OAAOC,eAAe8/D,EAAuB7+D,UAAW,OAAQ,CAC5Df,IAAK,WACD,OAAOnB,KAAKo5E,wBAAwBv4E,MAExCK,YAAY,EACZuwD,cAAc,IAEXsP,EAlDgC,GAqDvCF,EAAyC,SAAU7C,GAEnD,SAAS6C,EAAwB53C,EAAUygC,GACvC,OAAOsU,EAAOv9D,KAAKT,KAAMipB,EAAUygC,IAAW1pD,KAelD,OAjBA29D,EAAUkD,EAAyB7C,GAInCh9D,OAAOC,eAAe4/D,EAAwB3+D,UAAW,QAAS,CAC9Df,IAAK,WACD,OAAOnB,KAAKo5E,wBAAwB73E,OAExC6lB,IAAK,SAAUrb,GACX/L,KAAKo5E,wBAAwB73E,MAAQwK,GAEzC7K,YAAY,EACZuwD,cAAc,IAElBoP,EAAwB3+D,UAAUo3E,uBAAyB,SAAU5oE,GACjEA,EAAS1Q,KAAKuB,QAEXs/D,EAlBiC,CAmB1CE,GAEEH,EAAyC,SAAU5C,GAEnD,SAAS4C,EAAwB33C,EAAUygC,GACvC,OAAOsU,EAAOv9D,KAAKT,KAAMipB,EAAUygC,IAAW1pD,KAelD,OAjBA29D,EAAUiD,EAAyB5C,GAInCh9D,OAAOC,eAAe2/D,EAAwB1+D,UAAW,QAAS,CAC9Df,IAAK,WACD,OAAOnB,KAAKo5E,wBAAwB73E,OAExC6lB,IAAK,SAAUrb,GACX/L,KAAKo5E,wBAAwB73E,MAAQwK,GAEzC7K,YAAY,EACZuwD,cAAc,IAElBmP,EAAwB1+D,UAAUo3E,uBAAyB,SAAU5oE,GACjEA,EAAS1Q,KAAKuB,QAEXq/D,EAlBiC,CAmB1CG,GAEEP,EAA0C,SAAUxC,GAEpD,SAASwC,EAAyBv3C,EAAUygC,GACxC,OAAOsU,EAAOv9D,KAAKT,KAAMipB,EAAUygC,IAAW1pD,KAelD,OAjBA29D,EAAU6C,EAA0BxC,GAIpCh9D,OAAOC,eAAeu/D,EAAyBt+D,UAAW,QAAS,CAC/Df,IAAK,WACD,OAAOnB,KAAKo5E,wBAAwB73E,OAExC6lB,IAAK,SAAUrb,GACX/L,KAAKo5E,wBAAwB73E,MAAQwK,GAEzC7K,YAAY,EACZuwD,cAAc,IAElB+O,EAAyBt+D,UAAUo3E,uBAAyB,SAAU5oE,GAClEA,EAAS1Q,KAAKuB,QAEXi/D,EAlBkC,CAmB3CO,GAEED,EAA0C,SAAU9C,GAEpD,SAAS8C,EAAyB73C,EAAUygC,GACxC,OAAOsU,EAAOv9D,KAAKT,KAAMipB,EAAUygC,IAAW1pD,KAQlD,OAVA29D,EAAUmD,EAA0B9C,GAIpC8C,EAAyB5+D,UAAU2kE,QAAU,WACzC,OAAO7mE,KAAKo5E,wBAAwBvS,WAExC/F,EAAyB5+D,UAAUo3E,uBAAyB,SAAU5oE,GAClEA,KAEGowD,EAXkC,CAY3CC,GAEEL,EAAuC,SAAU1C,GAEjD,SAAS0C,EAAsBz3C,EAAUygC,GACrC,OAAOsU,EAAOv9D,KAAKT,KAAMipB,EAAUygC,IAAW1pD,KAiClD,OAnCA29D,EAAU+C,EAAuB1C,GAIjCh9D,OAAOC,eAAey/D,EAAsBx+D,UAAW,QAAS,CAC5Df,IAAK,WACD,OAAOnB,KAAKo5E,wBAAwB73E,OAExC6lB,IAAK,SAAUrb,GACX/L,KAAKo5E,wBAAwB73E,MAAQwK,GAEzC7K,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAey/D,EAAsBx+D,UAAW,aAAc,CACjEf,IAAK,WACD,OAAOnB,KAAKo5E,wBACPI,YAETpyD,IAAK,SAAUrb,GACX/L,KAAKo5E,wBAAwBI,WAAaztE,GAE9C7K,YAAY,EACZuwD,cAAc,IAElBzwD,OAAOC,eAAey/D,EAAsBx+D,UAAW,SAAU,CAC7Df,IAAK,WACD,OAAOnB,KAAKo5E,wBAAwB7kE,QAExCrT,YAAY,EACZuwD,cAAc,IAElBiP,EAAsBx+D,UAAUo3E,uBAAyB,SAAU5oE,GAC/DA,EAAS1Q,KAAKuB,QAEXm/D,EApC+B,CAqCxCK,GAEEJ,EAAuC,SAAU3C,GAEjD,SAAS2C,EAAsB13C,EAAUygC,GACrC,OAAOsU,EAAOv9D,KAAKT,KAAMipB,EAAUygC,IAAW1pD,KA+ClD,OAjDA29D,EAAUgD,EAAuB3C,GAIjCh9D,OAAOC,eAAe0/D,EAAsBz+D,UAAW,SAAU,CAC7Df,IAAK,WACD,OAAOnB,KAAKo5E,wBAAwBzmE,MAExCzR,YAAY,EACZuwD,cAAc,IAElBkP,EAAsBz+D,UAAUu3E,YAAc,SAAUxwD,GACpB,MAA5BA,EAASg+C,kBACTjnE,KAAKo5E,wBAAwBK,YAAYxwD,EAASg+C,iBAClDh+C,EAASiuD,UAAUl3E,KAAKq5E,oBAGhC1Y,EAAsBz+D,UAAUw3E,cAAgB,SAAUzwD,EAAU7kB,GAChE,QAAgC,MAA5B6kB,EAASg+C,kBACLjnE,KAAKo5E,wBAAwBM,cAAczwD,EAASg+C,gBAAiB7iE,KACrE6kB,EAASiuD,UAAUl3E,KAAKq5E,kBACjB,KAKnB1Y,EAAsBz+D,UAAUy3E,eAAiB,SAAU1wD,GACvB,MAA5BA,EAASg+C,kBACTjnE,KAAKo5E,wBAAwBO,eAAe1wD,EAASg+C,iBACrDh+C,EAASmuD,aAAap3E,KAAKq5E,oBAGnC1Y,EAAsBz+D,UAAU03E,iBAAmB,SAAUx1E,GACzDpE,KAAKo5E,wBAAwBQ,iBAAiBx1E,IAElDu8D,EAAsBz+D,UAAU23E,WAAa,SAAUz1E,GACnD,IAAI6iE,EAAkBjnE,KAAKo5E,wBAAwBS,WAAWz1E,GAC9D,OAAuB,MAAnB6iE,EACwB,IAAI3G,EAAkB2G,EAAiBjnE,KAAKq5E,kBAGjE,MAEX1Y,EAAsBz+D,UAAU43E,KAAO,SAAU7rE,EAAGC,GAChDlO,KAAKo5E,wBAAwBU,KAAK7rE,EAAGC,IAEzCyyD,EAAsBz+D,UAAUo3E,uBAAyB,SAAU5oE,GAC/DA,KAEGiwD,EAlD+B,CAmDxCI,GAEEN,EAAwC,SAAUzC,GAElD,SAASyC,EAAuBx3C,EAAUygC,GACtC,OAAOsU,EAAOv9D,KAAKT,KAAMipB,EAAUygC,IAAW1pD,KAgClD,OAlCA29D,EAAU8C,EAAwBzC,GAIlCh9D,OAAOC,eAAew/D,EAAuBv+D,UAAW,QAAS,CAC7Df,IAAK,WACD,OAAOnB,KAAKo5E,wBAAwB73E,OAExC6lB,IAAK,SAAUrb,GACX/L,KAAKo5E,wBAAwB73E,MAAQwK,GAEzC7K,YAAY,EACZuwD,cAAc,IAElBgP,EAAuBv+D,UAAU63E,IAAM,SAAU34E,EAAGssC,EAAGx/B,GACnDlO,KAAKo5E,wBAAwBW,IAAI34E,EAAGssC,EAAGx/B,IAE3CuyD,EAAuBv+D,UAAU83E,KAAO,SAAU54E,EAAGssC,EAAGx/B,EAAGD,GACvDjO,KAAKo5E,wBAAwBa,KAAKhsE,EAAG7M,EAAGssC,EAAGx/B,IAE/CuyD,EAAuBv+D,UAAU+3E,KAAO,SAAUhsE,EAAG7M,EAAGssC,EAAGx/B,GACvDlO,KAAKo5E,wBAAwBa,KAAKhsE,EAAG7M,EAAGssC,EAAGx/B,IAG/CuyD,EAAuBv+D,UAAUquC,MAAQ,SAAUtiC,GAC/CjO,KAAKo5E,wBAAwB7oC,MAAMtiC,IAGvCwyD,EAAuBv+D,UAAUg4E,QAAU,SAAUn5E,GACjDf,KAAKo5E,wBAAwB7oC,MAAMx6B,KAAK8kC,MAAoC,IAA9B9kC,KAAKC,IAAI,EAAGD,KAAKE,IAAI,EAAGlV,OAE1E0/D,EAAuBv+D,UAAUo3E,uBAAyB,SAAU5oE,GAChEA,EAAS1Q,KAAKuB,QAEXk/D,EAnCgC,CAoCzCM,GAEER,EAA6C,SAAUvC,GAEvD,SAASuC,EAA4Bt3C,EAAUxpB,GAC3C,OAAOu+D,EAAOv9D,KAAKT,KAAMipB,EAAUxpB,IAASO,KAahD,OAfA29D,EAAU4C,EAA6BvC,GAIvCh9D,OAAOC,eAAes/D,EAA4Br+D,UAAW,QAAS,CAClEklB,IAAK,SAAUouB,GACX,IAAI0kB,EACJl6D,KAAKo5E,wBAAwB73E,MAAiF,QAA1E24D,EAAK1kB,aAAqC,EAASA,EAAMypB,mBAAgC,IAAP/E,EAAgBA,EAAK,OAE/Ih5D,YAAY,EACZuwD,cAAc,IAElB8O,EAA4Br+D,UAAUo3E,uBAAyB,SAAU5oE,GACrEA,KAEG6vD,EAhBqC,CAiB9CQ,GAGEmM,EAAe,SAAUzqC,GAAO,OAAO4+B,OAAU,OAAQ,OAAQ,GAAQ,WACzE,IAAI8Y,EACJ,OAAOxY,EAAY3hE,MAAM,SAAUk6D,GAC/B,OAAQA,EAAG0H,OACP,KAAK,EAED,OADAuY,EAAM,IAAIC,QAAQ33C,GACX,CAAC,EAAa2gB,MAAM+2B,IAC/B,KAAK,EAED,MAAO,CAAC,EADFjgB,EAAG2H,OACgBre,eAC7B,KAAK,EAED,MAAO,CAAC,EADC0W,EAAG2H,gBAUxB0F,EAAmB,SAAUljE,GAC7B,MAAmB,iBAARA,EACA,CAACA,GAEHA,aAAeyD,MACbzD,EAGJ,IAKPg8D,EAAU,CACV0J,aAAcA,EACdI,iBAAkBA,GAUlBx7B,EAAc,SAAU+vB,GAAS,OAAO2C,OAAU,OAAQ,OAAQ,GAAQ,WAC1E,IAAoB7b,EAAO60B,EAC3B,OAAO1Y,EAAY3hE,MAAM,SAAUk6D,GAC/B,OAAQA,EAAG0H,OACP,KAAK,EAMD,MAAO,CAAC,EALS,IAAI/8C,SAAQ,SAAUC,GACnC,OAAOo7C,EAAc50C,aAAY,SAAU8uC,GACvCA,EAAKzrB,YAAY+vB,EAAO55C,UAIpC,KAAK,EAID,OAHA0gC,EAAQ0U,EAAG2H,OACXwY,EAAe,IAAIlZ,EAAoC/H,aAAa5T,GACpE2b,EAAoCrH,qBAAqBlO,SAASyuB,EAAc70B,GACzE,CAAC,EAAc60B,WAUlCp7B,EAAc,SAAUyf,GAAS,OAAO2C,OAAU,OAAQ,OAAQ,GAAQ,WAC1E,IAAoB7rB,EAAO8kC,EAC3B,OAAO3Y,EAAY3hE,MAAM,SAAUk6D,GAC/B,OAAQA,EAAG0H,OACP,KAAK,EAMD,MAAO,CAAC,EALS,IAAI/8C,SAAQ,SAAUC,GACnC,OAAOo7C,EAAc50C,aAAY,SAAU8uC,GACvCA,EAAKnb,YAAYyf,EAAO55C,UAIpC,KAAK,EAID,OAHA0wB,EAAQ0kB,EAAG2H,OACXyY,EAAe,IAAInZ,EAAoCtH,aAAarkB,GACpE2rB,EAAoCrH,qBAAqBlO,SAAS0uB,EAAc9kC,GACzE,CAAC,EAAc8kC,WAUlC1rC,EAAa,SAAU8vB,GAAS,OAAO2C,OAAU,OAAQ,OAAQ,GAAQ,WACzE,IAAoBjvD,EAAMmoE,EAC1B,OAAO5Y,EAAY3hE,MAAM,SAAUk6D,GAC/B,OAAQA,EAAG0H,OACP,KAAK,EAMD,MAAO,CAAC,EALS,IAAI/8C,SAAQ,SAAUC,GACnC,OAAOo7C,EAAc50C,aAAY,SAAU8uC,GACvCA,EAAKxrB,WAAW8vB,EAAO55C,UAInC,KAAK,EAID,OAHA1S,EAAO8nD,EAAG2H,OACV0Y,EAAc,IAAIpZ,EAAoCxH,YAAYvnD,GAClE+uD,EAAoCrH,qBAAqBlO,SAAS2uB,EAAanoE,GACxE,CAAC,EAAcmoE,YAtmHtC,GA8mHiBrtC,GA/lPD,GARdttC,EAAOD,QAAUD,K,gBCFnBE,EAAOD,QAAU,EAAQ,K,6BCSzB,IAAI66E,EAAuB,EAAQ,IAEnC,SAASC,KACT,SAASC,KACTA,EAAuBC,kBAAoBF,EAE3C76E,EAAOD,QAAU,WACf,SAASi7E,EAAKlsE,EAAOmsE,EAAUC,EAAe3tD,EAAU4tD,EAAcC,GACpE,GAAIA,IAAWR,EAAf,CAIA,IAAI/xE,EAAM,IAAInD,MACZ,mLAKF,MADAmD,EAAI5H,KAAO,sBACL4H,GAGR,SAASwyE,IACP,OAAOL,EAFTA,EAAKM,WAAaN,EAMlB,IAAIO,EAAiB,CACnBnnE,MAAO4mE,EACPQ,OAAQR,EACRlU,KAAMkU,EACNxnE,KAAMwnE,EACNj5C,OAAQi5C,EACR54E,OAAQ44E,EACRryC,OAAQqyC,EACRS,OAAQT,EAERU,IAAKV,EACLW,QAASN,EACTzO,QAASoO,EACTY,YAAaZ,EACba,WAAYR,EACZrrE,KAAMgrE,EACNc,SAAUT,EACVU,MAAOV,EACPW,UAAWX,EACXY,MAAOZ,EACPa,MAAOb,EAEPc,eAAgBrB,EAChBC,kBAAmBF,GAKrB,OAFAU,EAAet9C,UAAYs9C,EAEpBA,I,6BCpDTv7E,EAAOD,QAFoB,gD,6BCP3B,IAAI4hC,EAAQ,EAAQ,GAChBz/B,EAAO,EAAQ,IACfk6E,EAAQ,EAAQ,IAChBC,EAAc,EAAQ,IA4B1B,IAAI93D,EAnBJ,SAAS+3D,EAAeC,GACtB,IAAIC,EAAU,IAAIJ,EAAMG,GACpBlzD,EAAWnnB,EAAKk6E,EAAM95E,UAAUqnB,QAAS6yD,GAa7C,OAVA76C,EAAMvzB,OAAOib,EAAU+yD,EAAM95E,UAAWk6E,GAGxC76C,EAAMvzB,OAAOib,EAAUmzD,GAGvBnzD,EAASrnB,OAAS,SAAgBy6E,GAChC,OAAOH,EAAeD,EAAYE,EAAeE,KAG5CpzD,EAIGizD,CA3BG,EAAQ,KA8BvB/3D,EAAM63D,MAAQA,EAGd73D,EAAM+d,cAAgB,EAAQ,IAC9B/d,EAAMm4D,YAAc,EAAQ,IAC5Bn4D,EAAMo4D,SAAW,EAAQ,IACzBp4D,EAAMq4D,QAAU,EAAQ,IAAc52D,QACtCzB,EAAMqhB,WAAa,EAAQ,IAG3BrhB,EAAMqd,WAAa,EAAQ,IAG3Brd,EAAMs4D,OAASt4D,EAAM+d,cAGrB/d,EAAMxhB,IAAM,SAAa+5E,GACvB,OAAO73D,QAAQliB,IAAI+5E,IAErBv4D,EAAMw4D,OAAS,EAAQ,IAGvBx4D,EAAMy4D,aAAe,EAAQ,IAE7Bh9E,EAAOD,QAAUwkB,EAGjBvkB,EAAOD,QAAQg/B,QAAUxa,G,6BC7DzB,IAAIod,EAAQ,EAAQ,GAChBmI,EAAW,EAAQ,IACnBmzC,EAAqB,EAAQ,IAC7BC,EAAkB,EAAQ,IAC1Bb,EAAc,EAAQ,IACtBtyC,EAAgB,EAAQ,IACxBozC,EAAY,EAAQ,IAEpBC,EAAaD,EAAUC,WAM3B,SAAShB,EAAMK,GACbr8E,KAAKulB,SAAW82D,EAChBr8E,KAAKi9E,aAAe,CAClB1zD,QAAS,IAAIszD,EACbj8D,SAAU,IAAIi8D,GASlBb,EAAM95E,UAAUqnB,QAAU,SAAiB2zD,EAAaz7C,GAG3B,iBAAhBy7C,GACTz7C,EAASA,GAAU,IACZlT,IAAM2uD,EAEbz7C,EAASy7C,GAAe,IAG1Bz7C,EAASw6C,EAAYj8E,KAAKulB,SAAUkc,IAGzBjY,OACTiY,EAAOjY,OAASiY,EAAOjY,OAAO5d,cACrB5L,KAAKulB,SAASiE,OACvBiY,EAAOjY,OAASxpB,KAAKulB,SAASiE,OAAO5d,cAErC61B,EAAOjY,OAAS,MAGlB,IAAIoc,EAAenE,EAAOmE,kBAELr2B,IAAjBq2B,GACFm3C,EAAUI,cAAcv3C,EAAc,CACpCa,kBAAmBu2C,EAAWp3C,aAAao3C,EAAWzE,SACtD7xC,kBAAmBs2C,EAAWp3C,aAAao3C,EAAWzE,SACtDzvC,oBAAqBk0C,EAAWp3C,aAAao3C,EAAWzE,WACvD,GAIL,IAAI6E,EAA0B,GAC1BC,GAAiC,EACrCr9E,KAAKi9E,aAAa1zD,QAAQpkB,SAAQ,SAAoCm4E,GACjC,mBAAxBA,EAAYC,UAA0D,IAAhCD,EAAYC,QAAQ97C,KAIrE47C,EAAiCA,GAAkCC,EAAYE,YAE/EJ,EAAwBz6B,QAAQ26B,EAAY9b,UAAW8b,EAAY5b,cAGrE,IAKI+b,EALAC,EAA2B,GAO/B,GANA19E,KAAKi9E,aAAar8D,SAASzb,SAAQ,SAAkCm4E,GACnEI,EAAyB/4E,KAAK24E,EAAY9b,UAAW8b,EAAY5b,cAK9D2b,EAAgC,CACnC,IAAIM,EAAQ,CAACb,OAAiBvtE,GAM9B,IAJAzH,MAAM5F,UAAUygD,QAAQ9uC,MAAM8pE,EAAOP,GACrCO,EAAQA,EAAMx5E,OAAOu5E,GAErBD,EAAU54D,QAAQC,QAAQ2c,GACnBk8C,EAAMl6E,QACXg6E,EAAUA,EAAQn6B,KAAKq6B,EAAM52D,QAAS42D,EAAM52D,SAG9C,OAAO02D,EAKT,IADA,IAAIG,EAAYn8C,EACT27C,EAAwB35E,QAAQ,CACrC,IAAIo6E,EAAcT,EAAwBr2D,QACtC+2D,EAAaV,EAAwBr2D,QACzC,IACE62D,EAAYC,EAAYD,GACxB,MAAO99D,GACPg+D,EAAWh+D,GACX,OAIJ,IACE29D,EAAUX,EAAgBc,GAC1B,MAAO99D,GACP,OAAO+E,QAAQklB,OAAOjqB,GAGxB,KAAO49D,EAAyBj6E,QAC9Bg6E,EAAUA,EAAQn6B,KAAKo6B,EAAyB32D,QAAS22D,EAAyB32D,SAGpF,OAAO02D,GAGTzB,EAAM95E,UAAU67E,OAAS,SAAgBt8C,GACvCA,EAASw6C,EAAYj8E,KAAKulB,SAAUkc,GACpC,IAAI+I,EAAWb,EAAclI,EAAO5d,QAAS4d,EAAOlT,KACpD,OAAOmb,EAASc,EAAU/I,EAAOxc,OAAQwc,EAAOgH,mBAIlDlH,EAAMp8B,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6BqkB,GAE/EwyD,EAAM95E,UAAUsnB,GAAU,SAAS+E,EAAKkT,GACtC,OAAOzhC,KAAKupB,QAAQ0yD,EAAYx6C,GAAU,GAAI,CAC5CjY,OAAQA,EACR+E,IAAKA,EACL7kB,MAAO+3B,GAAU,IAAI/3B,YAK3B63B,EAAMp8B,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BqkB,GAGrE,SAASw0D,EAAmBC,GAC1B,OAAO,SAAoB1vD,EAAK7kB,EAAM+3B,GACpC,OAAOzhC,KAAKupB,QAAQ0yD,EAAYx6C,GAAU,GAAI,CAC5CjY,OAAQA,EACRpF,QAAS65D,EAAS,CAChB,eAAgB,uBACd,GACJ1vD,IAAKA,EACL7kB,KAAMA,MAKZsyE,EAAM95E,UAAUsnB,GAAUw0D,IAE1BhC,EAAM95E,UAAUsnB,EAAS,QAAUw0D,GAAmB,MAGxDp+E,EAAOD,QAAUq8E,G,6BC7JjB,IAAIz6C,EAAQ,EAAQ,GAEpB,SAASs7C,IACP78E,KAAKk+E,SAAW,GAWlBrB,EAAmB36E,UAAUi8E,IAAM,SAAa3c,EAAWE,EAAU99D,GAOnE,OANA5D,KAAKk+E,SAASv5E,KAAK,CACjB68D,UAAWA,EACXE,SAAUA,EACV8b,cAAa55E,GAAUA,EAAQ45E,YAC/BD,QAAS35E,EAAUA,EAAQ25E,QAAU,OAEhCv9E,KAAKk+E,SAASz6E,OAAS,GAQhCo5E,EAAmB36E,UAAUk8E,MAAQ,SAAep6E,GAC9ChE,KAAKk+E,SAASl6E,KAChBhE,KAAKk+E,SAASl6E,GAAM,OAYxB64E,EAAmB36E,UAAUiD,QAAU,SAAiBwH,GACtD40B,EAAMp8B,QAAQnF,KAAKk+E,UAAU,SAAwBp6B,GACzC,OAANA,GACFn3C,EAAGm3C,OAKTlkD,EAAOD,QAAUk9E,G,6BCnDjB,IAAIt7C,EAAQ,EAAQ,GAChB88C,EAAgB,EAAQ,IACxB9B,EAAW,EAAQ,IACnBh3D,EAAW,EAAQ,IACnB2c,EAAgB,EAAQ,IAK5B,SAASo8C,EAA6B78C,GAKpC,GAJIA,EAAOyI,aACTzI,EAAOyI,YAAYq0C,mBAGjB98C,EAAOhX,QAAUgX,EAAOhX,OAAOC,QACjC,MAAM,IAAIwX,EAUdtiC,EAAOD,QAAU,SAAyB8hC,GA8BxC,OA7BA68C,EAA6B78C,GAG7BA,EAAOrd,QAAUqd,EAAOrd,SAAW,GAGnCqd,EAAO/3B,KAAO20E,EAAc59E,KAC1BghC,EACAA,EAAO/3B,KACP+3B,EAAOrd,QACPqd,EAAOsE,kBAITtE,EAAOrd,QAAUmd,EAAM1zB,MACrB4zB,EAAOrd,QAAQoB,QAAU,GACzBic,EAAOrd,QAAQqd,EAAOjY,SAAW,GACjCiY,EAAOrd,SAGTmd,EAAMp8B,QACJ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WAClD,SAA2BqkB,UAClBiY,EAAOrd,QAAQoF,OAIZiY,EAAOkE,SAAWpgB,EAASogB,SAE1BlE,GAAQ6hB,MAAK,SAA6B1iC,GAWvD,OAVA09D,EAA6B78C,GAG7B7gB,EAASlX,KAAO20E,EAAc59E,KAC5BghC,EACA7gB,EAASlX,KACTkX,EAASwD,QACTqd,EAAO+E,mBAGF5lB,KACN,SAA4B49D,GAe7B,OAdKjC,EAASiC,KACZF,EAA6B78C,GAGzB+8C,GAAUA,EAAO59D,WACnB49D,EAAO59D,SAASlX,KAAO20E,EAAc59E,KACnCghC,EACA+8C,EAAO59D,SAASlX,KAChB80E,EAAO59D,SAASwD,QAChBqd,EAAO+E,qBAKN3hB,QAAQklB,OAAOy0C,Q,6BClF1B,IAAIj9C,EAAQ,EAAQ,GAChBhc,EAAW,EAAQ,IAUvB3lB,EAAOD,QAAU,SAAuB+J,EAAM0a,EAASq6D,GACrD,IAAIrC,EAAUp8E,MAAQulB,EAMtB,OAJAgc,EAAMp8B,QAAQs5E,GAAK,SAAmB9xE,GACpCjD,EAAOiD,EAAGlM,KAAK27E,EAAS1yE,EAAM0a,MAGzB1a,I,cCnBT,IAOIg1E,EACAC,EARA74C,EAAUlmC,EAAOD,QAAU,GAU/B,SAASi/E,IACL,MAAM,IAAIt5E,MAAM,mCAEpB,SAASu5E,IACL,MAAM,IAAIv5E,MAAM,qCAsBpB,SAASw5E,EAAWC,GAChB,GAAIL,IAAqB5qE,WAErB,OAAOA,WAAWirE,EAAK,GAG3B,IAAKL,IAAqBE,IAAqBF,IAAqB5qE,WAEhE,OADA4qE,EAAmB5qE,WACZA,WAAWirE,EAAK,GAE3B,IAEI,OAAOL,EAAiBK,EAAK,GAC/B,MAAM37E,GACJ,IAEI,OAAOs7E,EAAiBj+E,KAAK,KAAMs+E,EAAK,GAC1C,MAAM37E,GAEJ,OAAOs7E,EAAiBj+E,KAAKT,KAAM++E,EAAK,MAvCnD,WACG,IAEQL,EADsB,mBAAf5qE,WACYA,WAEA8qE,EAEzB,MAAOx7E,GACLs7E,EAAmBE,EAEvB,IAEQD,EADwB,mBAAjB/qE,aACcA,aAEAirE,EAE3B,MAAOz7E,GACLu7E,EAAqBE,GAjB7B,GAwEA,IAEIxjD,EAFAK,EAAQ,GACRsjD,GAAW,EAEXC,GAAc,EAElB,SAASC,IACAF,GAAa3jD,IAGlB2jD,GAAW,EACP3jD,EAAa53B,OACbi4B,EAAQL,EAAal3B,OAAOu3B,GAE5BujD,GAAc,EAEdvjD,EAAMj4B,QACN07E,KAIR,SAASA,IACL,IAAIH,EAAJ,CAGA,IAAI1rE,EAAUwrE,EAAWI,GACzBF,GAAW,EAGX,IADA,IAAI51E,EAAMsyB,EAAMj4B,OACV2F,GAAK,CAGP,IAFAiyB,EAAeK,EACfA,EAAQ,KACCujD,EAAa71E,GACdiyB,GACAA,EAAa4jD,GAAYjK,MAGjCiK,GAAc,EACd71E,EAAMsyB,EAAMj4B,OAEhB43B,EAAe,KACf2jD,GAAW,EAnEf,SAAyBI,GACrB,GAAIT,IAAuB/qE,aAEvB,OAAOA,aAAawrE,GAGxB,IAAKT,IAAuBE,IAAwBF,IAAuB/qE,aAEvE,OADA+qE,EAAqB/qE,aACdA,aAAawrE,GAExB,IAEWT,EAAmBS,GAC5B,MAAOh8E,GACL,IAEI,OAAOu7E,EAAmBl+E,KAAK,KAAM2+E,GACvC,MAAOh8E,GAGL,OAAOu7E,EAAmBl+E,KAAKT,KAAMo/E,KAgD7CC,CAAgB/rE,IAiBpB,SAASgsE,EAAKP,EAAK/qE,GACfhU,KAAK++E,IAAMA,EACX/+E,KAAKgU,MAAQA,EAYjB,SAASozB,KA5BTtB,EAAQy5C,SAAW,SAAUR,GACzB,IAAIvrE,EAAO,IAAI1L,MAAMiG,UAAUtK,OAAS,GACxC,GAAIsK,UAAUtK,OAAS,EACnB,IAAK,IAAInD,EAAI,EAAGA,EAAIyN,UAAUtK,OAAQnD,IAClCkT,EAAKlT,EAAI,GAAKyN,UAAUzN,GAGhCo7B,EAAM/2B,KAAK,IAAI26E,EAAKP,EAAKvrE,IACJ,IAAjBkoB,EAAMj4B,QAAiBu7E,GACvBF,EAAWK,IASnBG,EAAKp9E,UAAU8yE,IAAM,WACjBh1E,KAAK++E,IAAIlrE,MAAM,KAAM7T,KAAKgU,QAE9B8xB,EAAQ/iB,MAAQ,UAChB+iB,EAAQ05C,SAAU,EAClB15C,EAAQK,IAAM,GACdL,EAAQ25C,KAAO,GACf35C,EAAQlgB,QAAU,GAClBkgB,EAAQ45C,SAAW,GAInB55C,EAAQ8mC,GAAKxlC,EACbtB,EAAQ65C,YAAcv4C,EACtBtB,EAAQwlC,KAAOlkC,EACftB,EAAQynC,IAAMnmC,EACdtB,EAAQ85C,eAAiBx4C,EACzBtB,EAAQ+5C,mBAAqBz4C,EAC7BtB,EAAQg6C,KAAO14C,EACftB,EAAQi6C,gBAAkB34C,EAC1BtB,EAAQk6C,oBAAsB54C,EAE9BtB,EAAQ16B,UAAY,SAAUvK,GAAQ,MAAO,IAE7CilC,EAAQm6C,QAAU,SAAUp/E,GACxB,MAAM,IAAIyE,MAAM,qCAGpBwgC,EAAQo6C,IAAM,WAAc,MAAO,KACnCp6C,EAAQq6C,MAAQ,SAAUz3B,GACtB,MAAM,IAAIpjD,MAAM,mCAEpBwgC,EAAQs6C,MAAQ,WAAa,OAAO,I,6BCrLpC,IAAI7+C,EAAQ,EAAQ,GAEpB3hC,EAAOD,QAAU,SAA6BykB,EAASi8D,GACrD9+C,EAAMp8B,QAAQif,GAAS,SAAuB7iB,EAAOV,GAC/CA,IAASw/E,GAAkBx/E,EAAKkqC,gBAAkBs1C,EAAet1C,gBACnE3mB,EAAQi8D,GAAkB9+E,SACnB6iB,EAAQvjB,S,8BCRrB;;;;;;;AAUA,IAAI4I,EAAS,EAAQ,IACjB62E,EAAU,EAAQ,IAClBv4E,EAAU,EAAQ,IAmDtB,SAASw4E,IACP,OAAOr3C,EAAOs3C,oBACV,WACA,WAGN,SAAS7tC,EAAc8tC,EAAMh9E,GAC3B,GAAI88E,IAAe98E,EACjB,MAAM,IAAIi9E,WAAW,8BAcvB,OAZIx3C,EAAOs3C,qBAETC,EAAO,IAAI3zE,WAAWrJ,IACjBo6D,UAAY30B,EAAOhnC,WAGX,OAATu+E,IACFA,EAAO,IAAIv3C,EAAOzlC,IAEpBg9E,EAAKh9E,OAASA,GAGTg9E,EAaT,SAASv3C,EAAQy3C,EAAKC,EAAkBn9E,GACtC,KAAKylC,EAAOs3C,qBAAyBxgF,gBAAgBkpC,GACnD,OAAO,IAAIA,EAAOy3C,EAAKC,EAAkBn9E,GAI3C,GAAmB,iBAARk9E,EAAkB,CAC3B,GAAgC,iBAArBC,EACT,MAAM,IAAIt7E,MACR,qEAGJ,OAAOu7E,EAAY7gF,KAAM2gF,GAE3B,OAAO53E,EAAK/I,KAAM2gF,EAAKC,EAAkBn9E,GAW3C,SAASsF,EAAM03E,EAAMl/E,EAAOq/E,EAAkBn9E,GAC5C,GAAqB,iBAAVlC,EACT,MAAM,IAAI2H,UAAU,yCAGtB,MAA2B,oBAAhBiE,aAA+B5L,aAAiB4L,YA6H7D,SAA0BszE,EAAMzsE,EAAO21C,EAAYlmD,GAGjD,GAFAuQ,EAAMu7C,WAEF5F,EAAa,GAAK31C,EAAMu7C,WAAa5F,EACvC,MAAM,IAAI+2B,WAAW,6BAGvB,GAAI1sE,EAAMu7C,WAAa5F,GAAclmD,GAAU,GAC7C,MAAM,IAAIi9E,WAAW,6BAIrB1sE,OADiBzE,IAAfo6C,QAAuCp6C,IAAX9L,EACtB,IAAIqJ,WAAWkH,QACHzE,IAAX9L,EACD,IAAIqJ,WAAWkH,EAAO21C,GAEtB,IAAI78C,WAAWkH,EAAO21C,EAAYlmD,GAGxCylC,EAAOs3C,qBAETC,EAAOzsE,GACF6pD,UAAY30B,EAAOhnC,UAGxBu+E,EAAOK,EAAcL,EAAMzsE,GAE7B,OAAOysE,EAvJEM,CAAgBN,EAAMl/E,EAAOq/E,EAAkBn9E,GAGnC,iBAAVlC,EAwFb,SAAqBk/E,EAAMl4C,EAAQy4C,GACT,iBAAbA,GAAsC,KAAbA,IAClCA,EAAW,QAGb,IAAK93C,EAAO+3C,WAAWD,GACrB,MAAM,IAAI93E,UAAU,8CAGtB,IAAIzF,EAAwC,EAA/B8rD,EAAWhnB,EAAQy4C,GAG5BE,GAFJT,EAAO9tC,EAAa8tC,EAAMh9E,IAERikD,MAAMnf,EAAQy4C,GAE5BE,IAAWz9E,IAIbg9E,EAAOA,EAAK53E,MAAM,EAAGq4E,IAGvB,OAAOT,EA5GEU,CAAWV,EAAMl/E,EAAOq/E,GAsJnC,SAAqBH,EAAMp8E,GACzB,GAAI6kC,EAAOn8B,SAAS1I,GAAM,CACxB,IAAI+E,EAA4B,EAAtBg4E,EAAQ/8E,EAAIZ,QAGtB,OAAoB,KAFpBg9E,EAAO9tC,EAAa8tC,EAAMr3E,IAEjB3F,QAITY,EAAIg9E,KAAKZ,EAAM,EAAG,EAAGr3E,GAHZq3E,EAOX,GAAIp8E,EAAK,CACP,GAA4B,oBAAhB8I,aACR9I,EAAIgJ,kBAAkBF,aAAgB,WAAY9I,EACpD,MAA0B,iBAAfA,EAAIZ,SA+8CLsI,EA/8CkC1H,EAAIZ,SAg9CrCsI,EA/8CF4mC,EAAa8tC,EAAM,GAErBK,EAAcL,EAAMp8E,GAG7B,GAAiB,WAAbA,EAAIyH,MAAqB/D,EAAQ1D,EAAIqF,MACvC,OAAOo3E,EAAcL,EAAMp8E,EAAIqF,MAw8CrC,IAAgBqC,EAp8Cd,MAAM,IAAI7C,UAAU,sFA9Kbo4E,CAAWb,EAAMl/E,GA4B1B,SAASggF,EAAY5uE,GACnB,GAAoB,iBAATA,EACT,MAAM,IAAIzJ,UAAU,oCACf,GAAIyJ,EAAO,EAChB,MAAM,IAAI+tE,WAAW,wCA4BzB,SAASG,EAAaJ,EAAM9tE,GAG1B,GAFA4uE,EAAW5uE,GACX8tE,EAAO9tC,EAAa8tC,EAAM9tE,EAAO,EAAI,EAAoB,EAAhByuE,EAAQzuE,KAC5Cu2B,EAAOs3C,oBACV,IAAK,IAAIlgF,EAAI,EAAGA,EAAIqS,IAAQrS,EAC1BmgF,EAAKngF,GAAK,EAGd,OAAOmgF,EAwCT,SAASK,EAAeL,EAAMzsE,GAC5B,IAAIvQ,EAASuQ,EAAMvQ,OAAS,EAAI,EAA4B,EAAxB29E,EAAQptE,EAAMvQ,QAClDg9E,EAAO9tC,EAAa8tC,EAAMh9E,GAC1B,IAAK,IAAInD,EAAI,EAAGA,EAAImD,EAAQnD,GAAK,EAC/BmgF,EAAKngF,GAAgB,IAAX0T,EAAM1T,GAElB,OAAOmgF,EA+DT,SAASW,EAAS39E,GAGhB,GAAIA,GAAU88E,IACZ,MAAM,IAAIG,WAAW,0DACaH,IAAah5E,SAAS,IAAM,UAEhE,OAAgB,EAAT9D,EAsFT,SAAS8rD,EAAYhnB,EAAQy4C,GAC3B,GAAI93C,EAAOn8B,SAASw7B,GAClB,OAAOA,EAAO9kC,OAEhB,GAA2B,oBAAhB0J,aAA6D,mBAAvBA,YAAYC,SACxDD,YAAYC,OAAOm7B,IAAWA,aAAkBp7B,aACnD,OAAOo7B,EAAOgnB,WAEM,iBAAXhnB,IACTA,EAAS,GAAKA,GAGhB,IAAIn/B,EAAMm/B,EAAO9kC,OACjB,GAAY,IAAR2F,EAAW,OAAO,EAItB,IADA,IAAIo4E,GAAc,IAEhB,OAAQR,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAO53E,EACT,IAAK,OACL,IAAK,QACL,UAAKmG,EACH,OAAOkyE,EAAYl5C,GAAQ9kC,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAAN2F,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAOs4E,EAAcn5C,GAAQ9kC,OAC/B,QACE,GAAI+9E,EAAa,OAAOC,EAAYl5C,GAAQ9kC,OAC5Cu9E,GAAY,GAAKA,GAAUp1E,cAC3B41E,GAAc,GAMtB,SAASG,EAAcX,EAAUY,EAAOC,GACtC,IAAIL,GAAc,EAclB,SALcjyE,IAAVqyE,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQ5hF,KAAKyD,OACf,MAAO,GAOT,SAJY8L,IAARsyE,GAAqBA,EAAM7hF,KAAKyD,UAClCo+E,EAAM7hF,KAAKyD,QAGTo+E,GAAO,EACT,MAAO,GAOT,IAHAA,KAAS,KACTD,KAAW,GAGT,MAAO,GAKT,IAFKZ,IAAUA,EAAW,UAGxB,OAAQA,GACN,IAAK,MACH,OAAOc,EAAS9hF,KAAM4hF,EAAOC,GAE/B,IAAK,OACL,IAAK,QACH,OAAOE,EAAU/hF,KAAM4hF,EAAOC,GAEhC,IAAK,QACH,OAAOG,EAAWhiF,KAAM4hF,EAAOC,GAEjC,IAAK,SACL,IAAK,SACH,OAAOI,EAAYjiF,KAAM4hF,EAAOC,GAElC,IAAK,SACH,OAAOK,EAAYliF,KAAM4hF,EAAOC,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOM,EAAaniF,KAAM4hF,EAAOC,GAEnC,QACE,GAAIL,EAAa,MAAM,IAAIt4E,UAAU,qBAAuB83E,GAC5DA,GAAYA,EAAW,IAAIp1E,cAC3B41E,GAAc,GAStB,SAAS1H,EAAM5rE,EAAGnM,EAAGrB,GACnB,IAAIJ,EAAI4N,EAAEnM,GACVmM,EAAEnM,GAAKmM,EAAExN,GACTwN,EAAExN,GAAKJ,EAmIT,SAAS8hF,EAAsB/0E,EAAQtB,EAAK49C,EAAYq3B,EAAUt4B,GAEhE,GAAsB,IAAlBr7C,EAAO5J,OAAc,OAAQ,EAmBjC,GAhB0B,iBAAfkmD,GACTq3B,EAAWr3B,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAEhBA,GAAcA,EACV+K,MAAM/K,KAERA,EAAajB,EAAM,EAAKr7C,EAAO5J,OAAS,GAItCkmD,EAAa,IAAGA,EAAat8C,EAAO5J,OAASkmD,GAC7CA,GAAct8C,EAAO5J,OAAQ,CAC/B,GAAIilD,EAAK,OAAQ,EACZiB,EAAat8C,EAAO5J,OAAS,OAC7B,GAAIkmD,EAAa,EAAG,CACzB,IAAIjB,EACC,OAAQ,EADJiB,EAAa,EAUxB,GALmB,iBAAR59C,IACTA,EAAMm9B,EAAOngC,KAAKgD,EAAKi1E,IAIrB93C,EAAOn8B,SAAShB,GAElB,OAAmB,IAAfA,EAAItI,QACE,EAEH4+E,EAAah1E,EAAQtB,EAAK49C,EAAYq3B,EAAUt4B,GAClD,GAAmB,iBAAR38C,EAEhB,OADAA,GAAY,IACRm9B,EAAOs3C,qBACiC,mBAAjC1zE,WAAW5K,UAAUuN,QAC1Bi5C,EACK57C,WAAW5K,UAAUuN,QAAQhP,KAAK4M,EAAQtB,EAAK49C,GAE/C78C,WAAW5K,UAAUs+C,YAAY//C,KAAK4M,EAAQtB,EAAK49C,GAGvD04B,EAAah1E,EAAQ,CAAEtB,GAAO49C,EAAYq3B,EAAUt4B,GAG7D,MAAM,IAAIx/C,UAAU,wCAGtB,SAASm5E,EAAcx6E,EAAKkE,EAAK49C,EAAYq3B,EAAUt4B,GACrD,IA0BIpoD,EA1BAgiF,EAAY,EACZC,EAAY16E,EAAIpE,OAChB++E,EAAYz2E,EAAItI,OAEpB,QAAiB8L,IAAbyxE,IAEe,UADjBA,EAAW1xE,OAAO0xE,GAAUp1E,gBACY,UAAbo1E,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAIn5E,EAAIpE,OAAS,GAAKsI,EAAItI,OAAS,EACjC,OAAQ,EAEV6+E,EAAY,EACZC,GAAa,EACbC,GAAa,EACb74B,GAAc,EAIlB,SAAS/d,EAAM62C,EAAKniF,GAClB,OAAkB,IAAdgiF,EACKG,EAAIniF,GAEJmiF,EAAIC,aAAapiF,EAAIgiF,GAKhC,GAAI55B,EAAK,CACP,IAAIi6B,GAAc,EAClB,IAAKriF,EAAIqpD,EAAYrpD,EAAIiiF,EAAWjiF,IAClC,GAAIsrC,EAAK/jC,EAAKvH,KAAOsrC,EAAK7/B,GAAqB,IAAhB42E,EAAoB,EAAIriF,EAAIqiF,IAEzD,IADoB,IAAhBA,IAAmBA,EAAariF,GAChCA,EAAIqiF,EAAa,IAAMH,EAAW,OAAOG,EAAaL,OAEtC,IAAhBK,IAAmBriF,GAAKA,EAAIqiF,GAChCA,GAAc,OAKlB,IADIh5B,EAAa64B,EAAYD,IAAW54B,EAAa44B,EAAYC,GAC5DliF,EAAIqpD,EAAYrpD,GAAK,EAAGA,IAAK,CAEhC,IADA,IAAIsiF,GAAQ,EACHt6B,EAAI,EAAGA,EAAIk6B,EAAWl6B,IAC7B,GAAI1c,EAAK/jC,EAAKvH,EAAIgoD,KAAO1c,EAAK7/B,EAAKu8C,GAAI,CACrCs6B,GAAQ,EACR,MAGJ,GAAIA,EAAO,OAAOtiF,EAItB,OAAQ,EAeV,SAASuiF,EAAUJ,EAAKl6C,EAAQu6C,EAAQr/E,GACtCq/E,EAASvqE,OAAOuqE,IAAW,EAC3B,IAAInvE,EAAY8uE,EAAIh/E,OAASq/E,EACxBr/E,GAGHA,EAAS8U,OAAO9U,IACHkQ,IACXlQ,EAASkQ,GAJXlQ,EAASkQ,EASX,IAAIovE,EAASx6C,EAAO9kC,OACpB,GAAIs/E,EAAS,GAAM,EAAG,MAAM,IAAI75E,UAAU,sBAEtCzF,EAASs/E,EAAS,IACpBt/E,EAASs/E,EAAS,GAEpB,IAAK,IAAIziF,EAAI,EAAGA,EAAImD,IAAUnD,EAAG,CAC/B,IAAI0iF,EAAS3gE,SAASkmB,EAAOX,OAAW,EAAJtnC,EAAO,GAAI,IAC/C,GAAIo0D,MAAMsuB,GAAS,OAAO1iF,EAC1BmiF,EAAIK,EAASxiF,GAAK0iF,EAEpB,OAAO1iF,EAGT,SAAS2iF,EAAWR,EAAKl6C,EAAQu6C,EAAQr/E,GACvC,OAAOy/E,EAAWzB,EAAYl5C,EAAQk6C,EAAIh/E,OAASq/E,GAASL,EAAKK,EAAQr/E,GAG3E,SAAS0/E,EAAYV,EAAKl6C,EAAQu6C,EAAQr/E,GACxC,OAAOy/E,EAq6BT,SAAuBv3E,GAErB,IADA,IAAIy3E,EAAY,GACP9iF,EAAI,EAAGA,EAAIqL,EAAIlI,SAAUnD,EAEhC8iF,EAAUz+E,KAAyB,IAApBgH,EAAI4C,WAAWjO,IAEhC,OAAO8iF,EA36BWC,CAAa96C,GAASk6C,EAAKK,EAAQr/E,GAGvD,SAAS6/E,EAAab,EAAKl6C,EAAQu6C,EAAQr/E,GACzC,OAAO0/E,EAAWV,EAAKl6C,EAAQu6C,EAAQr/E,GAGzC,SAAS8/E,EAAad,EAAKl6C,EAAQu6C,EAAQr/E,GACzC,OAAOy/E,EAAWxB,EAAcn5C,GAASk6C,EAAKK,EAAQr/E,GAGxD,SAAS+/E,EAAWf,EAAKl6C,EAAQu6C,EAAQr/E,GACvC,OAAOy/E,EAk6BT,SAAyBv3E,EAAK83E,GAG5B,IAFA,IAAI9iF,EAAG+iF,EAAIC,EACPP,EAAY,GACP9iF,EAAI,EAAGA,EAAIqL,EAAIlI,WACjBggF,GAAS,GAAK,KADanjF,EAGhCK,EAAIgL,EAAI4C,WAAWjO,GACnBojF,EAAK/iF,GAAK,EACVgjF,EAAKhjF,EAAI,IACTyiF,EAAUz+E,KAAKg/E,GACfP,EAAUz+E,KAAK++E,GAGjB,OAAON,EA/6BWQ,CAAer7C,EAAQk6C,EAAIh/E,OAASq/E,GAASL,EAAKK,EAAQr/E,GAkF9E,SAASy+E,EAAaO,EAAKb,EAAOC,GAChC,OAAc,IAAVD,GAAeC,IAAQY,EAAIh/E,OACtBgG,EAAOo6E,cAAcpB,GAErBh5E,EAAOo6E,cAAcpB,EAAI55E,MAAM+4E,EAAOC,IAIjD,SAASE,EAAWU,EAAKb,EAAOC,GAC9BA,EAAM9rE,KAAKE,IAAIwsE,EAAIh/E,OAAQo+E,GAI3B,IAHA,IAAIiC,EAAM,GAENxjF,EAAIshF,EACDthF,EAAIuhF,GAAK,CACd,IAQMkC,EAAYC,EAAWC,EAAYC,EARrCC,EAAY1B,EAAIniF,GAChB8jF,EAAY,KACZC,EAAoBF,EAAY,IAAQ,EACvCA,EAAY,IAAQ,EACpBA,EAAY,IAAQ,EACrB,EAEJ,GAAI7jF,EAAI+jF,GAAoBxC,EAG1B,OAAQwC,GACN,KAAK,EACCF,EAAY,MACdC,EAAYD,GAEd,MACF,KAAK,EAEyB,MAAV,KADlBJ,EAAatB,EAAIniF,EAAI,OAEnB4jF,GAA6B,GAAZC,IAAqB,EAAoB,GAAbJ,GACzB,MAClBK,EAAYF,GAGhB,MACF,KAAK,EACHH,EAAatB,EAAIniF,EAAI,GACrB0jF,EAAYvB,EAAIniF,EAAI,GACQ,MAAV,IAAbyjF,IAAsD,MAAV,IAAZC,KACnCE,GAA6B,GAAZC,IAAoB,IAAoB,GAAbJ,IAAsB,EAAmB,GAAZC,GACrD,OAAUE,EAAgB,OAAUA,EAAgB,SACtEE,EAAYF,GAGhB,MACF,KAAK,EACHH,EAAatB,EAAIniF,EAAI,GACrB0jF,EAAYvB,EAAIniF,EAAI,GACpB2jF,EAAaxB,EAAIniF,EAAI,GACO,MAAV,IAAbyjF,IAAsD,MAAV,IAAZC,IAAsD,MAAV,IAAbC,KAClEC,GAA6B,GAAZC,IAAoB,IAAqB,GAAbJ,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,GAClF,OAAUC,EAAgB,UAC5CE,EAAYF,GAMJ,OAAdE,GAGFA,EAAY,MACZC,EAAmB,GACVD,EAAY,QAErBA,GAAa,MACbN,EAAIn/E,KAAKy/E,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvBN,EAAIn/E,KAAKy/E,GACT9jF,GAAK+jF,EAGP,OAQF,SAAgCC,GAC9B,IAAIl7E,EAAMk7E,EAAW7gF,OACrB,GAAI2F,GAJqB,KAKvB,OAAOkG,OAAO03C,aAAanzC,MAAMvE,OAAQg1E,GAI3C,IAAIR,EAAM,GACNxjF,EAAI,EACR,KAAOA,EAAI8I,GACT06E,GAAOx0E,OAAO03C,aAAanzC,MACzBvE,OACAg1E,EAAWz7E,MAAMvI,EAAGA,GAdC,OAiBzB,OAAOwjF,EAvBAS,CAAsBT,GA98B/BnkF,EAAQupC,OAASA,EACjBvpC,EAAQ6kF,WAoTR,SAAqB/gF,IACdA,GAAUA,IACbA,EAAS,GAEX,OAAOylC,EAAOu7C,OAAOhhF,IAvTvB9D,EAAQ+kF,kBAAoB,GA0B5Bx7C,EAAOs3C,yBAAqDjxE,IAA/Bo1E,EAAOnE,oBAChCmE,EAAOnE,oBAQX,WACE,IACE,IAAI34E,EAAM,IAAIiF,WAAW,GAEzB,OADAjF,EAAIg2D,UAAY,CAACA,UAAW/wD,WAAW5K,UAAW0iF,IAAK,WAAc,OAAO,KACvD,KAAd/8E,EAAI+8E,OACiB,mBAAjB/8E,EAAIk/C,UACuB,IAAlCl/C,EAAIk/C,SAAS,EAAG,GAAGwI,WACvB,MAAOnsD,GACP,OAAO,GAfPyhF,GAKJllF,EAAQ4gF,WAAaA,IAkErBr3C,EAAO47C,SAAW,KAGlB57C,EAAO67C,SAAW,SAAUl9E,GAE1B,OADAA,EAAIg2D,UAAY30B,EAAOhnC,UAChB2F,GA2BTqhC,EAAOngC,KAAO,SAAUxH,EAAOq/E,EAAkBn9E,GAC/C,OAAOsF,EAAK,KAAMxH,EAAOq/E,EAAkBn9E,IAGzCylC,EAAOs3C,sBACTt3C,EAAOhnC,UAAU27D,UAAY/wD,WAAW5K,UACxCgnC,EAAO20B,UAAY/wD,WACG,oBAAXzL,QAA0BA,OAAO2jF,SACxC97C,EAAO7nC,OAAO2jF,WAAa97C,GAE7BloC,OAAOC,eAAeioC,EAAQ7nC,OAAO2jF,QAAS,CAC5CzjF,MAAO,KACPkwD,cAAc,KAiCpBvoB,EAAOu7C,MAAQ,SAAU9xE,EAAM0lC,EAAM2oC,GACnC,OArBF,SAAgBP,EAAM9tE,EAAM0lC,EAAM2oC,GAEhC,OADAO,EAAW5uE,GACPA,GAAQ,EACHggC,EAAa8tC,EAAM9tE,QAEfpD,IAAT8oC,EAIyB,iBAAb2oC,EACVruC,EAAa8tC,EAAM9tE,GAAM0lC,KAAKA,EAAM2oC,GACpCruC,EAAa8tC,EAAM9tE,GAAM0lC,KAAKA,GAE7B1F,EAAa8tC,EAAM9tE,GAQnB8xE,CAAM,KAAM9xE,EAAM0lC,EAAM2oC,IAiBjC93C,EAAO23C,YAAc,SAAUluE,GAC7B,OAAOkuE,EAAY,KAAMluE,IAK3Bu2B,EAAO+7C,gBAAkB,SAAUtyE,GACjC,OAAOkuE,EAAY,KAAMluE,IAiH3Bu2B,EAAOn8B,SAAW,SAAmBmB,GACnC,QAAe,MAALA,IAAaA,EAAEg3E,YAG3Bh8C,EAAOi8C,QAAU,SAAkBl3E,EAAGC,GACpC,IAAKg7B,EAAOn8B,SAASkB,KAAOi7B,EAAOn8B,SAASmB,GAC1C,MAAM,IAAIhF,UAAU,6BAGtB,GAAI+E,IAAMC,EAAG,OAAO,EAKpB,IAHA,IAAIsE,EAAIvE,EAAExK,OACNgP,EAAIvE,EAAEzK,OAEDnD,EAAI,EAAG8I,EAAM2M,KAAKE,IAAIzD,EAAGC,GAAInS,EAAI8I,IAAO9I,EAC/C,GAAI2N,EAAE3N,KAAO4N,EAAE5N,GAAI,CACjBkS,EAAIvE,EAAE3N,GACNmS,EAAIvE,EAAE5N,GACN,MAIJ,OAAIkS,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,GAGT02B,EAAO+3C,WAAa,SAAqBD,GACvC,OAAQ1xE,OAAO0xE,GAAUp1E,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,IAIbs9B,EAAO/kC,OAAS,SAAiBR,EAAMF,GACrC,IAAKsE,EAAQpE,GACX,MAAM,IAAIuF,UAAU,+CAGtB,GAAoB,IAAhBvF,EAAKF,OACP,OAAOylC,EAAOu7C,MAAM,GAGtB,IAAInkF,EACJ,QAAeiP,IAAX9L,EAEF,IADAA,EAAS,EACJnD,EAAI,EAAGA,EAAIqD,EAAKF,SAAUnD,EAC7BmD,GAAUE,EAAKrD,GAAGmD,OAItB,IAAI4J,EAAS67B,EAAO23C,YAAYp9E,GAC5B2hF,EAAM,EACV,IAAK9kF,EAAI,EAAGA,EAAIqD,EAAKF,SAAUnD,EAAG,CAChC,IAAImiF,EAAM9+E,EAAKrD,GACf,IAAK4oC,EAAOn8B,SAAS01E,GACnB,MAAM,IAAIv5E,UAAU,+CAEtBu5E,EAAIpB,KAAKh0E,EAAQ+3E,GACjBA,GAAO3C,EAAIh/E,OAEb,OAAO4J,GA8CT67B,EAAOqmB,WAAaA,EA0EpBrmB,EAAOhnC,UAAUgjF,WAAY,EAQ7Bh8C,EAAOhnC,UAAUmjF,OAAS,WACxB,IAAIj8E,EAAMpJ,KAAKyD,OACf,GAAI2F,EAAM,GAAM,EACd,MAAM,IAAIs3E,WAAW,6CAEvB,IAAK,IAAIpgF,EAAI,EAAGA,EAAI8I,EAAK9I,GAAK,EAC5Bw5E,EAAK95E,KAAMM,EAAGA,EAAI,GAEpB,OAAON,MAGTkpC,EAAOhnC,UAAUojF,OAAS,WACxB,IAAIl8E,EAAMpJ,KAAKyD,OACf,GAAI2F,EAAM,GAAM,EACd,MAAM,IAAIs3E,WAAW,6CAEvB,IAAK,IAAIpgF,EAAI,EAAGA,EAAI8I,EAAK9I,GAAK,EAC5Bw5E,EAAK95E,KAAMM,EAAGA,EAAI,GAClBw5E,EAAK95E,KAAMM,EAAI,EAAGA,EAAI,GAExB,OAAON,MAGTkpC,EAAOhnC,UAAUqjF,OAAS,WACxB,IAAIn8E,EAAMpJ,KAAKyD,OACf,GAAI2F,EAAM,GAAM,EACd,MAAM,IAAIs3E,WAAW,6CAEvB,IAAK,IAAIpgF,EAAI,EAAGA,EAAI8I,EAAK9I,GAAK,EAC5Bw5E,EAAK95E,KAAMM,EAAGA,EAAI,GAClBw5E,EAAK95E,KAAMM,EAAI,EAAGA,EAAI,GACtBw5E,EAAK95E,KAAMM,EAAI,EAAGA,EAAI,GACtBw5E,EAAK95E,KAAMM,EAAI,EAAGA,EAAI,GAExB,OAAON,MAGTkpC,EAAOhnC,UAAUqF,SAAW,WAC1B,IAAI9D,EAAuB,EAAdzD,KAAKyD,OAClB,OAAe,IAAXA,EAAqB,GACA,IAArBsK,UAAUtK,OAAqBs+E,EAAU/hF,KAAM,EAAGyD,GAC/Ck+E,EAAa9tE,MAAM7T,KAAM+N,YAGlCm7B,EAAOhnC,UAAUsjF,OAAS,SAAiBt3E,GACzC,IAAKg7B,EAAOn8B,SAASmB,GAAI,MAAM,IAAIhF,UAAU,6BAC7C,OAAIlJ,OAASkO,GACsB,IAA5Bg7B,EAAOi8C,QAAQnlF,KAAMkO,IAG9Bg7B,EAAOhnC,UAAUujF,QAAU,WACzB,IAAI95E,EAAM,GACNqK,EAAMrW,EAAQ+kF,kBAKlB,OAJI1kF,KAAKyD,OAAS,IAChBkI,EAAM3L,KAAKuH,SAAS,MAAO,EAAGyO,GAAKqnD,MAAM,SAASz3D,KAAK,KACnD5F,KAAKyD,OAASuS,IAAKrK,GAAO,UAEzB,WAAaA,EAAM,KAG5Bu9B,EAAOhnC,UAAUijF,QAAU,SAAkBriF,EAAQ8+E,EAAOC,EAAK6D,EAAWC,GAC1E,IAAKz8C,EAAOn8B,SAASjK,GACnB,MAAM,IAAIoG,UAAU,6BAgBtB,QAbcqG,IAAVqyE,IACFA,EAAQ,QAEEryE,IAARsyE,IACFA,EAAM/+E,EAASA,EAAOW,OAAS,QAEf8L,IAAdm2E,IACFA,EAAY,QAEEn2E,IAAZo2E,IACFA,EAAU3lF,KAAKyD,QAGbm+E,EAAQ,GAAKC,EAAM/+E,EAAOW,QAAUiiF,EAAY,GAAKC,EAAU3lF,KAAKyD,OACtE,MAAM,IAAIi9E,WAAW,sBAGvB,GAAIgF,GAAaC,GAAW/D,GAASC,EACnC,OAAO,EAET,GAAI6D,GAAaC,EACf,OAAQ,EAEV,GAAI/D,GAASC,EACX,OAAO,EAQT,GAAI7hF,OAAS8C,EAAQ,OAAO,EAS5B,IAPA,IAAI0P,GAJJmzE,KAAa,IADbD,KAAe,GAMXjzE,GAPJovE,KAAS,IADTD,KAAW,GASPx4E,EAAM2M,KAAKE,IAAIzD,EAAGC,GAElBmzE,EAAW5lF,KAAK6I,MAAM68E,EAAWC,GACjCE,EAAa/iF,EAAO+F,MAAM+4E,EAAOC,GAE5BvhF,EAAI,EAAGA,EAAI8I,IAAO9I,EACzB,GAAIslF,EAAStlF,KAAOulF,EAAWvlF,GAAI,CACjCkS,EAAIozE,EAAStlF,GACbmS,EAAIozE,EAAWvlF,GACf,MAIJ,OAAIkS,EAAIC,GAAW,EACfA,EAAID,EAAU,EACX,GA6HT02B,EAAOhnC,UAAUsS,SAAW,SAAmBzI,EAAK49C,EAAYq3B,GAC9D,OAAoD,IAA7ChhF,KAAKyP,QAAQ1D,EAAK49C,EAAYq3B,IAGvC93C,EAAOhnC,UAAUuN,QAAU,SAAkB1D,EAAK49C,EAAYq3B,GAC5D,OAAOoB,EAAqBpiF,KAAM+L,EAAK49C,EAAYq3B,GAAU,IAG/D93C,EAAOhnC,UAAUs+C,YAAc,SAAsBz0C,EAAK49C,EAAYq3B,GACpE,OAAOoB,EAAqBpiF,KAAM+L,EAAK49C,EAAYq3B,GAAU,IAkD/D93C,EAAOhnC,UAAUwlD,MAAQ,SAAgBnf,EAAQu6C,EAAQr/E,EAAQu9E,GAE/D,QAAezxE,IAAXuzE,EACF9B,EAAW,OACXv9E,EAASzD,KAAKyD,OACdq/E,EAAS,OAEJ,QAAevzE,IAAX9L,GAA0C,iBAAXq/E,EACxC9B,EAAW8B,EACXr/E,EAASzD,KAAKyD,OACdq/E,EAAS,MAEJ,KAAIgD,SAAShD,GAWlB,MAAM,IAAIx9E,MACR,2EAXFw9E,GAAkB,EACdgD,SAASriF,IACXA,GAAkB,OACD8L,IAAbyxE,IAAwBA,EAAW,UAEvCA,EAAWv9E,EACXA,OAAS8L,GASb,IAAIoE,EAAY3T,KAAKyD,OAASq/E,EAG9B,SAFevzE,IAAX9L,GAAwBA,EAASkQ,KAAWlQ,EAASkQ,GAEpD40B,EAAO9kC,OAAS,IAAMA,EAAS,GAAKq/E,EAAS,IAAOA,EAAS9iF,KAAKyD,OACrE,MAAM,IAAIi9E,WAAW,0CAGlBM,IAAUA,EAAW,QAG1B,IADA,IAAIQ,GAAc,IAEhB,OAAQR,GACN,IAAK,MACH,OAAO6B,EAAS7iF,KAAMuoC,EAAQu6C,EAAQr/E,GAExC,IAAK,OACL,IAAK,QACH,OAAOw/E,EAAUjjF,KAAMuoC,EAAQu6C,EAAQr/E,GAEzC,IAAK,QACH,OAAO0/E,EAAWnjF,KAAMuoC,EAAQu6C,EAAQr/E,GAE1C,IAAK,SACL,IAAK,SACH,OAAO6/E,EAAYtjF,KAAMuoC,EAAQu6C,EAAQr/E,GAE3C,IAAK,SAEH,OAAO8/E,EAAYvjF,KAAMuoC,EAAQu6C,EAAQr/E,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO+/E,EAAUxjF,KAAMuoC,EAAQu6C,EAAQr/E,GAEzC,QACE,GAAI+9E,EAAa,MAAM,IAAIt4E,UAAU,qBAAuB83E,GAC5DA,GAAY,GAAKA,GAAUp1E,cAC3B41E,GAAc,IAKtBt4C,EAAOhnC,UAAUw/B,OAAS,WACxB,MAAO,CACL51B,KAAM,SACNpC,KAAM5B,MAAM5F,UAAU2G,MAAMpI,KAAKT,KAAKoI,MAAQpI,KAAM,KA4GxD,SAASgiF,EAAYS,EAAKb,EAAOC,GAC/B,IAAIkE,EAAM,GACVlE,EAAM9rE,KAAKE,IAAIwsE,EAAIh/E,OAAQo+E,GAE3B,IAAK,IAAIvhF,EAAIshF,EAAOthF,EAAIuhF,IAAOvhF,EAC7BylF,GAAOz2E,OAAO03C,aAAsB,IAATy7B,EAAIniF,IAEjC,OAAOylF,EAGT,SAAS9D,EAAaQ,EAAKb,EAAOC,GAChC,IAAIkE,EAAM,GACVlE,EAAM9rE,KAAKE,IAAIwsE,EAAIh/E,OAAQo+E,GAE3B,IAAK,IAAIvhF,EAAIshF,EAAOthF,EAAIuhF,IAAOvhF,EAC7BylF,GAAOz2E,OAAO03C,aAAay7B,EAAIniF,IAEjC,OAAOylF,EAGT,SAASjE,EAAUW,EAAKb,EAAOC,GAC7B,IAAIz4E,EAAMq5E,EAAIh/E,SAETm+E,GAASA,EAAQ,KAAGA,EAAQ,KAC5BC,GAAOA,EAAM,GAAKA,EAAMz4E,KAAKy4E,EAAMz4E,GAGxC,IADA,IAAI48E,EAAM,GACD1lF,EAAIshF,EAAOthF,EAAIuhF,IAAOvhF,EAC7B0lF,GAAOC,EAAMxD,EAAIniF,IAEnB,OAAO0lF,EAGT,SAAS7D,EAAcM,EAAKb,EAAOC,GAGjC,IAFA,IAAInjB,EAAQ+jB,EAAI55E,MAAM+4E,EAAOC,GACzBiC,EAAM,GACDxjF,EAAI,EAAGA,EAAIo+D,EAAMj7D,OAAQnD,GAAK,EACrCwjF,GAAOx0E,OAAO03C,aAAa0X,EAAMp+D,GAAoB,IAAfo+D,EAAMp+D,EAAI,IAElD,OAAOwjF,EA0CT,SAASoC,EAAapD,EAAQqD,EAAK1iF,GACjC,GAAKq/E,EAAS,GAAO,GAAKA,EAAS,EAAG,MAAM,IAAIpC,WAAW,sBAC3D,GAAIoC,EAASqD,EAAM1iF,EAAQ,MAAM,IAAIi9E,WAAW,yCA+JlD,SAAS0F,EAAU3D,EAAKlhF,EAAOuhF,EAAQqD,EAAKnwE,EAAKC,GAC/C,IAAKizB,EAAOn8B,SAAS01E,GAAM,MAAM,IAAIv5E,UAAU,+CAC/C,GAAI3H,EAAQyU,GAAOzU,EAAQ0U,EAAK,MAAM,IAAIyqE,WAAW,qCACrD,GAAIoC,EAASqD,EAAM1D,EAAIh/E,OAAQ,MAAM,IAAIi9E,WAAW,sBAkDtD,SAAS2F,EAAmB5D,EAAKlhF,EAAOuhF,EAAQwD,GAC1C/kF,EAAQ,IAAGA,EAAQ,MAASA,EAAQ,GACxC,IAAK,IAAIjB,EAAI,EAAGgoD,EAAIvyC,KAAKE,IAAIwsE,EAAIh/E,OAASq/E,EAAQ,GAAIxiF,EAAIgoD,IAAKhoD,EAC7DmiF,EAAIK,EAASxiF,IAAMiB,EAAS,KAAS,GAAK+kF,EAAehmF,EAAI,EAAIA,MAClC,GAA5BgmF,EAAehmF,EAAI,EAAIA,GA8B9B,SAASimF,EAAmB9D,EAAKlhF,EAAOuhF,EAAQwD,GAC1C/kF,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5C,IAAK,IAAIjB,EAAI,EAAGgoD,EAAIvyC,KAAKE,IAAIwsE,EAAIh/E,OAASq/E,EAAQ,GAAIxiF,EAAIgoD,IAAKhoD,EAC7DmiF,EAAIK,EAASxiF,GAAMiB,IAAuC,GAA5B+kF,EAAehmF,EAAI,EAAIA,GAAU,IAmJnE,SAASkmF,EAAc/D,EAAKlhF,EAAOuhF,EAAQqD,EAAKnwE,EAAKC,GACnD,GAAI6sE,EAASqD,EAAM1D,EAAIh/E,OAAQ,MAAM,IAAIi9E,WAAW,sBACpD,GAAIoC,EAAS,EAAG,MAAM,IAAIpC,WAAW,sBAGvC,SAAS+F,EAAYhE,EAAKlhF,EAAOuhF,EAAQwD,EAAcI,GAKrD,OAJKA,GACHF,EAAa/D,EAAKlhF,EAAOuhF,EAAQ,GAEnCxC,EAAQ54B,MAAM+6B,EAAKlhF,EAAOuhF,EAAQwD,EAAc,GAAI,GAC7CxD,EAAS,EAWlB,SAAS6D,EAAalE,EAAKlhF,EAAOuhF,EAAQwD,EAAcI,GAKtD,OAJKA,GACHF,EAAa/D,EAAKlhF,EAAOuhF,EAAQ,GAEnCxC,EAAQ54B,MAAM+6B,EAAKlhF,EAAOuhF,EAAQwD,EAAc,GAAI,GAC7CxD,EAAS,EA/clB55C,EAAOhnC,UAAU2G,MAAQ,SAAgB+4E,EAAOC,GAC9C,IAoBI+E,EApBAx9E,EAAMpJ,KAAKyD,OAqBf,IApBAm+E,IAAUA,GAGE,GACVA,GAASx4E,GACG,IAAGw4E,EAAQ,GACdA,EAAQx4E,IACjBw4E,EAAQx4E,IANVy4E,OAActyE,IAARsyE,EAAoBz4E,IAAQy4E,GASxB,GACRA,GAAOz4E,GACG,IAAGy4E,EAAM,GACVA,EAAMz4E,IACfy4E,EAAMz4E,GAGJy4E,EAAMD,IAAOC,EAAMD,GAGnB14C,EAAOs3C,qBACToG,EAAS5mF,KAAK+mD,SAAS66B,EAAOC,IACvBhkB,UAAY30B,EAAOhnC,cACrB,CACL,IAAI2kF,EAAWhF,EAAMD,EACrBgF,EAAS,IAAI19C,EAAO29C,OAAUt3E,GAC9B,IAAK,IAAIjP,EAAI,EAAGA,EAAIumF,IAAYvmF,EAC9BsmF,EAAOtmF,GAAKN,KAAKM,EAAIshF,GAIzB,OAAOgF,GAWT19C,EAAOhnC,UAAU4kF,WAAa,SAAqBhE,EAAQvzB,EAAYm3B,GACrE5D,GAAkB,EAClBvzB,GAA0B,EACrBm3B,GAAUR,EAAYpD,EAAQvzB,EAAYvvD,KAAKyD,QAKpD,IAHA,IAAIsI,EAAM/L,KAAK8iF,GACXiE,EAAM,EACNzmF,EAAI,IACCA,EAAIivD,IAAew3B,GAAO,MACjCh7E,GAAO/L,KAAK8iF,EAASxiF,GAAKymF,EAG5B,OAAOh7E,GAGTm9B,EAAOhnC,UAAU8kF,WAAa,SAAqBlE,EAAQvzB,EAAYm3B,GACrE5D,GAAkB,EAClBvzB,GAA0B,EACrBm3B,GACHR,EAAYpD,EAAQvzB,EAAYvvD,KAAKyD,QAKvC,IAFA,IAAIsI,EAAM/L,KAAK8iF,IAAWvzB,GACtBw3B,EAAM,EACHx3B,EAAa,IAAMw3B,GAAO,MAC/Bh7E,GAAO/L,KAAK8iF,IAAWvzB,GAAcw3B,EAGvC,OAAOh7E,GAGTm9B,EAAOhnC,UAAU+kF,UAAY,SAAoBnE,EAAQ4D,GAEvD,OADKA,GAAUR,EAAYpD,EAAQ,EAAG9iF,KAAKyD,QACpCzD,KAAK8iF,IAGd55C,EAAOhnC,UAAUglF,aAAe,SAAuBpE,EAAQ4D,GAE7D,OADKA,GAAUR,EAAYpD,EAAQ,EAAG9iF,KAAKyD,QACpCzD,KAAK8iF,GAAW9iF,KAAK8iF,EAAS,IAAM,GAG7C55C,EAAOhnC,UAAUwgF,aAAe,SAAuBI,EAAQ4D,GAE7D,OADKA,GAAUR,EAAYpD,EAAQ,EAAG9iF,KAAKyD,QACnCzD,KAAK8iF,IAAW,EAAK9iF,KAAK8iF,EAAS,IAG7C55C,EAAOhnC,UAAUilF,aAAe,SAAuBrE,EAAQ4D,GAG7D,OAFKA,GAAUR,EAAYpD,EAAQ,EAAG9iF,KAAKyD,SAElCzD,KAAK8iF,GACT9iF,KAAK8iF,EAAS,IAAM,EACpB9iF,KAAK8iF,EAAS,IAAM,IACD,SAAnB9iF,KAAK8iF,EAAS,IAGrB55C,EAAOhnC,UAAUklF,aAAe,SAAuBtE,EAAQ4D,GAG7D,OAFKA,GAAUR,EAAYpD,EAAQ,EAAG9iF,KAAKyD,QAEpB,SAAfzD,KAAK8iF,IACT9iF,KAAK8iF,EAAS,IAAM,GACrB9iF,KAAK8iF,EAAS,IAAM,EACrB9iF,KAAK8iF,EAAS,KAGlB55C,EAAOhnC,UAAUmlF,UAAY,SAAoBvE,EAAQvzB,EAAYm3B,GACnE5D,GAAkB,EAClBvzB,GAA0B,EACrBm3B,GAAUR,EAAYpD,EAAQvzB,EAAYvvD,KAAKyD,QAKpD,IAHA,IAAIsI,EAAM/L,KAAK8iF,GACXiE,EAAM,EACNzmF,EAAI,IACCA,EAAIivD,IAAew3B,GAAO,MACjCh7E,GAAO/L,KAAK8iF,EAASxiF,GAAKymF,EAM5B,OAFIh7E,IAFJg7E,GAAO,OAESh7E,GAAOgK,KAAK4O,IAAI,EAAG,EAAI4qC,IAEhCxjD,GAGTm9B,EAAOhnC,UAAUolF,UAAY,SAAoBxE,EAAQvzB,EAAYm3B,GACnE5D,GAAkB,EAClBvzB,GAA0B,EACrBm3B,GAAUR,EAAYpD,EAAQvzB,EAAYvvD,KAAKyD,QAKpD,IAHA,IAAInD,EAAIivD,EACJw3B,EAAM,EACNh7E,EAAM/L,KAAK8iF,IAAWxiF,GACnBA,EAAI,IAAMymF,GAAO,MACtBh7E,GAAO/L,KAAK8iF,IAAWxiF,GAAKymF,EAM9B,OAFIh7E,IAFJg7E,GAAO,OAESh7E,GAAOgK,KAAK4O,IAAI,EAAG,EAAI4qC,IAEhCxjD,GAGTm9B,EAAOhnC,UAAUqlF,SAAW,SAAmBzE,EAAQ4D,GAErD,OADKA,GAAUR,EAAYpD,EAAQ,EAAG9iF,KAAKyD,QACtB,IAAfzD,KAAK8iF,IAC0B,GAA5B,IAAO9iF,KAAK8iF,GAAU,GADK9iF,KAAK8iF,IAI3C55C,EAAOhnC,UAAUslF,YAAc,SAAsB1E,EAAQ4D,GACtDA,GAAUR,EAAYpD,EAAQ,EAAG9iF,KAAKyD,QAC3C,IAAIsI,EAAM/L,KAAK8iF,GAAW9iF,KAAK8iF,EAAS,IAAM,EAC9C,OAAc,MAAN/2E,EAAsB,WAANA,EAAmBA,GAG7Cm9B,EAAOhnC,UAAUulF,YAAc,SAAsB3E,EAAQ4D,GACtDA,GAAUR,EAAYpD,EAAQ,EAAG9iF,KAAKyD,QAC3C,IAAIsI,EAAM/L,KAAK8iF,EAAS,GAAM9iF,KAAK8iF,IAAW,EAC9C,OAAc,MAAN/2E,EAAsB,WAANA,EAAmBA,GAG7Cm9B,EAAOhnC,UAAUwlF,YAAc,SAAsB5E,EAAQ4D,GAG3D,OAFKA,GAAUR,EAAYpD,EAAQ,EAAG9iF,KAAKyD,QAEnCzD,KAAK8iF,GACV9iF,KAAK8iF,EAAS,IAAM,EACpB9iF,KAAK8iF,EAAS,IAAM,GACpB9iF,KAAK8iF,EAAS,IAAM,IAGzB55C,EAAOhnC,UAAUylF,YAAc,SAAsB7E,EAAQ4D,GAG3D,OAFKA,GAAUR,EAAYpD,EAAQ,EAAG9iF,KAAKyD,QAEnCzD,KAAK8iF,IAAW,GACrB9iF,KAAK8iF,EAAS,IAAM,GACpB9iF,KAAK8iF,EAAS,IAAM,EACpB9iF,KAAK8iF,EAAS,IAGnB55C,EAAOhnC,UAAU0lF,YAAc,SAAsB9E,EAAQ4D,GAE3D,OADKA,GAAUR,EAAYpD,EAAQ,EAAG9iF,KAAKyD,QACpC68E,EAAQ10C,KAAK5rC,KAAM8iF,GAAQ,EAAM,GAAI,IAG9C55C,EAAOhnC,UAAU2lF,YAAc,SAAsB/E,EAAQ4D,GAE3D,OADKA,GAAUR,EAAYpD,EAAQ,EAAG9iF,KAAKyD,QACpC68E,EAAQ10C,KAAK5rC,KAAM8iF,GAAQ,EAAO,GAAI,IAG/C55C,EAAOhnC,UAAU4lF,aAAe,SAAuBhF,EAAQ4D,GAE7D,OADKA,GAAUR,EAAYpD,EAAQ,EAAG9iF,KAAKyD,QACpC68E,EAAQ10C,KAAK5rC,KAAM8iF,GAAQ,EAAM,GAAI,IAG9C55C,EAAOhnC,UAAU6lF,aAAe,SAAuBjF,EAAQ4D,GAE7D,OADKA,GAAUR,EAAYpD,EAAQ,EAAG9iF,KAAKyD,QACpC68E,EAAQ10C,KAAK5rC,KAAM8iF,GAAQ,EAAO,GAAI,IAS/C55C,EAAOhnC,UAAU8lF,YAAc,SAAsBzmF,EAAOuhF,EAAQvzB,EAAYm3B,IAC9EnlF,GAASA,EACTuhF,GAAkB,EAClBvzB,GAA0B,EACrBm3B,IAEHN,EAASpmF,KAAMuB,EAAOuhF,EAAQvzB,EADfx5C,KAAK4O,IAAI,EAAG,EAAI4qC,GAAc,EACO,GAGtD,IAAIw3B,EAAM,EACNzmF,EAAI,EAER,IADAN,KAAK8iF,GAAkB,IAARvhF,IACNjB,EAAIivD,IAAew3B,GAAO,MACjC/mF,KAAK8iF,EAASxiF,GAAMiB,EAAQwlF,EAAO,IAGrC,OAAOjE,EAASvzB,GAGlBrmB,EAAOhnC,UAAU+lF,YAAc,SAAsB1mF,EAAOuhF,EAAQvzB,EAAYm3B,IAC9EnlF,GAASA,EACTuhF,GAAkB,EAClBvzB,GAA0B,EACrBm3B,IAEHN,EAASpmF,KAAMuB,EAAOuhF,EAAQvzB,EADfx5C,KAAK4O,IAAI,EAAG,EAAI4qC,GAAc,EACO,GAGtD,IAAIjvD,EAAIivD,EAAa,EACjBw3B,EAAM,EAEV,IADA/mF,KAAK8iF,EAASxiF,GAAa,IAARiB,IACVjB,GAAK,IAAMymF,GAAO,MACzB/mF,KAAK8iF,EAASxiF,GAAMiB,EAAQwlF,EAAO,IAGrC,OAAOjE,EAASvzB,GAGlBrmB,EAAOhnC,UAAUgmF,WAAa,SAAqB3mF,EAAOuhF,EAAQ4D,GAMhE,OALAnlF,GAASA,EACTuhF,GAAkB,EACb4D,GAAUN,EAASpmF,KAAMuB,EAAOuhF,EAAQ,EAAG,IAAM,GACjD55C,EAAOs3C,sBAAqBj/E,EAAQwU,KAAK4+C,MAAMpzD,IACpDvB,KAAK8iF,GAAmB,IAARvhF,EACTuhF,EAAS,GAWlB55C,EAAOhnC,UAAUimF,cAAgB,SAAwB5mF,EAAOuhF,EAAQ4D,GAUtE,OATAnlF,GAASA,EACTuhF,GAAkB,EACb4D,GAAUN,EAASpmF,KAAMuB,EAAOuhF,EAAQ,EAAG,MAAQ,GACpD55C,EAAOs3C,qBACTxgF,KAAK8iF,GAAmB,IAARvhF,EAChBvB,KAAK8iF,EAAS,GAAMvhF,IAAU,GAE9B8kF,EAAkBrmF,KAAMuB,EAAOuhF,GAAQ,GAElCA,EAAS,GAGlB55C,EAAOhnC,UAAUkmF,cAAgB,SAAwB7mF,EAAOuhF,EAAQ4D,GAUtE,OATAnlF,GAASA,EACTuhF,GAAkB,EACb4D,GAAUN,EAASpmF,KAAMuB,EAAOuhF,EAAQ,EAAG,MAAQ,GACpD55C,EAAOs3C,qBACTxgF,KAAK8iF,GAAWvhF,IAAU,EAC1BvB,KAAK8iF,EAAS,GAAc,IAARvhF,GAEpB8kF,EAAkBrmF,KAAMuB,EAAOuhF,GAAQ,GAElCA,EAAS,GAUlB55C,EAAOhnC,UAAUmmF,cAAgB,SAAwB9mF,EAAOuhF,EAAQ4D,GAYtE,OAXAnlF,GAASA,EACTuhF,GAAkB,EACb4D,GAAUN,EAASpmF,KAAMuB,EAAOuhF,EAAQ,EAAG,WAAY,GACxD55C,EAAOs3C,qBACTxgF,KAAK8iF,EAAS,GAAMvhF,IAAU,GAC9BvB,KAAK8iF,EAAS,GAAMvhF,IAAU,GAC9BvB,KAAK8iF,EAAS,GAAMvhF,IAAU,EAC9BvB,KAAK8iF,GAAmB,IAARvhF,GAEhBglF,EAAkBvmF,KAAMuB,EAAOuhF,GAAQ,GAElCA,EAAS,GAGlB55C,EAAOhnC,UAAUomF,cAAgB,SAAwB/mF,EAAOuhF,EAAQ4D,GAYtE,OAXAnlF,GAASA,EACTuhF,GAAkB,EACb4D,GAAUN,EAASpmF,KAAMuB,EAAOuhF,EAAQ,EAAG,WAAY,GACxD55C,EAAOs3C,qBACTxgF,KAAK8iF,GAAWvhF,IAAU,GAC1BvB,KAAK8iF,EAAS,GAAMvhF,IAAU,GAC9BvB,KAAK8iF,EAAS,GAAMvhF,IAAU,EAC9BvB,KAAK8iF,EAAS,GAAc,IAARvhF,GAEpBglF,EAAkBvmF,KAAMuB,EAAOuhF,GAAQ,GAElCA,EAAS,GAGlB55C,EAAOhnC,UAAUqmF,WAAa,SAAqBhnF,EAAOuhF,EAAQvzB,EAAYm3B,GAG5E,GAFAnlF,GAASA,EACTuhF,GAAkB,GACb4D,EAAU,CACb,IAAI8B,EAAQzyE,KAAK4O,IAAI,EAAG,EAAI4qC,EAAa,GAEzC62B,EAASpmF,KAAMuB,EAAOuhF,EAAQvzB,EAAYi5B,EAAQ,GAAIA,GAGxD,IAAIloF,EAAI,EACJymF,EAAM,EACN0B,EAAM,EAEV,IADAzoF,KAAK8iF,GAAkB,IAARvhF,IACNjB,EAAIivD,IAAew3B,GAAO,MAC7BxlF,EAAQ,GAAa,IAARknF,GAAsC,IAAzBzoF,KAAK8iF,EAASxiF,EAAI,KAC9CmoF,EAAM,GAERzoF,KAAK8iF,EAASxiF,IAAOiB,EAAQwlF,GAAQ,GAAK0B,EAAM,IAGlD,OAAO3F,EAASvzB,GAGlBrmB,EAAOhnC,UAAUwmF,WAAa,SAAqBnnF,EAAOuhF,EAAQvzB,EAAYm3B,GAG5E,GAFAnlF,GAASA,EACTuhF,GAAkB,GACb4D,EAAU,CACb,IAAI8B,EAAQzyE,KAAK4O,IAAI,EAAG,EAAI4qC,EAAa,GAEzC62B,EAASpmF,KAAMuB,EAAOuhF,EAAQvzB,EAAYi5B,EAAQ,GAAIA,GAGxD,IAAIloF,EAAIivD,EAAa,EACjBw3B,EAAM,EACN0B,EAAM,EAEV,IADAzoF,KAAK8iF,EAASxiF,GAAa,IAARiB,IACVjB,GAAK,IAAMymF,GAAO,MACrBxlF,EAAQ,GAAa,IAARknF,GAAsC,IAAzBzoF,KAAK8iF,EAASxiF,EAAI,KAC9CmoF,EAAM,GAERzoF,KAAK8iF,EAASxiF,IAAOiB,EAAQwlF,GAAQ,GAAK0B,EAAM,IAGlD,OAAO3F,EAASvzB,GAGlBrmB,EAAOhnC,UAAUymF,UAAY,SAAoBpnF,EAAOuhF,EAAQ4D,GAO9D,OANAnlF,GAASA,EACTuhF,GAAkB,EACb4D,GAAUN,EAASpmF,KAAMuB,EAAOuhF,EAAQ,EAAG,KAAO,KAClD55C,EAAOs3C,sBAAqBj/E,EAAQwU,KAAK4+C,MAAMpzD,IAChDA,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtCvB,KAAK8iF,GAAmB,IAARvhF,EACTuhF,EAAS,GAGlB55C,EAAOhnC,UAAU0mF,aAAe,SAAuBrnF,EAAOuhF,EAAQ4D,GAUpE,OATAnlF,GAASA,EACTuhF,GAAkB,EACb4D,GAAUN,EAASpmF,KAAMuB,EAAOuhF,EAAQ,EAAG,OAAS,OACrD55C,EAAOs3C,qBACTxgF,KAAK8iF,GAAmB,IAARvhF,EAChBvB,KAAK8iF,EAAS,GAAMvhF,IAAU,GAE9B8kF,EAAkBrmF,KAAMuB,EAAOuhF,GAAQ,GAElCA,EAAS,GAGlB55C,EAAOhnC,UAAU2mF,aAAe,SAAuBtnF,EAAOuhF,EAAQ4D,GAUpE,OATAnlF,GAASA,EACTuhF,GAAkB,EACb4D,GAAUN,EAASpmF,KAAMuB,EAAOuhF,EAAQ,EAAG,OAAS,OACrD55C,EAAOs3C,qBACTxgF,KAAK8iF,GAAWvhF,IAAU,EAC1BvB,KAAK8iF,EAAS,GAAc,IAARvhF,GAEpB8kF,EAAkBrmF,KAAMuB,EAAOuhF,GAAQ,GAElCA,EAAS,GAGlB55C,EAAOhnC,UAAU4mF,aAAe,SAAuBvnF,EAAOuhF,EAAQ4D,GAYpE,OAXAnlF,GAASA,EACTuhF,GAAkB,EACb4D,GAAUN,EAASpmF,KAAMuB,EAAOuhF,EAAQ,EAAG,YAAa,YACzD55C,EAAOs3C,qBACTxgF,KAAK8iF,GAAmB,IAARvhF,EAChBvB,KAAK8iF,EAAS,GAAMvhF,IAAU,EAC9BvB,KAAK8iF,EAAS,GAAMvhF,IAAU,GAC9BvB,KAAK8iF,EAAS,GAAMvhF,IAAU,IAE9BglF,EAAkBvmF,KAAMuB,EAAOuhF,GAAQ,GAElCA,EAAS,GAGlB55C,EAAOhnC,UAAU6mF,aAAe,SAAuBxnF,EAAOuhF,EAAQ4D,GAapE,OAZAnlF,GAASA,EACTuhF,GAAkB,EACb4D,GAAUN,EAASpmF,KAAMuB,EAAOuhF,EAAQ,EAAG,YAAa,YACzDvhF,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GACxC2nC,EAAOs3C,qBACTxgF,KAAK8iF,GAAWvhF,IAAU,GAC1BvB,KAAK8iF,EAAS,GAAMvhF,IAAU,GAC9BvB,KAAK8iF,EAAS,GAAMvhF,IAAU,EAC9BvB,KAAK8iF,EAAS,GAAc,IAARvhF,GAEpBglF,EAAkBvmF,KAAMuB,EAAOuhF,GAAQ,GAElCA,EAAS,GAgBlB55C,EAAOhnC,UAAU8mF,aAAe,SAAuBznF,EAAOuhF,EAAQ4D,GACpE,OAAOD,EAAWzmF,KAAMuB,EAAOuhF,GAAQ,EAAM4D,IAG/Cx9C,EAAOhnC,UAAU+mF,aAAe,SAAuB1nF,EAAOuhF,EAAQ4D,GACpE,OAAOD,EAAWzmF,KAAMuB,EAAOuhF,GAAQ,EAAO4D,IAWhDx9C,EAAOhnC,UAAUgnF,cAAgB,SAAwB3nF,EAAOuhF,EAAQ4D,GACtE,OAAOC,EAAY3mF,KAAMuB,EAAOuhF,GAAQ,EAAM4D,IAGhDx9C,EAAOhnC,UAAUinF,cAAgB,SAAwB5nF,EAAOuhF,EAAQ4D,GACtE,OAAOC,EAAY3mF,KAAMuB,EAAOuhF,GAAQ,EAAO4D,IAIjDx9C,EAAOhnC,UAAUm/E,KAAO,SAAev+E,EAAQsmF,EAAaxH,EAAOC,GAQjE,GAPKD,IAAOA,EAAQ,GACfC,GAAe,IAARA,IAAWA,EAAM7hF,KAAKyD,QAC9B2lF,GAAetmF,EAAOW,SAAQ2lF,EAActmF,EAAOW,QAClD2lF,IAAaA,EAAc,GAC5BvH,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,EAAO,OAAO,EAC1B,GAAsB,IAAlB9+E,EAAOW,QAAgC,IAAhBzD,KAAKyD,OAAc,OAAO,EAGrD,GAAI2lF,EAAc,EAChB,MAAM,IAAI1I,WAAW,6BAEvB,GAAIkB,EAAQ,GAAKA,GAAS5hF,KAAKyD,OAAQ,MAAM,IAAIi9E,WAAW,6BAC5D,GAAImB,EAAM,EAAG,MAAM,IAAInB,WAAW,2BAG9BmB,EAAM7hF,KAAKyD,SAAQo+E,EAAM7hF,KAAKyD,QAC9BX,EAAOW,OAAS2lF,EAAcvH,EAAMD,IACtCC,EAAM/+E,EAAOW,OAAS2lF,EAAcxH,GAGtC,IACIthF,EADA8I,EAAMy4E,EAAMD,EAGhB,GAAI5hF,OAAS8C,GAAU8+E,EAAQwH,GAAeA,EAAcvH,EAE1D,IAAKvhF,EAAI8I,EAAM,EAAG9I,GAAK,IAAKA,EAC1BwC,EAAOxC,EAAI8oF,GAAeppF,KAAKM,EAAIshF,QAEhC,GAAIx4E,EAAM,MAAS8/B,EAAOs3C,oBAE/B,IAAKlgF,EAAI,EAAGA,EAAI8I,IAAO9I,EACrBwC,EAAOxC,EAAI8oF,GAAeppF,KAAKM,EAAIshF,QAGrC90E,WAAW5K,UAAUklB,IAAI3mB,KACvBqC,EACA9C,KAAK+mD,SAAS66B,EAAOA,EAAQx4E,GAC7BggF,GAIJ,OAAOhgF,GAOT8/B,EAAOhnC,UAAUm2C,KAAO,SAAetsC,EAAK61E,EAAOC,EAAKb,GAEtD,GAAmB,iBAARj1E,EAAkB,CAS3B,GARqB,iBAAV61E,GACTZ,EAAWY,EACXA,EAAQ,EACRC,EAAM7hF,KAAKyD,QACa,iBAARo+E,IAChBb,EAAWa,EACXA,EAAM7hF,KAAKyD,QAEM,IAAfsI,EAAItI,OAAc,CACpB,IAAIghB,EAAO1Y,EAAIwC,WAAW,GACtBkW,EAAO,MACT1Y,EAAM0Y,GAGV,QAAiBlV,IAAbyxE,GAA8C,iBAAbA,EACnC,MAAM,IAAI93E,UAAU,6BAEtB,GAAwB,iBAAb83E,IAA0B93C,EAAO+3C,WAAWD,GACrD,MAAM,IAAI93E,UAAU,qBAAuB83E,OAErB,iBAARj1E,IAChBA,GAAY,KAId,GAAI61E,EAAQ,GAAK5hF,KAAKyD,OAASm+E,GAAS5hF,KAAKyD,OAASo+E,EACpD,MAAM,IAAInB,WAAW,sBAGvB,GAAImB,GAAOD,EACT,OAAO5hF,KAQT,IAAIM,EACJ,GANAshF,KAAkB,EAClBC,OAActyE,IAARsyE,EAAoB7hF,KAAKyD,OAASo+E,IAAQ,EAE3C91E,IAAKA,EAAM,GAGG,iBAARA,EACT,IAAKzL,EAAIshF,EAAOthF,EAAIuhF,IAAOvhF,EACzBN,KAAKM,GAAKyL,MAEP,CACL,IAAI2yD,EAAQx1B,EAAOn8B,SAAShB,GACxBA,EACA01E,EAAY,IAAIv4C,EAAOn9B,EAAKi1E,GAAUz5E,YACtC6B,EAAMs1D,EAAMj7D,OAChB,IAAKnD,EAAI,EAAGA,EAAIuhF,EAAMD,IAASthF,EAC7BN,KAAKM,EAAIshF,GAASljB,EAAMp+D,EAAI8I,GAIhC,OAAOpJ,MAMT,IAAIqpF,EAAoB,qBAmBxB,SAASpD,EAAOlkF,GACd,OAAIA,EAAI,GAAW,IAAMA,EAAEwF,SAAS,IAC7BxF,EAAEwF,SAAS,IAGpB,SAASk6E,EAAal5C,EAAQk7C,GAE5B,IAAIW,EADJX,EAAQA,GAAS6F,IAMjB,IAJA,IAAI7lF,EAAS8kC,EAAO9kC,OAChB8lF,EAAgB,KAChB7qB,EAAQ,GAEHp+D,EAAI,EAAGA,EAAImD,IAAUnD,EAAG,CAI/B,IAHA8jF,EAAY77C,EAAOh6B,WAAWjO,IAGd,OAAU8jF,EAAY,MAAQ,CAE5C,IAAKmF,EAAe,CAElB,GAAInF,EAAY,MAAQ,EAEjBX,GAAS,IAAM,GAAG/kB,EAAM/5D,KAAK,IAAM,IAAM,KAC9C,SACK,GAAIrE,EAAI,IAAMmD,EAAQ,EAEtBggF,GAAS,IAAM,GAAG/kB,EAAM/5D,KAAK,IAAM,IAAM,KAC9C,SAIF4kF,EAAgBnF,EAEhB,SAIF,GAAIA,EAAY,MAAQ,EACjBX,GAAS,IAAM,GAAG/kB,EAAM/5D,KAAK,IAAM,IAAM,KAC9C4kF,EAAgBnF,EAChB,SAIFA,EAAkE,OAArDmF,EAAgB,OAAU,GAAKnF,EAAY,YAC/CmF,IAEJ9F,GAAS,IAAM,GAAG/kB,EAAM/5D,KAAK,IAAM,IAAM,KAMhD,GAHA4kF,EAAgB,KAGZnF,EAAY,IAAM,CACpB,IAAKX,GAAS,GAAK,EAAG,MACtB/kB,EAAM/5D,KAAKy/E,QACN,GAAIA,EAAY,KAAO,CAC5B,IAAKX,GAAS,GAAK,EAAG,MACtB/kB,EAAM/5D,KACJy/E,GAAa,EAAM,IACP,GAAZA,EAAmB,UAEhB,GAAIA,EAAY,MAAS,CAC9B,IAAKX,GAAS,GAAK,EAAG,MACtB/kB,EAAM/5D,KACJy/E,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,SAEhB,MAAIA,EAAY,SASrB,MAAM,IAAI9+E,MAAM,sBARhB,IAAKm+E,GAAS,GAAK,EAAG,MACtB/kB,EAAM/5D,KACJy/E,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,MAOzB,OAAO1lB,EA4BT,SAASgjB,EAAe/1E,GACtB,OAAOlC,EAAO+/E,YAhIhB,SAAsB79E,GAIpB,IAFAA,EAUF,SAAqBA,GACnB,OAAIA,EAAIyC,KAAazC,EAAIyC,OAClBzC,EAAI0C,QAAQ,aAAc,IAZ3Bo7E,CAAW99E,GAAK0C,QAAQg7E,EAAmB,KAEzC5lF,OAAS,EAAG,MAAO,GAE3B,KAAOkI,EAAIlI,OAAS,GAAM,GACxBkI,GAAY,IAEd,OAAOA,EAuHmB+9E,CAAY/9E,IAGxC,SAASu3E,EAAYzgD,EAAKknD,EAAK7G,EAAQr/E,GACrC,IAAK,IAAInD,EAAI,EAAGA,EAAImD,KACbnD,EAAIwiF,GAAU6G,EAAIlmF,QAAYnD,GAAKmiC,EAAIh/B,UADhBnD,EAE5BqpF,EAAIrpF,EAAIwiF,GAAUrgD,EAAIniC,GAExB,OAAOA,K,gCCvvDT,IAAIotC,EAGJA,EAAI,WACH,OAAO1tC,KADJ,GAIJ,IAEC0tC,EAAIA,GAAK,IAAIk8C,SAAS,cAAb,GACR,MAAOxmF,GAEc,iBAAXX,SAAqBirC,EAAIjrC,QAOrC7C,EAAOD,QAAU+tC,G,6BCjBjB/tC,EAAQ4vD,WAuCR,SAAqBs6B,GACnB,IAAIC,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAC3B,OAAuC,GAA9BE,EAAWC,GAAuB,EAAKA,GA1ClDtqF,EAAQ6pF,YAiDR,SAAsBK,GACpB,IAAIK,EAcA5pF,EAbAwpF,EAAOC,EAAQF,GACfG,EAAWF,EAAK,GAChBG,EAAkBH,EAAK,GAEvBjiF,EAAM,IAAIsiF,EAVhB,SAAsBN,EAAKG,EAAUC,GACnC,OAAuC,GAA9BD,EAAWC,GAAuB,EAAKA,EAS9BG,CAAYP,EAAKG,EAAUC,IAEzCI,EAAU,EAGVjhF,EAAM6gF,EAAkB,EACxBD,EAAW,EACXA,EAGJ,IAAK1pF,EAAI,EAAGA,EAAI8I,EAAK9I,GAAK,EACxB4pF,EACGI,EAAUT,EAAIt7E,WAAWjO,KAAO,GAChCgqF,EAAUT,EAAIt7E,WAAWjO,EAAI,KAAO,GACpCgqF,EAAUT,EAAIt7E,WAAWjO,EAAI,KAAO,EACrCgqF,EAAUT,EAAIt7E,WAAWjO,EAAI,IAC/BuH,EAAIwiF,KAAcH,GAAO,GAAM,IAC/BriF,EAAIwiF,KAAcH,GAAO,EAAK,IAC9BriF,EAAIwiF,KAAmB,IAANH,EAGK,IAApBD,IACFC,EACGI,EAAUT,EAAIt7E,WAAWjO,KAAO,EAChCgqF,EAAUT,EAAIt7E,WAAWjO,EAAI,KAAO,EACvCuH,EAAIwiF,KAAmB,IAANH,GAGK,IAApBD,IACFC,EACGI,EAAUT,EAAIt7E,WAAWjO,KAAO,GAChCgqF,EAAUT,EAAIt7E,WAAWjO,EAAI,KAAO,EACpCgqF,EAAUT,EAAIt7E,WAAWjO,EAAI,KAAO,EACvCuH,EAAIwiF,KAAcH,GAAO,EAAK,IAC9BriF,EAAIwiF,KAAmB,IAANH,GAGnB,OAAOriF,GA3FTlI,EAAQkkF,cAkHR,SAAwB0G,GAQtB,IAPA,IAAIL,EACA9gF,EAAMmhF,EAAM9mF,OACZ+mF,EAAaphF,EAAM,EACnBu/B,EAAQ,GAIHroC,EAAI,EAAGmqF,EAAOrhF,EAAMohF,EAAYlqF,EAAImqF,EAAMnqF,GAH9B,MAInBqoC,EAAMhkC,KAAK+lF,EAAYH,EAAOjqF,EAAIA,EAJf,MAIqCmqF,EAAOA,EAAQnqF,EAJpD,QAQF,IAAfkqF,GACFN,EAAMK,EAAMnhF,EAAM,GAClBu/B,EAAMhkC,KACJgmF,EAAOT,GAAO,GACdS,EAAQT,GAAO,EAAK,IACpB,OAEsB,IAAfM,IACTN,GAAOK,EAAMnhF,EAAM,IAAM,GAAKmhF,EAAMnhF,EAAM,GAC1Cu/B,EAAMhkC,KACJgmF,EAAOT,GAAO,IACdS,EAAQT,GAAO,EAAK,IACpBS,EAAQT,GAAO,EAAK,IACpB,MAIJ,OAAOvhD,EAAM/iC,KAAK,KAzIpB,IALA,IAAI+kF,EAAS,GACTL,EAAY,GACZH,EAA4B,oBAAfr9E,WAA6BA,WAAahF,MAEvD2c,EAAO,mEACFnkB,EAAI,EAAG8I,EAAMqb,EAAKhhB,OAAQnD,EAAI8I,IAAO9I,EAC5CqqF,EAAOrqF,GAAKmkB,EAAKnkB,GACjBgqF,EAAU7lE,EAAKlW,WAAWjO,IAAMA,EAQlC,SAASypF,EAASF,GAChB,IAAIzgF,EAAMygF,EAAIpmF,OAEd,GAAI2F,EAAM,EAAI,EACZ,MAAM,IAAI9D,MAAM,kDAKlB,IAAI0kF,EAAWH,EAAIp6E,QAAQ,KAO3B,OANkB,IAAdu6E,IAAiBA,EAAW5gF,GAMzB,CAAC4gF,EAJcA,IAAa5gF,EAC/B,EACA,EAAK4gF,EAAW,GAsEtB,SAASU,EAAaH,EAAO3I,EAAOC,GAGlC,IAFA,IAAIqI,EARoBU,EASpBC,EAAS,GACJvqF,EAAIshF,EAAOthF,EAAIuhF,EAAKvhF,GAAK,EAChC4pF,GACIK,EAAMjqF,IAAM,GAAM,WAClBiqF,EAAMjqF,EAAI,IAAM,EAAK,QACP,IAAfiqF,EAAMjqF,EAAI,IACbuqF,EAAOlmF,KAdFgmF,GADiBC,EAeMV,IAdT,GAAK,IACxBS,EAAOC,GAAO,GAAK,IACnBD,EAAOC,GAAO,EAAI,IAClBD,EAAa,GAANC,IAaT,OAAOC,EAAOjlF,KAAK,IAjGrB0kF,EAAU,IAAI/7E,WAAW,IAAM,GAC/B+7E,EAAU,IAAI/7E,WAAW,IAAM,I;;AClB/B5O,EAAQisC,KAAO,SAAUv+B,EAAQy1E,EAAQgI,EAAMC,EAAMC,GACnD,IAAI5nF,EAAG1C,EACHuqF,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACT9qF,EAAIwqF,EAAQE,EAAS,EAAK,EAC1BpqF,EAAIkqF,GAAQ,EAAI,EAChBzoF,EAAIgL,EAAOy1E,EAASxiF,GAOxB,IALAA,GAAKM,EAELwC,EAAIf,GAAM,IAAO+oF,GAAU,EAC3B/oF,KAAQ+oF,EACRA,GAASH,EACFG,EAAQ,EAAGhoF,EAAS,IAAJA,EAAWiK,EAAOy1E,EAASxiF,GAAIA,GAAKM,EAAGwqF,GAAS,GAKvE,IAHA1qF,EAAI0C,GAAM,IAAOgoF,GAAU,EAC3BhoF,KAAQgoF,EACRA,GAASL,EACFK,EAAQ,EAAG1qF,EAAS,IAAJA,EAAW2M,EAAOy1E,EAASxiF,GAAIA,GAAKM,EAAGwqF,GAAS,GAEvE,GAAU,IAANhoF,EACFA,EAAI,EAAI+nF,MACH,IAAI/nF,IAAM8nF,EACf,OAAOxqF,EAAI+zD,IAAsB60B,KAAdjnF,GAAK,EAAI,GAE5B3B,GAAQqV,KAAK4O,IAAI,EAAGomE,GACpB3nF,GAAQ+nF,EAEV,OAAQ9oF,GAAK,EAAI,GAAK3B,EAAIqV,KAAK4O,IAAI,EAAGvhB,EAAI2nF,IAG5CprF,EAAQ+nD,MAAQ,SAAUr6C,EAAQ9L,EAAOuhF,EAAQgI,EAAMC,EAAMC,GAC3D,IAAI5nF,EAAG1C,EAAGC,EACNsqF,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBG,EAAe,KAATN,EAAch1E,KAAK4O,IAAI,GAAI,IAAM5O,KAAK4O,IAAI,GAAI,IAAM,EAC1DrkB,EAAIwqF,EAAO,EAAKE,EAAS,EACzBpqF,EAAIkqF,EAAO,GAAK,EAChBzoF,EAAId,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQwU,KAAKG,IAAI3U,GAEbmzD,MAAMnzD,IAAUA,IAAU+nF,KAC5B5oF,EAAIg0D,MAAMnzD,GAAS,EAAI,EACvB6B,EAAI8nF,IAEJ9nF,EAAI2S,KAAK4+C,MAAM5+C,KAAKmE,IAAI3Y,GAASwU,KAAKu1E,KAClC/pF,GAASZ,EAAIoV,KAAK4O,IAAI,GAAIvhB,IAAM,IAClCA,IACAzC,GAAK,IAGLY,GADE6B,EAAI+nF,GAAS,EACNE,EAAK1qF,EAEL0qF,EAAKt1E,KAAK4O,IAAI,EAAG,EAAIwmE,IAEpBxqF,GAAK,IACfyC,IACAzC,GAAK,GAGHyC,EAAI+nF,GAASD,GACfxqF,EAAI,EACJ0C,EAAI8nF,GACK9nF,EAAI+nF,GAAS,GACtBzqF,GAAMa,EAAQZ,EAAK,GAAKoV,KAAK4O,IAAI,EAAGomE,GACpC3nF,GAAQ+nF,IAERzqF,EAAIa,EAAQwU,KAAK4O,IAAI,EAAGwmE,EAAQ,GAAKp1E,KAAK4O,IAAI,EAAGomE,GACjD3nF,EAAI,IAID2nF,GAAQ,EAAG19E,EAAOy1E,EAASxiF,GAAS,IAAJI,EAAUJ,GAAKM,EAAGF,GAAK,IAAKqqF,GAAQ,GAI3E,IAFA3nF,EAAKA,GAAK2nF,EAAQrqF,EAClBuqF,GAAQF,EACDE,EAAO,EAAG59E,EAAOy1E,EAASxiF,GAAS,IAAJ8C,EAAU9C,GAAKM,EAAGwC,GAAK,IAAK6nF,GAAQ,GAE1E59E,EAAOy1E,EAASxiF,EAAIM,IAAU,IAAJyB,I,cCnF5B,IAAIkF,EAAW,GAAGA,SAElB3H,EAAOD,QAAUmI,MAAMC,SAAW,SAAUF,GAC1C,MAA6B,kBAAtBN,EAAS9G,KAAKoH,K,6BCDvB,IAAI25B,EAAa,EAAQ,IASzB5hC,EAAOD,QAAU,SAAgBmlB,EAASilB,EAAQnpB,GAChD,IAAIsmB,EAAiBtmB,EAAS6gB,OAAOyF,eAChCtmB,EAAS4D,QAAW0iB,IAAkBA,EAAetmB,EAAS4D,QAGjEulB,EAAO,IAAIvI,EACT,mCAAqC5gB,EAAS4D,OAC9C,CAACgd,EAAW0K,gBAAiB1K,EAAWqF,kBAAkB9wB,KAAK4+C,MAAM/zC,EAAS4D,OAAS,KAAO,GAC9F5D,EAAS6gB,OACT7gB,EAAS2I,QACT3I,IAPFkE,EAAQlE,K,6BCZZ,IAAI2gB,EAAQ,EAAQ,GAEpB3hC,EAAOD,QACL4hC,EAAM7zB,uBAIK,CACLg6C,MAAO,SAAe7mD,EAAMU,EAAOgqF,EAAS1hC,EAAM2hC,EAAQC,GACxD,IAAIC,EAAS,GACbA,EAAO/mF,KAAK9D,EAAO,IAAM6F,mBAAmBnF,IAExCggC,EAAMh0B,SAASg+E,IACjBG,EAAO/mF,KAAK,WAAa,IAAI+O,KAAK63E,GAASI,eAGzCpqD,EAAMj0B,SAASu8C,IACjB6hC,EAAO/mF,KAAK,QAAUklD,GAGpBtoB,EAAMj0B,SAASk+E,IACjBE,EAAO/mF,KAAK,UAAY6mF,IAGX,IAAXC,GACFC,EAAO/mF,KAAK,UAGdjC,SAASgpF,OAASA,EAAO9lF,KAAK,OAGhCgmC,KAAM,SAAc/qC,GAClB,IAAIw8D,EAAQ36D,SAASgpF,OAAOruB,MAAM,IAAI/H,OAAO,aAAez0D,EAAO,cACnE,OAAQw8D,EAAQuuB,mBAAmBvuB,EAAM,IAAM,MAGjDv3D,OAAQ,SAAgBjF,GACtBb,KAAK0nD,MAAM7mD,EAAM,GAAI6S,KAAKD,MAAQ,SAO/B,CACLi0C,MAAO,aACP9b,KAAM,WAAkB,OAAO,MAC/B9lC,OAAQ,e,6BCzChBlG,EAAOD,QAAU,SAAuB4uB,GAItC,MAAO,8BAA8BvlB,KAAKulB,K,6BCH5C3uB,EAAOD,QAAU,SAAqBkkB,EAASgoE,GAC7C,OAAOA,EACHhoE,EAAQxV,QAAQ,OAAQ,IAAM,IAAMw9E,EAAYx9E,QAAQ,OAAQ,IAChEwV,I,6BCVN,IAAI0d,EAAQ,EAAQ,GAIhBuqD,EAAoB,CACtB,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,cAgB5BlsF,EAAOD,QAAU,SAAsBykB,GACrC,IACIviB,EACAkK,EACAzL,EAHA0iF,EAAS,GAKb,OAAK5+D,GAELmd,EAAMp8B,QAAQif,EAAQgsB,MAAM,OAAO,SAAgBxjB,GAKjD,GAJAtsB,EAAIssB,EAAKnd,QAAQ,KACjB5N,EAAM0/B,EAAMnzB,KAAKwe,EAAKgb,OAAO,EAAGtnC,IAAIsL,cACpCG,EAAMw1B,EAAMnzB,KAAKwe,EAAKgb,OAAOtnC,EAAI,IAE7BuB,EAAK,CACP,GAAImhF,EAAOnhF,IAAQiqF,EAAkBr8E,QAAQ5N,IAAQ,EACnD,OAGAmhF,EAAOnhF,GADG,eAARA,GACamhF,EAAOnhF,GAAOmhF,EAAOnhF,GAAO,IAAIsC,OAAO,CAAC4H,IAEzCi3E,EAAOnhF,GAAOmhF,EAAOnhF,GAAO,KAAOkK,EAAMA,MAKtDi3E,GAnBgBA,I,6BC9BzB,IAAIzhD,EAAQ,EAAQ,GAEpB3hC,EAAOD,QACL4hC,EAAM7zB,uBAIJ,WACE,IAEIq+E,EAFAC,EAAO,kBAAkBhjF,KAAK2E,UAAUujC,WACxC+6C,EAAiBvpF,SAASqC,cAAc,KAS5C,SAASmnF,EAAW39D,GAClB,IAAIgyB,EAAOhyB,EAWX,OATIy9D,IAEFC,EAAe7mF,aAAa,OAAQm7C,GACpCA,EAAO0rC,EAAe1rC,MAGxB0rC,EAAe7mF,aAAa,OAAQm7C,GAG7B,CACLA,KAAM0rC,EAAe1rC,KACrBtU,SAAUggD,EAAehgD,SAAWggD,EAAehgD,SAAS59B,QAAQ,KAAM,IAAM,GAChF89E,KAAMF,EAAeE,KACrBC,OAAQH,EAAeG,OAASH,EAAeG,OAAO/9E,QAAQ,MAAO,IAAM,GAC3EshB,KAAMs8D,EAAet8D,KAAOs8D,EAAet8D,KAAKthB,QAAQ,KAAM,IAAM,GACpEg+E,SAAUJ,EAAeI,SACzBC,KAAML,EAAeK,KACrBC,SAAiD,MAAtCN,EAAeM,SAASlmC,OAAO,GACxC4lC,EAAeM,SACf,IAAMN,EAAeM,UAY3B,OARAR,EAAYG,EAAWzpF,OAAO0qB,SAASozB,MAQhC,SAAyBisC,GAC9B,IAAIxJ,EAAUzhD,EAAMj0B,SAASk/E,GAAeN,EAAWM,GAAcA,EACrE,OAAQxJ,EAAO/2C,WAAa8/C,EAAU9/C,UAClC+2C,EAAOmJ,OAASJ,EAAUI,MAhDlC,GAsDS,WACL,OAAO,I,6BC9DfvsF,EAAOD,QAAU,SAAuB4uB,GACtC,IAAI8uC,EAAQ,4BAA4B9W,KAAKh4B,GAC7C,OAAO8uC,GAASA,EAAM,IAAM,K,cCH9Bz9D,EAAOD,QAAU,M,6BCCjB,IAAI68E,EAAU,EAAQ,IAAe52D,QACjC4b,EAAa,EAAQ,IAErBw7C,EAAa,GAGjB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAU73E,SAAQ,SAAS2G,EAAMxL,GACrF08E,EAAWlxE,GAAQ,SAAmBJ,GACpC,cAAcA,IAAUI,GAAQ,KAAOxL,EAAI,EAAI,KAAO,KAAOwL,MAIjE,IAAI2gF,EAAqB,GASzBzP,EAAWp3C,aAAe,SAAsBm3C,EAAWn3D,EAAShB,GAClE,SAAS8nE,EAAcC,EAAKC,GAC1B,MAAO,WAAapQ,EAAU,0BAA6BmQ,EAAM,IAAOC,GAAQhoE,EAAU,KAAOA,EAAU,IAI7G,OAAO,SAASrjB,EAAOorF,EAAKE,GAC1B,IAAkB,IAAd9P,EACF,MAAM,IAAIv7C,EACRkrD,EAAcC,EAAK,qBAAuB/mE,EAAU,OAASA,EAAU,KACvE4b,EAAWsrD,gBAef,OAXIlnE,IAAY6mE,EAAmBE,KACjCF,EAAmBE,IAAO,EAE1BxwE,QAAQkF,KACNqrE,EACEC,EACA,+BAAiC/mE,EAAU,8CAK1Cm3D,GAAYA,EAAUx7E,EAAOorF,EAAKE,KAkC7CjtF,EAAOD,QAAU,CACfw9E,cAxBF,SAAuBv5E,EAASmpF,EAAQC,GACtC,GAAuB,iBAAZppF,EACT,MAAM,IAAI49B,EAAW,4BAA6BA,EAAWyrD,sBAI/D,IAFA,IAAI/nF,EAAOlE,OAAOkE,KAAKtB,GACnBtD,EAAI4E,EAAKzB,OACNnD,KAAM,GAAG,CACd,IAAIqsF,EAAMznF,EAAK5E,GACXy8E,EAAYgQ,EAAOJ,GACvB,GAAI5P,EAAJ,CACE,IAAIx7E,EAAQqC,EAAQ+oF,GAChBnpF,OAAmB+L,IAAVhO,GAAuBw7E,EAAUx7E,EAAOorF,EAAK/oF,GAC1D,IAAe,IAAXJ,EACF,MAAM,IAAIg+B,EAAW,UAAYmrD,EAAM,YAAcnpF,EAAQg+B,EAAWyrD,2BAI5E,IAAqB,IAAjBD,EACF,MAAM,IAAIxrD,EAAW,kBAAoBmrD,EAAKnrD,EAAW0rD,kBAO7DlQ,WAAYA,I,6BClFd,IAAI96C,EAAgB,EAAQ,IAQ5B,SAASo6C,EAAY6Q,GACnB,GAAwB,mBAAbA,EACT,MAAM,IAAIjkF,UAAU,gCAGtB,IAAIkkF,EAEJptF,KAAKy9E,QAAU,IAAI54D,SAAQ,SAAyBC,GAClDsoE,EAAiBtoE,KAGnB,IAAIO,EAAQrlB,KAGZA,KAAKy9E,QAAQn6B,MAAK,SAASjpC,GACzB,GAAKgL,EAAMgoE,WAAX,CAEA,IAAI/sF,EACAC,EAAI8kB,EAAMgoE,WAAW5pF,OAEzB,IAAKnD,EAAI,EAAGA,EAAIC,EAAGD,IACjB+kB,EAAMgoE,WAAW/sF,GAAG+Z,GAEtBgL,EAAMgoE,WAAa,SAIrBrtF,KAAKy9E,QAAQn6B,KAAO,SAASgqC,GAC3B,IAAIC,EAEA9P,EAAU,IAAI54D,SAAQ,SAASC,GACjCO,EAAMna,UAAU4Z,GAChByoE,EAAWzoE,KACVw+B,KAAKgqC,GAMR,OAJA7P,EAAQpjE,OAAS,WACfgL,EAAM8kB,YAAYojD,IAGb9P,GAGT0P,GAAS,SAAgBvoE,GACnBS,EAAMm5D,SAKVn5D,EAAMm5D,OAAS,IAAIt8C,EAActd,GACjCwoE,EAAe/nE,EAAMm5D,YAOzBlC,EAAYp6E,UAAUq8E,iBAAmB,WACvC,GAAIv+E,KAAKw+E,OACP,MAAMx+E,KAAKw+E,QAQflC,EAAYp6E,UAAUgJ,UAAY,SAAmBC,GAC/CnL,KAAKw+E,OACPrzE,EAASnL,KAAKw+E,QAIZx+E,KAAKqtF,WACPrtF,KAAKqtF,WAAW1oF,KAAKwG,GAErBnL,KAAKqtF,WAAa,CAACliF,IAQvBmxE,EAAYp6E,UAAUioC,YAAc,SAAqBh/B,GACvD,GAAKnL,KAAKqtF,WAAV,CAGA,IAAIjpF,EAAQpE,KAAKqtF,WAAW59E,QAAQtE,IACrB,IAAX/G,GACFpE,KAAKqtF,WAAW1lF,OAAOvD,EAAO,KAQlCk4E,EAAYvyE,OAAS,WACnB,IAAIsQ,EAIJ,MAAO,CACLgL,MAJU,IAAIi3D,GAAY,SAAkB37E,GAC5C0Z,EAAS1Z,KAIT0Z,OAAQA,IAIZza,EAAOD,QAAU28E,G,6BChGjB18E,EAAOD,QAAU,SAAgB+Q,GAC/B,OAAO,SAAc7I,GACnB,OAAO6I,EAASmD,MAAM,KAAMhM,M,6BCtBhC,IAAI05B,EAAQ,EAAQ,GAQpB3hC,EAAOD,QAAU,SAAsB6tF,GACrC,OAAOjsD,EAAMr1B,SAASshF,KAAsC,IAAzBA,EAAQ5Q,e,6BCX7C,mBAEel+C,YAAO,G,wFCClB96B,EAAU,CAEd,OAAiB,OACjB,WAAoB,G,GAEP,IAAI,IAASA,GAIX,IAAQ6pF,O,OCTnB,EAAU,CAEd,OAAiB,OACjB,WAAoB,G,GAEP,IAAI,IAAS,GAIX,IAAQA,O,OCTnB,EAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,IAAS,GAIX,IAAQA,O,opBCsCvB,MAAMC,UAA4BjwD,IAAM6E,UAAoCx5B,eAAA0K,GAAA,SAAAA,GAAA1I,EAAA,eACzC,IAAEA,EAAA,YACpB,IAAEA,EAAA,gBACE,IAAEA,EAAA,aACb,CACN6iF,UAAU,IACX7iF,EAAA,cAES8iF,IACR5tF,KAAK6tF,QAAQlpF,KAAKipF,GAClB5tF,KAAK2vB,KAAO5Z,KAAKyM,SAASjb,SAAS,IAAIkb,UAAU,EAAG,MACrD3X,EAAA,sBAQgB,KACX9K,KAAK2vB,OAAS3vB,KAAK8tF,WAIvB9tF,KAAK6tF,QAAU7tF,KAAK6tF,QAAQ35E,KAAK,CAACjG,EAAGC,KACnC,IAAKlO,KAAK0O,MAAMq/E,uBAAwB,OAAO,EAC/C,MAAMC,EAAgBhuF,KAAK0O,MAAMq/E,uBAAuBhzB,wBAClDkzB,EAAQhgF,EAAIA,EAAE8sD,wBAA0B,CAAE3qD,IAAK,EAAGk0B,OAAQ,GAC1D4pD,EAAQhgF,EAAIA,EAAE6sD,wBAA0B,CAAE3qD,IAAK,EAAGk0B,OAAQ,GAMhE,OAHkB2pD,EAAM79E,IAAM49E,EAAc59E,KAC1B89E,EAAM99E,IAAM49E,EAAc59E,OAK9CpQ,KAAK8tF,SAAW9tF,KAAK2vB,MAhBZ3vB,KAAK6tF,UAoBhB/iF,EAAA,8BAGiCoa,UAC/B,IAAKllB,KAAK0O,MAAMq/E,yBAA2Bh8E,EAAOnC,KAAM,OACxD,MAAMu+E,EAAOnuF,KAAKouF,iBA5FRC,cAgGG,EAhGY,IAAIxpE,QAASC,GAAYhR,WAAWgR,EAASupE,KAmGtE,MAAML,EAAgBhuF,KAAK0O,MAAMq/E,uBAAuBhzB,wBAClDuzB,EAAWv8E,EAAOnC,KAAKmrD,wBAC7B,IAAI32D,GAAS,EAEb,IAAK,IAAI9D,EAAI6tF,EAAK1qF,OAAS,EAAGnD,GAAK,EAAGA,IACpC,GAAI6tF,EAAK7tF,GAAGiuF,SAASx8E,EAAOnC,MAAO,CACjCxL,EAAQ9D,EACR,MAIJ,IAAe,IAAX8D,EAIF,YAHA+X,QAAQkF,KACN,qGAKJ,IAAImtE,GAAa,EASjB,GAPAL,EAAKtlF,MAAMzE,GAAOe,QAASq6B,IACzB,MAAMivD,EAAOjvD,EAAGu7B,yBACZ0zB,EAAKnqD,OAAS0pD,EAAc1pD,QAAUmqD,EAAKr+E,IAAM49E,EAAc59E,OACjEo+E,GAAa,MAIZA,EAAY,OAEjB,MAAM1rF,EACM,IAAVsB,EACI,EACApE,KAAK0O,MAAMq/E,uBAAuBv9E,WACjC89E,EAASl+E,IACR49E,EAAc59E,KACbpQ,KAAK0O,MAAMggF,oBAAsB,IAC1C1uF,KAAK0O,MAAMq/E,uBAAuBv9E,UAAY1N,EAE9C,MAAM6rF,EAAc7rF,EAAS,EACzB9C,KAAK2sB,MAAMghE,WAAagB,GAC1B3uF,KAAKs+B,SAAS,CAAEqvD,SAAUgB,MAI9B3mD,kBACE,MAAO,CACL6lD,QAAS7tF,KAAK6tF,QACde,OAAQ5uF,KAAK4uF,OACbC,uBAAwB7uF,KAAK6uF,wBAIjCrwD,uBACEx+B,KAAK6tF,QAAU,GACf7tF,KAAK2vB,KAAO,GACZ3vB,KAAK8tF,SAAW,GAGlBrvD,SACE,MACEsvD,uBAAwB71D,EACxBw2D,mBAAoB5wB,KACjB5hD,GACDlc,KAAK0O,MAET,OACE+uB,IAAA14B,cAAA,MAAA+pF,EAAA,CACEl9B,UAAU,uBACVm9B,gBAAe/uF,KAAK2sB,MAAMghE,UACtBzxE,GAEHlc,KAAK0O,MAAM8N,WAInB1R,EAhIK4iF,EAAmB,oBAaI,CACzBG,QAASpwD,IAAMI,UAAU09C,QAAQ99C,IAAMI,UAAU49C,WAAWuT,cAC5DJ,OAAQnxD,IAAMI,UAAUzqB,KACxBy7E,uBAAwBpxD,IAAMI,UAAUzqB,OAkHrC,MAAM67E,EAAuE,CAClFL,OAAS12D,MACT22D,uBAAwBA,OACxBhB,QAAS,IAGEqB,EAA0B,CACrCrB,QAASpwD,IAAMI,UAAU09C,QAAQ99C,IAAMI,UAAU49C,WAAWuT,cAC5DJ,OAAQnxD,IAAMI,UAAUzqB,KACxBy7E,uBAAwBpxD,IAAMI,UAAUzqB,MAG3Bs6E,Q,6bClLf,MAAMyB,UAAsB1xD,IAAM6E,UAAiBx5B,eAAA0K,GAAA,SAAAA,GAAA1I,EAAA,WACZ,MAAIA,EAAA,eAC/BmkF,GAGVhxD,oBACMj+B,KAAK4tF,KAAO5tF,KAAKo8E,QAAQwS,QAC3B5uF,KAAKo8E,QAAQwS,OAAO5uF,KAAK4tF,KAI7BnvD,SACE,OACEhB,IAAA14B,cAAA,OAAK6sD,UAAU,iBAAiBg8B,IAAMxqF,GAAOpD,KAAK4tF,IAAMxqF,GACrDpD,KAAK0O,MAAM8N,WAInB1R,EAlBKqkF,EAAa,eAGKD,GAiBTC,Q,uNC7Bf,MAAMC,UAAmB3xD,IAAM6E,UAG7B7D,SACE,MAAMmzB,EAAY,CAAC,cAAe5xD,KAAK0O,MAAMkjD,WAAWhsD,KAAK,KAE7D,OACE63B,IAAA14B,cAACoqF,EAAa,KACZ1xD,IAAA14B,cAAA,SAAA+pF,EAAA,GAAY9uF,KAAK0O,MAAK,CAAEkjD,UAAWA,IAChC5xD,KAAK0O,MAAM8N,YAOP4yE,QClBf,MAAMC,UAAqB5xD,IAAM6E,UAC/B7D,SACE,OACEhB,IAAA14B,cAAA,OACEiL,MAAOhQ,KAAK0O,MAAMsB,MAClBF,OAAQ9P,KAAK0O,MAAMoB,OACnBw/E,QAAQ,YACRj3C,KAAK,OACLk3C,MAAM,8BAEN9xD,IAAA14B,cAAA,QAAMnE,EAAE,oCAAoCy3C,KAAK,UACjD5a,IAAA14B,cAAA,QAAMnE,EAAE,sCAAsCy3C,KAAK,UACnD5a,IAAA14B,cAAA,QACEnE,EAAE,uFACFy3C,KAAK,YAOAg3C,QCrBf,MAAMG,UAAiB/xD,IAAM6E,UAC3B7D,SACE,OACEhB,IAAA14B,cAAA,OACEiL,MAAOhQ,KAAK0O,MAAMsB,MAClBF,OAAQ9P,KAAK0O,MAAMoB,OACnBw/E,QAAQ,YACRj3C,KAAK,OACLk3C,MAAM,8BAEN9xD,IAAA14B,cAAA,QACEi1C,SAAS,UACTy1C,SAAS,UACT7uF,EAAE,opBACFy3C,KAAK,YAOAm3C,QCtBf,MAAME,UAAiBjyD,IAAM6E,UAC3Bx5B,YAAY4F,GACVkZ,MAAMlZ,GAGR+vB,SACE,OACEhB,IAAA14B,cAAA,OACEiL,MAAOhQ,KAAK0O,MAAMsB,MAClBF,OAAQ9P,KAAK0O,MAAMoB,OACnBw/E,QAAQ,YACRj3C,KAAK,OACLk3C,MAAM,8BAEN9xD,IAAA14B,cAAA,QACEnE,EAAE,soBACFy3C,KAAK,cAOAq3C,QCtBf,MAAMC,UAAkBlyD,IAAM6E,UAC5B7D,SACE,OACEhB,IAAA14B,cAAA,OACEiL,MAAOhQ,KAAK0O,MAAMsB,MAClBF,OAAQ9P,KAAK0O,MAAMoB,OACnBw/E,QAAQ,YACRj3C,KAAK,OACLk3C,MAAM,8BAEN9xD,IAAA14B,cAAA,KAAG6qF,SAAS,wBACVnyD,IAAA14B,cAAA,QACEi1C,SAAS,UACTy1C,SAAS,UACT7uF,EAAE,8IACFy3C,KAAK,aAGT5a,IAAA14B,cAAA,YACE04B,IAAA14B,cAAA,YAAUf,GAAG,kBACXy5B,IAAA14B,cAAA,QAAMiL,MAAM,KAAKF,OAAO,KAAKuoC,KAAK,cAQ/Bs3C,QC5Bf,MAAME,UAAoBpyD,IAAM6E,UAC9B7D,SACE,OACEhB,IAAA14B,cAAA,OACEiL,MAAOhQ,KAAK0O,MAAMsB,MAClBF,OAAQ9P,KAAK0O,MAAMoB,OACnBw/E,QAAQ,YACRj3C,KAAK,OACLk3C,MAAM,8BAEN9xD,IAAA14B,cAAA,QACEi1C,SAAS,UACTy1C,SAAS,UACT7uF,EAAE,okBACFy3C,KAAK,cAOAw3C,QCrBf,MAAMC,UAAoBryD,IAAM6E,UAC9B7D,SACE,OACEhB,IAAA14B,cAAA,OACEiL,MAAOhQ,KAAK0O,MAAMsB,MAClBF,OAAQ9P,KAAK0O,MAAMoB,OACnBw/E,QAAQ,YACRj3C,KAAK,OACLk3C,MAAM,8BAEN9xD,IAAA14B,cAAA,QACEi1C,SAAS,UACTy1C,SAAS,UACT7uF,EAAE,yIACFy3C,KAAK,cAOAy3C,QCFAC,MAnBKrhF,GAEhB+uB,IAAA14B,cAAA,OACEiL,MAAOtB,EAAMsB,MACbF,OAAQpB,EAAMoB,OACdw/E,QAAQ,YACRj3C,KAAK,OACLk3C,MAAM,8BAEN9xD,IAAA14B,cAAA,QACEi1C,SAAS,UACTy1C,SAAS,UACT7uF,EAAE,qJACFy3C,KAAK,WCME23C,MAnBOthF,GAElB+uB,IAAA14B,cAAA,OACEiL,MAAOtB,EAAMsB,MACbF,OAAQpB,EAAMoB,OACdw/E,QAAQ,YACRj3C,KAAK,OACLk3C,MAAM,8BAEN9xD,IAAA14B,cAAA,QACEi1C,SAAS,UACTy1C,SAAS,UACT7uF,EAAE,6HACFy3C,KAAK,WCME43C,MAnBIvhF,GAEf+uB,IAAA14B,cAAA,OACEiL,MAAOtB,EAAMsB,MACbF,OAAQpB,EAAMoB,OACdw/E,QAAQ,YACRj3C,KAAK,OACLk3C,MAAM,8BAEN9xD,IAAA14B,cAAA,QACEi1C,SAAS,UACTy1C,SAAS,UACT7uF,EAAE,qMACFy3C,KAAK,aCME63C,MAnBQxhF,GAEnB+uB,IAAA14B,cAAA,OACEiL,MAAOtB,EAAMsB,MACbF,OAAQpB,EAAMoB,OACdw/E,QAAQ,YACRj3C,KAAK,OACLk3C,MAAM,8BAEN9xD,IAAA14B,cAAA,QACEi1C,SAAS,UACTy1C,SAAS,UACT7uF,EAAE,gHACFy3C,KAAK,aCbb,MAAM83C,UAAkB1yD,IAAM6E,UAC5Bx5B,YAAY4F,GACVkZ,MAAMlZ,GAGR+vB,SACE,OACEhB,IAAA14B,cAAA,OACEiL,MAAOhQ,KAAK0O,MAAMsB,MAClBF,OAAQ9P,KAAK0O,MAAMoB,OACnBw/E,QAAQ,YACRj3C,KAAK,OACLk3C,MAAM,8BAEN9xD,IAAA14B,cAAA,QACEi1C,SAAS,UACTy1C,SAAS,UACT7uF,EAAE,2tBACFy3C,KAAK,cAOA83C,QCzBf,MAAMC,UAAwB3yD,IAAM6E,UAClCx5B,YAAY4F,GACVkZ,MAAMlZ,GAGR+vB,SACE,OACEhB,IAAA14B,cAAA,OACEiL,MAAOhQ,KAAK0O,MAAMsB,MAClBF,OAAQ9P,KAAK0O,MAAMoB,OACnBw/E,QAAQ,YACRj3C,KAAK,OACLk3C,MAAM,8BAEN9xD,IAAA14B,cAAA,QACEi1C,SAAS,UACTy1C,SAAS,UACT7uF,EAAE,4MACFy3C,KAAK,cAOA+3C,QCzBf,MAAMC,UAAwB5yD,IAAM6E,UAClCx5B,YAAY4F,GACVkZ,MAAMlZ,GAGR+vB,SACE,OACEhB,IAAA14B,cAAA,OACEiL,MAAOhQ,KAAK0O,MAAMsB,MAClBF,OAAQ9P,KAAK0O,MAAMoB,OACnBw/E,QAAQ,YACRj3C,KAAK,OACLk3C,MAAM,8BAEN9xD,IAAA14B,cAAA,QACEi1C,SAAS,UACTy1C,SAAS,UACT7uF,EAAE,0PACFy3C,KAAK,cCNf,MAAMi4C,EAAc,CAClBC,SAAUlB,EACV9mB,KAAMinB,EACNhjE,KAAMkjE,EACNc,MAAOb,EACPh1D,QAASk1D,EACTY,QAASX,EACTY,OAAQX,EACRY,SAAUX,EACVY,MAAOX,EACPY,UAAWX,EACXY,MAAOX,EACPY,YAAaX,EACbY,YDAaX,GCYTY,EAAYviF,GAChB+uB,IAAA14B,cAAA,OAAKD,MAAO,CAAEkL,MAAOtB,EAAMsB,MAAOF,OAAQpB,EAAMoB,UAMlD,MAAMohF,UAAazzD,IAAM6E,UACvB7D,SACE,MAAM,SAAE0yD,EAAQ,MAAEnhF,EAAK,OAAEF,GAAW9P,KAAK0O,MAEnC0iF,EAAgBd,EAAYa,GAClC,OAAKC,EAIE3zD,IAAA14B,cAACqsF,EAAa,CAACD,SAAUA,EAAUnhF,MAAOA,EAAOF,OAAQA,IAHvD2tB,IAAA14B,cAACksF,EAAQ,CAACjhF,MAAOA,EAAOF,OAAQA,KAO9BohF,Q,QCzDX,EAAU,CAEd,OAAiB,OACjB,WAAoB,G,GAEP,IAAI,IAAS,GAIX,IAAQzD,O,udCKvB,MAAM4D,WAAuB5zD,IAAM6E,UAajC7D,SACE,MAAM,SAAE0yD,EAAQ,OAAEG,EAAM,SAAE90E,EAAQ,QAAE0mB,GAAYljC,KAAK0O,MAErD,OACE+uB,IAAA14B,cAAA,OACE6sD,UAAW,CACT,6BACA,MACA0/B,EAAS,0BAA4B,IACrC1rF,KAAK,KACPq9B,eAAcC,EACdquD,aAAW,kBAEX9zD,IAAA14B,cAACqqF,EAAU,KACT3xD,IAAA14B,cAACmsF,EAAI,CAACC,SAAUA,EAAUrhF,OAAQ,GAAIE,MAAO,MAE9CwM,IAIR1R,GAjCKumF,GAAc,cACG,kBAAgBvmF,GADjCumF,GAAc,YAGC,CACjBF,SAAUtzD,KAAU0K,OAAO2yC,WAC3B92E,MAAOy5B,KAAU8D,OAAOu5C,WACxBoW,OAAQzzD,KAAU6oC,KAAKwU,WACvB1+D,SAAUqhB,KAAUjuB,KACpBszB,QAASrF,KAAU6oC,KACnB5+B,gBAAiBjK,KAAUzqB,KAC3Bo+E,UAAW3zD,KAAU+9C,UAAU,CAAC/9C,KAAUzqB,KAAMyqB,KAAU77B,WAyB/CmhC,IClDAkuD,GDkDAluD,eAAqCkuD,I,SEjDhD,GAAU,CAEd,OAAiB,OACjB,WAAoB,G,IAEP,IAAI,KAAS,IAIX,KAAQ5D,O,eCCRgE,OAPOruF,IACpB,MAAMsuF,EAAUlxE,WAAIC,2BACpBrd,EAAEuuF,QAAiB,QAAI,QACvBrnF,eACAonF,EAAQhxE,SAASiY,wB,8bCOnB,MAAMi5D,WAA8Bn0D,IAAM6E,UAMvCx5B,eAAA0K,GAAA,SAAAA,GAAA1I,GAAA,wBACkB,CAAClK,EAAcixF,EAAaj4E,KACnC,SAANhZ,GAA2C,IAA3BZ,KAAK0O,MAAMojF,aAAqBl4E,EAAQ7H,OAC1D0/E,GAAa73E,EAAQ7H,OAAOnC,MAI1B5P,KAAK0O,MAAMuL,cACbja,KAAK0O,MAAMuL,aAAarZ,KAI5B69B,SACE,MAAM,KAAE16B,EAAI,MAAEK,GAAUpE,KAAK0O,MAC7B,OACE+uB,IAAA14B,cAACssF,GAAc,CACbF,SAAUptF,EAAKotF,SACftvF,IAAKkC,EAAKgf,MACV3e,MAAOA,EACP0jC,gBAAiB9nC,KAAK0O,MAAMo5B,gBAAgB1jC,GAC5CktF,OAAQvtF,EAAKutF,OACbt/E,SAAU,oBAAoB5N,EAC9B6V,aAAcja,KAAK+xF,kBAElBhuF,EAAKgf,QAMd,MAAMivE,WAAwBv0D,IAAM6E,UAAgCx5B,eAAA0K,GAAA,SAAAA,GAAA1I,GAAA,aAC1D,CACNgnF,YAAa,KACbG,YAAa,OACdnnF,GAAA,2BAEsB1G,GAAkB,KACnCpE,KAAK2sB,MAAMslE,cAAgB7tF,GAASpE,KAAK2sB,MAAMslE,YACjDznF,aAAS,oBAAoBxK,KAAK2sB,MAAMslE,aAI1CjyF,KAAKs+B,SAAS,CAAEwzD,YAAa1tF,EAAO6tF,YAAa,MAAQ,KACnDjyF,KAAK0O,MAAMwR,MAAM9b,IACnBpE,KAAK0O,MAAMwR,MAAM9b,GAAO8tF,cAG7BpnF,GAAA,wBAEmBoK,IACA,SAAdA,GACFlV,KAAKs+B,SAAS,CAAE2zD,YAAajyF,KAAK2sB,MAAMmlE,gBAI5CrzD,SACE,OACEhB,IAAA14B,cAAA,OAAK6sD,UAAU,oBACZ5xD,KAAK0O,MAAMwR,MAAMpW,IAAI,CAAC/F,EAAMK,IAC3Bq5B,IAAA14B,cAAC6sF,GAAqB,CACpBE,YAAa9xF,KAAK2sB,MAAMmlE,YACxBhqD,gBAAiB9nC,KAAKmyF,oBACtBl4E,aAAcja,KAAK+xF,iBACnBlwF,IAAKkC,EAAKgf,MACVhf,KAAMA,EACNK,MAAOA,OAQJ4tF,IC9FAA,GD8FAA,G,upBE3Ff,MAAM/4C,WAAcxb,IAAM6E,UAKxBx5B,YAAY4F,GACVkZ,MAAMlZ,GAAO5D,GAAA,aALP,CACNsnF,QAAQ,IACTtnF,GAAA,mBAMa,KACZ9K,KAAKs+B,SAAS,CAAE8zD,QAAQ,MAG1B3zD,SACE,OAAIz+B,KAAK2sB,MAAMylE,QACbj2E,QAAQkF,KAAK,wBAAyBrhB,KAAK0O,MAAM+zB,KAC1C,MAIPhF,IAAA14B,cAAA,MAAA+pF,GAAA,CACEuD,IAAKryF,KAAK0O,MAAM2jF,KAAO,SACnBryF,KAAK0O,MAAK,CACdwb,QAASlqB,KAAKqpB,gBAMP4vB,U,aC/BX,GAAU,CAEd,OAAiB,OACjB,WAAoB,GCJLi4C,IDMF,IAAI,KAAS,IAIX,KAAQzD,OCVRyD,GCAA,MAAMoB,WAAkB70D,IAAM6E,UAS3C7D,SACE,MAAM,cACJnc,EAAa,cACbH,EAAa,aACbQ,EAAY,aACZE,GACE7iB,KAAK0O,MAET,OACE+uB,IAAA14B,cAAA,OAAK6sD,UAAU,QAAQ2/B,aAAW,kBAChC9zD,IAAA14B,cAAA,OAAK6sD,UAAU,qBAAqB2/B,aAAW,kBAC7C9zD,IAAA14B,cAAA,YAAO4d,GACP8a,IAAA14B,cAAA,QAAM6sD,UAAU,mBAAmBzvC,IAErCsb,IAAA14B,cAAA,OAAK6sD,UAAU,qBAAqB2/B,aAAW,kBAC7C9zD,IAAA14B,cAAA,QAAM6sD,UAAU,mBAAmBtvC,GACnCmb,IAAA14B,cAAA,YAAO8d,M,upBCKV,MAAM0vE,WAAwB90D,IAAM6E,UAWzCx5B,YAAY4F,GACVkZ,MAAMlZ,GAAO5D,GAAA,0BAR0B,QAAQA,GAAA,WACZ,MAAIA,GAAA,kBAAAA,GAAA,aAEjC,CACN0nF,WAAY,OACb1nF,GAAA,mBAqBa,KACZ,MAAM,eAAE8W,EAAc,aAAEF,EAAY,kBAAEI,GAAsB9hB,KAAK0O,MACjE,OAAIkT,EAEA6b,IAAA14B,cAACk0C,GAAK,CACJxW,IAAK7gB,EACL6wE,YAAY,YACZJ,IAAI,wBACJzgC,UAAU,cAKZlwC,EAEA+b,IAAA14B,cAACk0C,GAAK,CACJxW,IAAK/gB,EACL+wE,YAAY,YACZJ,IAAI,sBACJzgC,UAAU,cAKZ9vC,EAEA2b,IAAA14B,cAACk0C,GAAK,CACJxW,IAAK3gB,EACL2wE,YAAY,YACZJ,IAAI,2BACJzgC,UAAU,cAMdn0B,IAAA14B,cAACk0C,GAAK,CACJxW,ICoON,8yODnOMgwD,YAAY,YACZJ,IAAI,2BACJzgC,UAAU,gBAzDd5xD,KAAK0yF,GAAKlyE,WAAIC,2BAA2BgY,kBAG3CwF,oBACEj+B,KAAK2yF,mBAAqB3yF,KAAK0yF,GAAGnvE,YAAYrY,UAAWqY,IACvDvjB,KAAKs+B,SAAS,CAAEk0D,WAAYjvE,EAAYvjB,KAAK0O,MAAMoU,YAGrD9iB,KAAK0O,MAAMkgF,OAAO5uF,KAAK4tF,KAGzBpvD,uBACMx+B,KAAK2yF,oBACP3yF,KAAK2yF,qBAiDTl0D,SACE,MAAM,OACJ3b,EAAM,YACNJ,EAAW,UACXqmD,EAAS,iBACT6pB,EAAgB,UAChBC,EAAS,QACT3vD,EAAO,cACP5gB,EAAa,cACbH,EAAa,aACbQ,EAAY,aACZE,GACE7iB,KAAK0O,OACH,WAAE8jF,GAAexyF,KAAK2sB,MAE5B,OACE8Q,IAAA14B,cAAA,OACE6sD,UAAU,2BACV5tD,GAAI8e,EACJmgB,eAAcC,EACdquD,aAAW,iBACX3D,IAAMA,GAAS5tF,KAAK4tF,IAAMA,GAE1BnwD,IAAA14B,cAAA,OAAK6sD,UAAU,yBACZ5xD,KAAK8yF,cACNr1D,IAAA14B,cAAA,OAAK6sD,UAAU,uBAAuB2/B,aAAW,kBAC/C9zD,IAAA14B,cAAA,OAAK6sD,UAAU,cAAclvC,KAGhCqmD,GAAkC,OAArB6pB,GACZn1D,IAAA14B,cAAA,YAAUxD,MAAOqxF,EAAkB58E,IAAI,MAExC68E,GACCp1D,IAAA14B,cAACutF,GAAS,CACRhwE,cAAeA,EACfH,cAAeA,EACfQ,aAAcA,EACdE,aAAcA,IAIF,kBAAf2vE,GACC/0D,IAAA14B,cAAA,OAAK6sD,UAAU,cAAc2/B,aAAW,kBACtC9zD,IAAA14B,cAACmsF,GAAI,CAACC,SAAS,UAAUnhF,MAAO,KAAMF,OAAQ,OAC9C2tB,IAAA14B,cAAA,QAAM6sD,UAAU,WAAU,+BAGd,qBAAf4gC,GACC/0D,IAAA14B,cAAA,OAAK6sD,UAAU,0BACbn0B,IAAA14B,cAACmsF,GAAI,CAACC,SAAS,UAAUnhF,MAAO,KAAMF,OAAQ,UAQ1D,MAAMijF,GAAuB5vD,eAC3BovD,IAGa,MAAMS,WAAoBv1D,IAAM6E,UAE7Cx5B,eAAA0K,GAAA,SAAAA,GAAA1I,GAAA,WACqC,MAAIA,GAAA,eAC/BmkF,GAAoCnkF,GAAA,cAGpC8iF,IACR5tF,KAAK4tF,IAAMA,IACZ9iF,GAAA,yBAEoBlK,IACT,SAANA,GAAgBZ,KAAK4tF,KACvB6D,GAAazxF,KAAK4tF,OAErB9iF,GAAA,uBAEkBiH,IACjB/R,KAAKo8E,QAAQyS,uBAAuB98E,KAGtC0sB,SACE,OACEhB,IAAA14B,cAACoqF,EAAa,KACZ1xD,IAAA14B,cAACguF,GAAoBjE,GAAA,GACf9uF,KAAK0O,MAAK,CACdkgF,OAAQ5uF,KAAK4uF,OACb30E,aAAcja,KAAKizF,kBACnBnrD,gBAAiB9nC,KAAK8nC,qBAK/Bh9B,GAjCoBkoF,GAAW,eAKR9D,G,aE1KpB,GAAU,CAEd,OAAiB,OACjB,WAAoB,GCJLE,IDMF,IAAI,KAAS,IAIX,KAAQ3B,OCVR2B,G,SCCX,GAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,KAAS,IAIX,KAAQ3B,O,yNCJvB,MAAMyF,WAAqBz1D,IAAM6E,UAC/B7D,SACE,OACEhB,IAAA14B,cAACqqF,GAAUN,GAAA,CAACl9B,UAAU,yBAA4B5xD,KAAK0O,OACpD1O,KAAK0O,MAAM8N,WAML2mB,IChBA+vD,GDgBA/vD,eAAgB+vD,I,SEf3B,GAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,KAAS,IAIX,KAAQzF,OCEvB,MAAM0F,WAAyB11D,IAAM6E,UACnC7D,SACE,OACEhB,IAAA14B,cAAA,OAAK6sD,UAAU,6CAA6C2/B,aAAW,kBACrE9zD,IAAA14B,cAAA,OAAK6sD,UAAU,eAAe2/B,aAAW,kBACvC9zD,IAAA14B,cAAA,MAAI6sD,UAAU,OAAM,yBACpBn0B,IAAA14B,cAAA,KAAG6sD,UAAU,OAAM,wEAKrBn0B,IAAA14B,cAAA,OAAK6sD,UAAU,4BAA4B2/B,aAAW,kBACnDzpF,MAAMiB,KAAK,CAAEtF,OAAQ,IAAKqG,IAAI,CAACouB,EAAG53B,IACjCm9B,IAAA14B,cAAA,OAAKlD,IAAKvB,EAAGsxD,UAAU,UAAU2/B,aAAW,uBAQxD,MAAM6B,WAAyB31D,IAAM6E,UACnC7D,SACE,OACEhB,IAAA14B,cAAA,OAAK6sD,UAAU,6CAA6C2/B,aAAW,kBACrE9zD,IAAA14B,cAAA,MAAI6sD,UAAU,OAAM,0BACpBn0B,IAAA14B,cAAA,OACEuqF,QAAQ,cACRj3C,KAAK,OACLk3C,MAAM,8BAEN9xD,IAAA14B,cAAA,KAAGm1E,QAAQ,QACTz8C,IAAA14B,cAAA,QACEnE,EAAE,4FACFy3C,KAAK,YAEP5a,IAAA14B,cAAA,QACEyN,EAAE,UACFC,EAAE,UACFzC,MAAM,UACNF,OAAO,SACPuoC,KAAK,YAEP5a,IAAA14B,cAAA,QACEyN,EAAE,UACFC,EAAE,UACFzC,MAAM,UACNF,OAAO,UACPuoC,KAAK,YAEP5a,IAAA14B,cAAA,QACEnE,EAAE,oEACFy3C,KAAK,YAEP5a,IAAA14B,cAAA,QACEnE,EAAE,wFACFy3C,KAAK,YAEP5a,IAAA14B,cAAA,QACEiL,MAAM,UACNF,OAAO,SACPmtC,UAAU,mCACV5E,KAAK,YAEP5a,IAAA14B,cAAA,QACEiL,MAAM,UACNF,OAAO,UACPmtC,UAAU,mCACV5E,KAAK,YAEP5a,IAAA14B,cAAA,QACEnE,EAAE,oEACFy3C,KAAK,YAEP5a,IAAA14B,cAAA,QACEnE,EAAE,oEACFy3C,KAAK,YAEP5a,IAAA14B,cAAA,QACEyN,EAAE,UACFC,EAAE,UACFzC,MAAM,UACNF,OAAO,UACPuoC,KAAK,YAEP5a,IAAA14B,cAAA,QACEyN,EAAE,UACFC,EAAE,UACFzC,MAAM,UACNF,OAAO,UACPuoC,KAAK,gBASnB,MAAMg7C,WAA6B51D,IAAM6E,UACvC7D,SACE,MAAM,QAAEyE,GAAYljC,KAAK0O,MAEzB,OACE+uB,IAAA14B,cAAA,OACEk+B,eAAcC,EACd0uB,UAAU,sDACV2/B,aAAW,kBAEX9zD,IAAA14B,cAAA,MAAI6sD,UAAU,OAAM,2BACpBn0B,IAAA14B,cAAA,KAAG6sD,UAAU,OAAO,sCACpBn0B,IAAA14B,cAACmuF,GAAY,CACXjwD,eAAcC,EACdppB,aAAc9Z,KAAK0O,MAAMoL,cAC1B,aAQT,MAAMw5E,GAAiBnwD,eAAgBkwD,IAEvC,MAAME,WAA8B91D,IAAM6E,UACxC7D,SACE,MAAM,WAAEpe,EAAU,QAAEmzE,GAAYxzF,KAAK0O,MAErC,MAAmB,qBAAf2R,EACKod,IAAA14B,cAACquF,GAAgB,MAGP,qBAAf/yE,EACKod,IAAA14B,cAACouF,GAAgB,MAGP,mBAAf9yE,EACKod,IAAA14B,cAACuuF,GAAc,CAACx5E,aAAc05E,IAGhC,MAIID,UC5JA7F,K,8bCqCR,MAAM+F,WAAiBnxD,YAO5Bx5B,YAAY4F,GAAW,IAAAglF,EAAAC,EACrB/rE,MAAMlZ,GAAO5D,GAAA,iBAP4B,MAAIA,GAAA,6BACK,MAAIA,GAAA,0BACP,MAAIA,GAAA,kBACZ,MAAIA,GAAA,kBAAAA,GAAA,sBA6EnB1G,GAAkB8gB,gBACpCllB,KAAK0yF,GAAGkB,YAAYxvF,KAzE1BpE,KAAK0yF,GAAKlyE,WAAIC,2BAA2BgY,kBAEzC,MAAMo7D,EAAc7zF,KAAK0yF,GAAGxyE,MAAM3e,MAIlCvB,KAAK2sB,MAAQ,CACXmnE,oBAAqB,KACrBlB,iBAA2D,QAA3Cc,EAAE1zF,KAAK0yF,GAAG55D,4BAA4Bv3B,aAAK,IAAAmyF,IAAI,KAC/DK,cAAsD,QAAzCJ,EAAE3zF,KAAK0yF,GAAGzyE,0BAA0B1e,aAAK,IAAAoyF,IAAI,KAC1DzzE,MAAO2zE,EAAY/pF,IAAKwX,IAAO,CAC7ByB,MAAOzB,EAAQyB,MACf7C,MAAOoB,EAAQpB,MAAMpW,IAAK/F,IAAI,CAC5BC,GAAID,EAAKC,GACT8e,OAAQ/e,EAAK+e,OACbR,cAAeve,EAAKue,cACpBH,cAAepe,EAAKoe,cACpBU,aAAc9e,EAAK8e,aACnBF,aAAc5e,EAAK4e,aACnBD,YAAa3e,EAAK2e,YAClBd,eAAgB7d,EAAK6d,gBAAkB,GACvCF,aAAc3d,EAAK2d,cAAgB,GACnCI,kBAAmB/d,EAAK+d,mBAAqB,UAMrDmc,oBACEj+B,KAAKg0F,sBAAwBh0F,KAAK0yF,GAAG55D,4BAA4B5tB,UAC9D3J,IACCvB,KAAKs+B,SAAS,CAAEs0D,iBAAkBrxF,UAAS,SAG/CvB,KAAKi0F,mBAAqBj0F,KAAK0yF,GAAGzyE,0BAA0B/U,UACzD3J,IACCvB,KAAKs+B,SAAS,CAAEy1D,cAAexyF,UAAS,SAG5CvB,KAAKk0F,WAAal0F,KAAK0yF,GAAGxyE,MAAMhV,UAAW2oF,IACzC7zF,KAAKs+B,SAAS,CACZpe,MAAQ2zE,EAAuD/pF,IAC5DwX,IAAO,CACNyB,MAAOzB,EAAQyB,MACf7C,MAAOoB,EAAQpB,MAAMpW,IAAK/F,IAAI,CAC5BC,GAAID,EAAKC,GACT8e,OAAQ/e,EAAK+e,OACbR,cAAeve,EAAKue,cACpBH,cAAepe,EAAKoe,cACpBU,aAAc9e,EAAK8e,aACnBF,aAAc5e,EAAK4e,aACnBD,YAAa3e,EAAK2e,YAClBd,eAAgB7d,EAAK6d,gBAAkB,GACvCF,aAAc3d,EAAK2d,cAAgB,GACnCI,kBAAmB/d,EAAK+d,mBAAqB,aAOvD9hB,KAAKs+B,SAAS,CACZw1D,oBAAqB9zF,KAAKm0F,YAI9B31D,uBACEx+B,KAAKg0F,uBAAyBh0F,KAAKg0F,wBACnCh0F,KAAKi0F,oBAAsBj0F,KAAKi0F,qBAChCj0F,KAAKk0F,YAAcl0F,KAAKk0F,aAO1Bz1D,SACE,MAAM,iBACJm0D,EAAgB,cAChBmB,EAAa,MACb7zE,EAAK,oBACL4zE,GACE9zF,KAAK2sB,MAET,OACE8Q,IAAA14B,cAAC2oF,GAAmB,CAClBK,uBAAwB+F,EACxBpF,mBA7HqB,IA+HrBjxD,IAAA14B,cAAA,OACE6oF,IAAMpuD,IACJx/B,KAAKm0F,UAAY30D,GAEnBoyB,UAAU,iBACV2/B,aAAW,kBAEVrxE,EAAMpW,IAAI,CAACwX,EAAS8yE,IACnB32D,IAAA14B,cAAA,OAAKlD,IAAK,WAAWuyF,EAAgBxiC,UAAU,oBAAoB2/B,aAAW,kBAC5E9zD,IAAA14B,cAAA,MAAI6sD,UAAU,+BAA+BtwC,EAAQyB,OACrD0a,IAAA14B,cAAA,OAAK6sD,UAAU,0BAA0B2/B,aAAW,kBACjDjwE,EAAQpB,MAAMpW,IAAK/F,IAClB,MAAMswF,EAAgBr0F,KAAK0yF,GAAGpyE,SAAS4kB,UACpCovD,GAAWA,EAAOtwF,KAAOD,EAAKC,IAEjC,OACEy5B,IAAA14B,cAACwtF,GAAe,CACd1wF,IAAKkC,EAAKC,GACVA,GAAID,EAAKC,GACT8e,OAAQ/e,EAAK+e,OACbJ,YAAa3e,EAAK2e,YAClBG,aAAc9e,EAAK8e,aACnBF,aAAc5e,EAAK4e,aACnBL,cAAeve,EAAKue,cACpBH,cAAepe,EAAKoe,cACpBP,eAAgB7d,EAAK6d,eACrBF,aAAc3d,EAAK2d,aACnBI,kBAAmB/d,EAAK+d,kBACxBinD,UAAW/oE,KAAK0yF,GAAG1yE,mBAAmBq0E,GACtCxB,UAAWrwF,QACTuB,EAAKue,eAAiBve,EAAKoe,eAE7BywE,iBACEyB,IAAkBN,EACdnB,EACA,KAEN94E,aAAc9Z,KAAKu0F,eAAeF,UAO9C52D,IAAA14B,cAAA,OAAK6sD,UAAU,gCAWV,MAAM4iC,WAA+BlyD,YAOlDx5B,YAAY4F,GACVkZ,MAAMlZ,GAAO5D,GAAA,uBAJ+B,MAAIA,GAAA,kBAAAA,GAAA,mBAmB5Boa,gBACdllB,KAAK0yF,GAAG/uE,+BACdnZ,aAAS,wBAhBTxK,KAAK0yF,GAAKlyE,WAAIC,2BAA2BgY,kBACzCz4B,KAAK2sB,MAAQ,CAAEtM,WAAYrgB,KAAK0yF,GAAGryE,WAAW9e,OAGhD08B,oBACEj+B,KAAKy0F,gBAAkBz0F,KAAK0yF,GAAGryE,WAAWnV,UAAW3J,IACnDvB,KAAKs+B,SAAS,CAAEje,WAAY9e,MAIhCi9B,uBACEx+B,KAAKy0F,iBAAmBz0F,KAAKy0F,kBAQ/Bh2D,SACE,MAAM,WAAEpe,GAAergB,KAAK2sB,MAE5B,OAAItM,EAEAod,IAAA14B,cAACwuF,GAAqB,CACpBlzE,WAAYA,EACZmzE,QAASxzF,KAAK00F,cAKbj3D,IAAA14B,cAAC0uF,GAAQ,O,aCrOhB,GAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,KAAS,IAIX,KAAQhG,O,upBCWvB,MAAMkH,WAAoBl3D,IAAM6E,UAC9B,kBACE,OAAQtiC,KAAK0O,MAAM3K,KAAK2F,KAAKoiB,OAC3B,IAAK,WACL,IAAK,SACL,IAAK,SACH,MAAO,CAAC,YAAa,QAAS,UAChC,QACE,MAAO,CAAC,SAAU,QAAS,cAIjC,eACE,MAA0D,WAAnD9rB,KAAK0O,MAAM3K,KAAK2F,KAAKoiB,MAAM8oE,oBAMpCC,wBAAwBjoE,GACtB,OAAO5sB,KAAK80F,YAAYhrF,IAAKirF,IAC3B,OAAQA,GACN,IAAK,YACH,OAAOt3D,IAAA14B,cAAA,MAAIlD,IAAKkzF,GAAMnoE,EAAKoK,oBAC7B,IAAK,SACH,OACEyG,IAAA14B,cAAA,MAAIlD,IAAKkzF,GACNnoE,EAAKgK,oBACN6G,IAAA14B,cAAA,WACA04B,IAAA14B,cAAA,QAAM6sD,UAAU,OAAOhlC,EAAKiK,uBAGlC,IAAK,QACH,OACE4G,IAAA14B,cAAA,MAAIlD,IAAKkzF,GACNnoE,EAAKkK,qBACN2G,IAAA14B,cAAA,WACA04B,IAAA14B,cAAA,QAAM6sD,UAAU,OAAOhlC,EAAKmK,wBAGlC,QACE,OAAO,QAKf0H,SACE,MAAM/0B,EAAO1J,KAAK0O,MAAM3K,KAAK2F,KACvBsrF,EAAQh1F,KAAKi1F,SACf,CAACvrF,EAAKutB,aAAcvtB,EAAK8sB,cACzB,CAAC9sB,EAAK8sB,aAAc9sB,EAAKutB,cAE7B,OACEwG,IAAA14B,cAACoqF,EAAa,KACZ1xD,IAAA14B,cAAA,SACE6sD,UAAU,gCACV3uB,eAAcjjC,KAAK0O,MAAMw0B,SAEzBzF,IAAA14B,cAAA,aACE04B,IAAA14B,cAAA,UACE04B,IAAA14B,cAAA,MAAImwF,MAAM,QACVz3D,IAAA14B,cAAA,MAAImwF,MAAM,OAC4B,SAAnCl1F,KAAK0O,MAAM3K,KAAK2F,KAAKsiB,UAAuB,QAAU,QAExDhsB,KAAK80F,YAAYhrF,IAAKirF,GACrBt3D,IAAA14B,cAAA,MAAImwF,MAAM,MAAMrzF,IAAKkzF,GAClBA,MAKTt3D,IAAA14B,cAAA,aACGiwF,EAAMlrF,IAAI,CAAC8iB,EAAMxoB,IAChBq5B,IAAA14B,cAAA,MAAIlD,IAAKuC,EAAOwtD,UAAU,WACxBn0B,IAAA14B,cAAA,UAAK6nB,EAAK6J,kBACVgH,IAAA14B,cAAA,UACG6nB,EAAK8J,qBACN+G,IAAA14B,cAAA,WACA04B,IAAA14B,cAAA,QAAM6sD,UAAU,OAAOhlC,EAAK+J,wBAE7B32B,KAAK60F,wBAAwBjoE,SAU9C,MAAMuoE,GAAuBhyD,eAC3BwxD,IAGa,MAAMS,WAAoC33D,IAAM6E,UAE7Dx5B,eAAA0K,GAAA,SAAAA,GAAA1I,GAAA,eAEUmkF,GAAoCnkF,GAAA,uBAC3BiH,IACjB/R,KAAKo8E,QAAQyS,uBAAuB98E,KACrCjH,GAAA,oBAEc,CAAClK,EAAcixF,EAAaj4E,KAC/B,SAANhZ,GAAgBgZ,EAAQ7H,QAC1B0/E,GAAa73E,EAAQ7H,OAAOnC,KAAKylF,qBAIrC52D,SACE,OACEhB,IAAA14B,cAACowF,GAAoBrG,GAAA,GACf9uF,KAAK0O,MAAK,CACdo5B,gBAAiB9nC,KAAK8nC,gBACtB7tB,aAAcja,KAAKia,iBAI1BnP,GAxBoBsqF,GAA2B,eAGxBlG,G,aCrHpB,GAAU,CAEd,OAAiB,OACjB,WAAoB,G,IAEP,IAAI,KAAS,IAIX,KAAQzB,O,OCTnB,GAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,KAAS,IAIX,KAAQA,OCEvB,MAAM6H,WAAsB73D,IAAM6E,UAChC7D,SACE,OACEhB,IAAA14B,cAACqqF,EAAU,CACTx9B,UAAU,yBACV3uB,eAAcjjC,KAAK0O,MAAMw0B,QACzBqyD,cAAav1F,KAAK0O,MAAM4iF,QAEvBtxF,KAAK0O,MAAM8N,WAML2mB,IC1BAmyD,GD0BAnyD,eACbmyD,I,SE1BE,GAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,KAAS,IAIX,KAAQ7H,O,8bCavB,MAAM+H,WAA0B/3D,IAAM6E,UAAkCx5B,eAAA0K,GAAA,SAAAA,GAAA1I,GAAA,eAC5DmkF,GAAoCnkF,GAAA,aAGtC,CACN2qF,YAAa,EACbC,gBAAiB,IAClB5qF,GAAA,uBAEiB,CAAC/G,EAAmBzD,IAAeyR,IAEjD/R,KAAK2sB,MAAM+oE,kBAAoBp1F,GACA,OAA/BN,KAAK2sB,MAAM+oE,iBAMb11F,KAAKs+B,SAAS,CACZm3D,YAAan1F,EACbo1F,gBAAiB,OAGnB3xF,EAAKmuF,UACLlyF,KAAKo8E,QAAQyS,uBAAuB98E,IAVlCvH,aAAS,sBAAsBxK,KAAK2sB,MAAM+oE,mBAW7C5qF,GAAA,wBAEmB1G,GAAkB,CACpC8Q,EACA28E,EACAj4E,KAEkB,SAAd1E,GAAsC,OAAdA,GAC1BlV,KAAKs+B,SAAS,CAAEo3D,gBAAiB11F,KAAK2sB,MAAM8oE,cAG5B,SAAdvgF,GAAkC,IAAV9Q,GAAewV,EAAQ7H,QACjD0/E,GAAa73E,EAAQ7H,OAAOnC,KAAKylF,qBAIrC52D,SACE,OACEhB,IAAA14B,cAAA,OACE6sD,UAAU,qBACV9sD,MAAO,CACLkpC,gBAAiBhuC,KAAK0O,MAAMs/B,kBAG7BhuC,KAAK0O,MAAMwR,MAAMpW,IAAI,CAAC/F,EAAMK,IAC3Bq5B,IAAA14B,cAACuwF,GAAa,CACZtjF,SAAU,sBAAsB5N,EAChCvC,IAAKkC,EAAKgf,MACV+kB,gBAAiB9nC,KAAK8nC,gBAAgB/jC,EAAMK,GAC5C6V,aAAcja,KAAK+xF,iBAAiB3tF,GACpCktF,OAAQtxF,KAAK2sB,MAAM8oE,cAAgBrxF,GAElCL,EAAKgf,UAMjBjY,GA/DK0qF,GAAiB,eAECtG,GA+DTsG,U,SCvFX,GAAU,CAEd,OAAiB,OACjB,WAAoB,G,IAEP,IAAI,KAAS,IAIX,KAAQ/H,O,OCTnB,GAAU,CAEd,OAAiB,OACjB,WAAoB,G,IAEP,IAAI,KAAS,IAIX,KAAQA,O,OCTnB,GAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,KAAS,IAIX,KAAQA,OCEvB,MAAMkI,WAAiBl4D,IAAM6E,UAC3B7D,SACE,OACEhB,IAAA14B,cAACoqF,EAAa,KACZ1xD,IAAA14B,cAAA,OAAK6sD,UAAU,uBAAuB3uB,eAAcjjC,KAAK0O,MAAMw0B,QAASquD,aAAW,kBAChFvxF,KAAK0O,MAAMknF,OAAO51F,KAAK0O,OACxB+uB,IAAA14B,cAAA,OAAK6sD,UAAU,sBACd5xD,KAAK0O,MAAM8N,SACXxc,KAAK0O,MAAMmnF,OAAO71F,KAAK0O,UAOnBy0B,sBAA+BwyD,I,SC1B1C,GAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,KAAS,IAIX,KAAQlI,OCSRqI,OAbOpnF,GAElB+uB,IAAA14B,cAAA,OAAK6sD,UAAU,wBAAwB2/B,aAAW,kBAChD9zD,IAAA14B,cAACmsF,GAAI,CACHC,SAA4B,QAAlBziF,EAAM4d,QAAoB,YAAc,QAClDtc,MAAO,GACPF,OAAQ,KAETpB,EAAM4d,SC2CEypE,OAxCSrnF,IACtB,MAAM4d,EACsB,YAA1B5d,EAAMif,gBAAgCjf,EAAMif,gBAAkBjf,EAAM4d,QAEtE,OACEmR,IAAA14B,cAAA,OAAK6sD,UAAU,2BAA2B2/B,aAAW,kBAClD7iF,EAAMsnF,WACHtnF,EAAMsnF,aACNtnF,EAAMunF,SACJx4D,IAAA14B,cAACk0C,GAAK,CACJw5C,YAAY,YACZhwD,IAAK/zB,EAAMunF,QACX5D,IAAQ3jF,EAAMwnF,QAAT,QACLlmF,MAAO,GACPF,OAAQ,KAGhB2tB,IAAA14B,cAAA,OAAK6sD,UAAU,WAAWljD,EAAMwnF,QAAQtB,qBACxCn3D,IAAA14B,cAAA,QAAM6sD,UAAU,OAAOljD,EAAM8N,UAC7BihB,IAAA14B,cAAA,OAAK6sD,UAAU,6BAA6B2/B,aAAW,kBACpDjlE,GAAuB,YAAZA,GAAyBmR,IAAA14B,cAAC+wF,GAAY,CAACxpE,QAASA,IAC3D5d,EAAMynF,mBACLznF,EAAMggB,UACNhgB,EAAMggB,SAAWhgB,EAAMynF,mBACrB14D,IAAA14B,cAAA,OACE6sD,UAAU,iBACV3uB,eAAcv0B,EAAM0nF,aAAalzD,SAEjCzF,IAAA14B,cAACmsF,GAAI,CACHC,SAAUziF,EAAM2nF,aAAe,WAAa,SAC5CrmF,MAAO,GACPF,OAAQ,S,SC/CpB,GAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,KAAS,IAIX,KAAQ29E,OCLR6I,OAJE5nF,GACR+uB,IAAA14B,cAAA,SAAO6sD,UAAU,WAAW2/B,aAAW,kBAAkB7iF,EAAM8N,U,SCDpE,GAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,KAAS,IAIX,KAAQixE,OCNR8I,OAHGA,EAAG/5E,cACZihB,IAAA14B,cAAA,OAAK6sD,UAAU,aAAa2/B,aAAW,kBAAkB/0E,GC0BnDg6E,OArBS9nF,IACtB,MAAM4d,EAC0B,YAA9B5d,EAAM2oB,IAAI1J,gBACNjf,EAAM2oB,IAAI1J,gBACVjf,EAAM2oB,IAAI/K,QAEhB,OACEmR,IAAA14B,cAAA,OAAK6sD,UAAU,uBAAuB2/B,aAAW,kBAC/C9zD,IAAA14B,cAACuxF,GAAO,KAAC,IACL5nF,EAAM2oB,IAAIzJ,UAAU,IAAElf,EAAM2oB,IAAIvrB,KAAKF,cAAc,IAAE8C,EAAM2oB,IAAIhL,MAEtD,SAAZC,GACCmR,IAAA14B,cAACwxF,GAAS,KACP7nF,EAAM2oB,IAAIzI,oBACX6O,IAAA14B,cAAA,YAAM,IAAE2J,EAAM2oB,IAAIxJ,iB,SCpBxB,GAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,KAAS,IAIX,KAAQ4/D,OCEvB,MAAMgJ,WAAYh5D,IAAM6E,UACtB7D,SACE,MAAMi4D,EAAe12F,KAAK0O,MAAMioF,IAAI1nE,OAChC1W,OAAOvY,KAAK0O,MAAMioF,IAAI1nE,QACtB,EAEJ,OACEwO,IAAA14B,cAACoqF,EAAa,KACZ1xD,IAAA14B,cAAA,OACE6sD,UAAU,sCACVglC,iBAAgB52F,KAAK0O,MAAM+L,UAC3BwoB,eAAcjjC,KAAK0O,MAAMw0B,QACzBquD,aAAW,kBAEVvxF,KAAK0O,MAAMioF,IAAIvqE,UACdqR,IAAA14B,cAACk0C,GAAK,CACJw5C,YAAY,YACZhwD,IAAKziC,KAAK0O,MAAMioF,IAAIvqE,SACpBimE,IAAI,aAGR50D,IAAA14B,cAAA,OAAK6sD,UAAU,8BAA8B2/B,aAAW,kBACtD9zD,IAAA14B,cAAA,OAAK6sD,UAAU,kBAAkB2/B,aAAW,kBAC1C9zD,IAAA14B,cAAA,OAAKwsF,aAAW,kBACd9zD,IAAA14B,cAAA,OAAK6sD,UAAU,WAAW5xD,KAAK0O,MAAMioF,IAAItoE,eACzCoP,IAAA14B,cAAA,QAAM6sD,UAAU,+BACb5xD,KAAK0O,MAAMioF,IAAIroE,aAGpBmP,IAAA14B,cAAA,OAAK6sD,UAAU,uBAAuB5xD,KAAK0O,MAAMioF,IAAItqE,OAEtDrsB,KAAK0O,MAAMioF,IAAIznE,SACduO,IAAA14B,cAAA,OAAK6sD,UAAU,qBAAqB2/B,aAAW,kBAC7C9zD,IAAA14B,cAAA,OAAK6sD,UAAU,0BAA0B2/B,aAAW,kBACjDmF,EACDj5D,IAAA14B,cAAA,YAAM,IAAE/E,KAAK0O,MAAMioF,IAAIznE,QAAQC,MAC/BsO,IAAA14B,cAAA,WACGgR,KAAK8kC,MACH67C,EAAe12F,KAAK0O,MAAMioF,IAAIznE,QAAQC,KAAQ,KAC/C,MAINsO,IAAA14B,cAAA,YACE8xF,gBAAeH,IAAiB12F,KAAK0O,MAAMioF,IAAIznE,QAAQC,KACvD5tB,MAAOm1F,EACP1gF,IAAKhW,KAAK0O,MAAMioF,IAAIznE,QAAQC,YAW/BgU,sBAA0BszD,I,8bC5CzC,MAAMK,WAAsBr5D,IAAM6E,UAA8Bx5B,eAAA0K,GAAA,SAAAA,GAAA1I,GAAA,eAEpDmkF,GAAoCnkF,GAAA,uBAE3BiH,IACjB/R,KAAKo8E,QAAQyS,uBAAuB98E,KAGtC0sB,SACE,OACEhB,IAAA14B,cAAA,OAAKlD,IAAK7B,KAAK0O,MAAM8K,MAAMiT,YAAamlC,UAAU,sBAAsB2/B,aAAW,kBACjF9zD,IAAA14B,cAAA,OAAK6sD,UAAU,OAAO5xD,KAAK0O,MAAM8K,MAAMiT,aACvCgR,IAAA14B,cAAA,OAAK6sD,UAAU,iBAAiB2/B,aAAW,kBACxCvxF,KAAK0O,MAAM8K,MAAMwU,KAAKlkB,IAAI,CAAC6sF,EAAKvyF,IAC/Bq5B,IAAA14B,cAAC0xF,GAAG,CACF50F,IAAK,GAAG7B,KAAK0O,MAAMqoF,SAAS/2F,KAAK0O,MAAMsoF,cAAc5yF,IACrDqW,UAAWza,KAAK0O,MAAMuoF,cACtBjlF,SAAU,iBAAiBhS,KAAK0O,MAAMwnF,eAAel2F,KAAK0O,MAAMqoF,SAAS/2F,KAAK0O,MAAMsoF,cAAc5yF,IAClG6V,aAAcja,KAAK0O,MAAMwoF,gBACvBl3F,KAAK0O,MAAMsoF,WACX5yF,GAEF0jC,gBAAiB9nC,KAAK8nC,gBACtB71B,eAAgBjS,KAAK0O,MAAMuD,eAC3B8H,YAAa/Z,KAAK0O,MAAMyoF,eACxBR,IAAKA,QAOlB7rF,GAhCKgsF,GAAa,eACK5H,GAiCT4H,U,8bChCf,MAAMM,WAAqB35D,IAAM6E,UAE/Bx5B,eAAA0K,GAAA,SAAAA,GAAA1I,GAAA,eAEUmkF,GAAoCnkF,GAAA,oBAoB/B,KACR9K,KAAKi3F,gBAILj3F,KAAK0O,MAAMm5B,iBAEdr9B,aAAS,iBAAiBxK,KAAKk2F,eAAel2F,KAAK0O,MAAM2oB,IAAIrzB,aAEhE8G,GAAA,iBAEW,KAEVN,aAAS,GAAGxK,KAAKq3F,kBAAkBr3F,KAAK0O,MAAM2oB,IAAIrzB,QACnD8G,GAAA,2BAEqB,CAACksF,EAAoBM,IAAqB,CAC9D12F,EACAixF,EACAj4E,KAEA,GAAU,OAANhZ,GAA2B,IAAb02F,GAAiC,IAAfN,EAIlC,OAFAh3F,KAAKu3F,aAEE,EAGC,SAAN32F,GAAgBgZ,EAAQ7H,QAC1B0/E,GAAa73E,EAAQ7H,OAAOnC,KAAKylF,qBAEpCvqF,GAAA,4BAEsB,CAAClK,EAAcixF,EAAaj4E,KACvC,SAANhZ,GAAgBgZ,EAAQ7H,QAC1B0/E,GAAa73E,EAAQ7H,OAAOnC,KAAKylF,qBAEpCvqF,GAAA,oBAEe0sF,IAAoC,IAAAC,EAAAC,EAAAC,EAClD,OACEl6D,IAAA14B,cAACgxF,GAAc,CACbK,aAAcoB,EACdtB,QAASl2F,KAAKk2F,QACdD,QAAuC,QAAhCwB,EAAEz3F,KAAK0O,MAAM2oB,IAAI5I,WAAWtC,YAAI,IAAAsrE,OAAA,EAA9BA,EAAgC3oE,KACzCJ,SAAU1uB,KAAK0O,MAAM2oB,IAAI3I,SACzBpC,QAAStsB,KAAK0O,MAAM2oB,IAAI/K,QACxBqB,gBAAiB3tB,KAAK0O,MAAM2oB,IAAI1J,gBAChC0oE,eAAgBr2F,KAAK0O,MAAMm5B,gBAC3BsuD,kBAhF8B,GAkFC,QAFWuB,GAEzCC,EAAA33F,KAAK0O,OAAMkpF,2BAAmB,IAAAF,OAAA,EAA9BA,EAAAj3F,KAAAk3F,EAAiCH,MAGvC1sF,GAAA,oBAEc,IACN2yB,IAAA14B,cAACyxF,GAAc,CAACn/D,IAAKr3B,KAAK0O,MAAM2oB,OACxCvsB,GAAA,qBAEgBiH,IACf/R,KAAKo8E,QAAQyS,uBAAuB98E,KA/EtC,oBACE,OAAO/R,KAAK0O,MAAM2oB,IAAItJ,OAAOtqB,OAdK,EAiBpC,aACE,OAAOzD,KAAK0O,MAAMm5B,gBACd7nC,KAAK0O,MAAM2oB,IAAItJ,OACf/tB,KAAK0O,MAAM2oB,IAAItJ,OAAOllB,MAAM,EApBE,GAuBpC,qBACE,MAAO,OAAO7I,KAAK0O,MAAM2oB,IAAIvrB,KAAKF,qBAGpC,cACE,OAAO5L,KAAK0O,MAAM2oB,IAAIvrB,KAAKF,cAmE7B6yB,SACE,OACEhB,IAAA14B,cAAC4wF,GAAQ,CACPC,OAAQ51F,KAAK63F,aACbhC,OAAQ71F,KAAK83F,aACbh+E,aAAc9Z,KAAK8Z,aACnB9H,SAAU,GAAGhS,KAAKq3F,kBAAkBr3F,KAAK0O,MAAM2oB,IAAIrzB,KACnDiW,aAAcja,KAAK+3F,qBACnBjwD,gBAAiB9nC,KAAKg4F,eAErBh4F,KAAK+tB,OAAOjkB,IAAI,CAAC0P,EAAOw9E,IACvBv5D,IAAA14B,cAAC+xF,GAAa,CACZZ,QAASl2F,KAAKk2F,QACde,cAAej3F,KAAKi3F,cACpBz9E,MAAOA,EACPw9E,WAAYA,EACZE,gBAAiBl3F,KAAKi4F,oBACtBp2F,IAAK2X,EAAMiT,YACXsqE,MAAO/2F,KAAK0O,MAAM2oB,IAAIrzB,GACtBiO,eAAgBjS,KAAK0O,MAAMsD,SAC3BmlF,eAAgBn3F,KAAKu3F,cAGvBv3F,KAAK0O,MAAMm5B,iBAAmB7nC,KAAKi3F,eACnCx5D,IAAA14B,cAAA,OAAK6sD,UAAU,qBAAoB,IAC/B5xD,KAAK0O,MAAM2oB,IAAI3I,SAxHS,EAwHyB,WAM9D5jB,GAvHKssF,GAAY,eAGMlI,GAsHT/rD,oBAAgC,CAAE5mB,eAAe,GAAjD4mB,CACbi0D,IC5Hac,OAlBAA,EAAG7gE,SAUdoG,IAAA14B,cAACqyF,GAAY,CACXplF,SAAU,oBAAoBqlB,EAAIrzB,GAClCqzB,IAAKA,EACLugE,oBAZwBA,IAExBn6D,IAAA14B,cAAA,WACGsyB,EAAI3I,SAAS,OAAK2I,EAAI3I,SAAW,EAAI,IAAM,MCDrCypE,OAJDA,EAAG9gE,SACRoG,IAAA14B,cAACqyF,GAAY,CAACplF,SAAU,mBAAmBqlB,EAAIrzB,GAAMqzB,IAAKA,ICGpD+gE,OAJEA,EAAG/gE,SACXoG,IAAA14B,cAACqyF,GAAY,CAACplF,SAAU,sBAAsBqlB,EAAIrzB,GAAMqzB,IAAKA,ICiBvDghE,OAlBAA,EAAGhhE,SAUdoG,IAAA14B,cAACqyF,GAAY,CACXplF,SAAU,oBAAoBqlB,EAAIrzB,GAClCqzB,IAAKA,EACLugE,oBAZwBA,IAExBn6D,IAAA14B,cAAA,WACGsyB,EAAI3I,SAAS,SAAwB,IAAjB2I,EAAI3I,SAAiB,IAAM,GAAG,a,8bCM3D,MAAM4pE,WAAqB76D,IAAM6E,UAG/Bx5B,eAAA0K,GAAA,SAAAA,GAAA1I,GAAA,aACQ,CACNytF,cAAev4F,KAAK0O,MAAM3K,KAAK2F,KAAK6jB,aACrCziB,GAAA,kBAEa0tF,GACL,KACDx4F,KAAK2sB,MAAM4rE,gBAAkBC,GAC/Bx4F,KAAKs+B,SAAS,CAAEi6D,cAAeC,MAGpC1tF,GAAA,oBAEoD,CACnD,CACEiY,MAAO,OACPjX,KAAM,OACNomF,QAASlyF,KAAKy4F,WAAW,SAE3B,CACE11E,MAAO,UACPjX,KAAM,UACNomF,QAASlyF,KAAKy4F,WAAW,YAE3B,CACE11E,MAAO,WACPjX,KAAM,WACNomF,QAASlyF,KAAKy4F,WAAW,eAE5B3tF,GAAA,uBAEkB0tF,IACjBx4F,KAAKs+B,SAAS,CAAEi6D,cAAeC,MAChC1tF,GAAA,iBAEYusB,IACX,OAAQA,EAAIvrB,MACV,IAAK,SACH,OAAO2xB,IAAA14B,cAACmzF,GAAM,CAACr2F,IAAKw1B,EAAIrzB,GAAIqzB,IAAKA,IACnC,IAAK,QACH,OAAOoG,IAAA14B,cAACozF,GAAK,CAACt2F,IAAKw1B,EAAIrzB,GAAIqzB,IAAKA,IAClC,IAAK,WACH,OAAOoG,IAAA14B,cAACqzF,GAAQ,CAACv2F,IAAKw1B,EAAIrzB,GAAIqzB,IAAKA,IACrC,IAAK,SACH,OAAOoG,IAAA14B,cAACszF,GAAM,CAACx2F,IAAKw1B,EAAIrzB,GAAIqzB,IAAKA,IACnC,QAEE,OADAlb,QAAQkF,KAAK,eAAgBgW,EAAIvrB,MAC1B,QAEZhB,GAAA,kBAEY,KAAM,IAAA4tF,EACjB,OAAa,QAAbA,EAAI14F,KAAKwsB,YAAI,IAAAksE,GAATA,EAAWj1F,OACNzD,KAAKwsB,KAAK1iB,IAAKutB,GAAQr3B,KAAK24F,UAAUthE,IAI7CoG,IAAA14B,cAAA,OAAK6sD,UAAU,wBAAuB,MAChC5xD,KAAK2sB,MAAM4rE,cAAc,WAKnC,WACE,OAAQv4F,KAAK2sB,MAAM4rE,eACjB,IAAK,OACH,OAAOv4F,KAAK0O,MAAM3K,KAAK2F,KAAK8iB,KAAKiB,KACnC,IAAK,UACH,OAAOztB,KAAK0O,MAAM3K,KAAK2F,KAAK8iB,KAAKuC,QACnC,IAAK,WACH,OAAO/uB,KAAK0O,MAAM3K,KAAK2F,KAAK8iB,KAAKgB,SACnC,QACE,OAAO,MAIbiR,SACE,OACEhB,IAAA14B,cAAA,WAAS6sD,UAAU,eAAe2/B,aAAW,kBAC3C9zD,IAAA14B,cAACywF,GAAiB,CAACt1E,MAAOlgB,KAAK44F,eAC9B54F,KAAK64F,eAMCP,U,SCxGX,GAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,KAAS,IAIX,KAAQ7K,O,8bCkBvB,MAAMqL,WAAqBr7D,IAAM6E,UAE/Bx5B,eAAA0K,GAAA,SAAAA,GASA1I,GAAA,gBACY1G,IACVoG,aAASxK,KAAK+4F,eAAe30F,MAG/B0G,GAAA,iBACY,KACVN,aAASxK,KAAKg5F,qBAGhBluF,GAAA,oBACe,IACL9K,KAAK0O,MAAM3K,KAAK2F,KAAmBwW,MAAMzc,QAAU,GAC5DqH,GAAA,wBAEkB,KACjBN,aAASxK,KAAK+4F,eAAe,MAC9BjuF,GAAA,eA0BSmkF,GAAoCnkF,GAAA,2BAEvBiH,IACrB/R,KAAKo8E,QAAQyS,uBAAuB98E,KACrCjH,GAAA,0BAEqBiH,IACpB/R,KAAKo8E,QAAQyS,uBAAuB98E,KACrCjH,GAAA,uBAEkB1G,GAAkB,CACnC8Q,EACA28E,EACAj4E,KAMA,GAJkB,SAAd1E,GAAwB0E,EAAQ7H,QAClC0/E,GAAa73E,EAAQ7H,OAAOnC,KAAKylF,mBAGrB,IAAVjxF,GAA6B,OAAd8Q,EAGjB,OADAlV,KAAKu3F,aACE,IAEVzsF,GAAA,wBAEkB,CAAClK,EAAcixF,EAAaj4E,KACnC,SAANhZ,GAAgBgZ,EAAQ7H,QAC1B0/E,GAAa73E,EAAQ7H,OAAOnC,KAAKylF,qBA/ErC0D,eAAe30F,GACb,MAAO,gBAAgBpE,KAAK0O,MAAM3K,KAAKC,MAAMI,IAG/C40F,kBACE,MAAO,aAAah5F,KAAK0O,MAAM3K,KAAKC,GAsBtCi1F,kBACE,OAAOx7D,IAAA14B,cAACmsF,EAAI,CAACC,SAAS,QAAQnhF,MAAO,GAAIF,OAAQ,KAGnD+nF,aAAanpF,GACX,OACE+uB,IAAA14B,cAACgxF,GAAc,CACbK,aAAc1nF,EACdwnF,QAAQ,YACRG,eAAgBr2F,KAAK0O,MAAMm5B,gBAC3BmuD,WAAYh2F,KAAKi5F,gBACjBvqE,SAAU1uB,KAAKk5F,eACf/C,kBA5CiB,IAiDvB2B,aAAankF,EAAgBwlF,GAC3B,OAAQA,GAAYxlF,EAAY,EAC9B8pB,IAAA14B,cAAA,OAAK6sD,UAAU,oBAAmB,IAAEj+C,EAAU,SAC5C,KAoCN,gBACE,MAAMuM,EAASlgB,KAAK0O,MAAM3K,KAAK2F,KAAmBwW,MAClD,OAAIlgB,KAAK0O,MAAMm5B,gBACN3nB,EAGFA,EAAMrX,MAAM,EA9FE,GAiGvB41B,SACE,MAAM,KAAE16B,EAAI,QAAEm/B,GAAYljC,KAAK0O,MAGzBiF,EADa5P,EAAK2F,KAAmBwW,MACfzc,OArGP,EAuGrB,OACEg6B,IAAA14B,cAAA,OAAK6sD,UAAU,sBACbn0B,IAAA14B,cAAC4wF,GAAQ,CACP3jF,SAAUhS,KAAKg5F,kBACf91D,QAASA,EACT0yD,OAAQ51F,KAAK63F,aAAa/1F,KAAK9B,MAC/B61F,OAAQA,IACN71F,KAAK83F,aAAankF,IAAa3T,KAAK0O,MAAMm5B,iBAE5C/tB,aAAc9Z,KAAKo5F,iBACnBtxD,gBAAiB9nC,KAAKq5F,oBACtBp/E,aAAcja,KAAKs5F,kBAEnB77D,IAAA14B,cAAA,OAAK6sD,UAAU,iBAAiB2/B,aAAW,kBACxCvxF,KAAKu5F,UAAUzvF,IAAI,CAAC/F,EAAMy1F,IAEvB/7D,IAAA14B,cAAC0xF,GAAG,CACF50F,IAAKkC,EAAKC,GACVgO,SAAUhS,KAAK+4F,eAAeS,GAC9B7C,IAAK5yF,EACL0W,UAAWza,KAAK0O,MAAMm5B,gBACtB9tB,YAAa/Z,KAAKu3F,UAClBzvD,gBAAiB9nC,KAAKy5F,mBACtBx/E,aAAcja,KAAKk3F,gBAAgBsC,GACnCvnF,eAAgBjS,KAAK0O,MAAMsD,gBAS5ClH,GAtIKguF,GAAY,eAqDM5J,GAmFT/rD,oBAAiC,CAAE5mB,eAAe,GAAlD4mB,CACb21D,I,SCpKE,GAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,KAAS,IAIX,KAAQrL,OCJvB,MAAMiM,WAA2Bj8D,IAAM6E,UACrC7D,SACE,OACEhB,IAAA14B,cAACoqF,EAAa,KACZ1xD,IAAA14B,cAAA,OAAK6sD,UAAU,uBACbn0B,IAAA14B,cAACmsF,EAAI,CAACC,SAAS,cAAcnhF,MAAO,GAAIF,OAAQ,KAChD2tB,IAAA14B,cAAA,QAAM6sD,UAAU,gCACb5xD,KAAK0O,MAAM6d,MATtB,kEAiBamtE,U,SCpBX,GAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,KAAS,IAIX,KAAQjM,OCCvB,MAAMkM,WAAwBl8D,IAAM6E,UAClC7D,SACE,MAAM,eAAEm7D,GAAmB55F,KAAK0O,MAC1BmrF,EAAcD,GAVtB,gGAYE,OACEn8D,IAAA14B,cAACoqF,EAAa,KACZ1xD,IAAA14B,cAAA,OAAK6sD,UAAU,oBACbn0B,IAAA14B,cAACmsF,EAAI,CAACC,SAAS,cAAcnhF,MAAO,GAAIF,OAAQ,KAChD2tB,IAAA14B,cAAA,QAAM6sD,UAAU,6BAA6BioC,MAOxCF,UCtBf,MAAMG,WAA2Br8D,IAAM6E,UACrC7D,SACE,OACEhB,IAAA14B,cAAA,OACEk+B,eAAcjjC,KAAK0O,MAAMw0B,QACzB0uB,UAAU,8CAEVn0B,IAAA14B,cAAA,MAAI6sD,UAAU,OAAM,2BACpBn0B,IAAA14B,cAAA,KAAG6sD,UAAU,OAAO,sCACpBn0B,IAAA14B,cAACmuF,GAAY,CACXjwD,eAAcjjC,KAAK0O,MAAMw0B,QACzBppB,aAAc9Z,KAAK0O,MAAMoL,cAC1B,aAQMqpB,sBAAgB22D,I,SCxB3B,GAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,KAAS,IAIX,KAAQrM,O,upBCiBvB,MAAMsM,WAAwBt8D,IAAM6E,UAClC7D,SACE,MAAM,MACJ1b,EAAK,YACLL,EAAW,KACX2M,EAAI,OACJC,EAAM,SACN0qE,GAAW,EAAI,QACf92D,GACEljC,KAAK0O,MAET,OACE+uB,IAAA14B,cAACoqF,EAAa,KACZ1xD,IAAA14B,cAAA,OACE6sD,UAAU,+BACV3uB,eAAcC,EACdp+B,MAAO,CACLm1F,gBAAiB,sEAGnBx8D,IAAA14B,cAAA,OAAK6sD,UAAU,iBACZooC,GACCv8D,IAAA14B,cAAA,OAAK6sD,UAAU,wBACbn0B,IAAA14B,cAAA,OAAK09B,IAAKpT,EAAMgjE,IAAI,gBAAgBzgC,UAAU,gBAGlDn0B,IAAA14B,cAAA,OAAK6sD,UAAU,qBAAqB7uC,IAGtC0a,IAAA14B,cAAA,OAAK6sD,UAAU,qBACbn0B,IAAA14B,cAAA,OAAK6sD,UAAU,qBACbn0B,IAAA14B,cAAA,OAAK09B,IAAKnT,EAAQ+iE,IAAI,UAAUzgC,UAAU,aAE5Cn0B,IAAA14B,cAAA,OAAK6sD,UAAU,yBAAyBlvC,OAQpD,MAAMw3E,GAA2B/2D,eAC/B42D,IAGa,MAAMI,WAAwC18D,IAAM6E,UAEjEx5B,eAAA0K,GAAA,SAAAA,GAAA1I,GAAA,eAEUmkF,GAAoCnkF,GAAA,uBAE3BiH,IACjB/R,KAAKo8E,QAAQyS,uBAAuB98E,KACrCjH,GAAA,oBAEc,CAAClK,EAAcixF,EAAaj4E,KAC/B,SAANhZ,GAAgBgZ,EAAQ7H,QAC1B0/E,GAAa73E,EAAQ7H,OAAOnC,KAAKylF,qBAIrC52D,SACE,OACEhB,IAAA14B,cAACm1F,GAAwBpL,GAAA,GACnB9uF,KAAK0O,MAAK,CACdo5B,gBAAiB9nC,KAAK8nC,gBACtB7tB,aAAcja,KAAKia,iB,8bAI1BnP,GAzBoBqvF,GAA+B,eAG5BjL,GCpDxB,MAAMkL,WAAiB93D,YAOrBx5B,YAAY4F,GACVkZ,MAAMlZ,GAAO5D,GAAA,iBAP4B,MAAIA,GAAA,sBACF,MAAIA,GAAA,0BACA,MAAIA,GAAA,uBACP,MAAIA,GAAA,kBAAAA,GAAA,qBA6CjC/G,IACf,OAAQA,EAAK+H,MACX,IAAK,UACH,OAAO2xB,IAAA14B,cAAC4vF,GAAW,CAAC9yF,IAAKkC,EAAKC,GAAID,KAAMA,IAC1C,IAAK,WACH,OAAO05B,IAAA14B,cAACuzF,GAAY,CAACv0F,KAAMA,EAAMlC,IAAKkC,EAAKC,KAC7C,IAAK,WACH,OACEy5B,IAAA14B,cAAC+zF,GAAY,CACX9mF,SAAU,kBAAkBjO,EAAKC,GACjCnC,IAAKkC,EAAKC,GACVD,KAAMA,IAGZ,IAAK,kBACH,OAAO05B,IAAA14B,cAAC20F,GAAkB,CAACntE,KAAMxoB,EAAK2F,KAAK6iB,KAAM1qB,IAAKkC,EAAKC,KAC7D,IAAK,qBACH,OACEy5B,IAAA14B,cAAC40F,GAAe,CAAC93F,IAAKkC,EAAKC,GAAI41F,eAAgB71F,EAAK2F,KAAK6iB,OAE7D,IAAK,QACH,OACEkR,IAAA14B,cAACs1F,GAAgB,CACf33E,YAAa3e,EAAK2F,KAAKgZ,YACvB2M,KAAMtrB,EAAK2F,KAAK2lB,KAChBC,OAAQvrB,EAAK2F,KAAK4lB,OAClBvM,MAAOhf,EAAK2F,KAAKqZ,MACjBi3E,WAAYj2F,EAAK2F,KAAK2lB,KACtBxtB,IAAKkC,EAAKC,KAGhB,QAEE,OADAmY,QAAQkF,KAAK,0BAA2Btd,EAAa+H,MAC9C,QAEZhB,GAAA,2BAEqB,KACpB9K,KAAK0yF,GAAGv6D,wBA9ERn4B,KAAK0yF,GAAKlyE,WAAIC,2BAA2B6X,cAEzCt4B,KAAK2sB,MAAQ,CACXwnE,UAAW,KACXpiE,UAAW/xB,KAAK0yF,GAAG3gE,UAAUxwB,MAC7Bm2B,cAAe13B,KAAK0yF,GAAGh7D,cAAcn2B,MACrC8e,WAAYrgB,KAAK0yF,GAAGryE,WAAW9e,OAInC08B,oBACEj+B,KAAKs+B,SAAS,CACZ61D,UAAWn0F,KAAKm0F,YAGlBn0F,KAAKs6F,eAAiBt6F,KAAK0yF,GAAG3gE,UAAU7mB,UAAW3J,IACjDvB,KAAKs+B,SAAS,CAAEvM,UAAWxwB,MAG7BvB,KAAKu6F,mBAAqBv6F,KAAK0yF,GAAGh7D,cAAcxsB,UAAW3J,IACzDvB,KAAKs+B,SAAS,CAAE5G,cAAen2B,MAGjCvB,KAAKy0F,gBAAkBz0F,KAAK0yF,GAAGryE,WAAWnV,UAAW3J,IACnDvB,KAAKs+B,SAAS,CAAEje,WAAY9e,MAI9BvB,KAAK0yF,GAAGjoF,OAGV+zB,uBACEx+B,KAAKs6F,gBAAkBt6F,KAAKs6F,iBAC5Bt6F,KAAKu6F,oBAAsBv6F,KAAKu6F,qBAChCv6F,KAAKy0F,iBAAmBz0F,KAAKy0F,kBAG7Bz0F,KAAK0yF,GAAGtiE,UA4CVqO,SACE,OACEhB,IAAA14B,cAAC2oF,GAAmB,CAClBK,uBAAwB/tF,KAAK2sB,MAAMwnE,UACnCzF,mBAAoB,GACpB8L,iBAA0C,SAA1Bx6F,KAAK2sB,MAAMtM,YAEA,mBAA1BrgB,KAAK2sB,MAAMtM,WACVod,IAAA14B,cAAA,WACE04B,IAAA14B,cAAC+0F,GAAkB,CAAChgF,aAAc9Z,KAAKm4B,sBACvCsF,IAAA14B,cAAA,OAAK6sD,UAAU,yBAGjBn0B,IAAA14B,cAAA,OACE6sD,UAAU,YACVg8B,IAAMxqF,GAAOpD,KAAKm0F,UAAY/wF,EAC9BmuF,aAAW,kBAEVvxF,KAAK2sB,MAAMoF,UAAUjoB,IAAI9J,KAAKy6F,eAC/Bh9D,IAAA14B,cAAA,OAAK6sD,UAAU,2BAQZwoC,U,8bCtIf,MAAM/8D,GAAwB,IAAIC,IAE5Bo9D,GAAwD,CAC5DnK,SAAU9yD,IAAA14B,cAAC41F,GAAY,MACvBnuE,KAAMiR,IAAA14B,cAACq1F,GAAQ,MACf5J,MAAO/yD,IAAA14B,cAAA,OAAK6sD,UAAU,wBAAwB2/B,aAAW,kBAAiB,uBAC1E52D,QAAS8C,IAAA14B,cAAA,OAAK6sD,UAAU,wBAAwB2/B,aAAW,kBAAiB,0BAO9E,MAAMlyD,WAAqB5B,IAAM6E,UAG/Bx5B,YAAY4F,GACVkZ,MAAMlZ,GAAO5D,GAAA,mBAH4B,MAIzC9K,KAAK2sB,MAAQ,CACXiuE,YAAav9D,GAAsBgI,cAIvCpH,oBAEEj+B,KAAKmqC,YAAc9M,GAAsBw9D,uBAAuB3vF,UAC9D,KACElL,KAAKs+B,SAAS,CAAEs8D,YAAav9D,GAAsBgI,iBAKzD7G,uBACMx+B,KAAKmqC,cACPnqC,KAAKmqC,cACLnqC,KAAKmqC,YAAc,MAIvB2wD,UAAUC,GACR,MAAO,KACD19D,GAAsBgI,eAAiB01D,IAG3C19D,GAAsBgI,aAAe01D,IAIzCt8D,SACE,MAAM,YAAEm8D,GAAgB56F,KAAK2sB,MAEvBquE,EAKA,CACJ,CACE7J,SAAU,WACVe,QAASlyF,KAAK86F,UAAU,YACxB/3E,MAAO,YACPuuE,OAAwB,aAAhBsJ,GAEV,CACEzJ,SAAU,OACVe,QAASlyF,KAAK86F,UAAU,QACxB/3E,MAAO,OACPuuE,OAAwB,SAAhBsJ,GAEV,CACEzJ,SAAU,QACVe,QAASlyF,KAAK86F,UAAU,SACxB/3E,MAAO,QACPuuE,OAAwB,UAAhBsJ,GAEV,CACEzJ,SAAU,UACVe,QAASlyF,KAAK86F,UAAU,WACxB/3E,MAAO,UACPuuE,OAAwB,YAAhBsJ,IAIZ,OACEn9D,IAAA14B,cAAA,OAAK6sD,UAAU,qBAAqB2/B,aAAW,kBAC7C9zD,IAAA14B,cAACitF,GAAe,CAAC9xE,MAAO86E,IACxBv9D,IAAA14B,cAAA,OAAK6sD,UAAU,sBAAsB8oC,GAAWE,MAMzCv7D,UClGAA,c,wDCyDR,MClDM47D,EAAqB,CAChCC,IAAK,2BACLC,OAAQ,CACNC,aDgDO,UC/CPC,mBDwDS,aCtDXC,OAAQ,CAENC,cAAe,UAGfC,gBAAiB,UAGjBC,eAAgB,UAGhBC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UACVC,SAAU,UAGVC,iBAAkB,UAClBC,mBAAoB,UACpBC,kBAAmB,UAGnBC,kBAAmB,UACnBC,aAAc,UACdC,WAAY,UAGZC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,WAEXC,QAAS,2BACT97F,KAAM,YACNiL,KDwBS,UCvBTrK,KD6BM,OC5BNm7F,MAAO,2BACPC,WAAY,CACVnrF,KAjDgB,oBAkDhBorF,SAlDgB,sB,4BCJhBl5F,EAAU,CAEd,OAAiB,OACjB,WAAoB,GAEP,IAAI,IAASA,GAIX,IAAQ6pF,OCRvB,MAAM6N,EAASL,EAAWK,OACpBuB,EAAa5B,EAAW4B,WAE9B,MAAMz9D,UAAY3B,IAAM6E,UACtBrE,oBACEj9B,OAAOkE,KAAKo2F,GAAQn2F,QAAStD,IAC3Ba,SAASq6F,gBAAgBj4F,MAAMk4F,YAC7B,SAASn7F,EACTy5F,EAAOz5F,MAIXb,OAAOkE,KAAK23F,GAAY13F,QAAStD,IAC/Ba,SAASq6F,gBAAgBj4F,MAAMk4F,YAC7B,cAAcn7F,EACdg7F,EAAWh7F,MAOf,IAHuBa,SAASM,cAC9B,oDAEmB,CACnB,MAAMi6F,EAASv6F,SAASqC,cAAc,UACtCk4F,EAAOx6D,IAAM,qCACb//B,SAASgP,KAAKnM,YAAY03F,IAI9Bz+D,uBACEx9B,OAAOkE,KAAKo2F,GAAQn2F,QAAStD,IAC3Ba,SAASq6F,gBAAgBj4F,MAAMo4F,eAAe,SAASr7F,KAGzDb,OAAOkE,KAAK23F,GAAY13F,QAAStD,IAC/Ba,SAASq6F,gBAAgBj4F,MAAMo4F,eAAe,cAAcr7F,KAG9D,MAAMo7F,EAASv6F,SAASM,cACtB,oDAEEi6F,GACFA,EAAOn3F,SAIX24B,SACE,OAAOhB,IAAA14B,cAAA,OAAK6sD,UAAU,eAAe5xD,KAAK0O,MAAM8N,WAIrC4iB,QCrDAA","file":"maestro-web-sdk.umd.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"MaestroWebSDK\", [\"react\", \"react-dom\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MaestroWebSDK\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"MaestroWebSDK\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__0__, __WEBPACK_EXTERNAL_MODULE__12__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\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\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","module.exports = __WEBPACK_EXTERNAL_MODULE__0__;","\"use strict\";\n\nvar isOldIE = function isOldIE() {\n var memo;\n return function memorize() {\n if (typeof memo === 'undefined') {\n // Test for IE <= 9 as proposed by Browserhacks\n // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n // Tests for existence of standard globals is to allow style-loader\n // to operate correctly into non-standard environments\n // @see https://github.com/webpack-contrib/style-loader/issues/177\n memo = Boolean(window && document && document.all && !window.atob);\n }\n\n return memo;\n };\n}();\n\nvar getTarget = function getTarget() {\n var memo = {};\n return function memorize(target) {\n if (typeof memo[target] === 'undefined') {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n };\n}();\n\nvar stylesInDom = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDom.length; i++) {\n if (stylesInDom[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var index = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3]\n };\n\n if (index !== -1) {\n stylesInDom[index].references++;\n stylesInDom[index].updater(obj);\n } else {\n stylesInDom.push({\n identifier: identifier,\n updater: addStyle(obj, options),\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction insertStyleElement(options) {\n var style = document.createElement('style');\n var attributes = options.attributes || {};\n\n if (typeof attributes.nonce === 'undefined') {\n var nonce = typeof __webpack_nonce__ !== 'undefined' ? __webpack_nonce__ : null;\n\n if (nonce) {\n attributes.nonce = nonce;\n }\n }\n\n Object.keys(attributes).forEach(function (key) {\n style.setAttribute(key, attributes[key]);\n });\n\n if (typeof options.insert === 'function') {\n options.insert(style);\n } else {\n var target = getTarget(options.insert || 'head');\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n }\n\n return style;\n}\n\nfunction removeStyleElement(style) {\n // istanbul ignore if\n if (style.parentNode === null) {\n return false;\n }\n\n style.parentNode.removeChild(style);\n}\n/* istanbul ignore next */\n\n\nvar replaceText = function replaceText() {\n var textStore = [];\n return function replace(index, replacement) {\n textStore[index] = replacement;\n return textStore.filter(Boolean).join('\\n');\n };\n}();\n\nfunction applyToSingletonTag(style, index, remove, obj) {\n var css = remove ? '' : obj.media ? \"@media \".concat(obj.media, \" {\").concat(obj.css, \"}\") : obj.css; // For old IE\n\n /* istanbul ignore if */\n\n if (style.styleSheet) {\n style.styleSheet.cssText = replaceText(index, css);\n } else {\n var cssNode = document.createTextNode(css);\n var childNodes = style.childNodes;\n\n if (childNodes[index]) {\n style.removeChild(childNodes[index]);\n }\n\n if (childNodes.length) {\n style.insertBefore(cssNode, childNodes[index]);\n } else {\n style.appendChild(cssNode);\n }\n }\n}\n\nfunction applyToTag(style, options, obj) {\n var css = obj.css;\n var media = obj.media;\n var sourceMap = obj.sourceMap;\n\n if (media) {\n style.setAttribute('media', media);\n } else {\n style.removeAttribute('media');\n }\n\n if (sourceMap && typeof btoa !== 'undefined') {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n while (style.firstChild) {\n style.removeChild(style.firstChild);\n }\n\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar singleton = null;\nvar singletonCounter = 0;\n\nfunction addStyle(obj, options) {\n var style;\n var update;\n var remove;\n\n if (options.singleton) {\n var styleIndex = singletonCounter++;\n style = singleton || (singleton = insertStyleElement(options));\n update = applyToSingletonTag.bind(null, style, styleIndex, false);\n remove = applyToSingletonTag.bind(null, style, styleIndex, true);\n } else {\n style = insertStyleElement(options);\n update = applyToTag.bind(null, style, options);\n\n remove = function remove() {\n removeStyleElement(style);\n };\n }\n\n update(obj);\n return function updateStyle(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {\n return;\n }\n\n update(obj = newObj);\n } else {\n remove();\n }\n };\n}\n\nmodule.exports = function (list, options) {\n options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n // tags it will allow on a page\n\n if (!options.singleton && typeof options.singleton !== 'boolean') {\n options.singleton = isOldIE();\n }\n\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n if (Object.prototype.toString.call(newList) !== '[object Array]') {\n return;\n }\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDom[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDom[_index].references === 0) {\n stylesInDom[_index].updater();\n\n stylesInDom.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","import withFocusable, { WithFocusableProps } from './withFocusable';\nimport SpatialNavigation, { InitOptions, KeyMap } from './spatialNavigation';\n\nconst { destroy, pause, resume, setFocus, init, setKeyMap } = SpatialNavigation;\n\nexport { withFocusable, init, setKeyMap, destroy, pause, resume, setFocus };\nexport type { InitOptions, KeyMap, WithFocusableProps };\n","/**\n * Basic observable implementation for view models\n */\nexport class Observable<T> {\n private listeners: ((value: T) => void)[] = [];\n private _value: T;\n\n constructor(initialValue: T) {\n this._value = initialValue;\n }\n\n get value(): T {\n return this._value;\n }\n\n set value(newValue: T) {\n this._value = newValue;\n this.notify();\n }\n\n subscribe(listener: (value: T) => void): () => void {\n this.listeners.push(listener);\n\n // Return unsubscribe function\n return () => {\n this.listeners = this.listeners.filter((l) => l !== listener);\n };\n }\n\n private notify(): void {\n this.listeners.forEach((listener) => listener(this._value));\n }\n}\n","import { WinningBet } from '../models/IWinningBet';\n\nexport const OverlayType = {\n WinningBet: 'winningBet',\n FantasyPlayerEvent: 'fantasyPlayerEvent',\n} as const;\n\nexport type OverlayType = typeof OverlayType[keyof typeof OverlayType];\n\nexport interface IOverlayPosition {\n top?: number;\n left?: number;\n right?: number;\n bottom?: number;\n}\n\nexport interface IOverlaySize {\n width: number;\n height: number;\n}\n\nexport interface IFantasyPayload {\n athleteId: string;\n title: string;\n metadata: string;\n headline: string;\n description: string;\n image?: string;\n sportsType: string;\n}\n\nexport interface IMaestroOverlayEvent {\n type: OverlayType;\n size: IOverlaySize;\n position: IOverlayPosition;\n winningBet?: WinningBet;\n fantasy?: IFantasyPayload;\n}\n\nexport interface IOverlayAnalyticsEvent {\n eventName: 'overlayViewed' | 'overlayClicked';\n attributes: {\n template: string;\n templateId?: string;\n instanceName: string;\n instanceId: string;\n fullscreen?: boolean;\n overlayType: string;\n };\n}\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\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 (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","const ELEMENT_NODE = 1;\n\nconst getRect = (node: any) => {\n let { offsetParent } = node;\n const height = node.offsetHeight;\n const width = node.offsetWidth;\n let left = node.offsetLeft;\n let top = node.offsetTop;\n\n while (offsetParent && offsetParent.nodeType === ELEMENT_NODE) {\n left += offsetParent.offsetLeft - offsetParent.scrollLeft;\n top += offsetParent.offsetTop - offsetParent.scrollTop;\n ({ offsetParent } = offsetParent);\n }\n\n return {\n height,\n left,\n top,\n width,\n };\n};\n\nconst measureLayout = (\n node: any,\n callback: (\n x: number,\n y: number,\n width: number,\n height: number,\n left: number,\n top: number\n ) => void\n) => {\n const relativeNode = node && node.parentNode;\n\n if (relativeNode) {\n const relativeRect = getRect(relativeNode);\n const { height, left, top, width } = getRect(node);\n const x = left - relativeRect.left;\n const y = top - relativeRect.top;\n\n callback(x, y, width, height, left, top);\n }\n};\n\nexport default measureLayout;\n","// We'll make VisualDebugger no-op for any environments lacking a DOM (e.g. SSR and React Native non-web platforms).\nconst hasDOM = typeof window !== 'undefined' && window.document;\n\nconst WIDTH = hasDOM ? window.innerWidth : 0;\nconst HEIGHT = hasDOM ? window.innerHeight : 0;\n\ninterface Layout {\n left: number;\n top: number;\n width: number;\n height: number;\n}\n\nclass VisualDebugger {\n private debugCtx: CanvasRenderingContext2D | null;\n private layoutsCtx: CanvasRenderingContext2D | null;\n\n constructor() {\n if (hasDOM) {\n this.debugCtx = VisualDebugger.createCanvas('sn-debug', 1010);\n this.layoutsCtx = VisualDebugger.createCanvas('sn-layouts', 1000);\n } else {\n this.debugCtx = null;\n this.layoutsCtx = null;\n }\n }\n\n static createCanvas(id: string, zIndex: number): CanvasRenderingContext2D {\n const canvas = (document.querySelector(`#${id}`) ||\n document.createElement('canvas')) as HTMLCanvasElement;\n\n canvas.setAttribute('id', id);\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n throw new Error('Could not get 2d context from canvas');\n }\n\n canvas.style.cssText = `position: fixed; top: 0; left: 0; z-index: ${zIndex}`;\n\n document.body.appendChild(canvas);\n\n canvas.width = WIDTH;\n canvas.height = HEIGHT;\n\n return ctx;\n }\n\n clear(): void {\n if (!hasDOM || !this.debugCtx) {\n return;\n }\n this.debugCtx.clearRect(0, 0, WIDTH, HEIGHT);\n }\n\n clearLayouts(): void {\n if (!hasDOM || !this.layoutsCtx) {\n return;\n }\n this.layoutsCtx.clearRect(0, 0, WIDTH, HEIGHT);\n }\n\n drawLayout(layout: Layout, focusKey: string, parentFocusKey: string): void {\n if (!hasDOM || !this.layoutsCtx) {\n return;\n }\n this.layoutsCtx.strokeStyle = 'green';\n this.layoutsCtx.strokeRect(\n layout.left,\n layout.top,\n layout.width,\n layout.height\n );\n this.layoutsCtx.font = '8px monospace';\n this.layoutsCtx.fillStyle = 'red';\n this.layoutsCtx.fillText(focusKey, layout.left, layout.top + 10);\n this.layoutsCtx.fillText(parentFocusKey, layout.left, layout.top + 25);\n this.layoutsCtx.fillText(\n `left: ${layout.left}`,\n layout.left,\n layout.top + 40\n );\n this.layoutsCtx.fillText(\n `top: ${layout.top}`,\n layout.left,\n layout.top + 55\n );\n }\n\n drawPoint(\n x: number,\n y: number,\n color: string = 'blue',\n size: number = 10\n ): void {\n if (!hasDOM || !this.debugCtx) {\n return;\n }\n this.debugCtx.strokeStyle = color;\n this.debugCtx.lineWidth = 3;\n this.debugCtx.strokeRect(x - size / 2, y - size / 2, size, size);\n }\n}\n\nexport default VisualDebugger;\n","import measureLayout from './measureLayout';\nimport { Details, Direction, KEY_BACK, Layout } from './utils';\nimport { DIRECTION_DOWN, KEY_ENTER } from './utils';\nimport { DIRECTION_LEFT, DIRECTION_RIGHT, DIRECTION_UP } from './utils';\nimport VisualDebugger from './visualDebugger';\n\nexport const ROOT_FOCUS_KEY = 'SN:ROOT';\n\nconst ADJACENT_SLICE_THRESHOLD = 0.2;\n\n/**\n * Adjacent slice is 5 times more important than diagonal\n */\nconst ADJACENT_SLICE_WEIGHT = 5;\nconst DIAGONAL_SLICE_WEIGHT = 1;\n\n/**\n * Main coordinate distance is 5 times more important\n */\nconst MAIN_COORDINATE_WEIGHT = 5;\n\nexport type KeyType = Direction | typeof KEY_ENTER | typeof KEY_BACK;\n\nexport interface KeyMap {\n [key: string]: number[];\n}\n\nconst DEFAULT_KEY_MAP: KeyMap = {\n [DIRECTION_LEFT]: [37],\n [DIRECTION_UP]: [38],\n [DIRECTION_RIGHT]: [39],\n [DIRECTION_DOWN]: [40],\n [KEY_ENTER]: [13],\n [KEY_BACK]: [8, 10009],\n};\n\nconst DEBUG_FN_COLORS = ['#0FF', '#FF0', '#F0F'];\n\nconst THROTTLE_OPTIONS = {\n leading: true,\n trailing: false,\n};\n\ninterface FocusableComponent {\n focusKey: string;\n node: HTMLElement;\n parentFocusKey: string | null;\n onEnterPressHandler?: (details: Details) => void;\n onBackPressHandler?: (details: Details) => void;\n onEnterReleaseHandler?: () => void;\n onArrowPressHandler?: (\n direction: Direction,\n details: Details\n ) => boolean | void;\n onBecameFocusedHandler?: (layout: Layout, details: any) => void;\n onBecameBlurredHandler?: (layout: Layout, details: any) => void;\n onUpdateFocus?: (isFocused: boolean) => void;\n onUpdateHasFocusedChild?: (hasFocusedChild: boolean) => void;\n forgetLastFocusedChild?: boolean;\n trackChildren?: boolean;\n lastFocusedChildKey: string | null;\n preferredChildFocusKey?: string;\n focusable: boolean;\n blockNavigationOut?: boolean;\n autoRestoreFocus?: boolean;\n layout: Layout;\n layoutUpdated: boolean;\n}\n\ninterface Corner {\n x: number;\n y: number;\n}\n\ninterface RefCorners {\n a: Corner;\n b: Corner;\n}\n\nexport interface InitOptions {\n debug?: boolean;\n visualDebug?: boolean;\n nativeMode?: boolean;\n throttle?: number;\n throttleKeypresses?: boolean;\n}\n\ninterface AddFocusableOptions {\n focusKey: string;\n node: HTMLElement;\n parentFocusKey: string | null;\n onEnterPressHandler?: (details: Details) => void;\n onEnterReleaseHandler?: () => void;\n onBackPressHandler?: (details: Details) => void;\n onArrowPressHandler?: (\n direction: Direction,\n details: Details\n ) => boolean | void;\n onBecameFocusedHandler?: (layout: Layout, details: any) => void;\n onBecameBlurredHandler?: (layout: Layout, details: any) => void;\n forgetLastFocusedChild?: boolean;\n trackChildren?: boolean;\n onUpdateFocus?: (isFocused: boolean) => void;\n onUpdateHasFocusedChild?: (hasFocusedChild: boolean) => void;\n preferredChildFocusKey?: string;\n autoRestoreFocus?: boolean;\n focusable?: boolean;\n blockNavigationOut?: boolean;\n}\n\ninterface UpdateFocusableOptions {\n node?: HTMLElement;\n preferredChildFocusKey?: string;\n focusable?: boolean;\n blockNavigationOut?: boolean;\n}\n\nexport const getChildClosestToOrigin = (\n children: FocusableComponent[]\n): FocusableComponent => {\n const childrenClosestToOrigin = sortBy(\n children,\n ({ layout }) => Math.abs(layout.left) + Math.abs(layout.top)\n );\n\n return first(childrenClosestToOrigin) as FocusableComponent;\n};\n\nconst throttle = <T extends (...args: any[]) => any>(\n func: T,\n wait: number,\n options: { leading?: boolean; trailing?: boolean } = {}\n): T => {\n let timeout: number | null = null;\n let previous = 0;\n const { leading = true, trailing = true } = options;\n\n return function (this: any, ...args: Parameters<T>) {\n const now = Date.now();\n if (!previous && !leading) previous = now;\n const remaining = wait - (now - previous);\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(this, args);\n } else if (!timeout && trailing) {\n timeout = window.setTimeout(() => {\n previous = leading ? Date.now() : 0;\n timeout = null;\n func.apply(this, args);\n }, remaining);\n }\n } as T;\n};\n\nconst sortBy = <T>(array: T[], iteratee: (item: T) => number | string): T[] =>\n [...array].sort((a, b) => {\n const aValue = iteratee(a);\n const bValue = iteratee(b);\n return aValue < bValue ? -1 : aValue > bValue ? 1 : 0;\n });\n\nconst first = <T>(array: T[]): T | undefined => array[0];\n\nconst difference = <T>(array: T[], values: T[]): T[] =>\n array.filter((x) => !values.includes(x));\n\nconst forEach = <T>(\n array: T[],\n iteratee: (item: T, index: number) => void\n): void => array.forEach(iteratee);\n\n/* eslint-disable no-nested-ternary */\nclass SpatialNavigation {\n private focusableComponents: Record<string, FocusableComponent>;\n private focusKey: string | null;\n private parentsHavingFocusedChild: string[];\n private enabled: boolean;\n private nativeMode: boolean;\n private throttle: number;\n private throttleKeypresses: boolean;\n private pressedKeys: Record<string, number>;\n private paused: boolean;\n private keyDownEventListener: ((event: KeyboardEvent) => void) | null;\n private keyUpEventListener: ((event: KeyboardEvent) => void) | null;\n private keyMap: KeyMap;\n private debug: boolean;\n private visualDebugger: VisualDebugger | null;\n private logIndex: number;\n\n /**\n * Used to determine the coordinate that will be used to filter items that are over the \"edge\"\n */\n static getCutoffCoordinate(\n isVertical: boolean,\n isIncremental: boolean,\n isSibling: boolean,\n layout: Layout\n ): number {\n const itemX = layout.left;\n const itemY = layout.top;\n const itemWidth = layout.width;\n const itemHeight = layout.height;\n\n const coordinate = isVertical ? itemY : itemX;\n const itemSize = isVertical ? itemHeight : itemWidth;\n\n return isIncremental\n ? isSibling\n ? coordinate\n : coordinate + itemSize\n : isSibling\n ? coordinate + itemSize\n : coordinate;\n }\n\n /**\n * Returns two corners (a and b) coordinates that are used as a reference points\n * Where \"a\" is always leftmost and topmost corner, and \"b\" is rightmost bottommost corner\n */\n static getRefCorners(\n direction: Direction,\n isSibling: boolean,\n layout: Layout\n ): RefCorners {\n const itemX = layout.left;\n const itemY = layout.top;\n const itemWidth = layout.width;\n const itemHeight = layout.height;\n\n const result: RefCorners = {\n a: {\n x: 0,\n y: 0,\n },\n b: {\n x: 0,\n y: 0,\n },\n };\n\n switch (direction) {\n case DIRECTION_UP: {\n const y = isSibling ? itemY + itemHeight : itemY;\n\n result.a = {\n x: itemX,\n y,\n };\n\n result.b = {\n x: itemX + itemWidth,\n y,\n };\n\n break;\n }\n\n case DIRECTION_DOWN: {\n const y = isSibling ? itemY : itemY + itemHeight;\n\n result.a = {\n x: itemX,\n y,\n };\n\n result.b = {\n x: itemX + itemWidth,\n y,\n };\n\n break;\n }\n\n case DIRECTION_LEFT: {\n const x = isSibling ? itemX + itemWidth : itemX;\n\n result.a = {\n x,\n y: itemY,\n };\n\n result.b = {\n x,\n y: itemY + itemHeight,\n };\n\n break;\n }\n\n case DIRECTION_RIGHT: {\n const x = isSibling ? itemX : itemX + itemWidth;\n\n result.a = {\n x,\n y: itemY,\n };\n\n result.b = {\n x,\n y: itemY + itemHeight,\n };\n\n break;\n }\n\n default:\n break;\n }\n\n return result;\n }\n\n /**\n * Calculates if the sibling node is intersecting enough with the ref node by the secondary coordinate\n */\n static isAdjacentSlice(\n refCorners: RefCorners,\n siblingCorners: RefCorners,\n isVerticalDirection: boolean\n ): boolean {\n const { a: refA, b: refB } = refCorners;\n const { a: siblingA, b: siblingB } = siblingCorners;\n const coordinate = isVerticalDirection ? 'x' : 'y';\n\n const refCoordinateA = refA[coordinate];\n const refCoordinateB = refB[coordinate];\n const siblingCoordinateA = siblingA[coordinate];\n const siblingCoordinateB = siblingB[coordinate];\n\n const thresholdDistance =\n (refCoordinateB - refCoordinateA) * ADJACENT_SLICE_THRESHOLD;\n\n const intersectionLength = Math.max(\n 0,\n Math.min(refCoordinateB, siblingCoordinateB) -\n Math.max(refCoordinateA, siblingCoordinateA)\n );\n\n return intersectionLength >= thresholdDistance;\n }\n\n static getPrimaryAxisDistance(\n refCorners: RefCorners,\n siblingCorners: RefCorners,\n isVerticalDirection: boolean\n ): number {\n const { a: refA } = refCorners;\n const { a: siblingA } = siblingCorners;\n const coordinate = isVerticalDirection ? 'y' : 'x';\n\n return Math.abs(siblingA[coordinate] - refA[coordinate]);\n }\n\n static getSecondaryAxisDistance(\n refCorners: RefCorners,\n siblingCorners: RefCorners,\n isVerticalDirection: boolean\n ): number {\n const { a: refA, b: refB } = refCorners;\n const { a: siblingA, b: siblingB } = siblingCorners;\n const coordinate = isVerticalDirection ? 'x' : 'y';\n\n const refCoordinateA = refA[coordinate];\n const refCoordinateB = refB[coordinate];\n const siblingCoordinateA = siblingA[coordinate];\n const siblingCoordinateB = siblingB[coordinate];\n\n const distancesToCompare = [];\n\n distancesToCompare.push(Math.abs(siblingCoordinateA - refCoordinateA));\n distancesToCompare.push(Math.abs(siblingCoordinateA - refCoordinateB));\n distancesToCompare.push(Math.abs(siblingCoordinateB - refCoordinateA));\n distancesToCompare.push(Math.abs(siblingCoordinateB - refCoordinateB));\n\n return Math.min(...distancesToCompare);\n }\n\n /**\n * Inspired by: https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS_for_TV/TV_remote_control_navigation#Algorithm_design\n * Ref Corners are the 2 corners of the current component in the direction of navigation\n * They used as a base to measure adjacent slices\n */\n sortSiblingsByPriority(\n siblings: FocusableComponent[],\n currentLayout: Layout,\n direction: Direction,\n _focusKey: string\n ): FocusableComponent[] {\n const isVerticalDirection =\n direction === DIRECTION_DOWN || direction === DIRECTION_UP;\n\n const refCorners = SpatialNavigation.getRefCorners(\n direction,\n false,\n currentLayout\n );\n\n return [...siblings].sort(\n (a: FocusableComponent, b: FocusableComponent) => {\n const aCorners = SpatialNavigation.getRefCorners(\n direction,\n true,\n a.layout\n );\n const bCorners = SpatialNavigation.getRefCorners(\n direction,\n true,\n b.layout\n );\n\n const aIsAdjacentSlice = SpatialNavigation.isAdjacentSlice(\n refCorners,\n aCorners,\n isVerticalDirection\n );\n const bIsAdjacentSlice = SpatialNavigation.isAdjacentSlice(\n refCorners,\n bCorners,\n isVerticalDirection\n );\n\n const aPrimaryAxisFunction = aIsAdjacentSlice\n ? SpatialNavigation.getPrimaryAxisDistance\n : SpatialNavigation.getSecondaryAxisDistance;\n const bPrimaryAxisFunction = bIsAdjacentSlice\n ? SpatialNavigation.getPrimaryAxisDistance\n : SpatialNavigation.getSecondaryAxisDistance;\n\n const aSecondaryAxisFunction = aIsAdjacentSlice\n ? SpatialNavigation.getSecondaryAxisDistance\n : SpatialNavigation.getPrimaryAxisDistance;\n const bSecondaryAxisFunction = bIsAdjacentSlice\n ? SpatialNavigation.getSecondaryAxisDistance\n : SpatialNavigation.getPrimaryAxisDistance;\n\n const aPrimaryAxisDistance = aPrimaryAxisFunction(\n refCorners,\n aCorners,\n isVerticalDirection\n );\n const bPrimaryAxisDistance = bPrimaryAxisFunction(\n refCorners,\n bCorners,\n isVerticalDirection\n );\n\n const aSecondaryAxisDistance = aSecondaryAxisFunction(\n refCorners,\n aCorners,\n isVerticalDirection\n );\n const bSecondaryAxisDistance = bSecondaryAxisFunction(\n refCorners,\n bCorners,\n isVerticalDirection\n );\n\n const aTotalDistancePoints =\n aPrimaryAxisDistance * MAIN_COORDINATE_WEIGHT +\n aSecondaryAxisDistance;\n const bTotalDistancePoints =\n bPrimaryAxisDistance * MAIN_COORDINATE_WEIGHT +\n bSecondaryAxisDistance;\n\n const aPriority =\n (aTotalDistancePoints + 1) /\n (aIsAdjacentSlice ? ADJACENT_SLICE_WEIGHT : DIAGONAL_SLICE_WEIGHT);\n const bPriority =\n (bTotalDistancePoints + 1) /\n (bIsAdjacentSlice ? ADJACENT_SLICE_WEIGHT : DIAGONAL_SLICE_WEIGHT);\n\n return aPriority - bPriority;\n }\n );\n }\n\n constructor() {\n this.focusableComponents = {};\n this.focusKey = null;\n this.parentsHavingFocusedChild = [];\n this.enabled = false;\n this.nativeMode = false;\n this.throttle = 0;\n this.throttleKeypresses = false;\n this.pressedKeys = {};\n this.paused = false;\n this.keyDownEventListener = null;\n this.keyUpEventListener = null;\n this.keyMap = DEFAULT_KEY_MAP;\n this.debug = false;\n this.visualDebugger = null;\n this.logIndex = 0;\n\n this.onKeyEvent = this.onKeyEvent.bind(this);\n this.pause = this.pause.bind(this);\n this.resume = this.resume.bind(this);\n this.setFocus = this.setFocus.bind(this);\n this.updateAllLayouts = this.updateAllLayouts.bind(this);\n this.navigateByDirection = this.navigateByDirection.bind(this);\n this.init = this.init.bind(this);\n this.setKeyMap = this.setKeyMap.bind(this);\n }\n\n init({\n debug = false,\n visualDebug = false,\n nativeMode = false,\n throttle = 0,\n throttleKeypresses = false,\n }: InitOptions = {}) {\n if (!this.enabled) {\n this.enabled = true;\n this.nativeMode = nativeMode;\n this.throttleKeypresses = throttleKeypresses;\n this.debug = debug;\n\n if (!this.nativeMode) {\n if (Number.isInteger(throttle) && throttle > 0) {\n this.throttle = throttle;\n }\n this.bindEventHandlers();\n if (visualDebug) {\n this.visualDebugger = new VisualDebugger();\n this.startDrawLayouts();\n }\n }\n }\n }\n\n startDrawLayouts(): void {\n const draw = () => {\n requestAnimationFrame(() => {\n this.visualDebugger?.clearLayouts();\n Object.entries(this.focusableComponents).forEach(\n ([focusKey, component]) => {\n this.visualDebugger?.drawLayout(\n component.layout,\n focusKey,\n component.parentFocusKey!\n );\n }\n );\n draw();\n });\n };\n\n draw();\n }\n\n destroy(): void {\n if (this.enabled) {\n this.enabled = false;\n this.nativeMode = false;\n this.throttle = 0;\n this.throttleKeypresses = false;\n this.focusKey = null;\n this.parentsHavingFocusedChild = [];\n this.focusableComponents = {};\n this.paused = false;\n this.keyMap = DEFAULT_KEY_MAP;\n\n this.unbindEventHandlers();\n }\n }\n\n getEventType(keyCode: number): KeyType | undefined {\n return Object.keys(this.getKeyMap()).find((key) =>\n this.getKeyMap()[key].includes(keyCode)\n ) as KeyType | undefined;\n }\n\n bindEventHandlers(): void {\n if (typeof window !== 'undefined' && window.addEventListener) {\n const keyDownHandler = (event: KeyboardEvent) => {\n if (this.paused === true) {\n return;\n }\n\n if (this.debug) {\n this.logIndex += 1;\n }\n\n const eventType = this.getEventType(event.keyCode);\n\n if (!eventType) {\n return;\n }\n\n this.pressedKeys[eventType] = this.pressedKeys[eventType]\n ? this.pressedKeys[eventType] + 1\n : 1;\n\n event.preventDefault();\n event.stopPropagation();\n\n const details: Details = {\n pressedKeys: this.pressedKeys,\n };\n\n if (this.focusKey && this.getNodeLayoutByFocusKey(this.focusKey)) {\n details.layout = this.getNodeLayoutByFocusKey(this.focusKey)!;\n }\n\n if (eventType === KEY_ENTER && this.focusKey) {\n this.onEnterPress(details);\n return;\n }\n\n if (eventType === KEY_BACK && this.focusKey) {\n this.onBackPress(details);\n return;\n }\n\n const preventDefaultNavigation =\n this.onArrowPress(eventType as Direction, details) === false;\n\n if (preventDefaultNavigation) {\n this.log('keyDownEventListener', 'default navigation prevented');\n this.visualDebugger?.clear();\n } else {\n this.onKeyEvent(event);\n }\n };\n\n this.keyDownEventListener = this.throttle\n ? throttle(keyDownHandler, this.throttle, THROTTLE_OPTIONS)\n : keyDownHandler;\n\n this.keyUpEventListener = (event: KeyboardEvent) => {\n const eventType = this.getEventType(event.keyCode);\n\n if (eventType) {\n delete this.pressedKeys[eventType];\n }\n\n if (this.throttle && !this.throttleKeypresses) {\n // @ts-ignore\n this.keyDownEventListener?.cancel?.();\n }\n\n if (eventType === KEY_ENTER && this.focusKey) {\n this.onEnterRelease();\n }\n };\n\n window.addEventListener('keyup', this.keyUpEventListener);\n window.addEventListener('keydown', this.keyDownEventListener);\n }\n }\n\n unbindEventHandlers(): void {\n if (typeof window !== 'undefined' && window.removeEventListener) {\n window.removeEventListener('keydown', this.keyDownEventListener!);\n this.keyDownEventListener = null;\n\n if (this.throttle) {\n window.removeEventListener('keyup', this.keyUpEventListener!);\n this.keyUpEventListener = null;\n }\n }\n }\n\n onEnterPress(details: Details): void {\n const component = this.focusableComponents[this.focusKey!];\n\n if (!component) {\n this.log('onEnterPress', 'noComponent');\n return;\n }\n\n if (!component.focusable) {\n this.log('onEnterPress', 'componentNotFocusable');\n return;\n }\n\n component.onEnterPressHandler?.(details);\n }\n\n onBackPress(details: Details): void {\n const component = this.focusableComponents[this.focusKey!];\n\n if (!component) {\n this.log('onBackPress', 'noComponent');\n return;\n }\n\n if (!component.focusable) {\n this.log('onBackPress', 'componentNotFocusable');\n return;\n }\n\n component.onBackPressHandler?.(details);\n }\n\n onEnterRelease(): void {\n const component = this.focusableComponents[this.focusKey!];\n\n if (!component) {\n this.log('onEnterRelease', 'noComponent');\n return;\n }\n\n if (!component.focusable) {\n this.log('onEnterRelease', 'componentNotFocusable');\n return;\n }\n\n component.onEnterReleaseHandler?.();\n }\n\n onArrowPress(direction: Direction, details: Details): boolean | void {\n const component = this.focusableComponents[this.focusKey!];\n\n if (!component) {\n this.log('onArrowPress', 'noComponent');\n return undefined;\n }\n\n return component.onArrowPressHandler?.(direction, details);\n }\n\n navigateByDirection(\n direction: Direction,\n details: Record<string, any> = {}\n ): void {\n if (this.paused === true) {\n return;\n }\n\n const validDirections = [\n DIRECTION_DOWN,\n DIRECTION_UP,\n DIRECTION_LEFT,\n DIRECTION_RIGHT,\n ];\n\n if (validDirections.includes(direction)) {\n this.log('navigateByDirection', 'direction', direction);\n this.smartNavigate(direction, null, details);\n } else {\n this.log(\n 'navigateByDirection',\n `Invalid direction. You passed: \\`${direction}\\`, but you can use only these: `,\n validDirections\n );\n }\n }\n\n onKeyEvent(event: KeyboardEvent): void {\n this.visualDebugger?.clear();\n\n const direction = Object.keys(this.getKeyMap()).find((key) =>\n this.getKeyMap()[key].includes(event.keyCode)\n ) as KeyType | undefined;\n\n if (direction) {\n this.smartNavigate(direction as Direction, null, { event });\n }\n }\n\n smartNavigate(\n direction: Direction,\n fromParentFocusKey: string | null,\n details: Record<string, any>\n ): void {\n this.log('smartNavigate', 'direction', direction);\n this.log('smartNavigate', 'fromParentFocusKey', fromParentFocusKey);\n this.log('smartNavigate', 'this.focusKey', this.focusKey);\n\n if (!this.nativeMode && !fromParentFocusKey) {\n Object.values(this.focusableComponents).forEach((component) => {\n component.layoutUpdated = false;\n });\n }\n\n const currentComponent = this.focusableComponents[\n fromParentFocusKey || this.focusKey!\n ];\n\n this.log(\n 'smartNavigate',\n 'currentComponent',\n currentComponent ? currentComponent.focusKey : undefined,\n currentComponent ? currentComponent.node : undefined\n );\n\n if (currentComponent) {\n this.updateLayout(currentComponent.focusKey);\n const { parentFocusKey, focusKey, layout } = currentComponent;\n\n const isVerticalDirection =\n direction === DIRECTION_DOWN || direction === DIRECTION_UP;\n const isIncrementalDirection =\n direction === DIRECTION_DOWN || direction === DIRECTION_RIGHT;\n\n const currentCutoffCoordinate = SpatialNavigation.getCutoffCoordinate(\n isVerticalDirection,\n isIncrementalDirection,\n false,\n layout\n );\n\n /**\n * Get only the siblings with the coords on the way of our moving direction\n */\n const siblings = Object.values(this.focusableComponents).filter(\n (component) => {\n if (\n component.parentFocusKey === parentFocusKey &&\n component.focusable\n ) {\n this.updateLayout(component.focusKey);\n const siblingCutoffCoordinate = SpatialNavigation.getCutoffCoordinate(\n isVerticalDirection,\n isIncrementalDirection,\n true,\n component.layout\n );\n\n return isIncrementalDirection\n ? siblingCutoffCoordinate >= currentCutoffCoordinate\n : siblingCutoffCoordinate <= currentCutoffCoordinate;\n }\n\n return false;\n }\n ) as FocusableComponent[];\n\n if (this.debug) {\n this.log('smartNavigate', 'siblings', siblings);\n }\n\n if (siblings.length > 0) {\n const sortedSiblings = this.sortSiblingsByPriority(\n siblings,\n layout,\n direction,\n focusKey\n );\n\n if (this.debug) {\n this.log('smartNavigate', 'sortedSiblings', sortedSiblings);\n }\n\n const nextComponent = sortedSiblings[0];\n\n if (nextComponent) {\n this.setFocus(nextComponent.focusKey, details);\n }\n } else {\n this.log('smartNavigate', 'noSiblings');\n\n if (parentFocusKey) {\n this.smartNavigate(direction, parentFocusKey, details);\n }\n }\n }\n }\n\n saveLastFocusedChildKey(\n component: FocusableComponent | undefined,\n focusKey: string\n ): void {\n if (component) {\n this.log(\n 'saveLastFocusedChildKey',\n `${component.focusKey} lastFocusedChildKey set`,\n focusKey\n );\n component.lastFocusedChildKey = focusKey;\n }\n }\n\n log(functionName: string, debugString: string, ...rest: any[]): void {\n if (this.debug) {\n console.log(\n `%c${functionName}%c${debugString}`,\n `background: ${\n DEBUG_FN_COLORS[this.logIndex % DEBUG_FN_COLORS.length]\n }; color: black; padding: 1px 5px;`,\n 'background: #333; color: #BADA55; padding: 1px 5px;',\n ...rest\n );\n }\n }\n\n getNextFocusKey(targetFocusKey: string): string {\n this.log('getNextFocusKey', 'targetFocusKey', targetFocusKey);\n\n const targetComponent = this.focusableComponents[targetFocusKey];\n\n if (!targetComponent) {\n return targetFocusKey;\n }\n\n const { trackChildren } = targetComponent;\n\n if (!trackChildren) {\n return targetFocusKey;\n }\n\n const children = Object.values(this.focusableComponents).filter(\n (component) =>\n component.parentFocusKey === targetFocusKey && component.focusable\n ) as FocusableComponent[];\n\n if (children.length === 0) {\n return targetFocusKey;\n }\n\n const { lastFocusedChildKey, preferredChildFocusKey } = targetComponent;\n\n /**\n * First of all trying to focus last focused child\n */\n if (\n lastFocusedChildKey &&\n !targetComponent.forgetLastFocusedChild &&\n this.isParticipatingFocusableComponent(lastFocusedChildKey)\n ) {\n this.log(\n 'getNextFocusKey',\n 'lastFocusedChildKey will be focused',\n lastFocusedChildKey\n );\n\n return this.getNextFocusKey(lastFocusedChildKey);\n }\n\n /**\n * If there is no lastFocusedChild, trying to focus the preferred focused key\n */\n if (\n preferredChildFocusKey &&\n this.isParticipatingFocusableComponent(preferredChildFocusKey)\n ) {\n this.log(\n 'getNextFocusKey',\n 'preferredChildFocusKey will be focused',\n preferredChildFocusKey\n );\n\n return this.getNextFocusKey(preferredChildFocusKey);\n }\n\n /**\n * Otherwise, trying to focus something by coordinates\n */\n children.forEach((component) => this.updateLayout(component.focusKey));\n const { focusKey: childKey } = getChildClosestToOrigin(children);\n\n this.log('getNextFocusKey', 'childKey will be focused', childKey);\n\n return this.getNextFocusKey(childKey);\n }\n\n addFocusable({\n focusKey,\n node,\n parentFocusKey,\n onEnterPressHandler,\n onEnterReleaseHandler,\n onBackPressHandler,\n onArrowPressHandler,\n onBecameFocusedHandler,\n onBecameBlurredHandler,\n forgetLastFocusedChild,\n trackChildren,\n onUpdateFocus,\n onUpdateHasFocusedChild,\n preferredChildFocusKey,\n autoRestoreFocus,\n focusable = true,\n blockNavigationOut,\n }: AddFocusableOptions): void {\n this.focusableComponents[focusKey] = {\n focusKey,\n node,\n parentFocusKey,\n onEnterPressHandler,\n onEnterReleaseHandler,\n onBackPressHandler,\n onArrowPressHandler,\n onBecameFocusedHandler,\n onBecameBlurredHandler,\n onUpdateFocus,\n onUpdateHasFocusedChild,\n forgetLastFocusedChild,\n trackChildren,\n lastFocusedChildKey: null,\n preferredChildFocusKey,\n focusable,\n blockNavigationOut,\n autoRestoreFocus,\n layout: {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n left: 0,\n top: 0,\n node,\n },\n layoutUpdated: false,\n };\n\n if (this.nativeMode) {\n return;\n }\n\n this.updateLayout(focusKey);\n\n /**\n * If for some reason this component was already focused before it was added, call the update\n */\n if (focusKey === this.focusKey) {\n this.setFocus(focusKey);\n }\n }\n\n removeFocusable({ focusKey }: { focusKey: string }): void {\n const componentToRemove = this.focusableComponents[focusKey];\n\n if (componentToRemove) {\n const { parentFocusKey } = componentToRemove;\n\n Reflect.deleteProperty(this.focusableComponents, focusKey);\n\n const parentComponent = this.focusableComponents[parentFocusKey!];\n const isFocused = focusKey === this.focusKey;\n\n /**\n * If the component was stored as lastFocusedChild, clear lastFocusedChildKey from parent\n */\n parentComponent &&\n parentComponent.lastFocusedChildKey === focusKey &&\n (parentComponent.lastFocusedChildKey = null);\n\n if (this.nativeMode) {\n return;\n }\n\n /**\n * If the component was also focused at this time, focus another one\n */\n if (isFocused && parentComponent && parentComponent.autoRestoreFocus) {\n this.setFocus(parentFocusKey!);\n }\n }\n }\n\n getNodeLayoutByFocusKey(focusKey: string): Layout | null {\n const component = this.focusableComponents[focusKey];\n\n if (component) {\n this.updateLayout(component.focusKey);\n\n return component.layout;\n }\n\n return null;\n }\n\n setCurrentFocusedKey(\n newFocusKey: string,\n details: Record<string, any>\n ): void {\n if (\n this.isFocusableComponent(this.focusKey!) &&\n newFocusKey !== this.focusKey\n ) {\n const oldComponent = this.focusableComponents[this.focusKey!];\n const parentComponent = this.focusableComponents[\n oldComponent.parentFocusKey!\n ];\n\n this.saveLastFocusedChildKey(parentComponent, this.focusKey!);\n\n oldComponent.onUpdateFocus?.(false);\n oldComponent.onBecameBlurredHandler?.(\n this.getNodeLayoutByFocusKey(this.focusKey!)!,\n details\n );\n }\n\n this.focusKey = newFocusKey;\n\n if (this.isFocusableComponent(this.focusKey)) {\n const newComponent = this.focusableComponents[this.focusKey];\n\n newComponent.onUpdateFocus?.(true);\n newComponent.onBecameFocusedHandler?.(\n this.getNodeLayoutByFocusKey(this.focusKey)!,\n details\n );\n }\n }\n\n updateParentsHasFocusedChild(\n focusKey: string,\n details: Record<string, any>\n ): void {\n const parents: string[] = [];\n\n let currentComponent = this.focusableComponents[focusKey];\n\n /**\n * Recursively iterate the tree up and find all the parents' focus keys\n */\n while (currentComponent) {\n const { parentFocusKey } = currentComponent;\n\n const parentComponent = this.focusableComponents[parentFocusKey!];\n\n if (parentComponent) {\n const { focusKey: currentParentFocusKey } = parentComponent;\n\n parents.push(currentParentFocusKey);\n }\n\n currentComponent = parentComponent;\n }\n\n const parentsToRemoveFlag = difference(\n this.parentsHavingFocusedChild,\n parents\n );\n const parentsToAddFlag = difference(\n parents,\n this.parentsHavingFocusedChild\n );\n\n forEach(parentsToRemoveFlag, (parentFocusKey) => {\n const parentComponent = this.focusableComponents[parentFocusKey];\n\n parentComponent &&\n parentComponent.trackChildren &&\n parentComponent.onUpdateHasFocusedChild?.(false);\n this.onIntermediateNodeBecameBlurred(parentFocusKey, details);\n });\n\n forEach(parentsToAddFlag, (parentFocusKey) => {\n const parentComponent = this.focusableComponents[parentFocusKey];\n\n parentComponent &&\n parentComponent.trackChildren &&\n parentComponent.onUpdateHasFocusedChild?.(true);\n this.onIntermediateNodeBecameFocused(parentFocusKey, details);\n });\n\n this.parentsHavingFocusedChild = parents;\n }\n\n updateParentsLastFocusedChild(focusKey: string): void {\n let currentComponent = this.focusableComponents[focusKey];\n\n /**\n * Recursively iterate the tree up and update all the parent's lastFocusedChild\n */\n while (currentComponent) {\n const { parentFocusKey } = currentComponent;\n\n const parentComponent = this.focusableComponents[parentFocusKey!];\n\n if (parentComponent) {\n this.saveLastFocusedChildKey(\n parentComponent,\n currentComponent.focusKey\n );\n }\n\n currentComponent = parentComponent;\n }\n }\n\n getKeyMap(): KeyMap {\n return this.keyMap;\n }\n\n setKeyMap(keyMap: KeyMap): void {\n this.keyMap = {\n ...this.getKeyMap(),\n ...keyMap,\n };\n }\n\n isFocusableComponent(focusKey: string): boolean {\n return !!this.focusableComponents[focusKey];\n }\n\n /**\n * Checks whether the focusableComponent is actually participating in spatial navigation (in other words, is a\n * 'focusable' focusableComponent). Seems less confusing than calling it isFocusableFocusableComponent()\n */\n isParticipatingFocusableComponent(focusKey: string): boolean {\n return (\n this.isFocusableComponent(focusKey) &&\n this.focusableComponents[focusKey].focusable\n );\n }\n\n onIntermediateNodeBecameFocused(\n focusKey: string,\n details: Record<string, any>\n ): void {\n this.isParticipatingFocusableComponent(focusKey) &&\n this.focusableComponents[focusKey].onBecameFocusedHandler?.(\n this.getNodeLayoutByFocusKey(focusKey)!,\n details\n );\n }\n\n onIntermediateNodeBecameBlurred(\n focusKey: string,\n details: Record<string, any>\n ): void {\n this.isParticipatingFocusableComponent(focusKey) &&\n this.focusableComponents[focusKey].onBecameBlurredHandler?.(\n this.getNodeLayoutByFocusKey(focusKey)!,\n details\n );\n }\n\n pause(): void {\n this.paused = true;\n }\n\n resume(): void {\n this.paused = false;\n }\n\n setFocus(targetFocusKey: string, details: Record<string, any> = {}): void {\n const lastFocusedKey = this.focusKey;\n const newFocusKey = this.getNextFocusKey(targetFocusKey);\n\n this.log('setFocus', 'newFocusKey', newFocusKey);\n\n this.setCurrentFocusedKey(newFocusKey, details);\n this.updateParentsHasFocusedChild(newFocusKey, details);\n this.updateParentsLastFocusedChild(lastFocusedKey!);\n }\n\n updateAllLayouts(): void {\n if (this.nativeMode) {\n return;\n }\n\n Object.entries(this.focusableComponents).forEach(([focusKey]) => {\n this.updateLayout(focusKey);\n });\n }\n\n updateLayout(focusKey: string): void {\n const component = this.focusableComponents[focusKey];\n\n if (!component || this.nativeMode || component.layoutUpdated) {\n return;\n }\n\n const { node } = component;\n\n measureLayout(\n node,\n (\n x: number,\n y: number,\n width: number,\n height: number,\n left: number,\n top: number\n ) => {\n component.layout = {\n x,\n y,\n width,\n height,\n left,\n top,\n node,\n };\n }\n );\n }\n\n updateFocusable(\n focusKey: string,\n {\n node,\n preferredChildFocusKey,\n focusable,\n blockNavigationOut,\n }: UpdateFocusableOptions\n ): void {\n if (this.nativeMode) {\n return;\n }\n\n const component = this.focusableComponents[focusKey];\n\n if (component) {\n component.preferredChildFocusKey = preferredChildFocusKey;\n component.focusable = focusable ?? component.focusable;\n component.blockNavigationOut = blockNavigationOut;\n\n if (node) {\n component.node = node;\n }\n }\n }\n\n isNativeMode(): boolean {\n return this.nativeMode;\n }\n\n getFocusableComponents(): FocusableComponent[] {\n return Object.values(this.focusableComponents) as FocusableComponent[];\n }\n\n getFocusableComponentsByParentFocusKey(\n parentFocusKey: string\n ): FocusableComponent[] {\n return Object.values(this.focusableComponents).filter(\n (component) => component.parentFocusKey === parentFocusKey\n ) as FocusableComponent[];\n }\n}\n\n/**\n * Export singleton\n */\nexport default new SpatialNavigation();\n","export const DIRECTION_LEFT = 'left';\nexport const DIRECTION_RIGHT = 'right';\nexport const DIRECTION_UP = 'up';\nexport const DIRECTION_DOWN = 'down';\nexport const KEY_ENTER = 'enter';\nexport const KEY_BACK = 'back';\n\nexport type Direction =\n | typeof DIRECTION_LEFT\n | typeof DIRECTION_RIGHT\n | typeof DIRECTION_UP\n | typeof DIRECTION_DOWN;\n\nexport interface Layout {\n x: number;\n y: number;\n width: number;\n height: number;\n left: number;\n top: number;\n node: HTMLElement;\n}\n\nexport interface Details {\n pressedKeys: Record<string, number>;\n layout?: Layout;\n}\n","import { Observable } from '../helpers/Observable';\n\n/**\n * Base view model that implements reactive properties\n */\nexport abstract class ViewModel {\n private _isLoading = new Observable<boolean>(false);\n private _error = new Observable<string | null>(null);\n\n get isLoading(): Observable<boolean> {\n return this._isLoading;\n }\n\n get error(): Observable<string | null> {\n return this._error;\n }\n\n protected setLoading(loading: boolean): void {\n this._isLoading.value = loading;\n }\n\n protected setError(error: string | null): void {\n this._error.value = error;\n }\n}\n","import SDK from '@/index';\nimport IMaestroKeyPlaysResponse from '../interfaces/IKeyPlaysResponse';\nimport IKeyPlay, {\n KeyPlayLoadFailureStatus,\n KeyPlaysErrorState,\n} from '../interfaces/IKeyPlays';\nimport { Observable } from '@/helpers/Observable';\n\ntype KeyPlayItem = {\n title: string;\n items: IKeyPlay[];\n};\n\nclass KeyPlaysViewModel {\n currentlyPlayingClipIndex = new Observable<number | null>(null);\n lastPlayedClipIndex = new Observable<number | null>(null);\n currentClipPlaybackProgress = new Observable<number | null>(null);\n errorState = new Observable<KeyPlaysErrorState | null>('unpopulatedEvent');\n failedClips = new Observable<{ [key: string]: KeyPlayLoadFailureStatus }>({});\n items = new Observable<KeyPlayItem[]>([]);\n\n isCurrentlyPlaying(index: number): boolean {\n return index === this.currentlyPlayingClipIndex.value;\n }\n\n async setKeyPlays(items: IMaestroKeyPlaysResponse | null): Promise<void> {\n if (items === null) {\n this.errorState.value = 'tabLoadFailure';\n return;\n }\n\n this.items.value = this.parseNetworkResponse(items);\n this.cleanErrors();\n }\n\n private cleanErrors() {\n if (this.errorState.value === 'tabLoadFailure') {\n this.errorState.value = null;\n }\n\n if (this.errorState.value === 'unpopulatedEvent' && this.allItems.length) {\n this.errorState.value = null;\n }\n\n if (!this.allItems.length) {\n this.errorState.value = 'unpopulatedEvent';\n }\n }\n\n async playKeyPlay(atIndex: number): Promise<void> {\n const mevm = SDK.getMaestroEventViewModel();\n mevm.delegate.playClip(atIndex);\n }\n\n parseNetworkResponse(response: IMaestroKeyPlaysResponse): KeyPlayItem[] {\n const teams = Object.values(response.entities.team);\n const athletes = Object.values(response.entities.athlete);\n const homeTeam = teams.find((team) => team.homeAway === 'home');\n const awayTeam = teams.find((team) => team.homeAway === 'away');\n\n if (!homeTeam || !awayTeam) {\n console.warn('Could not find home or away team');\n return [];\n }\n\n const items: IKeyPlay[] = [];\n const result: KeyPlayItem[] = [];\n\n for (const section of response.sections) {\n for (const keyPlay of section.items) {\n const playTeam = keyPlay.team\n ? teams.find((team) => team.id === keyPlay.team)\n : undefined;\n const athlete = keyPlay.athlete\n ? athletes.find((a) => a.id === keyPlay.athlete)\n : undefined;\n\n const teamImageUrl = playTeam ? playTeam.logoRef : undefined;\n const playerImageUrl = athlete ? athlete.headshot : undefined;\n const thumbnailImageUrl =\n keyPlay.thumbnailType !== 'headshot' ? keyPlay.thumbnail : undefined;\n\n const homeScore = keyPlay.homeScore ? keyPlay.homeScore : '0';\n const awayScore = keyPlay.awayScore ? keyPlay.awayScore : '0';\n const homeTeamScore = keyPlay.scoringPlay\n ? parseInt(homeScore)\n : undefined;\n const awayTeamScore = keyPlay.scoringPlay\n ? parseInt(awayScore)\n : undefined;\n\n const randomId = Math.random().toString(36).substring(2, 15);\n const keyPlayData: IKeyPlay = {\n id: randomId,\n description: keyPlay.description ? keyPlay.description : '',\n homeTeamName: homeTeam ? homeTeam.shortName : '',\n awayTeamName: awayTeam ? awayTeam.shortName : '',\n homeTeamScore,\n awayTeamScore,\n clipID: keyPlay.clipID,\n teamImageUrl,\n playerImageUrl,\n thumbnailImageUrl,\n section: section.title,\n };\n\n items.push(keyPlayData);\n }\n\n // Only add the section if it has items\n if (items.length) {\n const sectionTitle = section.title;\n const existingSection = result.find(\n (item) => item.title === sectionTitle\n );\n\n if (existingSection) {\n existingSection.items.push(...items);\n } else {\n result.push({\n title: sectionTitle,\n items: [...items],\n });\n }\n\n // Reset items for the next section\n items.length = 0;\n }\n }\n\n return result;\n }\n\n get allItems() {\n return this.items.value.reduce((acc, section) => {\n return acc.concat(section.items);\n }, [] as IKeyPlay[]);\n }\n\n clipID(forKeyPlayAtIndex: number): string | undefined {\n const item = this.allItems[forKeyPlayAtIndex];\n if (!item) {\n return undefined;\n }\n return this.allItems[forKeyPlayAtIndex].clipID;\n }\n\n handleKeyPlayLoadFailure(forKeyPlayAtIndex: number): void {\n const clipID = this.clipID(forKeyPlayAtIndex);\n if (clipID) {\n const newFailedClips = this.failedClips.value;\n newFailedClips[clipID] = 'recentFailure';\n\n this.failedClips.value = newFailedClips;\n\n setTimeout(() => {\n if (this.loadFailureStatus(forKeyPlayAtIndex) === 'recentFailure') {\n const newFailedClips = this.failedClips.value;\n newFailedClips[clipID] = 'nonRecentFailure';\n this.failedClips.value = newFailedClips;\n }\n }, 5000);\n }\n }\n\n loadFailureStatus(forKeyPlayAtIndex: number): KeyPlayLoadFailureStatus {\n const clipID = this.clipID(forKeyPlayAtIndex);\n const newFailedClips = this.failedClips.value;\n if (!newFailedClips) {\n return 'noFailure';\n }\n return clipID ? this.failedClips.value[clipID] : 'noFailure';\n }\n\n clearLoadFailureStatus(forKeyPlayAtIndex: number): void {\n const clipID = this.clipID(forKeyPlayAtIndex);\n if (clipID && this.failedClips) {\n this.failedClips.value = {\n ...this.failedClips.value,\n [clipID]: 'noFailure',\n };\n }\n }\n\n async userRequestedNewKeyPlaysData() {\n const mevm = SDK.getMaestroEventViewModel();\n await mevm.delegate.userRequestedNewKeyPlaysData();\n }\n}\n\nexport default KeyPlaysViewModel;\n","import axios, { AxiosError, AxiosInstance } from 'axios';\nimport { INetworkClient } from './ports/networkClient';\n\nconst REQUEST_TIMEOUT = 5000;\n\nclass AxiosNetworkClient implements INetworkClient {\n private client: AxiosInstance;\n private retries: number;\n private delay: number;\n private backoff: number;\n\n constructor({\n baseURL,\n retries,\n delay,\n backoff,\n axiosInstance,\n }: {\n baseURL: string;\n retries: number;\n delay: number;\n backoff: number;\n axiosInstance?: AxiosInstance;\n }) {\n this.retries = retries;\n this.delay = delay;\n this.backoff = backoff;\n\n this.client =\n axiosInstance ||\n axios.create({\n baseURL,\n headers: {\n 'Content-Type': 'application/json',\n },\n timeout: REQUEST_TIMEOUT,\n });\n }\n\n private async retry<T>(\n operation: () => Promise<T>,\n attempt: number = 0\n ): Promise<T> {\n try {\n return await operation();\n } catch (error) {\n const axiosError = error as AxiosError;\n\n // Check if we should retry\n const shouldRetry =\n attempt < this.retries &&\n ((axiosError.response && axiosError.response.status === 429) ||\n axiosError.code === 'ECONNABORTED');\n\n if (shouldRetry) {\n const delayTime = this.delay * Math.pow(this.backoff, attempt);\n console.log(\n `Retrying request in ${delayTime}ms due to: ${axiosError.message}`\n );\n\n await new Promise((resolve) => setTimeout(resolve, delayTime));\n return this.retry(operation, attempt + 1);\n }\n\n throw error;\n }\n }\n\n async get<TResponseData = any>(\n endpoint: string,\n params?: Record<string, any>,\n headers?: Record<string, string>\n ): Promise<TResponseData> {\n return this.retry(async () => {\n const response = await this.client.get<TResponseData>(endpoint, {\n params,\n headers,\n });\n return response.data;\n });\n }\n\n async post<TRequestData = any, TResponseData = any>(\n endpoint: string,\n data: TRequestData\n ): Promise<TResponseData> {\n return this.retry(async () => {\n const response = await this.client.post<TResponseData>(endpoint, data);\n return response.data;\n });\n }\n\n setAuthentication(token: string | null, apiKey: string | null): void {\n this.client.defaults.headers.common['Authorization'] = token\n ? `Bearer ${token}`\n : '';\n this.client.defaults.headers.common['x-maestro-api-key'] = apiKey || '';\n }\n}\n\nexport default AxiosNetworkClient;\n","import { ICacheManager } from './ports/cacheManager';\n\n/**\n * Manages caching using localStorage with support for TTL, size limits, and versioning.\n * This class implements the ICacheManager interface and provides methods for setting, getting,\n * and clearing cache entries.\n */\nexport default class LocalStorageCacheManager implements ICacheManager {\n private readonly prefix: string = 'maestro-cache-';\n private readonly cacheDuration: number;\n private readonly maxSize: number;\n private readonly version: string;\n private readonly accessLog: Map<string, number>;\n\n /**\n * Creates a new LocalStorageCacheManager instance.\n * @param cacheDuration - The time-to-live (TTL) for cache entries in milliseconds.\n * @param maxSize - The maximum size of the cache in bytes.\n * @param version - The version of the cache. Used to invalidate cache entries when the version changes.\n */\n constructor(\n cacheDuration: number = 3600000,\n maxSize: number = 5 * 1024 * 1024,\n version: string = '1.0'\n ) {\n this.cacheDuration = cacheDuration;\n this.maxSize = maxSize;\n this.version = version;\n this.accessLog = new Map();\n }\n\n /**\n * Produces a cache key by combining the prefix, version, and the provided key.\n * @param key - The key to be used in the cache.\n * @returns The generated cache key.\n */\n public produceCacheKey(key: string): string {\n return `${this.prefix}${this.version}:${key}`;\n }\n\n /**\n * Calculates the current size of the cache in bytes.\n * @returns The total size of the cache in bytes.\n */\n private getCurrentSize(): number {\n let totalSize = 0;\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(this.prefix)) {\n const value = localStorage.getItem(key);\n if (value) {\n totalSize += key.length + value.length;\n }\n }\n }\n return totalSize;\n }\n\n /**\n * Cleans up old cache entries based on their TTL.\n */\n private cleanupOldEntries(): void {\n const now = Date.now();\n // Collect keys to remove first\n const keysToRemove: string[] = [];\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(this.prefix)) {\n const value = localStorage.getItem(key);\n if (value) {\n try {\n const { timestamp } = JSON.parse(value);\n if (now - timestamp > this.cacheDuration) {\n keysToRemove.push(key);\n }\n } catch (err) {\n keysToRemove.push(key);\n }\n }\n }\n }\n keysToRemove.forEach((key) => {\n localStorage.removeItem(key);\n // Remove from accessLog\n const logicalKey = key.replace(this.prefix + this.version + ':', '');\n this.accessLog.delete(logicalKey);\n });\n }\n\n /**\n * Cleans up least recently used cache entries when the cache is full.\n */\n private cleanupLRUEntries(newItemSize: number): void {\n // Remove oldest entries until we're under the size limit\n const entries = Array.from(this.accessLog.entries()).sort(\n ([, a], [, b]) => a - b\n );\n while (\n this.getCurrentSize() + newItemSize > this.maxSize &&\n entries.length > 0\n ) {\n const [key] = entries.shift()!;\n localStorage.removeItem(this.produceCacheKey(key));\n this.accessLog.delete(key);\n }\n }\n\n /**\n * Sets a value in the cache with the specified key.\n * @param key - The key to store the value under.\n * @param data - The value to be stored in the cache.\n */\n setCache(key: string, data: any): void {\n this.cleanupOldEntries();\n const cacheKey = this.produceCacheKey(key);\n const cacheData = {\n data,\n timestamp: Date.now(),\n };\n const newItemSize = cacheKey.length + JSON.stringify(cacheData).length;\n this.cleanupLRUEntries(newItemSize);\n // After cleanup, check if it fits\n if (this.getCurrentSize() + newItemSize > this.maxSize) {\n // Still doesn't fit, don't add\n return;\n }\n localStorage.setItem(cacheKey, JSON.stringify(cacheData));\n this.accessLog.set(key, Date.now());\n }\n\n /**\n * Retrieves a value from the cache by its key.\n * @param key - The key to retrieve the value for.\n * @returns The cached value, or null if the key is not found or the entry has expired.\n */\n getCache(key: string): any {\n this.cleanupOldEntries();\n const cacheKey = this.produceCacheKey(key);\n const cachedData = localStorage.getItem(cacheKey);\n if (!cachedData) {\n return null;\n }\n try {\n const { data, timestamp } = JSON.parse(cachedData);\n const now = Date.now();\n if (now - timestamp > this.cacheDuration) {\n localStorage.removeItem(cacheKey);\n this.accessLog.delete(key);\n return null;\n }\n // Update last access time\n this.accessLog.set(key, now);\n return data;\n } catch (err) {\n localStorage.removeItem(cacheKey);\n this.accessLog.delete(key);\n return null;\n }\n }\n\n /**\n * Clears a specific cache entry by its key.\n * @param key - The key of the cache entry to clear.\n */\n clearCache(key: string): void {\n const cacheKey = this.produceCacheKey(key);\n localStorage.removeItem(cacheKey);\n this.accessLog.delete(key);\n }\n\n /**\n * Clears all cache entries that match the specified pattern.\n * @param pattern - The pattern to match against cache keys.\n */\n clearCacheByPattern(pattern: string): void {\n // Collect all matching keys first\n const keysToRemove: string[] = [];\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(this.prefix) && key.includes(pattern)) {\n keysToRemove.push(key);\n }\n }\n keysToRemove.forEach((key) => {\n localStorage.removeItem(key);\n // Remove from accessLog\n const logicalKey = key.replace(this.prefix + this.version + ':', '');\n this.accessLog.delete(logicalKey);\n });\n }\n\n /**\n * Clears all cache entries.\n */\n clearAllCache(): void {\n const keysToRemove: string[] = [];\n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(this.prefix)) {\n keysToRemove.push(key);\n }\n }\n keysToRemove.forEach((key) => localStorage.removeItem(key));\n this.accessLog.clear();\n }\n}\n","// Network error types\nexport class NetworkError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'NetworkError';\n }\n}\n\nexport class AuthError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'AuthError';\n }\n}\n\nexport class NotFoundError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'NotFoundError';\n }\n}\n\nexport class ServerError extends Error {\n statusCode: number;\n\n constructor(statusCode: number, message: string) {\n super(message);\n this.name = 'ServerError';\n this.statusCode = statusCode;\n }\n}\n\nexport class BadRequestError extends Error {\n statusCode: number;\n\n constructor(statusCode: number, message: string) {\n super(message);\n this.name = 'BadRequestError';\n this.statusCode = statusCode;\n }\n}\n","import AxiosNetworkClient from '../../external/AxiosNetworkClient';\nimport LocalStorageCacheManager from '../../external/LocalStorageCacheManager';\nimport { ICacheManager } from '../../external/ports/cacheManager';\nimport { INetworkClient } from '../../external/ports/networkClient';\nimport {\n AuthError,\n BadRequestError,\n NetworkError,\n NotFoundError,\n ServerError,\n} from './errors';\n\n// Environment configuration\nexport const WorkingEnvironment = {\n DEVELOPMENT: 'development',\n STAGING: 'staging',\n PRODUCTION: 'production',\n} as const;\n\nexport type WorkingEnvironment = typeof WorkingEnvironment[keyof typeof WorkingEnvironment];\n\n// URL configurations based on environment\nexport const MAESTRO_BASE_URLS: Record<WorkingEnvironment, string> = {\n [WorkingEnvironment.DEVELOPMENT]: 'https://dev.api.maestro.io',\n [WorkingEnvironment.STAGING]:\n 'https://api.us-central1-staging.gcp.maestro.io',\n [WorkingEnvironment.PRODUCTION]: 'https://api.maestro.io',\n};\n\nexport const SDK_FLAVOR = 'MaestroKit_Web';\n\n// Common endpoints\nexport const ENDPOINTS = {\n CAN_I_PLAY: '/caniplay/v1',\n STREAM: '/stream/v1',\n USER_PROFILE: '/userprofile/v1',\n ACTIVE_USER: '/active/v2',\n // Add more endpoints as needed\n};\n\n// HTTP methods\nexport const HttpMethod = {\n GET: 'GET',\n POST: 'POST',\n PUT: 'PUT',\n DELETE: 'DELETE',\n} as const;\n\nexport type HttpMethod = typeof HttpMethod[keyof typeof HttpMethod];\n\nexport interface NetworkManagerOptions {\n environment?: WorkingEnvironment;\n networkClient?: INetworkClient;\n externalNetworkClient?: INetworkClient;\n externalBaseURL?: string;\n cacheManager?: ICacheManager;\n defaultCacheDuration?: number;\n}\n\nclass NetworkManager {\n private static instance: NetworkManager;\n private cacheManager: ICacheManager;\n private maestroClient: INetworkClient;\n private externalClient: INetworkClient;\n private environment: WorkingEnvironment;\n private pollingTasks: Map<\n string,\n { interval: number; controller: AbortController }\n >;\n private localStorage: Storage;\n\n private constructor(\n options: NetworkManagerOptions = {},\n localStorageOverride?: Storage\n ) {\n this.environment = options.environment || WorkingEnvironment.PRODUCTION;\n this.pollingTasks = new Map();\n\n // Initialize cache manager\n this.cacheManager =\n options.cacheManager ||\n new LocalStorageCacheManager(options.defaultCacheDuration);\n\n // Initialize Maestro API client\n this.maestroClient =\n options.networkClient ||\n new AxiosNetworkClient({\n baseURL: MAESTRO_BASE_URLS[this.environment],\n retries: 3,\n delay: 1000,\n backoff: 2,\n });\n\n // Initialize External API client\n this.externalClient =\n options.externalNetworkClient ||\n new AxiosNetworkClient({\n baseURL: options.externalBaseURL || '',\n retries: 3,\n delay: 1000,\n backoff: 2,\n });\n\n this.localStorage = localStorageOverride ||\n (typeof globalThis !== 'undefined' && globalThis.localStorage) || {\n length: 0,\n clear: () => {},\n getItem: () => null,\n key: () => null,\n removeItem: () => {},\n setItem: () => {},\n };\n }\n\n static getInstance(\n options?: NetworkManagerOptions,\n localStorageOverride?: Storage\n ): NetworkManager {\n if (!this.instance) {\n this.instance = new NetworkManager(options, localStorageOverride);\n } else if (options) {\n // Update environment if provided\n if (options.environment) {\n this.instance.setEnvironment(options.environment);\n }\n }\n return this.instance;\n }\n\n /**\n * Sets the working environment (development, staging, production)\n */\n setEnvironment(environment: WorkingEnvironment): void {\n this.environment = environment;\n\n // Update base URLs for clients if they have a client property\n // This is needed for testing and for real clients\n try {\n if ((this.maestroClient as any).client?.defaults) {\n (this.maestroClient as any).client.defaults.baseURL =\n MAESTRO_BASE_URLS[environment];\n }\n } catch (error) {\n throw new Error(`Failed to update client base URLs: ${error}`);\n }\n }\n\n /**\n * Get current environment\n */\n getEnvironment(): WorkingEnvironment {\n return this.environment;\n }\n\n /**\n * Set authentication for Maestro APIs\n */\n setAuthentication(token: string | null, apiKey: string | null): void {\n this.maestroClient.setAuthentication(token, apiKey);\n }\n\n /**\n * Handle errors from network requests\n */\n private handleError(error: any): never {\n // Check if it's an Axios error with a response\n if (error.response) {\n const status = error.response.status;\n const message = error.response.data?.message || error.message;\n\n if (status === 401 || status === 403) {\n throw new AuthError(message);\n } else if (status === 404) {\n throw new NotFoundError(message);\n } else if (status >= 500) {\n throw new ServerError(status, message);\n } else {\n throw new BadRequestError(status, message);\n }\n } else if (error.request) {\n // Request was made but no response received\n throw new NetworkError('Network request failed');\n } else {\n // Something else happened while setting up the request\n throw error;\n }\n }\n\n /**\n * Make a request to the Maestro API\n */\n async maestroApiRequest<T = any>({\n endpoint,\n method = HttpMethod.GET,\n params = {},\n data = null,\n headers = {},\n useCache = true,\n maestroDefaultHeaders = null,\n skipResponseBodyDeserialization = false,\n }: {\n endpoint: string;\n method?: HttpMethod;\n params?: Record<string, any>;\n data?: any;\n headers?: Record<string, string>;\n useCache?: boolean;\n maestroDefaultHeaders?: { siteId: string; jwt: string } | null;\n skipResponseBodyDeserialization?: boolean;\n }): Promise<T> {\n // Add SDK flavor to headers\n const requestHeaders: Record<string, string> = {\n 'x-maestro-maestro-kit-flavor': SDK_FLAVOR,\n ...headers,\n };\n\n // Add Maestro default headers if provided\n if (maestroDefaultHeaders) {\n requestHeaders['x-maestro-client-id'] = maestroDefaultHeaders.siteId;\n requestHeaders['Authorization'] = `Bearer ${maestroDefaultHeaders.jwt}`;\n requestHeaders['Content-type'] = 'application/json';\n }\n\n // Check cache if using GET and cache is enabled\n if (method === HttpMethod.GET && useCache) {\n const cacheKey = this.cacheManager.produceCacheKey(\n JSON.stringify({\n endpoint,\n params,\n data: null,\n })\n );\n const cachedData = this.cacheManager.getCache<T>(cacheKey);\n if (cachedData) {\n return cachedData;\n }\n }\n\n try {\n let response: T;\n\n if (method === HttpMethod.GET) {\n response = await this.maestroClient.get<T>(\n endpoint,\n params,\n requestHeaders\n );\n } else if (method === HttpMethod.POST) {\n response = await this.maestroClient.post<any, T>(endpoint, data);\n } else {\n throw new Error(`Method ${method} not implemented`);\n }\n\n // Handle empty response if needed\n if (skipResponseBodyDeserialization && !response) {\n response = {} as T;\n }\n\n // Cache the response for GET requests\n if (method === HttpMethod.GET && useCache) {\n const cacheKey = this.cacheManager.produceCacheKey(\n JSON.stringify({\n endpoint,\n params,\n data: null,\n })\n );\n this.cacheManager.setCache(cacheKey, response);\n }\n\n return response;\n } catch (error) {\n return this.handleError(error);\n }\n }\n\n /**\n * Make a request to an external API\n */\n async externalApiRequest<T = any>({\n endpoint,\n method = HttpMethod.GET,\n params = {},\n data = null,\n headers = {},\n useCache = true,\n skipResponseBodyDeserialization = false,\n }: {\n endpoint: string;\n method?: HttpMethod;\n params?: Record<string, any>;\n data?: any;\n headers?: Record<string, string>;\n useCache?: boolean;\n skipResponseBodyDeserialization?: boolean;\n }): Promise<T> {\n // Check cache if using GET and cache is enabled\n if (method === HttpMethod.GET && useCache) {\n const cacheKey = this.cacheManager.produceCacheKey(\n JSON.stringify({\n endpoint,\n params,\n data: null,\n })\n );\n const cachedData = this.cacheManager.getCache<T>(cacheKey);\n if (cachedData) {\n return cachedData;\n }\n }\n\n try {\n let response: T;\n\n if (method === HttpMethod.GET) {\n response = await this.externalClient.get<T>(endpoint, params, headers);\n } else if (method === HttpMethod.POST) {\n response = await this.externalClient.post<any, T>(endpoint, data);\n } else {\n throw new Error(`Method ${method} not implemented`);\n }\n\n // Handle empty response if needed\n if (skipResponseBodyDeserialization && !response) {\n response = {} as T;\n }\n\n // Cache the response for GET requests\n if (method === HttpMethod.GET && useCache) {\n const cacheKey = this.cacheManager.produceCacheKey(\n JSON.stringify({\n endpoint,\n params,\n data: null,\n })\n );\n this.cacheManager.setCache(cacheKey, response);\n }\n\n return response;\n } catch (error) {\n return this.handleError(error);\n }\n }\n\n /**\n * Start polling a Maestro API endpoint at specified interval\n */\n pollMaestroApiRequest<T = any>({\n endpoint,\n interval,\n method = HttpMethod.GET,\n params = {},\n data = null,\n headers = {},\n maestroDefaultHeaders = null,\n skipResponseBodyDeserialization = false,\n onData,\n onError,\n }: {\n endpoint: string;\n interval: number; // milliseconds\n method?: HttpMethod;\n params?: Record<string, any>;\n data?: any;\n headers?: Record<string, string>;\n maestroDefaultHeaders?: { siteId: string; jwt: string } | null;\n skipResponseBodyDeserialization?: boolean;\n onData: (data: T) => void;\n onError?: (error: Error) => void;\n }): { stop: () => void } {\n // Create a unique key for this polling task\n const taskKey = `${endpoint}-${JSON.stringify(params)}-${JSON.stringify(\n data\n )}`;\n\n // Stop existing polling for this endpoint if it exists\n if (this.pollingTasks.has(taskKey)) {\n this.pollingTasks.get(taskKey)?.controller.abort();\n this.pollingTasks.delete(taskKey);\n }\n\n // Create a new abort controller for cancellation\n const controller = new AbortController();\n const signal = controller.signal;\n\n // Start the polling\n (async () => {\n while (!signal.aborted) {\n try {\n const response = await this.maestroApiRequest<T>({\n endpoint,\n method,\n params,\n data,\n headers,\n maestroDefaultHeaders,\n skipResponseBodyDeserialization,\n useCache: false, // Don't use cache for polling\n });\n\n // Call the callback with the data\n onData(response);\n } catch (error) {\n // Call the error callback if provided\n if (onError) {\n onError(error as Error);\n }\n }\n\n // Wait for the interval before next poll\n if (!signal.aborted) {\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n }\n })();\n\n // Store the controller for later cancellation\n this.pollingTasks.set(taskKey, { controller, interval });\n\n // Return a function to stop polling\n return {\n stop: () => {\n if (this.pollingTasks.has(taskKey)) {\n this.pollingTasks.get(taskKey)?.controller.abort();\n this.pollingTasks.delete(taskKey);\n }\n },\n };\n }\n\n /**\n * Start polling an external API endpoint at specified interval\n */\n pollExternalApiRequest<T = any>({\n endpoint,\n interval,\n method = HttpMethod.GET,\n params = {},\n data = null,\n headers = {},\n skipResponseBodyDeserialization = false,\n onData,\n onError,\n }: {\n endpoint: string;\n interval: number; // milliseconds\n method?: HttpMethod;\n params?: Record<string, any>;\n data?: any;\n headers?: Record<string, string>;\n skipResponseBodyDeserialization?: boolean;\n onData: (data: T) => void;\n onError?: (error: Error) => void;\n }): { stop: () => void } {\n // Create a unique key for this polling task\n const taskKey = `external-${endpoint}-${JSON.stringify(\n params\n )}-${JSON.stringify(data)}`;\n\n // Stop existing polling for this endpoint if it exists\n if (this.pollingTasks.has(taskKey)) {\n this.pollingTasks.get(taskKey)?.controller.abort();\n this.pollingTasks.delete(taskKey);\n }\n\n // Create a new abort controller for cancellation\n const controller = new AbortController();\n const signal = controller.signal;\n\n // Start the polling\n (async () => {\n while (!signal.aborted) {\n try {\n const response = await this.externalApiRequest<T>({\n endpoint,\n method,\n params,\n data,\n headers,\n skipResponseBodyDeserialization,\n useCache: false, // Don't use cache for polling\n });\n\n // Call the callback with the data\n onData(response);\n } catch (error) {\n // Call the error callback if provided\n if (onError) {\n onError(error as Error);\n }\n }\n\n // Wait for the interval before next poll\n if (!signal.aborted) {\n await new Promise((resolve) => setTimeout(resolve, interval));\n }\n }\n })();\n\n // Store the controller for later cancellation\n this.pollingTasks.set(taskKey, { controller, interval });\n\n // Return a function to stop polling\n return {\n stop: () => {\n if (this.pollingTasks.has(taskKey)) {\n this.pollingTasks.get(taskKey)?.controller.abort();\n this.pollingTasks.delete(taskKey);\n }\n },\n };\n }\n\n /**\n * Stop all polling tasks\n */\n stopAllPolling(): void {\n for (const [key, { controller }] of this.pollingTasks.entries()) {\n controller.abort();\n this.pollingTasks.delete(key);\n }\n }\n\n /**\n * Clear all cached data\n */\n clearAllCache(): void {\n const originalLength = this.localStorage.length;\n for (let i = 0; i < originalLength; i++) {\n const key = this.localStorage.key(i);\n if (key && key.startsWith('maestro-cache-')) {\n this.localStorage.removeItem(key);\n }\n }\n }\n}\n\n// Export singleton instance as default\nexport default NetworkManager;\n","import NetworkManager, { HttpMethod } from './NetworkManager/NetworkManager';\nimport {\n IBetsResponse,\n IPersonalizedBetsResponse,\n} from '../modules/bets/interfaces/IBets';\nimport IMaestroEventDelegate from '@/interfaces/IMaestroEventDelegate';\n\n/**\n * Service for handling bets-related API calls\n */\nclass BetsService {\n public networkManager: NetworkManager;\n\n constructor(delegate: IMaestroEventDelegate) {\n this.networkManager = NetworkManager.getInstance({\n externalBaseURL: delegate.getBettingAPIBaseURL(),\n });\n }\n\n /**\n * Get non-personalized bets for an event\n *\n * @param eventID - The ID of the event\n * @returns Promise with the bets data\n */\n async getNonPersonalizedBets(eventID: string): Promise<IBetsResponse> {\n return this.networkManager.externalApiRequest({\n endpoint: this.nonPersonalizedBetsEndpoint(eventID),\n method: HttpMethod.GET,\n params: {},\n headers: {},\n });\n }\n\n /**\n * Get personalized bets for an event\n *\n * @param eventID - The ID of the event\n * @param swid - The ESPN SWID parameter\n * @param jwt - The authorization JWT\n * @returns Promise with the personalized bets data\n */\n async getPersonalizedBets(\n eventID: string,\n swid: string,\n jwt: string\n ): Promise<IPersonalizedBetsResponse> {\n return this.networkManager.externalApiRequest({\n endpoint: this.personalizedBetsEndpoint(eventID),\n method: HttpMethod.GET,\n params: { swid },\n headers: { 'x-p13n-auth': jwt },\n });\n }\n\n /**\n * Start polling for non-personalized bets\n *\n * @param eventID - The ID of the event\n * @param interval - The polling interval in milliseconds\n * @param onData - Callback for successful data fetch\n * @param onError - Callback for errors\n * @returns Object with a stop function to stop polling\n */\n pollNonPersonalizedBets(\n eventID: string,\n interval: number,\n onData: (data: IBetsResponse) => void,\n onError?: (error: Error) => void\n ): { stop: () => void } {\n return this.networkManager.pollExternalApiRequest({\n endpoint: this.nonPersonalizedBetsEndpoint(eventID),\n interval,\n method: HttpMethod.GET,\n params: {},\n headers: {},\n onData,\n onError,\n });\n }\n\n /**\n * Start polling for personalized bets\n *\n * @param eventID - The ID of the event\n * @param swid - The ESPN SWID parameter\n * @param jwt - The authorization JWT\n * @param interval - The polling interval in milliseconds\n * @param onData - Callback for successful data fetch\n * @param onError - Callback for errors\n * @returns Object with a stop function to stop polling\n */\n pollPersonalizedBets(\n eventID: string,\n swid: string,\n jwt: string,\n interval: number,\n onData: (data: IPersonalizedBetsResponse) => void,\n onError?: (error: Error) => void\n ): { stop: () => void } {\n return this.networkManager.pollExternalApiRequest({\n endpoint: this.personalizedBetsEndpoint(eventID),\n interval,\n method: HttpMethod.GET,\n params: { swid },\n headers: { 'x-p13n-auth': jwt },\n onData,\n onError,\n });\n }\n\n /**\n * Get the endpoint for non-personalized bets\n */\n nonPersonalizedBetsEndpoint(eventID: string): string {\n return `/site/v2/events/${eventID}/odds`;\n }\n\n /**\n * Get the endpoint for personalized bets\n */\n personalizedBetsEndpoint(eventID: string): string {\n return `/personalized/site/v2/events/${eventID}/odds`;\n }\n}\n\nexport default BetsService;\n","import { BetLiveEvent, IPersonalizedBetsResponse } from './interfaces/IBets';\n\nconst event: BetLiveEvent = {\n id: '401721458',\n sport: 'basketball',\n date: '2025-02-28T02:00Z',\n gameState: 'post',\n featured: [\n {\n date: '2024-06-09T17:35Z',\n id: '00015c79-3454-4356-bab6-af050554b761',\n selections: [\n {\n icon: 'https://a.espncdn.com/i/espnbet/mybets_under_caret_icon.png',\n iconDark:\n 'https://a.espncdn.com/i/espnbet/dark/mybets_under_caret_icon.png',\n id: 'f54ad0791-304e-43fe-a45a-96bd237c9c78',\n odds: {},\n outcome: 'PENDING',\n status: 'upcoming',\n text: 'Under 5.5',\n type: 'under',\n },\n {\n icon: 'https://a.espncdn.com/i/espnbet/mybets_under_caret_icon.png',\n iconDark:\n 'https://a.espncdn.com/i/espnbet/dark/mybets_under_caret_icon.png',\n id: 'f54ad079-3604e-43fe-a45a-96bd237c9c78',\n odds: {},\n outcome: 'PENDING',\n status: 'upcoming',\n text: 'Under 5.5',\n type: 'under',\n },\n {\n icon: 'https://a.espncdn.com/i/espnbet/mybets_under_caret_icon.png',\n iconDark:\n 'https://a.espncdn.com/i/espnbet/dark/mybets_under_caret_icon.png',\n id: 'f54ad079-5304e-43fe-a45a-96bd237c9c78',\n odds: {},\n outcome: 'PENDING',\n status: 'upcoming',\n text: 'Under 5.5',\n type: 'under',\n },\n {\n icon: 'https://a.espncdn.com/i/espnbet/mybets_under_caret_icon.png',\n iconDark:\n 'https://a.espncdn.com/i/espnbet/dark/mybets_under_caret_icon.png',\n id: 'f54ad079-3044e-43fe-a45a-96bd237c9c78',\n odds: {},\n outcome: 'PENDING',\n status: 'upcoming',\n text: 'Under 5.5',\n type: 'under',\n },\n {\n icon: 'https://a.espncdn.com/i/espnbet/mybets_under_caret_icon.png',\n iconDark:\n 'https://a.espncdn.com/i/espnbet/dark/mybets_under_caret_icon.png',\n id: 'f54ad079-304e-43fe-a45a-96bd237c9c278',\n odds: {},\n outcome: 'PENDING',\n status: 'upcoming',\n text: 'Under 5.5',\n type: 'under',\n },\n {\n icon: 'https://a.espncdn.com/i/espnbet/mybets_under_caret_icon.png',\n iconDark:\n 'https://a.espncdn.com/i/espnbet/dark/mybets_under_caret_icon.png',\n id: 'f54ad079-304e-43fe-a45a-96bd1237c9c78',\n odds: {},\n outcome: 'PENDING',\n status: 'upcoming',\n text: 'Under 5.5',\n type: 'under',\n },\n ],\n text: 'Carlos Santana Total Hits + Runs + RBIs',\n },\n ],\n bets: {\n odds: [\n {\n displayName: 'Moneyline',\n abbreviation: 'ML',\n type: 'moneyline',\n state: 'close',\n values: [\n { odds: '-500', outcome: 'WIN', team: '130', type: 'home' },\n { odds: '+360', outcome: 'LOSS', team: '164', type: 'away' },\n ],\n },\n {\n displayName: 'Moneyline',\n abbreviation: 'ML',\n type: 'moneyline',\n state: 'open',\n values: [\n { odds: '-700', team: '130', type: 'home' },\n { odds: '+450', team: '164', type: 'away' },\n ],\n },\n {\n displayName: 'Total Points',\n abbreviation: 'Total',\n type: 'total',\n state: 'close',\n values: [\n { line: 'o154.5', odds: '-115', outcome: 'WIN', type: 'over' },\n { line: 'u154.5', odds: '-105', outcome: 'LOSS', type: 'under' },\n ],\n },\n {\n displayName: 'Total Points',\n abbreviation: 'Total',\n type: 'total',\n state: 'open',\n values: [\n { line: 'o154.5', odds: '-105', type: 'over' },\n { line: 'u154.5', odds: '-115', type: 'under' },\n ],\n },\n {\n displayName: 'Spread',\n abbreviation: 'Spread',\n type: 'pointSpread',\n state: 'close',\n values: [\n {\n line: '-9.5',\n odds: '-105',\n outcome: 'LOSS',\n team: '130',\n type: 'home',\n },\n {\n line: '+9.5',\n odds: '-115',\n outcome: 'WIN',\n team: '164',\n type: 'away',\n },\n ],\n },\n {\n displayName: 'Spread',\n abbreviation: 'Spread',\n type: 'pointSpread',\n state: 'open',\n values: [\n { line: '-11.5', odds: '-105', team: '130', type: 'home' },\n { line: '+11.5', odds: '-115', team: '164', type: 'away' },\n ],\n },\n ],\n },\n};\n\nexport const MOCK_BETS_API_RESPONSE: IPersonalizedBetsResponse = {\n entities: {\n teams: {\n '130': {\n id: '130',\n uid: 's:40~l:41~t:130',\n guid: 'c00151c6-cdd4-5aab-0130-37416052eb2a',\n slug: 'michigan-wolverines',\n abbreviation: 'MICH',\n displayName: 'Michigan Wolverines',\n shortDisplayName: 'Michigan',\n name: 'Wolverines',\n nickname: 'Michigan',\n location: 'Michigan',\n color: '00274c',\n alternateColor: 'ffcb05',\n favored: true,\n },\n '164': {\n id: '164',\n uid: 's:40~l:41~t:164',\n guid: '425c8e51-59d0-75a1-0815-dc3556c5cfda',\n slug: 'rutgers-scarlet-knights',\n abbreviation: 'RUTG',\n displayName: 'Rutgers Scarlet Knights',\n shortDisplayName: 'Rutgers',\n name: 'Scarlet Knights',\n nickname: 'Rutgers',\n location: 'Rutgers',\n color: 'd21034',\n alternateColor: 'ffffff',\n favored: false,\n },\n },\n },\n event,\n betsModule: {\n defaultTab: 'live',\n upcoming: [],\n live: [\n {\n id: 'emnPo+hN/Q7CzX/obYcJZCYGql4=',\n type: 'PARLAY',\n betStatus: 'OPEN',\n outcome: 'PENDING',\n overrideOutcome: 'NOT_SET',\n betAmount: '10',\n payoutAmount: '171.55',\n odds: '+1616',\n startTime: '2022-11-29T17:54Z',\n events: [\n {\n displayName: 'Investec South African Open Championship Future',\n legs: [\n {\n id: '71acdfe8-611e-47ae-b7ee-ba6684c6fefa',\n marketId: 'fc47f9f9-2852-4f63-9a70-4adf5b4addd2',\n marketSelectionId: '92803c34-a8b7-476e-9136-b88729c7e51e',\n marketType: 'list',\n status: 'PENDING',\n odds: '+370',\n boostType: 'NONE',\n selectionText: 'Aaron Baddeley',\n type: 'list',\n marketText: 'Tournament Winner',\n icon:\n 'https://a.espncdn.com/i/espnbet/mybets_allsports_green_icon.png',\n iconDark:\n 'https://a.espncdn.com/i/espnbet/dark/mybets_allsports_green_icon.png',\n url:\n 'https://espnbet.test-app.link/qa_integrations?%243p=a_espn&clr=espnbettingintegration&$canonical_url=/sport/golf/organization/dp-world-tour/competition/investec-south-african-open-championship/event/56773312-5fdb-4cb5-b387-df8c18a2c857&market_selection_id[0]=92803c34-a8b7-476e-9136-b88729c7e51e&odds_numerator[0]=11&odds_denominator[0]=2',\n marketStatus: 'LIVE',\n },\n ],\n },\n {\n displayName: 'Lorem Ipsum Dolor Sit Amet',\n legs: [\n {\n id: '472f176b-7575-4d1d-ac63-bcb2d4ec6da9',\n marketId: '2e5fdfdf-7021-464f-939d-5497030fe765',\n marketSelectionId: '3727a3f5-5143-4616-ab4f-713bcf40aa21',\n marketType: 'list',\n status: 'PENDING',\n odds: '+265',\n boostType: 'NONE',\n selectionText: 'Aaron Pike',\n type: 'list',\n marketText: 'Tournament Winner',\n icon:\n 'https://a.espncdn.com/i/espnbet/mybets_allsports_green_icon.png',\n iconDark:\n 'https://a.espncdn.com/i/espnbet/dark/mybets_allsports_green_icon.png',\n url:\n 'https://espnbet.test-app.link/qa_integrations?%243p=a_espn&clr=espnbettingintegration&$canonical_url=/sport/golf/organization/dp-world-tour/competition/isps-handa-australian-open/event/df8ba72f-4be8-4569-840e-954dbd9a7806&market_selection_id[0]=3727a3f5-5143-4616-ab4f-713bcf40aa21&odds_numerator[0]=73&odds_denominator[0]=20',\n marketStatus: 'LIVE',\n },\n ],\n },\n {\n displayName: 'Australian Open Future',\n legs: [\n {\n id: '472f176b-7575-4d1d-ac63-bcb2d4ec6da9',\n marketId: '2e5fdfdf-7021-464f-939d-5497030fe765',\n marketSelectionId: '3727a3f5-5143-4616-ab4f-713bcf40aa21',\n marketType: 'list',\n status: 'PENDING',\n odds: '+265',\n boostType: 'NONE',\n selectionText: 'Aaron Pike',\n type: 'list',\n marketText: 'Tournament Winner',\n icon:\n 'https://a.espncdn.com/i/espnbet/mybets_allsports_green_icon.png',\n iconDark:\n 'https://a.espncdn.com/i/espnbet/dark/mybets_allsports_green_icon.png',\n url:\n 'https://espnbet.test-app.link/qa_integrations?%243p=a_espn&clr=espnbettingintegration&$canonical_url=/sport/golf/organization/dp-world-tour/competition/isps-handa-australian-open/event/df8ba72f-4be8-4569-840e-954dbd9a7806&market_selection_id[0]=3727a3f5-5143-4616-ab4f-713bcf40aa21&odds_numerator[0]=73&odds_denominator[0]=20',\n marketStatus: 'LIVE',\n },\n ],\n },\n {\n displayName: 'USA vs. Australia Future',\n legs: [\n {\n id: '472f176b-7575-4d1d-ac63-bcb2d4ec6da9',\n marketId: '2e5fdfdf-7021-464f-939d-5497030fe765',\n marketSelectionId: '3727a3f5-5143-4616-ab4f-713bcf40aa21',\n marketType: 'list',\n status: 'PENDING',\n odds: '+265',\n boostType: 'NONE',\n selectionText: 'Aaron Pike',\n type: 'list',\n marketText: 'Tournament Winner',\n icon:\n 'https://a.espncdn.com/i/espnbet/mybets_allsports_green_icon.png',\n iconDark:\n 'https://a.espncdn.com/i/espnbet/dark/mybets_allsports_green_icon.png',\n url:\n 'https://espnbet.test-app.link/qa_integrations?%243p=a_espn&clr=espnbettingintegration&$canonical_url=/sport/golf/organization/dp-world-tour/competition/isps-handa-australian-open/event/df8ba72f-4be8-4569-840e-954dbd9a7806&market_selection_id[0]=3727a3f5-5143-4616-ab4f-713bcf40aa21&odds_numerator[0]=73&odds_denominator[0]=20',\n marketStatus: 'LIVE',\n },\n ],\n },\n {\n displayName: 'Championship Future',\n legs: [\n {\n id: '472f176b-7575-4d1d-ac63-bcb2d4ec6da9',\n marketId: '2e5fdfdf-7021-464f-939d-5497030fe765',\n marketSelectionId: '3727a3f5-5143-4616-ab4f-713bcf40aa21',\n marketType: 'list',\n status: 'PENDING',\n odds: '+265',\n boostType: 'NONE',\n selectionText: 'Aaron Pike',\n type: 'list',\n marketText: 'Tournament Winner',\n icon:\n 'https://a.espncdn.com/i/espnbet/mybets_allsports_green_icon.png',\n iconDark:\n 'https://a.espncdn.com/i/espnbet/dark/mybets_allsports_green_icon.png',\n url:\n 'https://espnbet.test-app.link/qa_integrations?%243p=a_espn&clr=espnbettingintegration&$canonical_url=/sport/golf/organization/dp-world-tour/competition/isps-handa-australian-open/event/df8ba72f-4be8-4569-840e-954dbd9a7806&market_selection_id[0]=3727a3f5-5143-4616-ab4f-713bcf40aa21&odds_numerator[0]=73&odds_denominator[0]=20',\n marketStatus: 'LIVE',\n },\n ],\n },\n ],\n rewardInfo: { type: 'NONE' },\n legCount: 5,\n isNoAction: false,\n betDisplayStatement: 'to win',\n },\n {\n id: '9m1bBxUYPyPPjkpzT6buDlcuQng=',\n type: 'STRAIGHT',\n betStatus: 'OPEN',\n outcome: 'PENDING',\n overrideOutcome: 'NOT_SET',\n betAmount: '2',\n payoutAmount: '10.80',\n odds: '+440',\n startTime: '2025-04-30T15:12Z',\n events: [\n {\n displayName: 'SBG/SBE Odds Boost Test',\n legs: [\n {\n id: '8061671d-6d38-4193-a5a6-beab37855840',\n marketId: '567d2a44-ba70-4881-86d7-d25fca94b592',\n marketSelectionId: '59b2b7ee-46c1-4cbc-9286-77fd8670cf9d',\n marketType: 'list',\n status: 'PENDING',\n odds: '+440',\n boostType: 'ODDS_BOOST',\n selectionText:\n 'Lauri Markkanen and Anfernee Simons to Each Record 20+ Points',\n type: 'list',\n marketText: 'SBG/SBE Odds Boost (Was +100)',\n icon:\n 'https://a.espncdn.com/i/espnbet/mybets_allsports_green_icon.png',\n iconDark:\n 'https://a.espncdn.com/i/espnbet/dark/mybets_allsports_green_icon.png',\n url:\n 'https://espnbet.test-app.link/qa_integrations?%243p=a_espn&clr=espnbettingintegration&$canonical_url=/sport/odds-boost/organization/odds-boosts/competition/odds-boosts/event/218e1dca-f68d-4d61-9d79-394e7d752cae&market_selection_id[0]=59b2b7ee-46c1-4cbc-9286-77fd8670cf9d&odds_numerator[0]=27&odds_denominator[0]=5',\n marketStatus: 'LIVE',\n },\n ],\n },\n ],\n rewardInfo: {\n type: 'ODDS_BOOST',\n icon: {\n light: 'https://a.espncdn.com/i/espnbet/boost.png',\n dark: 'https://a.espncdn.com/i/espnbet/boost.png',\n },\n },\n legCount: 1,\n isNoAction: false,\n betDisplayStatement: 'to win',\n },\n {\n id: 'MCH06SyVYvu1UZkhj4KutmL9qKY=',\n type: 'STRAIGHT',\n betStatus: 'OPEN',\n outcome: 'PENDING',\n overrideOutcome: 'NOT_SET',\n betAmount: '3',\n payoutAmount: '16.20',\n odds: '+440',\n startTime: '2025-04-30T15:12Z',\n events: [\n {\n displayName: 'SBG/SBE Odds Boost Test',\n legs: [\n {\n id: '020d7a12-3aa8-459e-8aa2-34eaced4ad7d',\n marketId: '567d2a44-ba70-4881-86d7-d25fca94b592',\n marketSelectionId: '59b2b7ee-46c1-4cbc-9286-77fd8670cf9d',\n marketType: 'list',\n status: 'PENDING',\n odds: '+440',\n boostType: 'ODDS_BOOST',\n selectionText:\n 'Lauri Markkanen and Anfernee Simons to Each Record 20+ Points',\n type: 'list',\n marketText: 'SBG/SBE Odds Boost (Was +100)',\n icon:\n 'https://a.espncdn.com/i/espnbet/mybets_allsports_green_icon.png',\n iconDark:\n 'https://a.espncdn.com/i/espnbet/dark/mybets_allsports_green_icon.png',\n url:\n 'https://espnbet.test-app.link/qa_integrations?%243p=a_espn&clr=espnbettingintegration&$canonical_url=/sport/odds-boost/organization/odds-boosts/competition/odds-boosts/event/218e1dca-f68d-4d61-9d79-394e7d752cae&market_selection_id[0]=59b2b7ee-46c1-4cbc-9286-77fd8670cf9d&odds_numerator[0]=27&odds_denominator[0]=5',\n marketStatus: 'LIVE',\n },\n ],\n },\n ],\n rewardInfo: {\n type: 'ODDS_BOOST',\n icon: {\n light: 'https://a.espncdn.com/i/espnbet/boost.png',\n dark: 'https://a.espncdn.com/i/espnbet/boost.png',\n },\n },\n legCount: 1,\n isNoAction: false,\n betDisplayStatement: 'to win',\n },\n {\n id: 'xfFjqsLCjaFx93eH6c8bOQ9mEkI=',\n type: 'STRAIGHT',\n betStatus: 'OPEN',\n outcome: 'PENDING',\n overrideOutcome: 'NOT_SET',\n betAmount: '2',\n payoutAmount: '12.00',\n odds: '+500',\n startTime: '2025-04-30T17:11Z',\n events: [\n {\n displayName: 'SBG NHL In The News Test',\n legs: [\n {\n id: '910a1ebf-592d-4ae6-9471-6f648786b7e6',\n marketId: 'c5252e65-0999-40af-b366-11967f009871',\n marketSelectionId: 'c9b1446c-26af-43c4-9705-3a2275dc0ee5',\n marketType: 'list',\n status: 'PENDING',\n odds: '+500',\n boostType: 'NONE',\n selectionText:\n 'Long Desc Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus non gravida mi. Aliquam volutpat felis ut tempor dictum.',\n type: 'list',\n marketText: 'SBG In The News NHL',\n icon:\n 'https://a.espncdn.com/i/espnbet/mybets_allsports_green_icon.png',\n iconDark:\n 'https://a.espncdn.com/i/espnbet/dark/mybets_allsports_green_icon.png',\n url:\n 'https://espnbet.test-app.link/qa_integrations?%243p=a_espn&clr=espnbettingintegration&$canonical_url=/sport/odds-boost/organization/in-the-news/competition/in-the-news/event/4cd8e64d-472c-412f-b786-dd91c98ab74e&market_selection_id[0]=c9b1446c-26af-43c4-9705-3a2275dc0ee5&odds_numerator[0]=6&odds_denominator[0]=1',\n marketStatus: 'LIVE',\n },\n ],\n },\n ],\n rewardInfo: { type: 'NONE' },\n legCount: 1,\n isNoAction: false,\n betDisplayStatement: 'to win',\n },\n {\n id: 'A0RLmTR8mjEFSwaa21JeOhyVdXc=',\n type: 'STRAIGHT',\n betStatus: 'OPEN',\n outcome: 'PENDING',\n overrideOutcome: 'NOT_SET',\n betAmount: '1',\n payoutAmount: '3.00',\n odds: '+200',\n startTime: '2025-04-30T17:13Z',\n events: [\n {\n displayName: 'SBG NBA Special Test',\n legs: [\n {\n id: '1aa22098-57b7-4a77-bbf2-ca7ebf812083',\n marketId: 'bc783144-0a2c-465b-9e8f-2ef55a17705c',\n marketSelectionId: '7a91fb3d-1291-4163-b5e0-07fe63e8e706',\n marketType: 'list',\n status: 'PENDING',\n odds: '+200',\n boostType: 'NONE',\n selectionText: 'Tyrese Haliburton to Record 12+ Assists',\n type: 'list',\n marketText: 'SBG NBA Special Test',\n icon:\n 'https://a.espncdn.com/i/espnbet/mybets_allsports_green_icon.png',\n iconDark:\n 'https://a.espncdn.com/i/espnbet/dark/mybets_allsports_green_icon.png',\n url:\n 'https://espnbet.test-app.link/qa_integrations?%243p=a_espn&clr=espnbettingintegration&$canonical_url=/sport/odds-boost/organization/specials/competition/specials/event/d53171e2-f821-4da8-9b1c-ce1a4b735914&market_selection_id[0]=7a91fb3d-1291-4163-b5e0-07fe63e8e706&odds_numerator[0]=33&odds_denominator[0]=10',\n marketStatus: 'LIVE',\n },\n ],\n },\n ],\n rewardInfo: { type: 'NONE' },\n legCount: 1,\n isNoAction: false,\n betDisplayStatement: 'to win',\n },\n {\n id: 'Qhelx5np79zhAchzXXTL1HdDb80=',\n type: 'STRAIGHT',\n betStatus: 'OPEN',\n outcome: 'PENDING',\n overrideOutcome: 'NOT_SET',\n betAmount: '2',\n payoutAmount: '10.00',\n odds: '+400',\n startTime: '2025-04-30T17:13Z',\n events: [\n {\n displayName: 'SBG NBA Special Test',\n legs: [\n {\n id: '73f3af25-5e1a-47eb-bcec-5b23e911c14e',\n marketId: 'bc783144-0a2c-465b-9e8f-2ef55a17705c',\n marketSelectionId: '0a898e16-2a0a-44dd-a580-3ae3bade3684',\n marketType: 'list',\n status: 'PENDING',\n odds: '+400',\n boostType: 'NONE',\n selectionText:\n 'Long Desc Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus non gravida mi. Aliquam volutpat felis ut tempor dictum.',\n type: 'list',\n marketText: 'SBG NBA Special Test',\n icon:\n 'https://a.espncdn.com/i/espnbet/mybets_allsports_green_icon.png',\n iconDark:\n 'https://a.espncdn.com/i/espnbet/dark/mybets_allsports_green_icon.png',\n url:\n 'https://espnbet.test-app.link/qa_integrations?%243p=a_espn&clr=espnbettingintegration&$canonical_url=/sport/odds-boost/organization/specials/competition/specials/event/d53171e2-f821-4da8-9b1c-ce1a4b735914&market_selection_id[0]=0a898e16-2a0a-44dd-a580-3ae3bade3684&odds_numerator[0]=37&odds_denominator[0]=10',\n marketStatus: 'LIVE',\n },\n ],\n },\n ],\n rewardInfo: { type: 'NONE' },\n legCount: 1,\n isNoAction: false,\n betDisplayStatement: 'to win',\n },\n ],\n settled: [\n {\n id: 'z/WEFT7NDVjgb0d/+Elr45MfuRg=',\n type: 'STRAIGHT',\n betStatus: 'SETTLED',\n outcome: 'WIN',\n overrideOutcome: 'NOT_SET',\n closedAtTime: '2025-03-08T05:33Z',\n betAmount: '1',\n payoutAmount: '1.91',\n odds: '-110',\n startTime: '2025-03-08T03:00Z',\n events: [\n {\n displayName: 'San Antonio Spurs @ Sacramento Kings',\n legs: [\n {\n id: '05011199-c88f-4c0d-be31-1b1c7549e273',\n marketId: '728792c6-d2da-435b-920a-eb86bdc45e8c',\n marketSelectionId: '60f8aef9-4c98-4ce2-b861-34e72c2ad13b',\n marketType: 'total',\n status: 'WIN',\n odds: '-110',\n boostType: 'NONE',\n selectionText: 'Over 235',\n type: 'over',\n points: '235.0',\n marketText: 'Total Points',\n icon:\n 'https://a.espncdn.com/i/espnbet/mybets_green_check_icon.png',\n iconDark:\n 'https://a.espncdn.com/i/espnbet/dark/mybets_green_check_icon.png',\n url:\n 'https://espnbet.test-app.link/qa_integrations?%243p=a_espn&clr=espnbettingintegration&$canonical_url=/sport/basketball/organization/united-states/competition/nba/event/e1163795-ddfa-4bfc-9d52-018e8259e4b5&market_selection_id[0]=60f8aef9-4c98-4ce2-b861-34e72c2ad13b&odds_numerator[0]=2&odds_denominator[0]=1',\n marketStatus: 'SETTLED',\n accrued: { goal: 235.0 },\n },\n ],\n },\n ],\n rewardInfo: { type: 'NONE' },\n legCount: 1,\n isNoAction: false,\n betDisplayStatement: 'you won',\n },\n ],\n },\n promos: {\n title: 'The official sportsbook of ESPN',\n description: 'Open the ESPN BET app on a mobile device and start betting!',\n logo: 'https://a.espncdn.com/i/espnbet/ESPN_Bet_Sportsbook_Light.svg',\n qrCode: 'https://assets.geo.hosted.espnsb.com/api/ext_mocks/qr.png',\n },\n disclaimers: {\n location: 'Use a translation with a key based on location here',\n gambling: 'Use a translation with some key based on gambling here',\n },\n ...event,\n};\n","import { Observable } from '../../../helpers/Observable';\nimport BetsService from '../../../services/BetsService';\nimport {\n IBetsResponse,\n IPersonalizedBetsResponse,\n ITeam,\n IUserBet,\n IBetLeg,\n} from '../interfaces/IBets';\n\n// Import ViewModel with correct path\nimport { ViewModel } from '../../../view-models/ViewModel';\nimport { MOCK_BETS_API_RESPONSE } from '../mocks';\nimport { TestUseCase } from '@/interfaces/IMaestroEvent';\nimport { setFocus } from '@/external/spatial-navigation';\nimport IMaestroEventDelegate from '@/interfaces/IMaestroEventDelegate';\n\n// The interval for polling bet data (in milliseconds)\nconst DEFAULT_POLLING_INTERVAL = 30000; // 30 seconds\n\nconst BET_ITEM_TYPE = {\n ODDS: 'odds',\n USER_BETS: 'userBets',\n PROMO: 'promo',\n HOT_PROPS: 'hotProps',\n LOCATION_DISCLAIMER: 'locationDisclaimer',\n GAMBLING_MESSAGE: 'gamblingMessage',\n} as const;\n\nexport type BetItemType = typeof BET_ITEM_TYPE[keyof typeof BET_ITEM_TYPE];\n\ntype TeamOdd = {\n teamAbbreviation: string;\n startOfGameFirstLine: string;\n startOfGameSecondLine: string;\n gameSpreadFirstLine: string;\n gameSpreadSecondLine: string;\n totalPointsFirstLine: string;\n totalPointsSecondLine: string;\n moneylineFirstLine: string;\n};\n\nexport type ISixPackOdds = {\n awayTeamOdds: TeamOdd;\n homeTeamOdds: TeamOdd;\n gameState: string; // 'in', 'pre', 'post'\n sport: string; // e.g., 'football', 'basketball'\n};\n\nexport type IUserBets = {\n defaultTab: string;\n bets: {\n live: IUserBet[];\n upcoming: IUserBet[];\n settled: IUserBet[];\n };\n};\n\nexport type IHotProps = {\n items: IBetLeg[];\n};\n\nexport type ILocationDisclaimer = {\n text: string;\n};\n\nexport type IGamblingMessage = {\n text: string;\n};\n\nexport type IBetPromo = {\n title: string;\n description: string;\n logo: string;\n qrCode: string;\n};\n\nexport type PromoBetItem = {\n id: string;\n type: 'promo';\n data: IBetPromo;\n};\n\nexport type LocationDisclaimerBetItem = {\n type: 'locationDisclaimer';\n id: string;\n data: ILocationDisclaimer;\n};\n\nexport type GamblingMessageBetItem = {\n type: 'gamblingMessage';\n id: string;\n data: IGamblingMessage;\n};\n\nexport type SixPackBetItem = {\n type: 'sixPack';\n data: ISixPackOdds;\n teamInfo?: {\n home: ITeam;\n away: ITeam;\n };\n id: string;\n};\n\nexport type UserBetsBetItem = {\n type: 'userBets';\n data: IUserBets;\n id: string;\n};\n\nexport type HotPropsBetItem = {\n type: 'hotProps';\n data: IHotProps;\n id: string;\n};\n\nexport type BetItem =\n | SixPackBetItem\n | UserBetsBetItem\n | PromoBetItem\n | HotPropsBetItem\n | LocationDisclaimerBetItem\n | GamblingMessageBetItem;\n\nconst BET_ERROR_STATE = {\n NONE: 'none',\n TAB_LOAD_FAILURE: 'tabLoadFailure',\n} as const;\nexport type BetsErrorState = typeof BET_ERROR_STATE[keyof typeof BET_ERROR_STATE];\n\nexport interface IBetsViewModelDelegate {\n userIsAuthenticated(): Promise<boolean>;\n getUserSWID(): Promise<string | null>;\n getUserToken(): Promise<string | null>;\n}\n\nconst isPersonalizedBetsResponse = (\n data: any\n): data is IPersonalizedBetsResponse => {\n return (\n typeof data === 'object' &&\n data !== null &&\n 'event' in data &&\n typeof data.event === 'object'\n );\n};\n\nexport class BetsViewModel extends ViewModel {\n // Observable properties\n public betsItems = new Observable<BetItem[]>([]);\n public isDataLoading = new Observable<boolean>(true);\n public errorState = new Observable<BetsErrorState>('none');\n public hasEverSuccessfullyLoaded = new Observable<boolean>(false);\n\n // Properties\n private eventId: string;\n private delegate: IBetsViewModelDelegate;\n private betsService: BetsService;\n private pollingInterval: number;\n private pollingTask: { stop: () => void } | null = null;\n private lastNonPersonalizedResponseHash: number | null = null;\n private lastPersonalizedResponseHash: number | null = null;\n private useMockData: boolean = false;\n initialized = false;\n\n constructor(\n eventId: string,\n delegate: IMaestroEventDelegate,\n options: {\n pollingInterval?: number;\n useMockData?: boolean;\n } = {}\n ) {\n super();\n this.eventId = eventId;\n this.delegate = delegate;\n this.betsService = new BetsService(delegate);\n this.pollingInterval = options.pollingInterval || DEFAULT_POLLING_INTERVAL;\n this.useMockData = options.useMockData || false;\n\n this.betsService = new BetsService(delegate);\n }\n\n /**\n * Initialize the ViewModel and start data fetching\n */\n async init(): Promise<void> {\n await this.fetchNewData();\n this.refreshPolling();\n this.initialized = true;\n }\n\n /**\n * Clean up resources when the ViewModel is no longer needed\n */\n cleanup(): void {\n this.stopPolling();\n this.initialized = false;\n }\n\n /**\n * Refresh polling for bet data\n */\n refreshPolling(): void {\n // First stop any existing polling\n this.stopPolling();\n\n if (this.useMockData) {\n return;\n }\n\n // We'll determine whether to use authenticated polling in the polling task\n this.pollingTask = {\n stop: () => {\n // This will be replaced when actual polling starts\n },\n };\n\n // Start the poll loop\n this.pollWithInterval();\n }\n\n /**\n * Poll with the correct method based on authentication status\n */\n private async pollWithInterval(): Promise<void> {\n try {\n // Check if the user is authenticated\n const isAuthenticated = await this.delegate.userIsAuthenticated();\n\n if (isAuthenticated) {\n // Get user credentials\n const swid = (await this.delegate.getUserSWID()) || '';\n const jwt = (await this.delegate.getUserToken()) || '';\n\n // Start personalized polling\n this.pollingTask = this.betsService.pollPersonalizedBets(\n this.eventId,\n swid,\n jwt,\n this.pollingInterval,\n this.processPolledData.bind(this),\n this.handlePollingError.bind(this)\n );\n } else {\n // Start non-personalized polling\n this.pollingTask = this.betsService.pollNonPersonalizedBets(\n this.eventId,\n this.pollingInterval,\n this.processPolledData.bind(this),\n this.handlePollingError.bind(this)\n );\n }\n } catch (error) {\n console.error('Error setting up polling:', error);\n\n // If there's an error, fall back to non-personalized polling\n this.pollingTask = this.betsService.pollNonPersonalizedBets(\n this.eventId,\n this.pollingInterval,\n this.processPolledData.bind(this),\n this.handlePollingError.bind(this)\n );\n }\n }\n\n /**\n * Process data received from polling\n */\n private processPolledData(\n data: IBetsResponse | IPersonalizedBetsResponse\n ): void {\n // Calculate hash for the response to check if it's different from the last one\n const responseHash = JSON.stringify(data).hashCode();\n const isPersonalized = isPersonalizedBetsResponse(data);\n\n if (isPersonalized) {\n // Check if this is the same as the last successful response\n if (\n this.lastPersonalizedResponseHash === responseHash &&\n this.hasEverSuccessfullyLoaded.value\n ) {\n console.log(\n 'Response hash is the same as last successful response - skipping update'\n );\n return;\n }\n\n // Update tracking variables\n this.lastPersonalizedResponseHash = responseHash;\n // this.lastSuccessfulResponsePersonalized =\n // data as IPersonalizedBetsResponse;\n } else {\n // Check if this is the same as the last successful response\n if (\n this.lastNonPersonalizedResponseHash === responseHash &&\n this.hasEverSuccessfullyLoaded.value\n ) {\n console.log(\n 'Response hash is the same as last successful response - skipping update'\n );\n return;\n }\n\n // Update tracking variables\n this.lastNonPersonalizedResponseHash = responseHash;\n // this.lastSuccessfulResponseNonPersonalized = data as IBetsResponse;\n }\n\n // Update state\n this.hasEverSuccessfullyLoaded.value = true;\n this.errorState.value = 'none';\n\n // Process the response and update betsItems\n // This is a placeholder - you would need to implement the actual logic\n // for parsing different parts of the response (sixPacks, hot props, etc.)\n this.processBetsData(data);\n }\n\n /**\n * Process the bets data and update the betsItems\n */\n private processBetsData(\n data: IBetsResponse | IPersonalizedBetsResponse\n ): void {\n // Clear current items\n const newItems: BetItem[] = [];\n if (!Object.keys(data).length) {\n return;\n }\n\n // 1. Process regular odds (always available in both response types)\n const sixPack = this.processSixPackData(data);\n if (sixPack) {\n newItems.push(sixPack);\n }\n\n // 2. Process location disclaimer if this is a personalized response\n const locationDisclaimer = this.processLocationDisclaimer(data);\n if (locationDisclaimer) {\n newItems.push(locationDisclaimer);\n }\n\n // 3. Process user bets if this is a personalized response\n const userBets = this.processUserBetsData(data);\n if (userBets) {\n newItems.push(userBets);\n }\n\n // 4. Process featured(hot props) bets if available\n const hotProps = this.processHotProps(data);\n if (hotProps?.length) {\n newItems.push(...hotProps);\n }\n\n // 5. Process promo code\n const promoCode = this.processPromoCode(data);\n if (promoCode) {\n newItems.push(promoCode);\n }\n\n // 6. Process gambling message if available\n const gamblingMessage = this.processGamblingMessage(data);\n if (gamblingMessage) {\n newItems.push(gamblingMessage);\n }\n\n // Update the observable\n this.betsItems.value = newItems;\n }\n\n private processLocationDisclaimer(\n data: IBetsResponse | IPersonalizedBetsResponse\n ): LocationDisclaimerBetItem | null {\n const isPersonalized = isPersonalizedBetsResponse(data);\n if (!isPersonalized || !data.disclaimers?.location) {\n return null;\n }\n\n return {\n type: 'locationDisclaimer',\n id: 'locationDisclaimer',\n data: {\n text: data.disclaimers.location,\n },\n };\n }\n\n private processPromoCode(\n data: IBetsResponse | IPersonalizedBetsResponse\n ): PromoBetItem | null {\n const isPersonalized = isPersonalizedBetsResponse(data);\n if (!isPersonalized || !data.promos) {\n return null;\n }\n\n return {\n type: 'promo',\n data: {\n title: data.promos.title || '',\n description: data.promos.description || '',\n logo: data.promos.logo || '',\n qrCode: data.promos.qrCode || '',\n },\n id: `promo-${data.event?.id || data.id}`,\n };\n }\n\n private processGamblingMessage(\n data: IBetsResponse | IPersonalizedBetsResponse\n ): GamblingMessageBetItem | null {\n const isPersonalized = isPersonalizedBetsResponse(data);\n if (!isPersonalized || !data.disclaimers?.gambling) {\n return null;\n }\n\n return {\n type: 'gamblingMessage',\n id: 'gamblingMessage',\n data: {\n text: data.disclaimers.gambling,\n },\n };\n }\n\n private processSixPackData(\n response: IBetsResponse | IPersonalizedBetsResponse\n ): SixPackBetItem | null {\n const isPersonalized = isPersonalizedBetsResponse(response);\n const teams = response.entities?.teams;\n\n const odds = !isPersonalized\n ? response.bets?.odds\n : response.event?.bets?.odds;\n const gameState = !isPersonalized\n ? response.gameState\n : response.event?.gameState;\n\n const sport = !isPersonalized ? response.sport : response.event?.sport;\n const eventId = !isPersonalized ? response.id : response.event?.id;\n\n if (!odds || !gameState || !sport || !eventId || !teams) {\n return null;\n }\n\n const teamArray = Object.values(teams);\n let awayTeam: ITeam | undefined;\n let homeTeam: ITeam | undefined;\n\n // Find home and away teams from odds\n for (const team of Object.values(teams)) {\n const spreadOdds = odds.find((odd) => odd.type === 'pointSpread');\n if (spreadOdds) {\n if (\n spreadOdds.values.some((v) => v.team === team.id && v.type === 'home')\n ) {\n homeTeam = team;\n } else if (\n spreadOdds.values.some((v) => v.team === team.id && v.type === 'away')\n ) {\n awayTeam = team;\n }\n }\n }\n\n // Fallback logic if we couldn't determine from odds\n if (!homeTeam || !awayTeam) {\n console.warn(\n 'Could not determine home/away teams from odds, using first two teams'\n );\n switch (teamArray.length) {\n case 0:\n throw new Error('No teams found in response');\n case 1:\n // Only one team - unusual case, but handle gracefully\n homeTeam = teamArray[0];\n awayTeam = teamArray[0]; // Same team as both home and away (shouldn't happen)\n break;\n case 2:\n // Default to first team as home, second as away\n homeTeam = teamArray[0];\n awayTeam = teamArray[1];\n break;\n default:\n // More than 2 teams - take first two and log warning\n homeTeam = teamArray[0];\n awayTeam = teamArray[1];\n console.warn(\n `Warning: Unexpected team count (${teamArray.length}) in six pack response`\n );\n }\n }\n\n if (!awayTeam || !homeTeam) {\n throw new Error('Could not determine home or away team from response');\n }\n\n const isHomeFavoured = homeTeam.favored ?? true;\n const isInProgress = gameState === 'in';\n\n let awayTeamStartGameFirstLine = '';\n let awayTeamStartGameSecondLine = '';\n let homeTeamStartGameFirstLine = '';\n let homeTeamStartGameSecondLine = '';\n\n let awaySpreadFirstLine = '';\n let awaySpreadSecondLine = '';\n let homeSpreadFirstLine = '';\n let homeSpreadSecondLine = '';\n\n let awayTotalFirstLine = '';\n let awayTotalSecondLine = '';\n let homeTotalFirstLine = '';\n let homeTotalSecondLine = '';\n\n let awayMoneylineFirstLine = '';\n let homeMoneylineFirstLine = '';\n\n for (const oddsItem of odds) {\n switch (oddsItem.type) {\n case 'pointSpread':\n if (isInProgress) {\n // For in-progress games, use \"close\" for CO and \"live\" for current\n if (isHomeFavoured) {\n if (oddsItem.state === 'close') {\n for (const value of oddsItem.values) {\n if (value.type === 'home') {\n homeTeamStartGameFirstLine = value.line ?? '';\n homeTeamStartGameSecondLine = value.odds ?? '';\n }\n }\n }\n } else {\n if (oddsItem.state === 'close') {\n for (const value of oddsItem.values) {\n if (value.type === 'away') {\n awayTeamStartGameFirstLine = value.line ?? '';\n awayTeamStartGameSecondLine = value.odds ?? '';\n }\n }\n }\n }\n\n if (oddsItem.state === 'live') {\n for (const value of oddsItem.values) {\n if (value.type === 'home') {\n homeSpreadFirstLine = value.line ?? '';\n homeSpreadSecondLine = value.odds ?? '';\n }\n if (value.type === 'away') {\n awaySpreadFirstLine = value.line ?? '';\n awaySpreadSecondLine = value.odds ?? '';\n }\n }\n }\n } else {\n // For pre/post games, use \"open\" for CO and \"close\" for current\n if (isHomeFavoured) {\n if (oddsItem.state === 'open') {\n for (const value of oddsItem.values) {\n if (value.type === 'home') {\n homeTeamStartGameFirstLine = value.line ?? '';\n homeTeamStartGameSecondLine = value.odds ?? '';\n }\n }\n }\n } else {\n if (oddsItem.state === 'open') {\n for (const value of oddsItem.values) {\n if (value.type === 'away') {\n awayTeamStartGameFirstLine = value.line ?? '';\n awayTeamStartGameSecondLine = value.odds ?? '';\n }\n }\n }\n }\n\n if (oddsItem.state === 'close') {\n for (const value of oddsItem.values) {\n if (value.type === 'home') {\n homeSpreadFirstLine = value.line ?? '';\n homeSpreadSecondLine = value.odds ?? '';\n }\n if (value.type === 'away') {\n awaySpreadFirstLine = value.line ?? '';\n awaySpreadSecondLine = value.odds ?? '';\n }\n }\n }\n }\n break;\n\n case 'total':\n if (isInProgress) {\n if (isHomeFavoured) {\n if (oddsItem.state === 'close') {\n for (const value of oddsItem.values) {\n if (value.type === 'over') {\n awayTeamStartGameFirstLine = value.line ?? '';\n awayTeamStartGameSecondLine = value.odds ?? '';\n }\n }\n }\n } else {\n if (oddsItem.state === 'close') {\n for (const value of oddsItem.values) {\n if (value.type === 'under') {\n homeTeamStartGameFirstLine = value.line ?? '';\n homeTeamStartGameSecondLine = value.odds ?? '';\n }\n }\n }\n }\n\n if (oddsItem.state === 'live') {\n for (const value of oddsItem.values) {\n if (value.type === 'under') {\n homeTotalFirstLine = value.line ?? '';\n homeTotalSecondLine = value.odds ?? '';\n }\n if (value.type === 'over') {\n awayTotalFirstLine = value.line ?? '';\n awayTotalSecondLine = value.odds ?? '';\n }\n }\n }\n } else {\n if (isHomeFavoured) {\n if (oddsItem.state === 'open') {\n for (const value of oddsItem.values) {\n if (value.type === 'over') {\n awayTeamStartGameFirstLine = value.line ?? '';\n awayTeamStartGameSecondLine = value.odds ?? '';\n }\n }\n }\n } else {\n if (oddsItem.state === 'open') {\n for (const value of oddsItem.values) {\n if (value.type === 'under') {\n homeTeamStartGameFirstLine = value.line ?? '';\n homeTeamStartGameSecondLine = value.odds ?? '';\n }\n }\n }\n }\n\n if (oddsItem.state === 'close') {\n for (const value of oddsItem.values) {\n if (value.type === 'under') {\n homeTotalFirstLine = value.line ?? '';\n homeTotalSecondLine = value.odds ?? '';\n }\n if (value.type === 'over') {\n awayTotalFirstLine = value.line ?? '';\n awayTotalSecondLine = value.odds ?? '';\n }\n }\n }\n }\n break;\n\n case 'moneyline':\n if (isInProgress) {\n if (oddsItem.state === 'live') {\n for (const value of oddsItem.values) {\n if (value.type === 'home') {\n homeMoneylineFirstLine = value.odds ?? '';\n }\n if (value.type === 'away') {\n awayMoneylineFirstLine = value.odds ?? '';\n }\n }\n }\n } else {\n if (oddsItem.state === 'close') {\n for (const value of oddsItem.values) {\n if (value.type === 'home') {\n homeMoneylineFirstLine = value.odds ?? '';\n }\n if (value.type === 'away') {\n awayMoneylineFirstLine = value.odds ?? '';\n }\n }\n }\n }\n break;\n }\n }\n\n // Create the six pack data structure\n const awayTeamOdds: TeamOdd = {\n teamAbbreviation: awayTeam.abbreviation ?? '',\n startOfGameFirstLine: awayTeamStartGameFirstLine,\n startOfGameSecondLine: awayTeamStartGameSecondLine,\n gameSpreadFirstLine: awaySpreadFirstLine,\n gameSpreadSecondLine: awaySpreadSecondLine,\n totalPointsFirstLine: awayTotalFirstLine,\n totalPointsSecondLine: awayTotalSecondLine,\n moneylineFirstLine: awayMoneylineFirstLine,\n };\n\n const homeTeamOdds: TeamOdd = {\n teamAbbreviation: homeTeam.abbreviation ?? '',\n startOfGameFirstLine: homeTeamStartGameFirstLine,\n startOfGameSecondLine: homeTeamStartGameSecondLine,\n gameSpreadFirstLine: homeSpreadFirstLine,\n gameSpreadSecondLine: homeSpreadSecondLine,\n totalPointsFirstLine: homeTotalFirstLine,\n totalPointsSecondLine: homeTotalSecondLine,\n moneylineFirstLine: homeMoneylineFirstLine,\n };\n\n const sixPack: ISixPackOdds = {\n awayTeamOdds,\n homeTeamOdds,\n gameState,\n sport: sport,\n };\n\n return {\n id: `sixpack-${eventId}`,\n type: 'sixPack',\n data: sixPack,\n teamInfo: {\n home: homeTeam,\n away: awayTeam,\n },\n };\n }\n\n private processUserBetsData(\n data: IBetsResponse | IPersonalizedBetsResponse\n ): UserBetsBetItem | null {\n const isPersonalized = isPersonalizedBetsResponse(data);\n if (!isPersonalized || !data.event || !data.betsModule) {\n return null;\n }\n\n const betItems: IUserBets['bets'] = {\n live: data.betsModule.live.filter((bet) => bet.type !== 'promo'),\n settled: data.betsModule.settled.filter((bet) => bet.type !== 'promo'),\n upcoming: data.betsModule.upcoming.filter((bet) => bet.type !== 'promo'),\n };\n\n return {\n data: {\n bets: betItems,\n defaultTab: data.betsModule.defaultTab,\n },\n id: `userBets-${data.event.id}`,\n type: 'userBets',\n };\n }\n\n private processHotProps(\n response: IBetsResponse | IPersonalizedBetsResponse\n ): HotPropsBetItem[] | null {\n const isPersonalized = isPersonalizedBetsResponse(response);\n const hotProps = isPersonalized\n ? response.event?.featured\n : response.featured;\n\n if (!hotProps || !Array.isArray(hotProps)) {\n return null;\n }\n\n const hasData = hotProps.every((hotProp) => Boolean(hotProp && hotProp.id));\n if (!hasData) {\n return null;\n }\n\n return hotProps\n .filter((hotProp) => hotProp.selections && hotProp.selections.length > 0)\n .map(\n (hotProp): HotPropsBetItem => {\n const data: IHotProps = {\n items: hotProp.selections.map((item) => ({\n id: item.id,\n selectionText: hotProp.text,\n marketText: item.text,\n odds: item.odds.current || '',\n icon: item.icon,\n iconDark: item.iconDark,\n status: item.status,\n type: item.type,\n })),\n };\n\n return {\n data,\n type: 'hotProps',\n id: `hotProps-${hotProp.id}`,\n };\n }\n );\n }\n\n /**\n * Handle errors that occur during polling\n */\n private handlePollingError(error: Error): void {\n console.error('Polling error:', error);\n\n if (!this.hasEverSuccessfullyLoaded.value) {\n // If we've never had a successful load, show an error state\n this.errorState.value = 'tabLoadFailure';\n this.betsItems.value = [];\n } else {\n // If we had a previous successful load, keep showing the old data\n // No need to update errorState or betsItems\n }\n }\n\n /**\n * Stop polling for bet data\n */\n stopPolling(): void {\n if (this.pollingTask) {\n this.pollingTask.stop();\n this.pollingTask = null;\n }\n }\n\n /**\n * Fetch new bet data immediately (one-time)\n */\n async fetchNewData(): Promise<void> {\n this.isDataLoading.value = true;\n\n try {\n // Handle mock data if enabled\n if (this.useMockData) {\n this.betsItems.value = [];\n await this.fetchMockData();\n return;\n }\n\n // Check if the user is authenticated\n const isAuthenticated = await this.delegate.userIsAuthenticated();\n\n if (isAuthenticated) {\n await this.fetchPersonalizedData();\n } else {\n await this.fetchNonPersonalizedData();\n }\n\n this.isDataLoading.value = false;\n } catch (error) {\n console.error('Error fetching bet data:', error);\n\n if (!this.hasEverSuccessfullyLoaded.value) {\n this.errorState.value = 'tabLoadFailure';\n this.betsItems.value = [];\n }\n\n this.isDataLoading.value = false;\n }\n }\n\n /**\n * Fetch personalized bet data\n */\n private async fetchPersonalizedData(): Promise<void> {\n try {\n const swid = await this.delegate.getUserSWID();\n const jwt = await this.delegate.getUserToken();\n\n if (!swid || !jwt) {\n throw new Error('Missing authentication data (SWID or JWT)');\n }\n\n const response = await this.betsService.getPersonalizedBets(\n this.eventId,\n swid,\n jwt\n );\n\n // Process the response\n this.processPolledData(response);\n } catch (error) {\n console.error('Error fetching personalized bets:', error);\n // Fall back to non-personalized data\n await this.fetchNonPersonalizedData();\n }\n }\n\n /**\n * Fetch non-personalized bet data\n */\n private async fetchNonPersonalizedData(): Promise<void> {\n const response = await this.betsService.getNonPersonalizedBets(\n this.eventId\n );\n\n // Process the response\n this.processPolledData(response);\n }\n\n /**\n * Fetch mock data for testing\n */\n private async fetchMockData(): Promise<void> {\n this.processBetsData(MOCK_BETS_API_RESPONSE);\n this.hasEverSuccessfullyLoaded.value = true;\n this.errorState.value = 'none';\n this.isDataLoading.value = false;\n }\n\n simulateUseCase<T = any>(useCase: TestUseCase, _: T) {\n switch (useCase) {\n case 'betsTabLoadFailure':\n this.errorState.value = 'tabLoadFailure';\n break;\n case 'betsMockData':\n this.stopPolling();\n this.useMockData = true;\n this.lastPersonalizedResponseHash = null;\n this.lastNonPersonalizedResponseHash = null;\n this.errorState.value = 'none';\n this.fetchNewData();\n break;\n case 'betsLiveData':\n this.useMockData = false;\n this.lastPersonalizedResponseHash = null;\n this.lastNonPersonalizedResponseHash = null;\n this.hasEverSuccessfullyLoaded.value = false;\n this.errorState.value = 'none';\n this.fetchNewData();\n this.refreshPolling();\n break;\n default:\n throw new Error(`Unsupported use case: ${useCase}`);\n }\n }\n\n clearTabLoadFailure() {\n this.errorState.value = 'none';\n setFocus('PANEL_NAV_BUTTON_1');\n setTimeout(async () => {\n await this.fetchNewData();\n }, 100);\n }\n}\n\n// Add hashCode method to String prototype for hashing responses\ndeclare global {\n interface String {\n hashCode(): number;\n }\n}\n\nif (!String.prototype.hashCode) {\n String.prototype.hashCode = function (): number {\n let hash = 0;\n for (let i = 0; i < this.length; i++) {\n const char = this.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return hash;\n };\n}\n\nexport default BetsViewModel;\n","import IMaestroEventDelegate from '../interfaces/IMaestroEventDelegate';\nimport IMaestroEvent, { TestUseCase } from '../interfaces/IMaestroEvent';\nimport { Observable } from '../helpers/Observable';\nimport { ViewModel } from './ViewModel';\nimport KeyPlaysViewModel from '../modules/key-plays/view-model/KeyPlaysViewModel';\nimport BetsViewModel from '../modules/bets/view-model/BetsViewModel';\nimport {\n setFocus,\n pause,\n resume,\n init,\n destroy,\n} from '@/external/spatial-navigation';\nimport IMaestroKeyPlaysResponse from '../modules/key-plays/interfaces/IKeyPlaysResponse';\nimport { MaestroPanelType } from '@/models/IPanel';\n\nexport class MaestroEventViewModel extends ViewModel implements IMaestroEvent {\n private _eventId = new Observable('');\n private _title = new Observable('');\n private _isLive = new Observable<boolean>(false);\n private _isShowingPanel = new Observable(false);\n delegate: IMaestroEventDelegate;\n keyPlaysViewModel = new KeyPlaysViewModel();\n betsViewModel: BetsViewModel;\n\n constructor(eventId: string = '', delegate: IMaestroEventDelegate) {\n super();\n this._eventId.value = eventId;\n this.delegate = delegate;\n this.betsViewModel = new BetsViewModel(eventId, delegate);\n init();\n }\n\n deinit() {\n this.betsViewModel.cleanup();\n destroy();\n }\n\n updateKeyPlaysData(data: IMaestroKeyPlaysResponse | null): Promise<void> {\n return this.keyPlaysViewModel.setKeyPlays(data);\n }\n\n startFocusManagement(): Promise<void> {\n setFocus('');\n resume();\n setTimeout(() => {\n setFocus('PANEL_NAV_BUTTON_0');\n }, 0);\n\n return Promise.resolve();\n }\n\n didStartPlayingClip(index: number) {\n this.keyPlaysViewModel.lastPlayedClipIndex.value = index;\n this.keyPlaysViewModel.currentClipPlaybackProgress.value = 0;\n this.keyPlaysViewModel.currentlyPlayingClipIndex.value = index;\n this.keyPlaysViewModel.clearLoadFailureStatus(index);\n }\n\n didStopPlayingClip(index: number): void {\n this.keyPlaysViewModel.lastPlayedClipIndex.value = index;\n this.keyPlaysViewModel.currentlyPlayingClipIndex.value = null;\n this.keyPlaysViewModel.currentClipPlaybackProgress.value = null;\n }\n\n didFailToPlayClip(index: number): void {\n this.keyPlaysViewModel.handleKeyPlayLoadFailure(index);\n }\n\n didUpdatePlaybackProgressOfClip(index: number, to: number): void {\n this.keyPlaysViewModel.currentClipPlaybackProgress.value = to;\n this.keyPlaysViewModel.clearLoadFailureStatus(index);\n }\n\n didShowPanel(): Promise<void> {\n this.isShowingPanel = true;\n // Analytics call ?\n return Promise.resolve();\n }\n\n async didHidePanel(): Promise<void> {\n this.isShowingPanel = false;\n pause();\n\n // Analytics call?\n }\n\n didShowOverlay(): Promise<void> {\n throw new Error('Method not implemented.');\n }\n didHideOverlay(): Promise<void> {\n throw new Error('Method not implemented.');\n }\n\n currentEventDoesNotSupportKeyPlays(): void {\n this.keyPlaysViewModel.errorState.value = 'unsupportedEvent';\n }\n\n getCurrentEventID() {\n return this.eventId.value;\n }\n\n getCurrentlyPlayingClipIndex() {\n return this.keyPlaysViewModel.currentlyPlayingClipIndex.value;\n }\n\n getLastPlayedClipIndex() {\n return this.keyPlaysViewModel.lastPlayedClipIndex.value;\n }\n\n getCurrentClipPlaybackProgress() {\n return this.keyPlaysViewModel.currentClipPlaybackProgress.value;\n }\n\n getKeyPlaysCount() {\n return this.keyPlaysViewModel.allItems.length;\n }\n\n get eventId(): Observable<string> {\n return this._eventId;\n }\n\n get title(): Observable<string> {\n return this._title;\n }\n\n get isLive(): Observable<boolean> {\n return this._isLive;\n }\n\n get isShowingPanel(): boolean {\n return this._isShowingPanel.value;\n }\n\n set isShowingPanel(value: boolean) {\n this._isShowingPanel.value = value;\n }\n\n simulateUseCase<T = any>(\n useCase: TestUseCase,\n panelType: MaestroPanelType,\n testData?: T\n ) {\n switch (panelType) {\n case 'bets':\n this.betsViewModel.simulateUseCase(useCase, testData);\n break;\n default:\n throw new Error(`Unsupported panel type: ${panelType}`);\n }\n }\n}\n","import { Observable } from '../helpers/Observable';\nimport { ViewModel } from './ViewModel';\nimport {\n OverlayType,\n IMaestroOverlayEvent,\n IOverlayAnalyticsEvent,\n} from '../types/OverlayTypes';\n\nconst AUTO_DISMISS_TIMEOUT = 10400; // 10.4 seconds\n\ninterface IAnalyticsService {\n track: (event: IOverlayAnalyticsEvent) => void;\n}\n\nexport class OverlayViewModel extends ViewModel {\n private _isVisible = new Observable<boolean>(false);\n private _currentOverlay = new Observable<IMaestroOverlayEvent | null>(null);\n private _autoDismiss = new Observable<boolean>(true);\n private _overlayQueue = new Observable<IMaestroOverlayEvent[]>([]);\n private _hasTrackedView = new Observable<boolean>(false);\n\n private autoDismissTimeout: NodeJS.Timeout | null = null;\n private analyticsService: IAnalyticsService;\n\n constructor(analyticsService: IAnalyticsService) {\n super();\n this.analyticsService = analyticsService;\n }\n\n get isVisible(): Observable<boolean> {\n return this._isVisible;\n }\n\n get currentOverlay(): Observable<IMaestroOverlayEvent | null> {\n return this._currentOverlay;\n }\n\n get autoDismiss(): Observable<boolean> {\n return this._autoDismiss;\n }\n\n get overlayQueue(): Observable<IMaestroOverlayEvent[]> {\n return this._overlayQueue;\n }\n\n get overlayTitle(): string {\n const overlay = this._currentOverlay.value;\n if (!overlay) return '';\n\n switch (overlay.type) {\n case OverlayType.WinningBet:\n return 'You won your bet!';\n case OverlayType.FantasyPlayerEvent:\n return overlay.fantasy?.title ?? 'Fantasy Update';\n default:\n return '';\n }\n }\n\n get overlayMetadata(): string {\n const overlay = this._currentOverlay.value;\n if (!overlay) return '';\n\n switch (overlay.type) {\n case OverlayType.WinningBet:\n return (\n overlay.winningBet?.notificationText ??\n 'Click OK to view your winning bets.'\n );\n case OverlayType.FantasyPlayerEvent:\n return overlay.fantasy?.metadata ?? 'New Player Activity';\n default:\n return '';\n }\n }\n\n showOverlay(overlayEvent: IMaestroOverlayEvent): void {\n // If an overlay is already visible, queue this one\n if (this._isVisible.value) {\n const currentQueue = this._overlayQueue.value;\n this._overlayQueue.value = [...currentQueue, overlayEvent];\n return;\n }\n\n // Show the overlay\n this._currentOverlay.value = overlayEvent;\n this._isVisible.value = true;\n this._hasTrackedView.value = false;\n this._autoDismiss.value = true;\n\n // Set up auto-dismiss\n this.setupAutoDismiss();\n }\n\n hideOverlay(): void {\n // Clear auto-dismiss timeout\n if (this.autoDismissTimeout) {\n clearTimeout(this.autoDismissTimeout);\n this.autoDismissTimeout = null;\n }\n\n // Check if there are queued overlays\n const queue = this._overlayQueue.value;\n if (queue.length > 0) {\n // Show next overlay in queue\n const nextOverlay = queue[0];\n const remainingQueue = queue.slice(1);\n\n this._overlayQueue.value = remainingQueue;\n this._currentOverlay.value = nextOverlay;\n this._hasTrackedView.value = false;\n this._autoDismiss.value = true; // Reset auto-dismiss for queued overlay\n // Keep _isVisible as true since we're showing another overlay\n\n // Set up auto-dismiss for next overlay\n this.setupAutoDismiss();\n } else {\n // No more overlays, hide completely\n this._isVisible.value = false;\n this._currentOverlay.value = null;\n }\n }\n\n handleOverlayClick(): void {\n const overlay = this._currentOverlay.value;\n if (!overlay) return;\n\n // Track click event\n this.trackOverlayClicked();\n\n // Handle overlay-specific actions\n switch (overlay.type) {\n case OverlayType.WinningBet:\n this._autoDismiss.value = false;\n // TODO: Navigate to bets panel and deep link to specific bet\n break;\n\n case OverlayType.FantasyPlayerEvent:\n // Fantasy overlay handled\n break;\n }\n\n // Hide current overlay\n this.hideOverlay();\n }\n\n trackOverlayViewed(): void {\n if (this._hasTrackedView.value) return;\n\n const overlay = this._currentOverlay.value;\n if (!overlay) return;\n\n this._hasTrackedView.value = true;\n\n const event: IOverlayAnalyticsEvent = {\n eventName: 'overlayViewed',\n attributes: {\n template: 'espn_bet',\n templateId: '', // TODO: Get from actual data\n instanceName: this.overlayTitle,\n instanceId: this.getInstanceId(overlay),\n fullscreen: false, // TODO: Get from context\n overlayType: overlay.type,\n },\n };\n\n this.analyticsService.track(event);\n }\n\n trackOverlayClicked(): void {\n const overlay = this._currentOverlay.value;\n if (!overlay) return;\n\n const event: IOverlayAnalyticsEvent = {\n eventName: 'overlayClicked',\n attributes: {\n template: 'espn_bet',\n templateId: '', // TODO: Get from actual data\n instanceName: this.overlayTitle,\n instanceId: this.getInstanceId(overlay),\n fullscreen: false, // TODO: Get from context\n overlayType: overlay.type,\n },\n };\n\n this.analyticsService.track(event);\n }\n\n handleOverlayViewed(_overlayType: string): void {\n // Track that the overlay was viewed\n this.trackOverlayViewed();\n }\n\n handleOverlayAction(_overlayType: string): void {\n // Track that the overlay was clicked/actioned\n this.trackOverlayClicked();\n }\n\n cleanup(): void {\n if (this.autoDismissTimeout) {\n clearTimeout(this.autoDismissTimeout);\n this.autoDismissTimeout = null;\n }\n }\n\n private setupAutoDismiss(): void {\n if (this.autoDismissTimeout) {\n clearTimeout(this.autoDismissTimeout);\n }\n\n this.autoDismissTimeout = setTimeout(() => {\n if (this._autoDismiss.value) {\n this.hideOverlay();\n }\n }, AUTO_DISMISS_TIMEOUT);\n }\n\n private getInstanceId(overlay: IMaestroOverlayEvent): string {\n switch (overlay.type) {\n case OverlayType.WinningBet:\n return overlay.winningBet?.serverID ?? '';\n case OverlayType.FantasyPlayerEvent:\n return overlay.fantasy?.athleteId ?? '';\n default:\n return '';\n }\n }\n}\n","import { MaestroEventViewModel } from './MaestroEventViewModel';\nimport { PanelManagerViewModel } from './PanelManagerViewModel';\nimport { OverlayViewModel } from './OverlayViewModel';\nimport IMaestroEventDelegate from '../interfaces/IMaestroEventDelegate';\nimport KeyPlaysViewModel from '../modules/key-plays/view-model/KeyPlaysViewModel';\n\n/**\n * Aggregates all View Models\n */\nexport class MaestroViewModels {\n readonly eventViewModel: MaestroEventViewModel;\n readonly panelManagerViewModel: PanelManagerViewModel;\n readonly keyPlaysViewModel: KeyPlaysViewModel;\n readonly overlayViewModel: OverlayViewModel;\n\n constructor(eventViewModel: MaestroEventViewModel) {\n this.eventViewModel = eventViewModel;\n this.panelManagerViewModel = new PanelManagerViewModel();\n this.keyPlaysViewModel = new KeyPlaysViewModel();\n\n const analyticsService = {\n track: (event: any) => {\n // TODO: Implement real analytics\n console.log('Overlay analytics:', event);\n },\n };\n\n // Create overlay view model - SDK handles all UI directly\n this.overlayViewModel = new OverlayViewModel(analyticsService);\n }\n\n /**\n * Creates view models from an event ID\n */\n static async fromEventId(\n eventId: string,\n delegate: IMaestroEventDelegate\n ): Promise<MaestroViewModels | null> {\n try {\n const eventViewModel = new MaestroEventViewModel(eventId, delegate);\n\n return new MaestroViewModels(eventViewModel);\n } catch (error) {\n console.error('Error creating view models from event ID', error);\n return null;\n }\n }\n}\n","import React from 'react';\n\nconst OverlayContainer = React.createClass({\n propTypes: {\n viewModels: React.PropTypes.object,\n },\n\n getInitialState() {\n return {\n isVisible: false,\n currentOverlay: null,\n };\n },\n\n componentDidMount() {\n if (!this.props.viewModels?.overlayViewModel) return;\n\n const overlayVM = this.props.viewModels.overlayViewModel;\n\n // Subscribe to overlay visibility changes\n this.unsubscribeVisible = overlayVM.isVisible.subscribe(\n (visible: boolean) => {\n this.setState({ isVisible: visible });\n }\n );\n\n // Subscribe to current overlay changes\n this.unsubscribeOverlay = overlayVM.currentOverlay.subscribe(\n (overlay: any) => {\n this.setState({ currentOverlay: overlay });\n }\n );\n },\n\n componentWillUnmount() {\n if (this.unsubscribeVisible) this.unsubscribeVisible();\n if (this.unsubscribeOverlay) this.unsubscribeOverlay();\n },\n\n render() {\n if (!this.state.isVisible || !this.state.currentOverlay) {\n return null;\n }\n\n const overlay = this.state.currentOverlay;\n const Overlay = require('../molecules/Overlay').default;\n\n return React.createElement(Overlay, {\n key: `overlay-${overlay.type}-${Date.now()}`,\n id: 'sdk-managed-rive-overlay',\n overlayType: overlay.type,\n position: overlay.position,\n winningBet: overlay.winningBet,\n fantasy: overlay.fantasy,\n onOverlayViewed: (overlayType: string) => {\n if (this.props.viewModels?.overlayViewModel) {\n this.props.viewModels.overlayViewModel.handleOverlayViewed(\n overlayType\n );\n }\n },\n onOverlayAction: (overlayType: string) => {\n if (this.props.viewModels?.overlayViewModel) {\n this.props.viewModels.overlayViewModel.handleOverlayAction(\n overlayType\n );\n this.props.viewModels.overlayViewModel.hideOverlay();\n }\n },\n });\n },\n});\n\nexport default OverlayContainer;\n","import { type IRenderer } from './ports/renderer';\nimport { MaestroViewModels } from '@/view-models';\nimport type IMaestroEventDelegate from '@/interfaces/IMaestroEventDelegate';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport OverlayContainer from '../components/core/OverlayContainer';\n\ntype Renderer = {\n render: (children: React.ReactNode) => void;\n unmount: () => void;\n};\n\nclass ReactRenderer implements IRenderer {\n private renderersMap: Map<string, Renderer> = new Map();\n public viewModels: MaestroViewModels | null = null;\n\n /**\n * Sets the view models for the renderer\n * @param eventId The event ID to create view models for\n * @param delegate The event delegate to use\n */\n async setViewModels(\n eventId: string,\n delegate?: IMaestroEventDelegate\n ): Promise<MaestroViewModels | null> {\n try {\n if (!delegate) {\n console.error('No event delegate provided');\n return null;\n }\n this.viewModels = await MaestroViewModels.fromEventId(eventId, delegate);\n return this.viewModels;\n } catch (error) {\n console.error('Error creating view models from event ID', error);\n return null;\n }\n }\n\n /**\n * Renders the panel manager\n * @param id The element ID to render in\n * @param options Options for rendering including height and width\n */\n async renderPanel(id: string) {\n const renderer = await this.getRenderer(id);\n\n if (!this.viewModels) {\n throw new Error('Cannot render panel manager: No view models set');\n }\n\n const App = require('../components/core/App').default;\n const PanelManager = require('../components/core/PanelManager').default;\n \n renderer.render(\n <App>\n <PanelManager />\n {React.createElement(OverlayContainer as any, { viewModels: this.viewModels })}\n </App>\n );\n\n return () => {\n renderer.unmount();\n this.renderersMap.delete(id);\n };\n }\n\n /**\n * @description Get the render function and renderer for the MaestroWebSDK. Useful to configure the renderer and fonts before rendering the component.\n * @param {string} id - The id of the element to render the component in.\n * @param {{ height: number; width: number }} options - The height and width of the component.\n */\n private async getRenderer(id: string): Promise<Renderer> {\n if (this.renderersMap.has(id)) {\n return this.renderersMap.get(id)!;\n }\n\n const el = document.getElementById(id);\n if (!el) {\n throw new Error(`Element with id ${id} not found`);\n }\n\n const renderer: Renderer = {\n render: (children) => {\n ReactDOM.render(children as any, el);\n },\n unmount: () => {\n ReactDOM.unmountComponentAtNode(el);\n },\n };\n\n this.renderersMap.set(id, renderer);\n return renderer;\n }\n}\n\nexport default ReactRenderer;\n","import ReactRenderer from './external/ReactRenderer';\nimport { IRenderer } from './external/ports/renderer';\nimport IMaestroEventDelegate from './interfaces/IMaestroEventDelegate';\nimport IMaestroManager, { SDKConfigParams } from './interfaces/IMaestroManager';\nimport IMaestroEvent from './interfaces/IMaestroEvent';\nimport { MaestroEventViewModel } from './view-models/MaestroEventViewModel';\nimport type IMaestroKeyPlaysResponse from './modules/key-plays/interfaces/IKeyPlaysResponse';\n\n// Export overlay components and types for client apps\nexport { default as Overlay } from './components/molecules/Overlay/Overlay';\nexport { \n OverlayType,\n type IMaestroOverlayEvent,\n type IOverlaySize,\n type IOverlayPosition,\n type IFantasyPayload,\n type IOverlayAnalyticsEvent \n} from './types/OverlayTypes';\nexport { type IWinningBet } from './models/IWinningBet';\n\nexport {\n type IMaestroEventDelegate,\n type IMaestroEvent,\n type IMaestroKeyPlaysResponse,\n};\n\nconst AUTHORIZED_CLIENTS = ['664b9c57d59a7a431542d814'];\n\nexport type Environment = 'development' | 'staging' | 'production';\n\n/**\n * Main SDK class that serves as the entry point for the Maestro TV SDK\n * Follows a singleton pattern similar to the Swift implementation\n */\nclass MaestroWebSDK implements IMaestroManager {\n private static instance: MaestroWebSDK;\n private renderer: IRenderer;\n private siteID?: string;\n private userID?: string;\n private maestroJwt?: string;\n private clientAppToken?: string;\n private clientAppSwid?: string;\n private maestroEventViewModel: MaestroEventViewModel | null = null;\n\n private constructor(renderer: IRenderer) {\n this.renderer = renderer;\n }\n\n /**\n * @description Returns the MaestroWebSDK instance\n * @returns {MaestroWebSDK} - The MaestroWebSDK instance\n */\n public static getInstance() {\n if (!MaestroWebSDK.instance) {\n const renderer = new ReactRenderer();\n MaestroWebSDK.instance = new MaestroWebSDK(renderer);\n }\n return MaestroWebSDK.instance;\n }\n\n async userDidStartWatchingEvent(\n eventID: string,\n delegate: IMaestroEventDelegate\n ): Promise<IMaestroEvent> {\n if (!this.isAuthorizedClient) {\n throw new Error('Unauthorized use of SDK');\n }\n\n this.maestroEventViewModel = new MaestroEventViewModel(eventID, delegate);\n return this.maestroEventViewModel;\n }\n\n userDidStopWatchingEvent(_: string): void {\n if (this.maestroEventViewModel) {\n this.maestroEventViewModel.deinit();\n this.maestroEventViewModel = null;\n }\n }\n\n configure(configParams: SDKConfigParams) {\n if (configParams.siteID) {\n this.setSiteID(configParams.siteID);\n }\n\n if (configParams.maestroJwt) {\n this.setMaestroJwt(configParams.maestroJwt);\n }\n\n if (configParams.clientAppToken) {\n this.setClientAppToken(configParams.clientAppToken);\n }\n\n if (configParams.clientAppSwid) {\n this.setClientAppSwid(configParams.clientAppSwid);\n }\n\n console.info('MaestroWebSDK configured', configParams);\n }\n\n /**\n * Checks if this is an authorized client based on siteID\n */\n public get isAuthorizedClient(): boolean {\n const siteID = this.getSiteID();\n return Boolean(siteID && AUTHORIZED_CLIENTS.includes(siteID));\n }\n\n /**\n * Sets the site ID for the SDK\n * @param siteID The site ID to set\n */\n public setSiteID(siteID?: string) {\n this.siteID = siteID;\n }\n\n public getSiteID() {\n return this.siteID;\n }\n\n /**\n * Sets the user ID for the SDK\n * @param userID The user ID to set\n */\n public setUserID(userID: string): void {\n this.userID = userID;\n }\n\n public getUserID(): string | undefined {\n return this.userID;\n }\n\n /**\n * Gets the event view model\n * @returns The current event view model\n */\n public getMaestroEventViewModel(): MaestroEventViewModel {\n if (!this.maestroEventViewModel) {\n throw new Error('No Maestro Event View Model set');\n }\n\n return this.maestroEventViewModel;\n }\n\n /**\n * Gets the view models container \n * @returns The current view models\n */\n public getMaestroViewModels() {\n return this.renderer.viewModels;\n }\n\n async renderPanel(id: string) {\n if (!this.renderer.viewModels) {\n if (!this.maestroEventViewModel) {\n throw new Error('No Maestro Event View Model set.');\n }\n let eventId = 'default-event-id';\n if (id) {\n eventId = id;\n }\n await this.renderer.setViewModels(\n eventId,\n this.maestroEventViewModel.delegate\n );\n }\n return this.renderer.renderPanel(id);\n }\n\n public setMaestroJwt(jwt: string | undefined): void {\n this.maestroJwt = jwt;\n }\n\n public setClientAppSwid(swid: string | undefined): void {\n this.clientAppSwid = swid;\n }\n\n public setClientAppToken(jwt: string | undefined): void {\n this.clientAppToken = jwt;\n }\n\n async authenticateUser(swid: string, token: string): Promise<void> {\n this.setClientAppSwid(swid);\n this.setClientAppToken(token);\n\n if (this.getMaestroEventViewModel().betsViewModel.initialized) {\n // Stop polling bets if the user is deauthenticated\n this.getMaestroEventViewModel().betsViewModel.refreshPolling();\n }\n }\n\n async deauthenticateUser(): Promise<void> {\n this.setClientAppSwid(undefined);\n this.setClientAppToken(undefined);\n\n if (this.getMaestroEventViewModel().betsViewModel.initialized) {\n // Stop polling bets if the user is deauthenticated\n this.getMaestroEventViewModel().betsViewModel.refreshPolling();\n }\n }\n\n getCurrentMaestroJwt(): string | undefined {\n return this.maestroJwt;\n }\n\n getClientAppToken(): string | undefined {\n return this.clientAppToken;\n }\n\n getCurrentUserID(): string | undefined {\n return this.userID;\n }\n\n getClientAppSwid(): string | undefined {\n return this.clientAppSwid;\n }\n}\n\nconst SDK = MaestroWebSDK.getInstance();\nexport default SDK;\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__12__;","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","import React from 'react';\nimport {\n setFocus,\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport { Rive as RiveCanvas } from '@rive-app/canvas';\n\ntype RiveProps = React.CanvasHTMLAttributes<HTMLCanvasElement> & {\n id: string;\n autoFocus: boolean;\n autoPlay: boolean;\n src: string;\n onLoadRiveInstance: (riveInstance: RiveCanvas | null) => void;\n};\n\nclass Rive extends React.Component<RiveProps & WithFocusableProps> {\n private riveInstance: RiveCanvas | null = null;\n\n componentDidMount(): void {\n const canvas = document.getElementById(this.props.id) as HTMLCanvasElement;\n if (!canvas) {\n console.error('Canvas element not found with id:', this.props.id);\n throw new Error('canvas not found');\n }\n\n try {\n this.riveInstance = new RiveCanvas({\n src: this.props.src,\n canvas,\n autoplay: this.props.autoPlay,\n stateMachines: 'stateMachine',\n onLoad: () => {\n this.props.onLoadRiveInstance(this.riveInstance);\n },\n onLoadError: (error: any) => {\n console.error('RiveCanvas load error:', error);\n },\n });\n } catch (error) {\n console.error('Error creating RiveCanvas:', error);\n }\n\n setTimeout(() => {\n if (this.props.focusKey && this.props.autoFocus) {\n setFocus(this.props.focusKey);\n }\n }, 0);\n }\n\n componentWillUnmount() {\n if (this.riveInstance) {\n this.riveInstance.cleanup();\n }\n }\n\n render() {\n return (\n <canvas\n style={this.props.style}\n id={this.props.id}\n data-focused={this.props.focused}\n />\n );\n }\n}\n\nexport default withFocusable<RiveProps>()(Rive);\n","import { Rive as RiveCanvas } from '@rive-app/canvas';\nimport React from 'react';\nimport { OverlayType, IFantasyPayload } from '@/types/OverlayTypes';\nimport { IWinningBet } from '@/models/IWinningBet';\nimport Rive from '../../atoms/Rive';\n\ninterface OverlayProps {\n id: string;\n position?: {\n top?: number;\n left?: number;\n right?: number;\n bottom?: number;\n };\n overlayType: OverlayType;\n winningBet?: IWinningBet;\n fantasy?: IFantasyPayload;\n onOverlayAction?: (overlayType: OverlayType) => void;\n onOverlayViewed?: (overlayType: OverlayType) => void;\n}\n\ninterface OverlayState {\n autoDismiss: boolean;\n hasTrackedView: boolean;\n}\n\nexport const WINNING_BET_RIVE_FILE_URL =\n 'https://static.gcp.maestro.io/media/664b9c57d59a7a431542d814/67db106027ddcdcd2ecb97d4.riv';\n\nconst AUTO_DISMISS_TIMEOUT = 10400;\n\nclass Overlay extends React.Component<OverlayProps, OverlayState> {\n private autoDismissTimeout: NodeJS.Timeout | null = null;\n\n constructor(props: OverlayProps) {\n super(props);\n this.state = {\n autoDismiss: true,\n hasTrackedView: false,\n };\n }\n\n componentWillUnmount() {\n if (this.autoDismissTimeout) {\n clearTimeout(this.autoDismissTimeout);\n }\n }\n\n private handleOverlayAction = () => {\n const { overlayType, onOverlayAction } = this.props;\n\n this.setState({ autoDismiss: false });\n\n switch (overlayType) {\n case OverlayType.WinningBet:\n break;\n case OverlayType.FantasyPlayerEvent:\n break;\n }\n\n // Call custom action handler if provided\n if (onOverlayAction) {\n onOverlayAction(overlayType);\n }\n };\n\n get overlayTitle(): string {\n const { overlayType, fantasy } = this.props;\n switch (overlayType) {\n case OverlayType.WinningBet:\n return 'You won your bet!';\n case OverlayType.FantasyPlayerEvent:\n return fantasy?.title ?? 'Fantasy Update';\n default:\n return '';\n }\n }\n\n get overlayMetadata(): string {\n const { overlayType, winningBet, fantasy } = this.props;\n switch (overlayType) {\n case OverlayType.WinningBet:\n return (\n winningBet?.notificationText ?? 'Click OK to view your winning bets.'\n );\n case OverlayType.FantasyPlayerEvent:\n return fantasy?.metadata ?? 'New Player Activity';\n default:\n return '';\n }\n }\n\n private trackOverlayViewed = () => {\n if (this.state.hasTrackedView) return;\n\n this.setState({ hasTrackedView: true });\n\n if (this.props.onOverlayViewed) {\n this.props.onOverlayViewed(this.props.overlayType);\n }\n };\n\n onLoadRiveInstance = (riveInstance: RiveCanvas | null) => {\n if (!riveInstance) return;\n\n // Ensure the drawing surface matches the canvas size and device pixel ratio\n riveInstance.resizeDrawingSurfaceToCanvas();\n\n // Set text values after the file is loaded\n try {\n riveInstance.setTextRunValueAtPath(\n 'Title',\n this.overlayTitle,\n 'compNotification'\n );\n riveInstance.setTextRunValueAtPath(\n 'Metadata',\n this.overlayMetadata,\n 'compNotification'\n );\n } catch (error) {\n console.error('Error setting text values:', error);\n }\n\n // Get state machine inputs and trigger the play input specifically\n try {\n const inputs = riveInstance.stateMachineInputs('stateMachine');\n const triggerPlayInput = inputs.find(\n (input) => input.name === 'triggerPlay'\n );\n if (triggerPlayInput) {\n triggerPlayInput.fire();\n } else if (inputs.length > 0) {\n inputs[0].fire();\n }\n } catch (error) {\n console.error('Error with state machine inputs:', error);\n }\n\n this.trackOverlayViewed();\n\n this.autoDismissTimeout = setTimeout(() => {\n if (this.state.autoDismiss) {\n this.handleOverlayAction();\n }\n }, AUTO_DISMISS_TIMEOUT);\n };\n\n render() {\n const style = {\n position: 'fixed' as const,\n zIndex: 999999, // High z-index to ensure overlay appears above all content\n left:\n this.props.position?.left !== undefined\n ? `${this.props.position.left}px`\n : undefined,\n right:\n this.props.position?.right !== undefined\n ? `${this.props.position.right}px`\n : undefined,\n top:\n this.props.position?.top !== undefined\n ? `${this.props.position.top}px`\n : undefined,\n bottom:\n this.props.position?.bottom !== undefined\n ? `${this.props.position.bottom}px`\n : undefined,\n };\n\n return (\n <Rive\n id={this.props.id}\n onEnterPress={this.handleOverlayAction}\n focusKey=\"maestro-overlay\"\n autoFocus={true}\n autoPlay={true}\n onLoadRiveInstance={this.onLoadRiveInstance}\n src={WINNING_BET_RIVE_FILE_URL}\n style={style}\n />\n );\n }\n}\n\nexport default Overlay;\n","export const MaestroPanelType = {\n KEY_PLAYS: 'keyPlays',\n STATS: 'stats',\n FANTASY: 'fantasy',\n BETS: 'bets',\n} as const;\n\nexport type MaestroPanelType =\n (typeof MaestroPanelType)[keyof typeof MaestroPanelType];\n\nexport interface PanelTypeInfo {\n id: MaestroPanelType;\n name: string;\n imageNamePrefix: string;\n usesSectionHeaders: boolean;\n iconName: string;\n}\n\n// The mapping information for each panel type\nexport const PANEL_TYPE_INFO: Record<MaestroPanelType, PanelTypeInfo> = {\n [MaestroPanelType.KEY_PLAYS]: {\n id: MaestroPanelType.KEY_PLAYS,\n name: 'Key Plays',\n imageNamePrefix: 'Key-Plays',\n usesSectionHeaders: true,\n iconName: 'keyPlays' as string,\n },\n [MaestroPanelType.STATS]: {\n id: MaestroPanelType.STATS,\n name: 'Stats',\n imageNamePrefix: 'Stats',\n usesSectionHeaders: false,\n iconName: 'stats' as string,\n },\n [MaestroPanelType.FANTASY]: {\n id: MaestroPanelType.FANTASY,\n name: 'Fantasy',\n imageNamePrefix: 'Fantasy',\n usesSectionHeaders: false,\n iconName: 'fantasy' as string,\n },\n [MaestroPanelType.BETS]: {\n id: MaestroPanelType.BETS,\n name: 'Bets',\n imageNamePrefix: 'Bets',\n usesSectionHeaders: false,\n iconName: 'bets' as string,\n },\n};\n\n// Helper methods similar to Swift extension methods\nexport const getPanelName = (panelType: MaestroPanelType): string => {\n return PANEL_TYPE_INFO[panelType].name;\n};\n\nexport const getImageNamePrefix = (panelType: MaestroPanelType): string => {\n return PANEL_TYPE_INFO[panelType].imageNamePrefix;\n};\n\nexport const usesSectionHeaders = (panelType: MaestroPanelType): boolean => {\n return PANEL_TYPE_INFO[panelType].usesSectionHeaders;\n};\n\nexport const getIconName = (panelType: MaestroPanelType): string => {\n return PANEL_TYPE_INFO[panelType].iconName;\n};\n\nexport const getAllPanelTypes = (): MaestroPanelType[] => {\n return Object.values(MaestroPanelType);\n};\n","import { Observable } from '../helpers/Observable';\nimport { MaestroPanelType } from '../models/IPanel';\n\nexport class PanelManagerViewModel {\n private _panels = new Observable<MaestroPanelType[]>([\n MaestroPanelType.KEY_PLAYS,\n MaestroPanelType.STATS,\n MaestroPanelType.FANTASY,\n MaestroPanelType.BETS,\n ]);\n\n private _currentPanel = new Observable<MaestroPanelType>(\n MaestroPanelType.KEY_PLAYS\n );\n private _newlyFocusedPanel = new Observable<MaestroPanelType | null>(null);\n\n // Getter for panels\n get panels(): MaestroPanelType[] {\n return this._panels.value;\n }\n\n // Getter for panels observable\n get panelsObservable(): Observable<MaestroPanelType[]> {\n return this._panels;\n }\n\n // Getter for currentPanel\n get currentPanel(): MaestroPanelType {\n return this._currentPanel.value;\n }\n\n // Setter for currentPanel\n set currentPanel(value: MaestroPanelType) {\n this._currentPanel.value = value;\n }\n\n // Getter for currentPanel as Observable\n get currentPanelObservable(): Observable<MaestroPanelType> {\n return this._currentPanel;\n }\n\n // Getter for newlyFocusedPanel\n get newlyFocusedPanel(): MaestroPanelType | null {\n return this._newlyFocusedPanel.value;\n }\n\n // Setter for newlyFocusedPanel\n set newlyFocusedPanel(value: MaestroPanelType | null) {\n this._newlyFocusedPanel.value = value;\n }\n\n // Get the index of a specific panel type\n getIndex(forPanelType: MaestroPanelType): number | null {\n const index = this.panels.findIndex((p) => p === forPanelType);\n return index !== -1 ? index : null;\n }\n\n // Get the panel type at a specific index\n getPanelType(atIndex: number): MaestroPanelType | null {\n return this.panels[atIndex] || null;\n }\n\n // Computed property for panel to the left\n get panelTypeToLeft(): MaestroPanelType | null {\n const currentIndex = this.getIndex(this.currentPanel);\n if (currentIndex === null || currentIndex === 0) return null;\n return this.getPanelType(currentIndex - 1);\n }\n\n // Computed property for panel to the right\n get panelTypeToRight(): MaestroPanelType | null {\n const currentIndex = this.getIndex(this.currentPanel);\n if (currentIndex === null || currentIndex === this.panels.length - 1)\n return null;\n return this.getPanelType(currentIndex + 1);\n }\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"/* Warning: Do not play with :root */\\n.sdk-wrapper {\\n font-family: Arial, Helvetica, sans-serif;\\n color: var(--sdk-text100);\\n --sdk-bets: #20F4CA;\\n --sdk-highlightPrimary-rgb: 255, 255, 255;\\n}\\n\\n.sdk-wrapper .focus-ring {\\n border: 0.188rem solid transparent;\\n transition: border-color 0.2s ease-in-out;\\n border-radius: 0.625rem;\\n}\\n\\n.sdk-wrapper .focus-ring[data-focused='true'] {\\n border-color: var(--sdk-highlightPrimary);\\n}\\n\\n.sdk-wrapper .focus-opacity {\\n background-color: transparent;\\n transition: background-color 0.2s ease-in-out;\\n}\\n\\n.sdk-wrapper .focus-opacity[data-focused=\\\"true\\\"] {\\n background-color: rgba(var(--sdk-highlightPrimary-rgb), 0.078);\\n}\\n\\n.T01 {\\n font-size: 1.125rem;\\n font-weight: 400;\\n line-height: 1.5rem;\\n}\\n\\n.T02 {\\n font-size: 1.125rem;\\n font-weight: 500;\\n line-height: 1.5rem;\\n}\\n\\n.T05_ALT {\\n font-size: 1.313rem;\\n font-weight: 500;\\n line-height: 1.75rem;\\n}\\n\\n.T10 {\\n font-size: 1.438rem;\\n font-weight: 500;\\n line-height: 2rem;\\n}\\n\\n.T20 {\\n font-size: 1.688rem;\\n font-weight: 500;\\n line-height: 2.25rem;\\n}\\n\\n.T30 {\\n font-size: 1.813rem;\\n font-weight: 700;\\n line-height: 2.25rem;\\n}\\n\\n.T70 {\\n font-size: 3rem;\\n font-weight: 900;\\n line-height: 3.5rem;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/core/App/App.styles.css\"],\"names\":[],\"mappings\":\"AAAA,oCAAoC;AACpC;EACE,yCAAyC;EACzC,yBAAyB;EACzB,mBAAmB;EACnB,yCAAyC;AAC3C;;AAEA;EACE,kCAAkC;EAClC,yCAAyC;EACzC,uBAAuB;AACzB;;AAEA;EACE,yCAAyC;AAC3C;;AAEA;EACE,6BAA6B;EAC7B,6CAA6C;AAC/C;;AAEA;EACE,8DAA8D;AAChE;;AAEA;EACE,mBAAmB;EACnB,gBAAgB;EAChB,mBAAmB;AACrB;;AAEA;EACE,mBAAmB;EACnB,gBAAgB;EAChB,mBAAmB;AACrB;;AAEA;EACE,mBAAmB;EACnB,gBAAgB;EAChB,oBAAoB;AACtB;;AAEA;EACE,mBAAmB;EACnB,gBAAgB;EAChB,iBAAiB;AACnB;;AAEA;EACE,mBAAmB;EACnB,gBAAgB;EAChB,oBAAoB;AACtB;;AAEA;EACE,mBAAmB;EACnB,gBAAgB;EAChB,oBAAoB;AACtB;;AAEA;EACE,eAAe;EACf,gBAAgB;EAChB,mBAAmB;AACrB\",\"sourcesContent\":[\"/* Warning: Do not play with :root */\\n.sdk-wrapper {\\n font-family: Arial, Helvetica, sans-serif;\\n color: var(--sdk-text100);\\n --sdk-bets: #20F4CA;\\n --sdk-highlightPrimary-rgb: 255, 255, 255;\\n}\\n\\n.sdk-wrapper .focus-ring {\\n border: 0.188rem solid transparent;\\n transition: border-color 0.2s ease-in-out;\\n border-radius: 0.625rem;\\n}\\n\\n.sdk-wrapper .focus-ring[data-focused='true'] {\\n border-color: var(--sdk-highlightPrimary);\\n}\\n\\n.sdk-wrapper .focus-opacity {\\n background-color: transparent;\\n transition: background-color 0.2s ease-in-out;\\n}\\n\\n.sdk-wrapper .focus-opacity[data-focused=\\\"true\\\"] {\\n background-color: rgba(var(--sdk-highlightPrimary-rgb), 0.078);\\n}\\n\\n.T01 {\\n font-size: 1.125rem;\\n font-weight: 400;\\n line-height: 1.5rem;\\n}\\n\\n.T02 {\\n font-size: 1.125rem;\\n font-weight: 500;\\n line-height: 1.5rem;\\n}\\n\\n.T05_ALT {\\n font-size: 1.313rem;\\n font-weight: 500;\\n line-height: 1.75rem;\\n}\\n\\n.T10 {\\n font-size: 1.438rem;\\n font-weight: 500;\\n line-height: 2rem;\\n}\\n\\n.T20 {\\n font-size: 1.688rem;\\n font-weight: 500;\\n line-height: 2.25rem;\\n}\\n\\n.T30 {\\n font-size: 1.813rem;\\n font-weight: 700;\\n line-height: 2.25rem;\\n}\\n\\n.T70 {\\n font-size: 3rem;\\n font-weight: 900;\\n line-height: 3.5rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sdk--panel-manager {\\n padding: 3.75rem;\\n padding-left: 3rem;\\n padding-bottom: 0;\\n display: block;\\n}\\n\\n.sdk--panel-manager > * {\\n margin-bottom: 3.75rem;\\n}\\n\\n.sdk--panel-manager > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.sdk--panel-manager .panel-coming-soon {\\n display: block;\\n text-align: center;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/core/PanelManager/PanelManager.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,gBAAgB;EAChB,kBAAkB;EAClB,iBAAiB;EACjB,cAAc;AAChB;;AAEA;EACE,sBAAsB;AACxB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,cAAc;EACd,kBAAkB;AACpB\",\"sourcesContent\":[\".sdk--panel-manager {\\n padding: 3.75rem;\\n padding-left: 3rem;\\n padding-bottom: 0;\\n display: block;\\n}\\n\\n.sdk--panel-manager > * {\\n margin-bottom: 3.75rem;\\n}\\n\\n.sdk--panel-manager > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.sdk--panel-manager .panel-coming-soon {\\n display: block;\\n text-align: center;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".key-plays-view {\\n display: block;\\n overflow-y: auto;\\n max-height: calc(100vh - 86px - 3.75rem - 3.75rem);\\n scrollbar-width: none;\\n scroll-behavior: smooth;\\n overscroll-behavior: contain;\\n}\\n\\n.key-plays-view > * {\\n margin-bottom: 1rem;\\n}\\n\\n.key-plays-view > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.key-plays-section {\\n display: block;\\n position: relative;\\n}\\n\\n.key-plays-section > * {\\n margin-bottom: 1rem;\\n}\\n\\n.key-plays-section > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.key-plays-section-items {\\n display: block;\\n}\\n\\n.key-plays-section-items > * {\\n margin-bottom: 20px;\\n}\\n\\n.key-plays-section-items > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.key-plays-section-title {\\n position: sticky;\\n top: 0;\\n z-index: 1;\\n margin: 0;\\n margin-bottom: 1rem;\\n}\\n\\n.key-plays-bottom-padding {\\n height: calc(100vh - 240px);\\n min-height: 400px;\\n width: 100%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/key-plays/view/KeyPlaysView.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,cAAc;EACd,gBAAgB;EAChB,kDAAkD;EAClD,qBAAqB;EACrB,uBAAuB;EACvB,4BAA4B;AAC9B;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,cAAc;EACd,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,cAAc;AAChB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,gBAAgB;EAChB,MAAM;EACN,UAAU;EACV,SAAS;EACT,mBAAmB;AACrB;;AAEA;EACE,2BAA2B;EAC3B,iBAAiB;EACjB,WAAW;AACb\",\"sourcesContent\":[\".key-plays-view {\\n display: block;\\n overflow-y: auto;\\n max-height: calc(100vh - 86px - 3.75rem - 3.75rem);\\n scrollbar-width: none;\\n scroll-behavior: smooth;\\n overscroll-behavior: contain;\\n}\\n\\n.key-plays-view > * {\\n margin-bottom: 1rem;\\n}\\n\\n.key-plays-view > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.key-plays-section {\\n display: block;\\n position: relative;\\n}\\n\\n.key-plays-section > * {\\n margin-bottom: 1rem;\\n}\\n\\n.key-plays-section > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.key-plays-section-items {\\n display: block;\\n}\\n\\n.key-plays-section-items > * {\\n margin-bottom: 20px;\\n}\\n\\n.key-plays-section-items > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.key-plays-section-title {\\n position: sticky;\\n top: 0;\\n z-index: 1;\\n margin: 0;\\n margin-bottom: 1rem;\\n}\\n\\n.key-plays-bottom-padding {\\n height: calc(100vh - 240px);\\n min-height: 400px;\\n width: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".scrollable-container {\\n position: relative;\\n}\\n\\n\\n.scrollable-container::before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n height: 3.625rem; /* Height of the top gradient */\\n z-index: 0;\\n transition: z-index 0.3s ease;\\n}\\n\\n.scrollable-container[data-scrolled=\\\"true\\\"]::before {\\n z-index: 1;\\n background: linear-gradient(0deg, #080a0c00 0%, var(--sdk-surface1) 100%);\\n}\\n\\n.scrollable-container::after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n height: 6rem; /* Height of the bottom gradient */\\n background: linear-gradient(180deg, #080a0c00 0%, var(--sdk-surface1) 100%);\\n}\\n\\n.focusable-item {\\n width: 100%;\\n height: 100%;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/core/ScrollableContainer/ScrollableContainer.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,kBAAkB;AACpB;;;AAGA;EACE,WAAW;EACX,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,MAAM;EACN,gBAAgB,EAAE,+BAA+B;EACjD,UAAU;EACV,6BAA6B;AAC/B;;AAEA;EACE,UAAU;EACV,yEAAyE;AAC3E;;AAEA;EACE,WAAW;EACX,kBAAkB;EAClB,OAAO;EACP,QAAQ;EACR,SAAS;EACT,YAAY,EAAE,kCAAkC;EAChD,2EAA2E;AAC7E;;AAEA;EACE,WAAW;EACX,YAAY;AACd\",\"sourcesContent\":[\".scrollable-container {\\n position: relative;\\n}\\n\\n\\n.scrollable-container::before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 0;\\n height: 3.625rem; /* Height of the top gradient */\\n z-index: 0;\\n transition: z-index 0.3s ease;\\n}\\n\\n.scrollable-container[data-scrolled=\\\"true\\\"]::before {\\n z-index: 1;\\n background: linear-gradient(0deg, #080a0c00 0%, var(--sdk-surface1) 100%);\\n}\\n\\n.scrollable-container::after {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n height: 6rem; /* Height of the bottom gradient */\\n background: linear-gradient(180deg, #080a0c00 0%, var(--sdk-surface1) 100%);\\n}\\n\\n.focusable-item {\\n width: 100%;\\n height: 100%;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".key-play-card {\\n display: block;\\n border-radius: 0.625rem;\\n background-color: var(--sdk-surface2);\\n contain: content;\\n position: relative;\\n}\\n\\n.key-play-card-content {\\n display: block;\\n width: 100%;\\n position: relative;\\n}\\n\\n.key-play-card-content .cardImage {\\n display: inline-block;\\n width: 33.33%;\\n vertical-align: top;\\n object-fit: cover;\\n}\\n\\n.key-play-card-content .text-content {\\n position: absolute;\\n top: 50%;\\n left: 33.33%;\\n transform: translateY(-50%);\\n width: 66.67%;\\n padding: 2.75rem 2.25rem 2.75rem 1.5rem;\\n text-align: center;\\n box-sizing: border-box;\\n}\\n\\n.key-play-card-content .multi-line {\\n display: -webkit-box;\\n -webkit-box-orient: vertical;\\n -webkit-line-clamp: 3;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n text-align: left;\\n}\\n\\n.key-play-card progress {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n width: 100%;\\n height: 8px;\\n border-radius: 15px;\\n background-color: var(--sdk-surface6);\\n box-shadow: 0px 1px 3px 0px #10111366 inset;\\n overflow: hidden;\\n border-radius: 0;\\n position: absolute;\\n bottom: 0;\\n}\\n\\n.key-play-card progress::-webkit-progress-bar,\\n.key-play-card progress::-moz-progress-bar {\\n background-color: var(--sdk-surface6);\\n}\\n\\n.key-play-card progress::-webkit-progress-value {\\n background-color: var(--sdk-highlightPrimary);\\n}\\n\\n.key-play-card .score {\\n display: block;\\n text-align: center;\\n padding: 10px;\\n background-color: var(--sdk-surface4);\\n}\\n\\n.key-play-card .score-team {\\n display: inline-block;\\n vertical-align: middle;\\n margin: 0 2rem;\\n}\\n\\n.key-play-card .score-team > div {\\n display: inline-block;\\n vertical-align: middle;\\n}\\n\\n.key-play-card .score > *:last-child .score-value {\\n margin-left: 0;\\n margin-right: 1rem;\\n}\\n\\n.key-play-card .score-team .score-value {\\n margin-left: 1rem;\\n}\\n\\n.key-play-card .error-state {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n display: block;\\n text-align: center;\\n background-color: var(--sdk-surface2);\\n}\\n\\n.key-play-card .error-state > * {\\n margin: 0.5rem;\\n vertical-align: middle;\\n}\\n\\n.key-play-card .error-state path {\\n fill: var(--sdk-alertWarning);\\n}\\n\\n.key-play-card .non-recent-error-state {\\n position: absolute;\\n top: 1.125rem;\\n right: 1.125rem;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/key-plays/view/KeyPlayCardView.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,cAAc;EACd,uBAAuB;EACvB,qCAAqC;EACrC,gBAAgB;EAChB,kBAAkB;AACpB;;AAEA;EACE,cAAc;EACd,WAAW;EACX,kBAAkB;AACpB;;AAEA;EACE,qBAAqB;EACrB,aAAa;EACb,mBAAmB;EACnB,iBAAiB;AACnB;;AAEA;EACE,kBAAkB;EAClB,QAAQ;EACR,YAAY;EACZ,2BAA2B;EAC3B,aAAa;EACb,uCAAuC;EACvC,kBAAkB;EAClB,sBAAsB;AACxB;;AAEA;EACE,oBAAoB;EACpB,4BAA4B;EAC5B,qBAAqB;EACrB,gBAAgB;EAChB,uBAAuB;EACvB,gBAAgB;AAClB;;AAEA;EACE,wBAAwB;EACxB,qBAAqB;EACrB,gBAAgB;EAChB,WAAW;EACX,WAAW;EACX,mBAAmB;EACnB,qCAAqC;EACrC,2CAA2C;EAC3C,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,SAAS;AACX;;AAEA;;EAEE,qCAAqC;AACvC;;AAEA;EACE,6CAA6C;AAC/C;;AAEA;EACE,cAAc;EACd,kBAAkB;EAClB,aAAa;EACb,qCAAqC;AACvC;;AAEA;EACE,qBAAqB;EACrB,sBAAsB;EACtB,cAAc;AAChB;;AAEA;EACE,qBAAqB;EACrB,sBAAsB;AACxB;;AAEA;EACE,cAAc;EACd,kBAAkB;AACpB;;AAEA;EACE,iBAAiB;AACnB;;AAEA;EACE,kBAAkB;EAClB,WAAW;EACX,YAAY;EACZ,cAAc;EACd,kBAAkB;EAClB,qCAAqC;AACvC;;AAEA;EACE,cAAc;EACd,sBAAsB;AACxB;;AAEA;EACE,6BAA6B;AAC/B;;AAEA;EACE,kBAAkB;EAClB,aAAa;EACb,eAAe;AACjB\",\"sourcesContent\":[\".key-play-card {\\n display: block;\\n border-radius: 0.625rem;\\n background-color: var(--sdk-surface2);\\n contain: content;\\n position: relative;\\n}\\n\\n.key-play-card-content {\\n display: block;\\n width: 100%;\\n position: relative;\\n}\\n\\n.key-play-card-content .cardImage {\\n display: inline-block;\\n width: 33.33%;\\n vertical-align: top;\\n object-fit: cover;\\n}\\n\\n.key-play-card-content .text-content {\\n position: absolute;\\n top: 50%;\\n left: 33.33%;\\n transform: translateY(-50%);\\n width: 66.67%;\\n padding: 2.75rem 2.25rem 2.75rem 1.5rem;\\n text-align: center;\\n box-sizing: border-box;\\n}\\n\\n.key-play-card-content .multi-line {\\n display: -webkit-box;\\n -webkit-box-orient: vertical;\\n -webkit-line-clamp: 3;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n text-align: left;\\n}\\n\\n.key-play-card progress {\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n width: 100%;\\n height: 8px;\\n border-radius: 15px;\\n background-color: var(--sdk-surface6);\\n box-shadow: 0px 1px 3px 0px #10111366 inset;\\n overflow: hidden;\\n border-radius: 0;\\n position: absolute;\\n bottom: 0;\\n}\\n\\n.key-play-card progress::-webkit-progress-bar,\\n.key-play-card progress::-moz-progress-bar {\\n background-color: var(--sdk-surface6);\\n}\\n\\n.key-play-card progress::-webkit-progress-value {\\n background-color: var(--sdk-highlightPrimary);\\n}\\n\\n.key-play-card .score {\\n display: block;\\n text-align: center;\\n padding: 10px;\\n background-color: var(--sdk-surface4);\\n}\\n\\n.key-play-card .score-team {\\n display: inline-block;\\n vertical-align: middle;\\n margin: 0 2rem;\\n}\\n\\n.key-play-card .score-team > div {\\n display: inline-block;\\n vertical-align: middle;\\n}\\n\\n.key-play-card .score > *:last-child .score-value {\\n margin-left: 0;\\n margin-right: 1rem;\\n}\\n\\n.key-play-card .score-team .score-value {\\n margin-left: 1rem;\\n}\\n\\n.key-play-card .error-state {\\n position: absolute;\\n width: 100%;\\n height: 100%;\\n display: block;\\n text-align: center;\\n background-color: var(--sdk-surface2);\\n}\\n\\n.key-play-card .error-state > * {\\n margin: 0.5rem;\\n vertical-align: middle;\\n}\\n\\n.key-play-card .error-state path {\\n fill: var(--sdk-alertWarning);\\n}\\n\\n.key-play-card .non-recent-error-state {\\n position: absolute;\\n top: 1.125rem;\\n right: 1.125rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".sdk--key-play-error-state-unsupportedEvent {\\n padding: 2.25rem 1.5rem 0 1.5rem;\\n display: block;\\n}\\n\\n.sdk--key-play-error-state-unsupportedEvent::after {\\n background: linear-gradient(\\n 180deg,\\n rgba(0, 0, 0, 0) 0%,\\n rgba(255, 255, 255, 0.08) 100%\\n );\\n}\\n\\n.sdk--key-play-error-state-unsupportedEvent h3 {\\n margin: 0;\\n}\\n\\n.sdk--key-play-error-state-unsupportedEvent p {\\n margin: 0;\\n color: var(--sdk-text200);\\n}\\n\\n.sdk--key-play-error-state-unsupportedEvent > * {\\n margin-bottom: 1rem;\\n}\\n\\n.sdk--key-play-error-state-unsupportedEvent > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent {\\n overflow-y: hidden;\\n max-height: calc(100vh - 86px - 3.75rem - 3.75rem);\\n padding: 2.25rem 1.5rem 0 1.5rem;\\n scrollbar-width: none;\\n display: block;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent h3 {\\n margin: 0;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent p {\\n margin: 0;\\n color: var(--sdk-text200);\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent > * {\\n margin-bottom: 6.25rem;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .main-content {\\n display: block;\\n text-align: center;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .main-content > * {\\n margin-bottom: 1rem;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .main-content > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .unpopulatedEvent-examples {\\n display: block;\\n position: relative;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .unpopulatedEvent-examples > * {\\n margin-bottom: 1rem;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent\\n .unpopulatedEvent-examples\\n > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .unpopulatedEvent-examples::after {\\n content: '';\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n bottom: 0;\\n background: linear-gradient(0deg, #000000 0%, rgba(0, 0, 0, 0) 92.2%);\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent\\n .unpopulatedEvent-examples\\n .example {\\n display: block;\\n padding: 1.75rem 1.5rem;\\n border-radius: 0.625rem;\\n background-color: var(--sdk-surface3);\\n height: 8rem;\\n}\\n\\n.sdk--key-play-error-state-tabLoadFailure {\\n display: block;\\n border-radius: 0.625rem;\\n border: 0.188rem solid transparent;\\n transition: border-color 0.2s ease-in-out;\\n padding: 1.5rem;\\n background-color: var(--sdk-surface4);\\n}\\n\\n.sdk--key-play-error-state-tabLoadFailure h3 {\\n margin: 0;\\n}\\n\\n.sdk--key-play-error-state-tabLoadFailure p {\\n margin: 0;\\n height: 5.375rem;\\n}\\n\\n.sdk--key-play-error-state-tabLoadFailure > * {\\n margin-bottom: 1rem;\\n}\\n\\n.sdk--key-play-error-state-tabLoadFailure > *:last-child {\\n margin-bottom: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/key-plays/view/KeyPlayErrorStateView.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,gCAAgC;EAChC,cAAc;AAChB;;AAEA;EACE;;;;GAIC;AACH;;AAEA;EACE,SAAS;AACX;;AAEA;EACE,SAAS;EACT,yBAAyB;AAC3B;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,kBAAkB;EAClB,kDAAkD;EAClD,gCAAgC;EAChC,qBAAqB;EACrB,cAAc;AAChB;;AAEA;EACE,SAAS;AACX;;AAEA;EACE,SAAS;EACT,yBAAyB;AAC3B;;AAEA;EACE,sBAAsB;AACxB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,cAAc;EACd,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,cAAc;EACd,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;;;EAGE,gBAAgB;AAClB;;AAEA;EACE,WAAW;EACX,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,SAAS;EACT,qEAAqE;AACvE;;AAEA;;;EAGE,cAAc;EACd,uBAAuB;EACvB,uBAAuB;EACvB,qCAAqC;EACrC,YAAY;AACd;;AAEA;EACE,cAAc;EACd,uBAAuB;EACvB,kCAAkC;EAClC,yCAAyC;EACzC,eAAe;EACf,qCAAqC;AACvC;;AAEA;EACE,SAAS;AACX;;AAEA;EACE,SAAS;EACT,gBAAgB;AAClB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB\",\"sourcesContent\":[\".sdk--key-play-error-state-unsupportedEvent {\\n padding: 2.25rem 1.5rem 0 1.5rem;\\n display: block;\\n}\\n\\n.sdk--key-play-error-state-unsupportedEvent::after {\\n background: linear-gradient(\\n 180deg,\\n rgba(0, 0, 0, 0) 0%,\\n rgba(255, 255, 255, 0.08) 100%\\n );\\n}\\n\\n.sdk--key-play-error-state-unsupportedEvent h3 {\\n margin: 0;\\n}\\n\\n.sdk--key-play-error-state-unsupportedEvent p {\\n margin: 0;\\n color: var(--sdk-text200);\\n}\\n\\n.sdk--key-play-error-state-unsupportedEvent > * {\\n margin-bottom: 1rem;\\n}\\n\\n.sdk--key-play-error-state-unsupportedEvent > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent {\\n overflow-y: hidden;\\n max-height: calc(100vh - 86px - 3.75rem - 3.75rem);\\n padding: 2.25rem 1.5rem 0 1.5rem;\\n scrollbar-width: none;\\n display: block;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent h3 {\\n margin: 0;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent p {\\n margin: 0;\\n color: var(--sdk-text200);\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent > * {\\n margin-bottom: 6.25rem;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .main-content {\\n display: block;\\n text-align: center;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .main-content > * {\\n margin-bottom: 1rem;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .main-content > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .unpopulatedEvent-examples {\\n display: block;\\n position: relative;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .unpopulatedEvent-examples > * {\\n margin-bottom: 1rem;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent\\n .unpopulatedEvent-examples\\n > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent .unpopulatedEvent-examples::after {\\n content: '';\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n bottom: 0;\\n background: linear-gradient(0deg, #000000 0%, rgba(0, 0, 0, 0) 92.2%);\\n}\\n\\n.sdk--key-play-error-state-unpopulatedEvent\\n .unpopulatedEvent-examples\\n .example {\\n display: block;\\n padding: 1.75rem 1.5rem;\\n border-radius: 0.625rem;\\n background-color: var(--sdk-surface3);\\n height: 8rem;\\n}\\n\\n.sdk--key-play-error-state-tabLoadFailure {\\n display: block;\\n border-radius: 0.625rem;\\n border: 0.188rem solid transparent;\\n transition: border-color 0.2s ease-in-out;\\n padding: 1.5rem;\\n background-color: var(--sdk-surface4);\\n}\\n\\n.sdk--key-play-error-state-tabLoadFailure h3 {\\n margin: 0;\\n}\\n\\n.sdk--key-play-error-state-tabLoadFailure p {\\n margin: 0;\\n height: 5.375rem;\\n}\\n\\n.sdk--key-play-error-state-tabLoadFailure > * {\\n margin-bottom: 1rem;\\n}\\n\\n.sdk--key-play-error-state-tabLoadFailure > *:last-child {\\n margin-bottom: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".action-button {\\n padding: 23px 0;\\n background-color: var(--sdk-accentSecondary);\\n color: var(--sdk-text100);\\n}\\n\\n.action-button:hover, .action-button[data-focused=true] {\\n background-color: var(--sdk-accentPrimary);\\n color: var(--sdk-text500);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/molecules/ActionButton/ActionButton.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,eAAe;EACf,4CAA4C;EAC5C,yBAAyB;AAC3B;;AAEA;EACE,0CAA0C;EAC1C,yBAAyB;AAC3B\",\"sourcesContent\":[\".action-button {\\n padding: 23px 0;\\n background-color: var(--sdk-accentSecondary);\\n color: var(--sdk-text100);\\n}\\n\\n.action-button:hover, .action-button[data-focused=true] {\\n background-color: var(--sdk-accentPrimary);\\n color: var(--sdk-text500);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".base-button {\\n border-radius: 6px;\\n display: block;\\n text-align: center;\\n cursor: pointer;\\n width: 100%;\\n border: none;\\n}\\n\\n.base-button > * {\\n display: inline-block;\\n vertical-align: middle;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/atoms/BaseButton/BaseButton.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,kBAAkB;EAClB,cAAc;EACd,kBAAkB;EAClB,eAAe;EACf,WAAW;EACX,YAAY;AACd;;AAEA;EACE,qBAAqB;EACrB,sBAAsB;AACxB\",\"sourcesContent\":[\".base-button {\\n border-radius: 6px;\\n display: block;\\n text-align: center;\\n cursor: pointer;\\n width: 100%;\\n border: none;\\n}\\n\\n.base-button > * {\\n display: inline-block;\\n vertical-align: middle;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".bets-view {\\n overflow-y: auto;\\n max-height: calc(100vh - 86px - 3.75rem - 3.75rem);\\n scrollbar-width: none;\\n scroll-behavior: smooth;\\n overscroll-behavior: contain;\\n}\\n\\n.bets-view > * {\\n margin-bottom: 1rem;\\n}\\n\\n.bets-view > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.bets-view::-webkit-scrollbar {\\n display: none;\\n}\\n\\n.bets-bottom-padding {\\n height: calc(100vh - 240px);\\n min-height: 400px;\\n width: 100%;\\n}\\n\\n.bets-error-state-tabLoadFailure {\\n padding: 1.5rem;\\n background-color: var(--sdk-surface4);\\n}\\n\\n.bets-error-state-tabLoadFailure > * {\\n margin-bottom: 1rem;\\n}\\n\\n.bets-error-state-tabLoadFailure > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.bets-error-state-tabLoadFailure h3 {\\n margin: 0;\\n}\\n\\n.bets-error-state-tabLoadFailure p {\\n margin: 0;\\n height: 5.375rem;\\n}\\n\\n.scrollable-container[data-has-error='true']::before {\\n background: none;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/bets/view/BetsView.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,gBAAgB;EAChB,kDAAkD;EAClD,qBAAqB;EACrB,uBAAuB;EACvB,4BAA4B;AAC9B;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,2BAA2B;EAC3B,iBAAiB;EACjB,WAAW;AACb;;AAEA;EACE,eAAe;EACf,qCAAqC;AACvC;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,SAAS;AACX;;AAEA;EACE,SAAS;EACT,gBAAgB;AAClB;;AAEA;EACE,gBAAgB;AAClB\",\"sourcesContent\":[\".bets-view {\\n overflow-y: auto;\\n max-height: calc(100vh - 86px - 3.75rem - 3.75rem);\\n scrollbar-width: none;\\n scroll-behavior: smooth;\\n overscroll-behavior: contain;\\n}\\n\\n.bets-view > * {\\n margin-bottom: 1rem;\\n}\\n\\n.bets-view > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.bets-view::-webkit-scrollbar {\\n display: none;\\n}\\n\\n.bets-bottom-padding {\\n height: calc(100vh - 240px);\\n min-height: 400px;\\n width: 100%;\\n}\\n\\n.bets-error-state-tabLoadFailure {\\n padding: 1.5rem;\\n background-color: var(--sdk-surface4);\\n}\\n\\n.bets-error-state-tabLoadFailure > * {\\n margin-bottom: 1rem;\\n}\\n\\n.bets-error-state-tabLoadFailure > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.bets-error-state-tabLoadFailure h3 {\\n margin: 0;\\n}\\n\\n.bets-error-state-tabLoadFailure p {\\n margin: 0;\\n height: 5.375rem;\\n}\\n\\n.scrollable-container[data-has-error='true']::before {\\n background: none;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".six-pack-table {\\n padding: 0 2rem 0 2rem;\\n border-collapse: separate;\\n border-spacing: 0.25rem 1.5rem;\\n background-color: var(--sdk-surface3);\\n width: 100%;\\n}\\n\\n.six-pack-table thead tr {\\n color: var(--sdk-text200);\\n}\\n\\n.six-pack-table thead th:not(:first-child) {\\n width: 5.938rem;\\n box-sizing: border-box;\\n}\\n\\n.six-pack-table tbody td:not(:first-child) {\\n text-align: center;\\n padding: 0.625rem;\\n border-radius: 0.25rem;\\n width: 5.938rem;\\n box-sizing: border-box;\\n}\\n\\n.six-pack-table tbody td:not(:first-child):not(:nth-child(2)) {\\n background-color: var(--sdk-surface4);\\n border: 1px solid var(--sdk-surface5);\\n}\\n\\n.six-pack-table tbody td span {\\n color: var(--sdk-text200);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/bets/view/SixPack/SixPackView.style.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,sBAAsB;EACtB,yBAAyB;EACzB,8BAA8B;EAC9B,qCAAqC;EACrC,WAAW;AACb;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,eAAe;EACf,sBAAsB;AACxB;;AAEA;EACE,kBAAkB;EAClB,iBAAiB;EACjB,sBAAsB;EACtB,eAAe;EACf,sBAAsB;AACxB;;AAEA;EACE,qCAAqC;EACrC,qCAAqC;AACvC;;AAEA;EACE,yBAAyB;AAC3B\",\"sourcesContent\":[\".six-pack-table {\\n padding: 0 2rem 0 2rem;\\n border-collapse: separate;\\n border-spacing: 0.25rem 1.5rem;\\n background-color: var(--sdk-surface3);\\n width: 100%;\\n}\\n\\n.six-pack-table thead tr {\\n color: var(--sdk-text200);\\n}\\n\\n.six-pack-table thead th:not(:first-child) {\\n width: 5.938rem;\\n box-sizing: border-box;\\n}\\n\\n.six-pack-table tbody td:not(:first-child) {\\n text-align: center;\\n padding: 0.625rem;\\n border-radius: 0.25rem;\\n width: 5.938rem;\\n box-sizing: border-box;\\n}\\n\\n.six-pack-table tbody td:not(:first-child):not(:nth-child(2)) {\\n background-color: var(--sdk-surface4);\\n border: 1px solid var(--sdk-surface5);\\n}\\n\\n.six-pack-table tbody td span {\\n color: var(--sdk-text200);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".my-bets-view {\\n padding: 1rem;\\n border-radius: 0.625rem;\\n background-color: var(--sdk-surface3);\\n}\\n\\n.my-bets-view > * {\\n margin-bottom: 1rem;\\n}\\n\\n.my-bets-view > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.no-user-bets {\\n background-color: var(--sdk-surface4);\\n border-radius: 10px;\\n display: block;\\n width: 100%;\\n text-align: center;\\n padding: 38px 48px;\\n text-transform: capitalize;\\n box-sizing: border-box;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/bets/view/UserBets/UserBetsView.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,aAAa;EACb,uBAAuB;EACvB,qCAAqC;AACvC;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,qCAAqC;EACrC,mBAAmB;EACnB,cAAc;EACd,WAAW;EACX,kBAAkB;EAClB,kBAAkB;EAClB,0BAA0B;EAC1B,sBAAsB;AACxB\",\"sourcesContent\":[\".my-bets-view {\\n padding: 1rem;\\n border-radius: 0.625rem;\\n background-color: var(--sdk-surface3);\\n}\\n\\n.my-bets-view > * {\\n margin-bottom: 1rem;\\n}\\n\\n.my-bets-view > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.no-user-bets {\\n background-color: var(--sdk-surface4);\\n border-radius: 10px;\\n display: block;\\n width: 100%;\\n text-align: center;\\n padding: 38px 48px;\\n text-transform: capitalize;\\n box-sizing: border-box;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".bets-card-bets .single-bet:not(:last-child)::before {\\n content: '';\\n display: block;\\n width: 1px;\\n height: 100%;\\n background-color: var(--sdk-surface6);\\n position: absolute;\\n bottom: 0;\\n left: calc(24px + 1.5rem);\\n transform: translateY(50%);\\n}\\n\\n.bets-card-bets .single-bet[data-focusable='true'] {\\n padding: 1.5rem;\\n}\\n\\n.bets-card-bets .single-bet {\\n position: relative;\\n padding: 0 1.5rem;\\n overflow: hidden; /* clearfix */\\n}\\n\\n.bets-card-bets .single-bet > * {\\n float: left;\\n margin-right: 1rem;\\n}\\n\\n.bets-card-bets .single-bet > *:last-child {\\n margin-right: 0;\\n}\\n\\n.bets-card-bets .single-bet:after {\\n content: '';\\n display: table;\\n clear: both;\\n}\\n\\n.bets-card-bets .single-bet svg {\\n z-index: 1;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/bets/view/UserBets/Parlay/Parlay.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,WAAW;EACX,cAAc;EACd,UAAU;EACV,YAAY;EACZ,qCAAqC;EACrC,kBAAkB;EAClB,SAAS;EACT,yBAAyB;EACzB,0BAA0B;AAC5B;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,kBAAkB;EAClB,iBAAiB;EACjB,gBAAgB,EAAE,aAAa;AACjC;;AAEA;EACE,WAAW;EACX,kBAAkB;AACpB;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,WAAW;EACX,cAAc;EACd,WAAW;AACb;;AAEA;EACE,UAAU;AACZ\",\"sourcesContent\":[\".bets-card-bets .single-bet:not(:last-child)::before {\\n content: '';\\n display: block;\\n width: 1px;\\n height: 100%;\\n background-color: var(--sdk-surface6);\\n position: absolute;\\n bottom: 0;\\n left: calc(24px + 1.5rem);\\n transform: translateY(50%);\\n}\\n\\n.bets-card-bets .single-bet[data-focusable='true'] {\\n padding: 1.5rem;\\n}\\n\\n.bets-card-bets .single-bet {\\n position: relative;\\n padding: 0 1.5rem;\\n overflow: hidden; /* clearfix */\\n}\\n\\n.bets-card-bets .single-bet > * {\\n float: left;\\n margin-right: 1rem;\\n}\\n\\n.bets-card-bets .single-bet > *:last-child {\\n margin-right: 0;\\n}\\n\\n.bets-card-bets .single-bet:after {\\n content: '';\\n display: table;\\n clear: both;\\n}\\n\\n.bets-card-bets .single-bet svg {\\n z-index: 1;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".bet-outcome-badge {\\n background-color: var(--sdk-surface2);\\n padding: 0.625rem 0.75rem;\\n border-radius: 0.5rem;\\n float: right;\\n}\\n\\n.bet-outcome-badge > * {\\n display: inline-block;\\n vertical-align: middle;\\n margin-right: 0.375rem;\\n}\\n\\n.bet-outcome-badge > *:last-child {\\n margin-right: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/bets/view/UserBets/OutcomeBadge/OutcomeBadge.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,qCAAqC;EACrC,yBAAyB;EACzB,qBAAqB;EACrB,YAAY;AACd;;AAEA;EACE,qBAAqB;EACrB,sBAAsB;EACtB,sBAAsB;AACxB;;AAEA;EACE,eAAe;AACjB\",\"sourcesContent\":[\".bet-outcome-badge {\\n background-color: var(--sdk-surface2);\\n padding: 0.625rem 0.75rem;\\n border-radius: 0.5rem;\\n float: right;\\n}\\n\\n.bet-outcome-badge > * {\\n display: inline-block;\\n vertical-align: middle;\\n margin-right: 0.375rem;\\n}\\n\\n.bet-outcome-badge > *:last-child {\\n margin-right: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".bet-pill {\\n background-color: var(--sdk-surface5);\\n border-radius: 2.5rem;\\n display: table-cell;\\n vertical-align: middle;\\n text-align: center;\\n padding: 0.5rem 1rem;\\n text-transform: capitalize;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/bets/view/components/BetPill/BetPill.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,qCAAqC;EACrC,qBAAqB;EACrB,mBAAmB;EACnB,sBAAsB;EACtB,kBAAkB;EAClB,oBAAoB;EACpB,0BAA0B;AAC5B\",\"sourcesContent\":[\".bet-pill {\\n background-color: var(--sdk-surface5);\\n border-radius: 2.5rem;\\n display: table-cell;\\n vertical-align: middle;\\n text-align: center;\\n padding: 0.5rem 1rem;\\n text-transform: capitalize;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".bet-result {\\n text-transform: capitalize;\\n}\\n\\n.bet-result > * {\\n display: inline-block;\\n vertical-align: middle;\\n}\\n\\n.bet-result span {\\n margin-left: 0.25rem;\\n color: var(--sdk-alertConfirmation);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/bets/view/UserBets/BetResult/BetResult.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,0BAA0B;AAC5B;;AAEA;EACE,qBAAqB;EACrB,sBAAsB;AACxB;;AAEA;EACE,oBAAoB;EACpB,mCAAmC;AACrC\",\"sourcesContent\":[\".bet-result {\\n text-transform: capitalize;\\n}\\n\\n.bet-result > * {\\n display: inline-block;\\n vertical-align: middle;\\n}\\n\\n.bet-result span {\\n margin-left: 0.25rem;\\n color: var(--sdk-alertConfirmation);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".bets-card {\\n background-color: var(--sdk-surface4);\\n padding: 1.5rem;\\n}\\n\\n.bets-card > * {\\n margin-bottom: 1.5rem;\\n}\\n\\n.bets-card > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.bets-card-divider {\\n width: 100%;\\n height: 1px;\\n background-color: var(--sdk-surface6);\\n}\\n\\n.bets-card-footer {\\n padding: 1rem 0;\\n overflow: hidden; /* clearfix */\\n}\\n\\n.bets-card-footer > *:first-child {\\n float: left;\\n}\\n\\n.bets-card-footer > *:last-child {\\n float: right;\\n}\\n\\n.bets-card-footer:after {\\n content: '';\\n display: table;\\n clear: both;\\n}\\n\\n.bets-card-header {\\n text-transform: capitalize;\\n overflow: hidden; /* clearfix */\\n}\\n\\n.bets-card-header > * {\\n float: left;\\n margin-right: 0.5rem;\\n vertical-align: middle;\\n}\\n\\n.bets-card-header > *:last-child {\\n margin-right: 0;\\n}\\n\\n.bets-card-header:after {\\n content: '';\\n display: table;\\n clear: both;\\n}\\n\\n.bets-card-header span {\\n color: var(--sdk-text200);\\n}\\n\\n.bets-card-header > svg {\\n margin-right: 0.5rem;\\n}\\n\\n.bets-card-header .icon-container {\\n border-radius: 50%;\\n height: 48px;\\n width: 48px;\\n}\\n\\n.bets-card-header .icon-container[data-focused='true'] {\\n background-color: var(--sdk-text100);\\n}\\n\\n.bets-card-header .bets-card-status-container {\\n float: right;\\n overflow: hidden; /* clearfix */\\n}\\n\\n.bets-card-header .bets-card-status-container > * {\\n float: left;\\n margin-right: 1rem;\\n vertical-align: middle;\\n}\\n\\n.bets-card-header .bets-card-status-container > *:last-child {\\n margin-right: 0;\\n}\\n\\n.bets-card-header .bets-card-status-container:after {\\n content: '';\\n display: table;\\n clear: both;\\n}\\n\\n.bets-card-header .icon-container[data-focused='true'] path {\\n fill: var(--sdk-text500);\\n}\\n\\n.bets-card-event > * {\\n margin-bottom: 1.5rem; /* inherit from parent gap */\\n}\\n\\n.bets-card-event > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.bets-card-bets > * {\\n margin-bottom: 1rem;\\n}\\n\\n.bets-card-bets > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.bets-card .more-bets {\\n padding: 0 1.5rem;\\n color: var(--sdk-text200);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/bets/view/components/BetsCard/BetsCard.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,qCAAqC;EACrC,eAAe;AACjB;;AAEA;EACE,qBAAqB;AACvB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,WAAW;EACX,WAAW;EACX,qCAAqC;AACvC;;AAEA;EACE,eAAe;EACf,gBAAgB,EAAE,aAAa;AACjC;;AAEA;EACE,WAAW;AACb;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,WAAW;EACX,cAAc;EACd,WAAW;AACb;;AAEA;EACE,0BAA0B;EAC1B,gBAAgB,EAAE,aAAa;AACjC;;AAEA;EACE,WAAW;EACX,oBAAoB;EACpB,sBAAsB;AACxB;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,WAAW;EACX,cAAc;EACd,WAAW;AACb;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,oBAAoB;AACtB;;AAEA;EACE,kBAAkB;EAClB,YAAY;EACZ,WAAW;AACb;;AAEA;EACE,oCAAoC;AACtC;;AAEA;EACE,YAAY;EACZ,gBAAgB,EAAE,aAAa;AACjC;;AAEA;EACE,WAAW;EACX,kBAAkB;EAClB,sBAAsB;AACxB;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,WAAW;EACX,cAAc;EACd,WAAW;AACb;;AAEA;EACE,wBAAwB;AAC1B;;AAEA;EACE,qBAAqB,EAAE,4BAA4B;AACrD;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,iBAAiB;EACjB,yBAAyB;AAC3B\",\"sourcesContent\":[\".bets-card {\\n background-color: var(--sdk-surface4);\\n padding: 1.5rem;\\n}\\n\\n.bets-card > * {\\n margin-bottom: 1.5rem;\\n}\\n\\n.bets-card > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.bets-card-divider {\\n width: 100%;\\n height: 1px;\\n background-color: var(--sdk-surface6);\\n}\\n\\n.bets-card-footer {\\n padding: 1rem 0;\\n overflow: hidden; /* clearfix */\\n}\\n\\n.bets-card-footer > *:first-child {\\n float: left;\\n}\\n\\n.bets-card-footer > *:last-child {\\n float: right;\\n}\\n\\n.bets-card-footer:after {\\n content: '';\\n display: table;\\n clear: both;\\n}\\n\\n.bets-card-header {\\n text-transform: capitalize;\\n overflow: hidden; /* clearfix */\\n}\\n\\n.bets-card-header > * {\\n float: left;\\n margin-right: 0.5rem;\\n vertical-align: middle;\\n}\\n\\n.bets-card-header > *:last-child {\\n margin-right: 0;\\n}\\n\\n.bets-card-header:after {\\n content: '';\\n display: table;\\n clear: both;\\n}\\n\\n.bets-card-header span {\\n color: var(--sdk-text200);\\n}\\n\\n.bets-card-header > svg {\\n margin-right: 0.5rem;\\n}\\n\\n.bets-card-header .icon-container {\\n border-radius: 50%;\\n height: 48px;\\n width: 48px;\\n}\\n\\n.bets-card-header .icon-container[data-focused='true'] {\\n background-color: var(--sdk-text100);\\n}\\n\\n.bets-card-header .bets-card-status-container {\\n float: right;\\n overflow: hidden; /* clearfix */\\n}\\n\\n.bets-card-header .bets-card-status-container > * {\\n float: left;\\n margin-right: 1rem;\\n vertical-align: middle;\\n}\\n\\n.bets-card-header .bets-card-status-container > *:last-child {\\n margin-right: 0;\\n}\\n\\n.bets-card-header .bets-card-status-container:after {\\n content: '';\\n display: table;\\n clear: both;\\n}\\n\\n.bets-card-header .icon-container[data-focused='true'] path {\\n fill: var(--sdk-text500);\\n}\\n\\n.bets-card-event > * {\\n margin-bottom: 1.5rem; /* inherit from parent gap */\\n}\\n\\n.bets-card-event > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.bets-card-bets > * {\\n margin-bottom: 1rem;\\n}\\n\\n.bets-card-bets > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.bets-card .more-bets {\\n padding: 0 1.5rem;\\n color: var(--sdk-text200);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".single-bet {\\n position: relative;\\n overflow: hidden; /* clearfix */\\n}\\n\\n.single-bet > * {\\n float: left;\\n margin-right: 1rem;\\n}\\n\\n.single-bet > *:last-child {\\n margin-right: 0;\\n}\\n\\n.single-bet:after {\\n content: '';\\n display: table;\\n clear: both;\\n}\\n\\n.single-bet img {\\n width: 3rem;\\n height: 3rem;\\n border-radius: 50%;\\n z-index: 1;\\n}\\n\\n.single-bet-main-content {\\n width: calc(100% - 4rem); /* Adjust based on image width + margins */\\n}\\n\\n.single-bet-main-content > * {\\n margin-bottom: 0.375rem;\\n}\\n\\n.single-bet-main-content > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.single-bet-info {\\n overflow: hidden; /* clearfix */\\n}\\n\\n.single-bet-info > * {\\n float: left;\\n margin-right: 0.75rem;\\n}\\n\\n.single-bet-info > *:last-child {\\n margin-right: 0;\\n}\\n\\n.single-bet-info:after {\\n content: '';\\n display: table;\\n clear: both;\\n}\\n\\n.single-bet-info > div > * {\\n margin-bottom: 0.25rem;\\n}\\n\\n.single-bet-info > div > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.single-bet-info-description {\\n color: var(--sdk-text200);\\n}\\n\\n.single-bet-odds {\\n float: right;\\n color: var(--sdk-text200);\\n}\\n\\n.single-bet-accrued > * {\\n margin-bottom: 0.5rem;\\n}\\n\\n.single-bet-accrued > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.single-bet-accrued-goal {\\n overflow: hidden; /* clearfix */\\n}\\n\\n.single-bet-accrued-goal:after {\\n content: '';\\n display: table;\\n clear: both;\\n}\\n\\n.single-bet-accrued .single-bet-accrued-goal > span {\\n color: var(--sdk-text200);\\n}\\n\\n.single-bet-accrued .single-bet-accrued-goal > div {\\n float: right;\\n}\\n\\n.single-bet-accrued progress {\\n width: 100%;\\n height: 0.25rem;\\n border-radius: 5rem;\\n}\\n\\n.single-bet-accrued progress::-webkit-progress-bar {\\n background-color: var(--sdk-surface6);\\n border-radius: 5rem;\\n}\\n\\n.single-bet-accrued progress[data-complete='false']::-webkit-progress-value {\\n background-color: #53baed;\\n border-right: 4px solid var(--sdk-surface4);\\n}\\n\\n.single-bet-accrued progress::-webkit-progress-value {\\n background-color: var(--sdk-alertConfirmation);\\n border-radius: 5rem;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/bets/view/components/Bet/Bet.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,kBAAkB;EAClB,gBAAgB,EAAE,aAAa;AACjC;;AAEA;EACE,WAAW;EACX,kBAAkB;AACpB;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,WAAW;EACX,cAAc;EACd,WAAW;AACb;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,UAAU;AACZ;;AAEA;EACE,wBAAwB,EAAE,0CAA0C;AACtE;;AAEA;EACE,uBAAuB;AACzB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,gBAAgB,EAAE,aAAa;AACjC;;AAEA;EACE,WAAW;EACX,qBAAqB;AACvB;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,WAAW;EACX,cAAc;EACd,WAAW;AACb;;AAEA;EACE,sBAAsB;AACxB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,YAAY;EACZ,yBAAyB;AAC3B;;AAEA;EACE,qBAAqB;AACvB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,gBAAgB,EAAE,aAAa;AACjC;;AAEA;EACE,WAAW;EACX,cAAc;EACd,WAAW;AACb;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,WAAW;EACX,eAAe;EACf,mBAAmB;AACrB;;AAEA;EACE,qCAAqC;EACrC,mBAAmB;AACrB;;AAEA;EACE,yBAAyB;EACzB,2CAA2C;AAC7C;;AAEA;EACE,8CAA8C;EAC9C,mBAAmB;AACrB\",\"sourcesContent\":[\".single-bet {\\n position: relative;\\n overflow: hidden; /* clearfix */\\n}\\n\\n.single-bet > * {\\n float: left;\\n margin-right: 1rem;\\n}\\n\\n.single-bet > *:last-child {\\n margin-right: 0;\\n}\\n\\n.single-bet:after {\\n content: '';\\n display: table;\\n clear: both;\\n}\\n\\n.single-bet img {\\n width: 3rem;\\n height: 3rem;\\n border-radius: 50%;\\n z-index: 1;\\n}\\n\\n.single-bet-main-content {\\n width: calc(100% - 4rem); /* Adjust based on image width + margins */\\n}\\n\\n.single-bet-main-content > * {\\n margin-bottom: 0.375rem;\\n}\\n\\n.single-bet-main-content > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.single-bet-info {\\n overflow: hidden; /* clearfix */\\n}\\n\\n.single-bet-info > * {\\n float: left;\\n margin-right: 0.75rem;\\n}\\n\\n.single-bet-info > *:last-child {\\n margin-right: 0;\\n}\\n\\n.single-bet-info:after {\\n content: '';\\n display: table;\\n clear: both;\\n}\\n\\n.single-bet-info > div > * {\\n margin-bottom: 0.25rem;\\n}\\n\\n.single-bet-info > div > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.single-bet-info-description {\\n color: var(--sdk-text200);\\n}\\n\\n.single-bet-odds {\\n float: right;\\n color: var(--sdk-text200);\\n}\\n\\n.single-bet-accrued > * {\\n margin-bottom: 0.5rem;\\n}\\n\\n.single-bet-accrued > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.single-bet-accrued-goal {\\n overflow: hidden; /* clearfix */\\n}\\n\\n.single-bet-accrued-goal:after {\\n content: '';\\n display: table;\\n clear: both;\\n}\\n\\n.single-bet-accrued .single-bet-accrued-goal > span {\\n color: var(--sdk-text200);\\n}\\n\\n.single-bet-accrued .single-bet-accrued-goal > div {\\n float: right;\\n}\\n\\n.single-bet-accrued progress {\\n width: 100%;\\n height: 0.25rem;\\n border-radius: 5rem;\\n}\\n\\n.single-bet-accrued progress::-webkit-progress-bar {\\n background-color: var(--sdk-surface6);\\n border-radius: 5rem;\\n}\\n\\n.single-bet-accrued progress[data-complete='false']::-webkit-progress-value {\\n background-color: #53baed;\\n border-right: 4px solid var(--sdk-surface4);\\n}\\n\\n.single-bet-accrued progress::-webkit-progress-value {\\n background-color: var(--sdk-alertConfirmation);\\n border-radius: 5rem;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".segment-controller {\\n border-radius: 0.625rem;\\n display: table;\\n width: 100%;\\n table-layout: fixed;\\n border-spacing: 0;\\n}\\n\\n.segment-controller > * {\\n display: table-cell;\\n vertical-align: middle;\\n text-align: center;\\n width: 33.333%;\\n padding: 0 8px;\\n}\\n\\n.segment-controller > *:first-child {\\n padding-left: 0;\\n}\\n\\n.segment-controller > *:last-child {\\n padding-right: 0;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/organisms/SegmentController/SegmentController.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,uBAAuB;EACvB,cAAc;EACd,WAAW;EACX,mBAAmB;EACnB,iBAAiB;AACnB;;AAEA;EACE,mBAAmB;EACnB,sBAAsB;EACtB,kBAAkB;EAClB,cAAc;EACd,cAAc;AAChB;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,gBAAgB;AAClB\",\"sourcesContent\":[\".segment-controller {\\n border-radius: 0.625rem;\\n display: table;\\n width: 100%;\\n table-layout: fixed;\\n border-spacing: 0;\\n}\\n\\n.segment-controller > * {\\n display: table-cell;\\n vertical-align: middle;\\n text-align: center;\\n width: 33.333%;\\n padding: 0 8px;\\n}\\n\\n.segment-controller > *:first-child {\\n padding-left: 0;\\n}\\n\\n.segment-controller > *:last-child {\\n padding-right: 0;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".segment-button {\\n padding: 12px 0;\\n background-color: transparent;\\n color: var(--sdk-text100);\\n transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out;\\n display: block;\\n width: 100%;\\n box-sizing: border-box;\\n}\\n\\n.segment-button[data-active='true'] {\\n background-color: var(--sdk-surface5);\\n color: var(--sdk-text100);\\n}\\n\\n.segment-button:hover,\\n.segment-button[data-focused='true'] {\\n background-color: var(--sdk-accentPrimary);\\n color: var(--sdk-text500);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/molecules/SegmentButton/SegmentButton.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,eAAe;EACf,6BAA6B;EAC7B,yBAAyB;EACzB,qEAAqE;EACrE,cAAc;EACd,WAAW;EACX,sBAAsB;AACxB;;AAEA;EACE,qCAAqC;EACrC,yBAAyB;AAC3B;;AAEA;;EAEE,0CAA0C;EAC1C,yBAAyB;AAC3B\",\"sourcesContent\":[\".segment-button {\\n padding: 12px 0;\\n background-color: transparent;\\n color: var(--sdk-text100);\\n transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out;\\n display: block;\\n width: 100%;\\n box-sizing: border-box;\\n}\\n\\n.segment-button[data-active='true'] {\\n background-color: var(--sdk-surface5);\\n color: var(--sdk-text100);\\n}\\n\\n.segment-button:hover,\\n.segment-button[data-focused='true'] {\\n background-color: var(--sdk-accentPrimary);\\n color: var(--sdk-text500);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".hot-props-header {\\n text-transform: capitalize;\\n}\\n\\n.hot-props-header > * {\\n display: inline-block;\\n vertical-align: middle;\\n margin-right: 0.5rem;\\n}\\n\\n.hot-props-header > *:last-child {\\n margin-right: 0;\\n}\\n\\n.hot-props-title {\\n margin-left: 0.25rem;\\n font-size: 1.1rem;\\n font-weight: 600;\\n}\\n\\n.hot-props-subtitle {\\n margin-left: 0.5rem;\\n color: var(--sdk-text200);\\n font-size: 1rem;\\n font-weight: 400;\\n}\\n\\n.hot-props-expand-icon {\\n float: right;\\n width: 2.25rem;\\n height: 2.25rem;\\n display: table-cell;\\n vertical-align: middle;\\n text-align: center;\\n}\\n\\n.hot-props-list > * {\\n margin-bottom: 1rem;\\n}\\n\\n.hot-props-list > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.hot-props-list .single-bet {\\n background-color: rgba(255, 255, 255, 0.08);\\n padding: 24px;\\n}\\n\\n.hot-props-bet-icon {\\n margin-right: 1rem;\\n display: table-cell;\\n vertical-align: middle;\\n text-align: center;\\n}\\n\\n.hot-props-footer {\\n margin-top: 1rem;\\n color: var(--sdk-text100);\\n font-weight: 600;\\n font-size: 1.1rem;\\n}\\n\\n.hot-props-bet-card .bets-card {\\n background-color: var(--sdk-surface3);\\n}\\n\\n.hot-props-bet-card .bets-card .icon-container {\\n border-radius: 50%;\\n height: 48px;\\n width: 48px;\\n}\\n\\n.hot-props-bet-card .bets-card .icon-container[data-focused='true'] {\\n background-color: var(--sdk-text100);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/bets/view/HotProps/HotPropsView.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,0BAA0B;AAC5B;;AAEA;EACE,qBAAqB;EACrB,sBAAsB;EACtB,oBAAoB;AACtB;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,oBAAoB;EACpB,iBAAiB;EACjB,gBAAgB;AAClB;;AAEA;EACE,mBAAmB;EACnB,yBAAyB;EACzB,eAAe;EACf,gBAAgB;AAClB;;AAEA;EACE,YAAY;EACZ,cAAc;EACd,eAAe;EACf,mBAAmB;EACnB,sBAAsB;EACtB,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;AACrB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,2CAA2C;EAC3C,aAAa;AACf;;AAEA;EACE,kBAAkB;EAClB,mBAAmB;EACnB,sBAAsB;EACtB,kBAAkB;AACpB;;AAEA;EACE,gBAAgB;EAChB,yBAAyB;EACzB,gBAAgB;EAChB,iBAAiB;AACnB;;AAEA;EACE,qCAAqC;AACvC;;AAEA;EACE,kBAAkB;EAClB,YAAY;EACZ,WAAW;AACb;;AAEA;EACE,oCAAoC;AACtC\",\"sourcesContent\":[\".hot-props-header {\\n text-transform: capitalize;\\n}\\n\\n.hot-props-header > * {\\n display: inline-block;\\n vertical-align: middle;\\n margin-right: 0.5rem;\\n}\\n\\n.hot-props-header > *:last-child {\\n margin-right: 0;\\n}\\n\\n.hot-props-title {\\n margin-left: 0.25rem;\\n font-size: 1.1rem;\\n font-weight: 600;\\n}\\n\\n.hot-props-subtitle {\\n margin-left: 0.5rem;\\n color: var(--sdk-text200);\\n font-size: 1rem;\\n font-weight: 400;\\n}\\n\\n.hot-props-expand-icon {\\n float: right;\\n width: 2.25rem;\\n height: 2.25rem;\\n display: table-cell;\\n vertical-align: middle;\\n text-align: center;\\n}\\n\\n.hot-props-list > * {\\n margin-bottom: 1rem;\\n}\\n\\n.hot-props-list > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.hot-props-list .single-bet {\\n background-color: rgba(255, 255, 255, 0.08);\\n padding: 24px;\\n}\\n\\n.hot-props-bet-icon {\\n margin-right: 1rem;\\n display: table-cell;\\n vertical-align: middle;\\n text-align: center;\\n}\\n\\n.hot-props-footer {\\n margin-top: 1rem;\\n color: var(--sdk-text100);\\n font-weight: 600;\\n font-size: 1.1rem;\\n}\\n\\n.hot-props-bet-card .bets-card {\\n background-color: var(--sdk-surface3);\\n}\\n\\n.hot-props-bet-card .bets-card .icon-container {\\n border-radius: 50%;\\n height: 48px;\\n width: 48px;\\n}\\n\\n.hot-props-bet-card .bets-card .icon-container[data-focused='true'] {\\n background-color: var(--sdk-text100);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".gambling-disclaimer {\\n background-color: transparent;\\n padding: 0px 24px;\\n display: table !important;\\n width: 100%;\\n}\\n\\n.gambling-disclaimer svg {\\n display: table-cell !important;\\n vertical-align: top !important;\\n padding-right: 1rem !important;\\n width: 32px;\\n}\\n\\n.gambling-disclaimer .gambling-disclaimer-text {\\n display: table-cell !important;\\n vertical-align: top !important;\\n word-wrap: break-word;\\n}\\n\\n.gambling-disclaimer-text {\\n color: var(--sdk-text100);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/bets/view/components/GamblingDisclaimer/GamblingDisclaimer.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,6BAA6B;EAC7B,iBAAiB;EACjB,yBAAyB;EACzB,WAAW;AACb;;AAEA;EACE,8BAA8B;EAC9B,8BAA8B;EAC9B,8BAA8B;EAC9B,WAAW;AACb;;AAEA;EACE,8BAA8B;EAC9B,8BAA8B;EAC9B,qBAAqB;AACvB;;AAEA;EACE,yBAAyB;AAC3B\",\"sourcesContent\":[\".gambling-disclaimer {\\n background-color: transparent;\\n padding: 0px 24px;\\n display: table !important;\\n width: 100%;\\n}\\n\\n.gambling-disclaimer svg {\\n display: table-cell !important;\\n vertical-align: top !important;\\n padding-right: 1rem !important;\\n width: 32px;\\n}\\n\\n.gambling-disclaimer .gambling-disclaimer-text {\\n display: table-cell !important;\\n vertical-align: top !important;\\n word-wrap: break-word;\\n}\\n\\n.gambling-disclaimer-text {\\n color: var(--sdk-text100);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".location-warning {\\n background-color: transparent;\\n padding: 0px 24px;\\n display: table !important;\\n width: 100%;\\n}\\n\\n.location-warning svg {\\n display: table-cell !important;\\n vertical-align: top !important;\\n padding-right: 1rem !important;\\n width: 32px;\\n}\\n\\n.location-warning .location-warning-text {\\n display: table-cell !important;\\n vertical-align: top !important;\\n word-wrap: break-word;\\n}\\n\\n.location-warning-text {\\n color: var(--sdk-text100);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/bets/view/components/LocationWarning/LocationWarning.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,6BAA6B;EAC7B,iBAAiB;EACjB,yBAAyB;EACzB,WAAW;AACb;;AAEA;EACE,8BAA8B;EAC9B,8BAA8B;EAC9B,8BAA8B;EAC9B,WAAW;AACb;;AAEA;EACE,8BAA8B;EAC9B,8BAA8B;EAC9B,qBAAqB;AACvB;;AAEA;EACE,yBAAyB;AAC3B\",\"sourcesContent\":[\".location-warning {\\n background-color: transparent;\\n padding: 0px 24px;\\n display: table !important;\\n width: 100%;\\n}\\n\\n.location-warning svg {\\n display: table-cell !important;\\n vertical-align: top !important;\\n padding-right: 1rem !important;\\n width: 32px;\\n}\\n\\n.location-warning .location-warning-text {\\n display: table-cell !important;\\n vertical-align: top !important;\\n word-wrap: break-word;\\n}\\n\\n.location-warning-text {\\n color: var(--sdk-text100);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".promo-code-banner {\\n padding: 24px;\\n background-size: cover;\\n background-position: center;\\n background-repeat: no-repeat;\\n border-radius: 10px;\\n text-align: center;\\n}\\n\\n.promo-code-banner > * {\\n margin-bottom: 32px;\\n display: block;\\n margin-left: auto;\\n margin-right: auto;\\n}\\n\\n.promo-code-banner > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.promo-content {\\n width: 100%;\\n text-align: center;\\n}\\n\\n.promo-content > * {\\n margin-bottom: 30px;\\n display: block;\\n margin-left: auto;\\n margin-right: auto;\\n}\\n\\n.promo-content > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.promo-logo-container {\\n width: 100%;\\n max-width: 465px;\\n text-align: center;\\n margin: 0 auto 2rem auto;\\n}\\n\\n.promo-logo {\\n width: 100%;\\n max-width: 417px;\\n height: 92.78px;\\n z-index: 1;\\n}\\n\\n.promo-tagline {\\n width: 100%;\\n height: 36px;\\n text-align: center;\\n color: #ffffff;\\n}\\n\\n.promo-action-area {\\n padding: 0px;\\n width: 100%;\\n height: 420px;\\n z-index: 3;\\n text-align: center;\\n}\\n\\n.promo-action-area > * {\\n margin-bottom: 32px;\\n display: block;\\n margin-left: auto;\\n margin-right: auto;\\n}\\n\\n.promo-action-area > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.qr-code-container {\\n width: 300px;\\n height: 300px;\\n background: white;\\n border-radius: 24px;\\n text-align: center;\\n display: block;\\n margin: 0 auto 2rem auto;\\n position: relative;\\n}\\n\\n.qr-code-container .qr-code {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n}\\n\\n.qr-code {\\n width: calc(100% - 20px);\\n height: calc(100% - 20px);\\n object-fit: contain;\\n border-radius: 20px;\\n}\\n\\n.promo-description {\\n width: 100%;\\n height: 72px;\\n text-align: center;\\n\\n /* Sports System/White */\\n color: #ffffff;\\n}\\n\\n/* Responsive adjustments for smaller screens */\\n@media (max-width: 768px) {\\n .promo-code-banner {\\n width: 100%;\\n max-width: 568px;\\n height: auto;\\n min-height: 500px;\\n padding: 24px;\\n }\\n\\n .promo-content {\\n width: 100%;\\n height: auto;\\n }\\n\\n .promo-logo-container {\\n width: 100%;\\n max-width: 400px;\\n height: auto;\\n padding: 16px;\\n }\\n\\n .promo-logo {\\n width: 100%;\\n max-width: 350px;\\n height: auto;\\n }\\n\\n .promo-tagline {\\n width: 100%;\\n font-size: 24px;\\n line-height: 32px;\\n }\\n\\n .promo-action-area {\\n width: 100%;\\n }\\n\\n .qr-code-container {\\n width: 250px;\\n height: 250px;\\n padding: 40px;\\n }\\n\\n .promo-description {\\n width: 100%;\\n font-size: 24px;\\n line-height: 32px;\\n }\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/modules/bets/view/components/PromoCodeBanner/PromoCodeBanner.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,aAAa;EACb,sBAAsB;EACtB,2BAA2B;EAC3B,4BAA4B;EAC5B,mBAAmB;EACnB,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;EACnB,cAAc;EACd,iBAAiB;EACjB,kBAAkB;AACpB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,WAAW;EACX,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;EACnB,cAAc;EACd,iBAAiB;EACjB,kBAAkB;AACpB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,WAAW;EACX,gBAAgB;EAChB,kBAAkB;EAClB,wBAAwB;AAC1B;;AAEA;EACE,WAAW;EACX,gBAAgB;EAChB,eAAe;EACf,UAAU;AACZ;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,cAAc;AAChB;;AAEA;EACE,YAAY;EACZ,WAAW;EACX,aAAa;EACb,UAAU;EACV,kBAAkB;AACpB;;AAEA;EACE,mBAAmB;EACnB,cAAc;EACd,iBAAiB;EACjB,kBAAkB;AACpB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,YAAY;EACZ,aAAa;EACb,iBAAiB;EACjB,mBAAmB;EACnB,kBAAkB;EAClB,cAAc;EACd,wBAAwB;EACxB,kBAAkB;AACpB;;AAEA;EACE,kBAAkB;EAClB,QAAQ;EACR,SAAS;EACT,gCAAgC;AAClC;;AAEA;EACE,wBAAwB;EACxB,yBAAyB;EACzB,mBAAmB;EACnB,mBAAmB;AACrB;;AAEA;EACE,WAAW;EACX,YAAY;EACZ,kBAAkB;;EAElB,wBAAwB;EACxB,cAAc;AAChB;;AAEA,+CAA+C;AAC/C;EACE;IACE,WAAW;IACX,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB,aAAa;EACf;;EAEA;IACE,WAAW;IACX,YAAY;EACd;;EAEA;IACE,WAAW;IACX,gBAAgB;IAChB,YAAY;IACZ,aAAa;EACf;;EAEA;IACE,WAAW;IACX,gBAAgB;IAChB,YAAY;EACd;;EAEA;IACE,WAAW;IACX,eAAe;IACf,iBAAiB;EACnB;;EAEA;IACE,WAAW;EACb;;EAEA;IACE,YAAY;IACZ,aAAa;IACb,aAAa;EACf;;EAEA;IACE,WAAW;IACX,eAAe;IACf,iBAAiB;EACnB;AACF\",\"sourcesContent\":[\".promo-code-banner {\\n padding: 24px;\\n background-size: cover;\\n background-position: center;\\n background-repeat: no-repeat;\\n border-radius: 10px;\\n text-align: center;\\n}\\n\\n.promo-code-banner > * {\\n margin-bottom: 32px;\\n display: block;\\n margin-left: auto;\\n margin-right: auto;\\n}\\n\\n.promo-code-banner > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.promo-content {\\n width: 100%;\\n text-align: center;\\n}\\n\\n.promo-content > * {\\n margin-bottom: 30px;\\n display: block;\\n margin-left: auto;\\n margin-right: auto;\\n}\\n\\n.promo-content > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.promo-logo-container {\\n width: 100%;\\n max-width: 465px;\\n text-align: center;\\n margin: 0 auto 2rem auto;\\n}\\n\\n.promo-logo {\\n width: 100%;\\n max-width: 417px;\\n height: 92.78px;\\n z-index: 1;\\n}\\n\\n.promo-tagline {\\n width: 100%;\\n height: 36px;\\n text-align: center;\\n color: #ffffff;\\n}\\n\\n.promo-action-area {\\n padding: 0px;\\n width: 100%;\\n height: 420px;\\n z-index: 3;\\n text-align: center;\\n}\\n\\n.promo-action-area > * {\\n margin-bottom: 32px;\\n display: block;\\n margin-left: auto;\\n margin-right: auto;\\n}\\n\\n.promo-action-area > *:last-child {\\n margin-bottom: 0;\\n}\\n\\n.qr-code-container {\\n width: 300px;\\n height: 300px;\\n background: white;\\n border-radius: 24px;\\n text-align: center;\\n display: block;\\n margin: 0 auto 2rem auto;\\n position: relative;\\n}\\n\\n.qr-code-container .qr-code {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n transform: translate(-50%, -50%);\\n}\\n\\n.qr-code {\\n width: calc(100% - 20px);\\n height: calc(100% - 20px);\\n object-fit: contain;\\n border-radius: 20px;\\n}\\n\\n.promo-description {\\n width: 100%;\\n height: 72px;\\n text-align: center;\\n\\n /* Sports System/White */\\n color: #ffffff;\\n}\\n\\n/* Responsive adjustments for smaller screens */\\n@media (max-width: 768px) {\\n .promo-code-banner {\\n width: 100%;\\n max-width: 568px;\\n height: auto;\\n min-height: 500px;\\n padding: 24px;\\n }\\n\\n .promo-content {\\n width: 100%;\\n height: auto;\\n }\\n\\n .promo-logo-container {\\n width: 100%;\\n max-width: 400px;\\n height: auto;\\n padding: 16px;\\n }\\n\\n .promo-logo {\\n width: 100%;\\n max-width: 350px;\\n height: auto;\\n }\\n\\n .promo-tagline {\\n width: 100%;\\n font-size: 24px;\\n line-height: 32px;\\n }\\n\\n .promo-action-area {\\n width: 100%;\\n }\\n\\n .qr-code-container {\\n width: 250px;\\n height: 250px;\\n padding: 40px;\\n }\\n\\n .promo-description {\\n width: 100%;\\n font-size: 24px;\\n line-height: 32px;\\n }\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".panel-navigation {\\n width: 100%;\\n display: table;\\n table-layout: fixed;\\n border-spacing: 12px 0;\\n}\\n\\n.panel-navigation > * {\\n display: table-cell !important;\\n vertical-align: middle;\\n width: 25%;\\n}\\n\\n.panel-navigation .panel-nav-button-container {\\n display: table-cell !important;\\n width: 100%;\\n}\\n\\n.panel-navigation .panel-nav-button-container button {\\n width: 100% !important;\\n min-width: auto !important;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/organisms/PanelNavigation/PanelNavigation.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,WAAW;EACX,cAAc;EACd,mBAAmB;EACnB,sBAAsB;AACxB;;AAEA;EACE,8BAA8B;EAC9B,sBAAsB;EACtB,UAAU;AACZ;;AAEA;EACE,8BAA8B;EAC9B,WAAW;AACb;;AAEA;EACE,sBAAsB;EACtB,0BAA0B;AAC5B\",\"sourcesContent\":[\".panel-navigation {\\n width: 100%;\\n display: table;\\n table-layout: fixed;\\n border-spacing: 12px 0;\\n}\\n\\n.panel-navigation > * {\\n display: table-cell !important;\\n vertical-align: middle;\\n width: 25%;\\n}\\n\\n.panel-navigation .panel-nav-button-container {\\n display: table-cell !important;\\n width: 100%;\\n}\\n\\n.panel-navigation .panel-nav-button-container button {\\n width: 100% !important;\\n min-width: auto !important;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".panel-nav-button-container {\\n display: block;\\n text-align: center;\\n color: var(--sdk-text300);\\n}\\n\\n.panel-nav-button-container > * {\\n margin-bottom: 0;\\n}\\n\\n.panel-nav-button-container path {\\n fill: var(--sdk-highlightSecondary);\\n}\\n\\n.panel-nav-button-container button {\\n padding: 8px 0;\\n background-color: var(--sdk-surface3);\\n min-width: 6.5rem;\\n\\n transition: background-color 0.2s ease-in-out, color 0.3s ease-in-out;\\n margin-bottom: 0.625rem;\\n}\\n\\n.panel-nav-button-container[data-focused='true'],\\n.panel-nav-button-container:hover,\\n.panel-nav-button-active {\\n color: var(--sdk-text100);\\n}\\n\\n.panel-nav-button-container[data-focused='true'] path,\\n.panel-nav-button-container:hover path {\\n fill: var(--sdk-highlightTertiary);\\n}\\n\\n.panel-nav-button-container[data-focused='true'] button,\\n.panel-nav-button-container:hover button {\\n background-color: var(--sdk-accentPrimary);\\n}\\n\\n.panel-nav-button-active button {\\n background-color: var(--sdk-surface5);\\n}\\n\\n.panel-nav-button-active path {\\n fill: var(--sdk-highlightPrimary);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/molecules/PanelNavButton/PanelNavButton.styles.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,cAAc;EACd,kBAAkB;EAClB,yBAAyB;AAC3B;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,mCAAmC;AACrC;;AAEA;EACE,cAAc;EACd,qCAAqC;EACrC,iBAAiB;;EAEjB,qEAAqE;EACrE,uBAAuB;AACzB;;AAEA;;;EAGE,yBAAyB;AAC3B;;AAEA;;EAEE,kCAAkC;AACpC;;AAEA;;EAEE,0CAA0C;AAC5C;;AAEA;EACE,qCAAqC;AACvC;;AAEA;EACE,iCAAiC;AACnC\",\"sourcesContent\":[\".panel-nav-button-container {\\n display: block;\\n text-align: center;\\n color: var(--sdk-text300);\\n}\\n\\n.panel-nav-button-container > * {\\n margin-bottom: 0;\\n}\\n\\n.panel-nav-button-container path {\\n fill: var(--sdk-highlightSecondary);\\n}\\n\\n.panel-nav-button-container button {\\n padding: 8px 0;\\n background-color: var(--sdk-surface3);\\n min-width: 6.5rem;\\n\\n transition: background-color 0.2s ease-in-out, color 0.3s ease-in-out;\\n margin-bottom: 0.625rem;\\n}\\n\\n.panel-nav-button-container[data-focused='true'],\\n.panel-nav-button-container:hover,\\n.panel-nav-button-active {\\n color: var(--sdk-text100);\\n}\\n\\n.panel-nav-button-container[data-focused='true'] path,\\n.panel-nav-button-container:hover path {\\n fill: var(--sdk-highlightTertiary);\\n}\\n\\n.panel-nav-button-container[data-focused='true'] button,\\n.panel-nav-button-container:hover button {\\n background-color: var(--sdk-accentPrimary);\\n}\\n\\n.panel-nav-button-active button {\\n background-color: var(--sdk-surface5);\\n}\\n\\n.panel-nav-button-active path {\\n fill: var(--sdk-highlightPrimary);\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","/* eslint-disable react/no-find-dom-node */\nimport { findDOMNode } from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { Component, createElement } from 'react';\nimport SpatialNavigation, { ROOT_FOCUS_KEY } from './spatialNavigation';\nimport { Details, Direction, Layout } from './utils';\n\ninterface WithFocusableConfig {\n forgetLastFocusedChild?: boolean;\n trackChildren?: boolean;\n autoRestoreFocus?: boolean;\n blockNavigationOut?: boolean;\n}\n\nexport interface WithFocusableProps {\n focused?: boolean;\n focusKey?: string;\n parentFocusKey?: string;\n preferredChildFocusKey?: string;\n forgetLastFocusedChild?: boolean;\n trackChildren?: boolean;\n autoRestoreFocus?: boolean;\n blockNavigationOut?: boolean;\n hasFocusedChild?: boolean;\n focusable?: boolean;\n onEnterPress?: (props: any, details: Details) => void;\n onEnterRelease?: (props: any) => void;\n onBackPress?: (props: any, details: Details) => void;\n onArrowPress?: (\n direction: Direction,\n props: any,\n details: Details\n ) => boolean | void;\n onBecameFocused?: (layout: Layout, props: any, details: Details) => void;\n onBecameBlurred?: (layout: Layout, props: any, details: Details) => void;\n}\n\nexport interface WithFocusableState {\n realFocusKey: string;\n focused: boolean;\n hasFocusedChild: boolean;\n parentFocusKey: string;\n}\n\n// Helper functions to replace lodash and recompose\nconst uniqueId = (prefix: string): string =>\n `${prefix}${Math.random().toString(36).substr(2, 9)}`;\n\nconst noop = () => {};\n\nconst omit = <T extends Record<string, any>>(\n obj: T,\n keys: string[]\n): Partial<T> => {\n const result = { ...obj };\n keys.forEach((key) => delete result[key]);\n return result;\n};\n\nconst withFocusable = <P extends object>({\n forgetLastFocusedChild: configForgetLastFocusedChild = false,\n trackChildren: configTrackChildren = false,\n autoRestoreFocus: configAutoRestoreFocus,\n blockNavigationOut: configBlockNavigationOut = false,\n}: WithFocusableConfig = {}) => {\n return (WrappedComponent: React.ComponentType<P & WithFocusableProps>) => {\n return class WithFocusable extends Component<\n P & WithFocusableProps,\n WithFocusableState\n > {\n static contextTypes = {\n parentFocusKey: PropTypes.string,\n };\n\n static childContextTypes = {\n parentFocusKey: PropTypes.string,\n };\n\n state: WithFocusableState = {\n realFocusKey: this.props.focusKey || uniqueId('sn:focusable-item-'),\n focused: false,\n hasFocusedChild: false,\n parentFocusKey: this.props.parentFocusKey || ROOT_FOCUS_KEY,\n };\n\n getChildContext() {\n return {\n parentFocusKey: this.state.realFocusKey,\n };\n }\n\n setFocus = (focusKey: string) => {\n if (!SpatialNavigation.isNativeMode()) {\n SpatialNavigation.setFocus(focusKey);\n }\n };\n\n navigateByDirection = SpatialNavigation.navigateByDirection;\n\n stealFocus = () => {\n SpatialNavigation.setFocus(this.state.realFocusKey, {\n focusKey: this.state.realFocusKey,\n });\n };\n\n onUpdateFocus = (focused: boolean) => {\n this.setState({ focused });\n };\n\n onUpdateHasFocusedChild = (hasFocusedChild: boolean) => {\n this.setState({ hasFocusedChild });\n };\n\n onEnterPressHandler = (details: Details) => {\n const { onEnterPress = noop, ...rest } = this.props;\n onEnterPress(rest, details);\n };\n\n onEnterReleaseHandler = () => {\n const { onEnterRelease = noop, ...rest } = this.props;\n onEnterRelease(rest);\n };\n\n onBackPressHandler = (details: Details) => {\n const { onBackPress = noop, ...rest } = this.props;\n onBackPress(rest, details);\n };\n\n onArrowPressHandler = (direction: Direction, details: Details) => {\n const { onArrowPress = noop, ...rest } = this.props;\n return onArrowPress(direction, rest, details);\n };\n\n onBecameFocusedHandler = (layout: Layout, details: Details) => {\n const { onBecameFocused = noop, ...rest } = this.props;\n onBecameFocused(layout, rest, details);\n };\n\n onBecameBlurredHandler = (layout: Layout, details: Details) => {\n const { onBecameBlurred = noop, ...rest } = this.props;\n onBecameBlurred(layout, rest, details);\n };\n\n componentDidMount() {\n const { realFocusKey: focusKey, parentFocusKey } = this.state;\n\n const {\n preferredChildFocusKey,\n forgetLastFocusedChild = false,\n trackChildren,\n focusable = true,\n autoRestoreFocus = true,\n blockNavigationOut = false,\n } = this.props;\n\n let node: HTMLElement;\n if (SpatialNavigation.isNativeMode()) {\n node = document.createElement('div');\n } else {\n const domNode = findDOMNode(this) as Element;\n if (!domNode) {\n throw new Error('Could not find DOM node');\n }\n node = domNode as HTMLElement;\n }\n\n SpatialNavigation.addFocusable({\n focusKey,\n node,\n parentFocusKey,\n preferredChildFocusKey,\n onEnterPressHandler: this.onEnterPressHandler,\n onEnterReleaseHandler: this.onEnterReleaseHandler,\n onBackPressHandler: this.onBackPressHandler,\n onArrowPressHandler: this.onArrowPressHandler,\n onBecameFocusedHandler: this.onBecameFocusedHandler,\n onBecameBlurredHandler: this.onBecameBlurredHandler,\n onUpdateFocus: this.onUpdateFocus,\n onUpdateHasFocusedChild: this.onUpdateHasFocusedChild,\n forgetLastFocusedChild:\n configForgetLastFocusedChild || forgetLastFocusedChild,\n trackChildren: configTrackChildren || trackChildren,\n blockNavigationOut: configBlockNavigationOut || blockNavigationOut,\n autoRestoreFocus:\n configAutoRestoreFocus !== undefined\n ? configAutoRestoreFocus\n : autoRestoreFocus,\n focusable,\n });\n }\n\n componentDidUpdate() {\n const { realFocusKey: focusKey } = this.state;\n\n const {\n preferredChildFocusKey,\n focusable = true,\n blockNavigationOut = false,\n } = this.props;\n\n let node: HTMLElement;\n if (SpatialNavigation.isNativeMode()) {\n node = document.createElement('div');\n } else {\n const domNode = findDOMNode(this) as Element;\n if (!domNode) {\n throw new Error('Could not find DOM node');\n }\n node = domNode as HTMLElement;\n }\n\n SpatialNavigation.updateFocusable(focusKey, {\n node,\n preferredChildFocusKey,\n focusable,\n blockNavigationOut: configBlockNavigationOut || blockNavigationOut,\n });\n }\n\n componentWillUnmount() {\n const { realFocusKey: focusKey } = this.state;\n SpatialNavigation.removeFocusable({ focusKey });\n }\n\n render() {\n const props = {\n ...this.props,\n ...this.state,\n setFocus: this.setFocus,\n navigateByDirection: this.navigateByDirection,\n stealFocus: this.stealFocus,\n onUpdateFocus: this.onUpdateFocus,\n onUpdateHasFocusedChild: this.onUpdateHasFocusedChild,\n };\n\n const filteredProps = omit(props, [\n 'onBecameFocusedHandler',\n 'onBecameBlurredHandler',\n 'onEnterPressHandler',\n 'onEnterReleaseHandler',\n 'onArrowPressHandler',\n 'onUpdateFocus',\n 'onUpdateHasFocusedChild',\n 'forgetLastFocusedChild',\n 'trackChildren',\n 'autoRestoreFocus',\n ]);\n\n return createElement(\n WrappedComponent,\n filteredProps as P & WithFocusableProps\n );\n }\n };\n };\n};\n\nexport default withFocusable;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"rive\"] = factory();\n\telse\n\t\troot[\"rive\"] = factory();\n})(this, () => {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n\nvar Rive = (() => {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n \n return (\nfunction(moduleArg = {}) {\n\nvar m = moduleArg, aa, ba;\nm.ready = new Promise((a, b) => {\n aa = a;\n ba = b;\n});\nfunction ca() {\n function a(g) {\n const n = d;\n c = b = 0;\n d = new Map();\n n.forEach(p => {\n try {\n p(g);\n } catch (l) {\n console.error(l);\n }\n });\n this.pb();\n e && e.Tb();\n }\n let b = 0, c = 0, d = new Map(), e = null, f = null;\n this.requestAnimationFrame = function(g) {\n b || (b = requestAnimationFrame(a.bind(this)));\n const n = ++c;\n d.set(n, g);\n return n;\n };\n this.cancelAnimationFrame = function(g) {\n d.delete(g);\n b && 0 == d.size && (cancelAnimationFrame(b), b = 0);\n };\n this.Rb = function(g) {\n f && (document.body.remove(f), f = null);\n g || (f = document.createElement(\"div\"), f.style.backgroundColor = \"black\", f.style.position = \"fixed\", f.style.right = 0, f.style.top = 0, f.style.color = \"white\", f.style.padding = \"4px\", f.innerHTML = \"RIVE FPS\", g = function(n) {\n f.innerHTML = \"RIVE FPS \" + n.toFixed(1);\n }, document.body.appendChild(f));\n e = new function() {\n let n = 0, p = 0;\n this.Tb = function() {\n var l = performance.now();\n p ? (++n, l -= p, 1000 < l && (g(1000 * n / l), n = p = 0)) : (p = l, n = 0);\n };\n }();\n };\n this.Ob = function() {\n f && (document.body.remove(f), f = null);\n e = null;\n };\n this.pb = function() {\n };\n}\nfunction fa(a) {\n console.assert(!0);\n const b = new Map();\n let c = -Infinity;\n this.push = function(d) {\n d = d + ((1 << a) - 1) >> a;\n b.has(d) && clearTimeout(b.get(d));\n b.set(d, setTimeout(function() {\n b.delete(d);\n 0 == b.length ? c = -Infinity : d == c && (c = Math.max(...b.keys()), console.assert(c < d));\n }, 1000));\n c = Math.max(d, c);\n return c << a;\n };\n}\nconst ha = m.onRuntimeInitialized;\nm.onRuntimeInitialized = function() {\n ha && ha();\n let a = m.decodeAudio;\n m.decodeAudio = function(e, f) {\n e = a(e);\n f(e);\n };\n let b = m.decodeFont;\n m.decodeFont = function(e, f) {\n e = b(e);\n f(e);\n };\n const c = m.FileAssetLoader;\n m.ptrToAsset = e => {\n let f = m.ptrToFileAsset(e);\n return f.isImage ? m.ptrToImageAsset(e) : f.isFont ? m.ptrToFontAsset(e) : f.isAudio ? m.ptrToAudioAsset(e) : f;\n };\n m.CustomFileAssetLoader = c.extend(\"CustomFileAssetLoader\", {__construct:function({loadContents:e}) {\n this.__parent.__construct.call(this);\n this.Gb = e;\n }, loadContents:function(e, f) {\n e = m.ptrToAsset(e);\n return this.Gb(e, f);\n },});\n m.CDNFileAssetLoader = c.extend(\"CDNFileAssetLoader\", {__construct:function() {\n this.__parent.__construct.call(this);\n }, loadContents:function(e) {\n let f = m.ptrToAsset(e);\n e = f.cdnUuid;\n if (\"\" === e) {\n return !1;\n }\n (function(g, n) {\n var p = new XMLHttpRequest();\n p.responseType = \"arraybuffer\";\n p.onreadystatechange = function() {\n 4 == p.readyState && 200 == p.status && n(p);\n };\n p.open(\"GET\", g, !0);\n p.send(null);\n })(f.cdnBaseUrl + \"/\" + e, g => {\n f.decode(new Uint8Array(g.response));\n });\n return !0;\n },});\n m.FallbackFileAssetLoader = c.extend(\"FallbackFileAssetLoader\", {__construct:function() {\n this.__parent.__construct.call(this);\n this.lb = [];\n }, addLoader:function(e) {\n this.lb.push(e);\n }, loadContents:function(e, f) {\n for (let g of this.lb) {\n if (g.loadContents(e, f)) {\n return !0;\n }\n }\n return !1;\n },});\n let d = m.computeAlignment;\n m.computeAlignment = function(e, f, g, n, p = 1.0) {\n return d.call(this, e, f, g, n, p);\n };\n};\nconst ia = \"createConicGradient createImageData createLinearGradient createPattern createRadialGradient getContextAttributes getImageData getLineDash getTransform isContextLost isPointInPath isPointInStroke measureText\".split(\" \"), ja = new function() {\n function a() {\n if (!b) {\n var k = document.createElement(\"canvas\"), t = {alpha:1, depth:0, stencil:0, antialias:0, premultipliedAlpha:1, preserveDrawingBuffer:0, powerPreference:\"high-performance\", failIfMajorPerformanceCaveat:0, enableExtensionsByDefault:1, explicitSwapControl:1, renderViaOffscreenBackBuffer:1,};\n let r;\n if (/iPhone|iPad|iPod/i.test(navigator.userAgent)) {\n if (r = k.getContext(\"webgl\", t), c = 1, !r) {\n return console.log(\"No WebGL support. Image mesh will not be drawn.\"), !1;\n }\n } else {\n if (r = k.getContext(\"webgl2\", t)) {\n c = 2;\n } else {\n if (r = k.getContext(\"webgl\", t)) {\n c = 1;\n } else {\n return console.log(\"No WebGL support. Image mesh will not be drawn.\"), !1;\n }\n }\n }\n r = new Proxy(r, {get(D, w) {\n if (D.isContextLost()) {\n if (p || (console.error(\"Cannot render the mesh because the GL Context was lost. Tried to invoke \", w), p = !0), \"function\" === typeof D[w]) {\n return function() {\n };\n }\n } else {\n return \"function\" === typeof D[w] ? function(...M) {\n return D[w].apply(D, M);\n } : D[w];\n }\n }, set(D, w, M) {\n if (D.isContextLost()) {\n p || (console.error(\"Cannot render the mesh because the GL Context was lost. Tried to set property \" + w), p = !0);\n } else {\n return D[w] = M, !0;\n }\n },});\n d = Math.min(r.getParameter(r.MAX_RENDERBUFFER_SIZE), r.getParameter(r.MAX_TEXTURE_SIZE));\n function A(D, w, M) {\n w = r.createShader(w);\n r.shaderSource(w, M);\n r.compileShader(w);\n M = r.getShaderInfoLog(w);\n if (0 < (M || \"\").length) {\n throw M;\n }\n r.attachShader(D, w);\n }\n k = r.createProgram();\n A(k, r.VERTEX_SHADER, \"attribute vec2 vertex;\\n attribute vec2 uv;\\n uniform vec4 mat;\\n uniform vec2 translate;\\n varying vec2 st;\\n void main() {\\n st = uv;\\n gl_Position = vec4(mat2(mat) * vertex + translate, 0, 1);\\n }\");\n A(k, r.FRAGMENT_SHADER, \"precision highp float;\\n uniform sampler2D image;\\n varying vec2 st;\\n void main() {\\n gl_FragColor = texture2D(image, st);\\n }\");\n r.bindAttribLocation(k, 0, \"vertex\");\n r.bindAttribLocation(k, 1, \"uv\");\n r.linkProgram(k);\n t = r.getProgramInfoLog(k);\n if (0 < (t || \"\").trim().length) {\n throw t;\n }\n e = r.getUniformLocation(k, \"mat\");\n f = r.getUniformLocation(k, \"translate\");\n r.useProgram(k);\n r.bindBuffer(r.ARRAY_BUFFER, r.createBuffer());\n r.enableVertexAttribArray(0);\n r.enableVertexAttribArray(1);\n r.bindBuffer(r.ELEMENT_ARRAY_BUFFER, r.createBuffer());\n r.uniform1i(r.getUniformLocation(k, \"image\"), 0);\n r.pixelStorei(r.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !0);\n b = r;\n }\n return !0;\n }\n let b = null, c = 0, d = 0, e = null, f = null, g = 0, n = 0, p = !1;\n a();\n this.hc = function() {\n a();\n return d;\n };\n this.Mb = function(k) {\n b.deleteTexture && b.deleteTexture(k);\n };\n this.Lb = function(k) {\n if (!a()) {\n return null;\n }\n const t = b.createTexture();\n if (!t) {\n return null;\n }\n b.bindTexture(b.TEXTURE_2D, t);\n b.texImage2D(b.TEXTURE_2D, 0, b.RGBA, b.RGBA, b.UNSIGNED_BYTE, k);\n b.texParameteri(b.TEXTURE_2D, b.TEXTURE_WRAP_S, b.CLAMP_TO_EDGE);\n b.texParameteri(b.TEXTURE_2D, b.TEXTURE_WRAP_T, b.CLAMP_TO_EDGE);\n b.texParameteri(b.TEXTURE_2D, b.TEXTURE_MAG_FILTER, b.LINEAR);\n 2 == c ? (b.texParameteri(b.TEXTURE_2D, b.TEXTURE_MIN_FILTER, b.LINEAR_MIPMAP_LINEAR), b.generateMipmap(b.TEXTURE_2D)) : b.texParameteri(b.TEXTURE_2D, b.TEXTURE_MIN_FILTER, b.LINEAR);\n return t;\n };\n const l = new fa(8), u = new fa(8), v = new fa(10), y = new fa(10);\n this.Qb = function(k, t, r, A, D) {\n if (a()) {\n var w = l.push(k), M = u.push(t);\n if (b.canvas) {\n if (b.canvas.width != w || b.canvas.height != M) {\n b.canvas.width = w, b.canvas.height = M;\n }\n b.viewport(0, M - t, k, t);\n b.disable(b.SCISSOR_TEST);\n b.clearColor(0, 0, 0, 0);\n b.clear(b.COLOR_BUFFER_BIT);\n b.enable(b.SCISSOR_TEST);\n r.sort((H, da) => da.xb - H.xb);\n w = v.push(A);\n g != w && (b.bufferData(b.ARRAY_BUFFER, 8 * w, b.DYNAMIC_DRAW), g = w);\n w = 0;\n for (var T of r) {\n b.bufferSubData(b.ARRAY_BUFFER, w, T.Ua), w += 4 * T.Ua.length;\n }\n console.assert(w == 4 * A);\n for (var ea of r) {\n b.bufferSubData(b.ARRAY_BUFFER, w, ea.Db), w += 4 * ea.Db.length;\n }\n console.assert(w == 8 * A);\n w = y.push(D);\n n != w && (b.bufferData(b.ELEMENT_ARRAY_BUFFER, 2 * w, b.DYNAMIC_DRAW), n = w);\n T = 0;\n for (var ra of r) {\n b.bufferSubData(b.ELEMENT_ARRAY_BUFFER, T, ra.indices), T += 2 * ra.indices.length;\n }\n console.assert(T == 2 * D);\n ra = 0;\n ea = !0;\n w = T = 0;\n for (const H of r) {\n H.image.Ka != ra && (b.bindTexture(b.TEXTURE_2D, H.image.Ja || null), ra = H.image.Ka);\n H.mc ? (b.scissor(H.Za, M - H.$a - H.kb, H.Ac, H.kb), ea = !0) : ea && (b.scissor(0, M - t, k, t), ea = !1);\n r = 2 / k;\n const da = -2 / t;\n b.uniform4f(e, H.ha[0] * r * H.Ba, H.ha[1] * da * H.Ca, H.ha[2] * r * H.Ba, H.ha[3] * da * H.Ca);\n b.uniform2f(f, H.ha[4] * r * H.Ba + r * (H.Za - H.ic * H.Ba) - 1, H.ha[5] * da * H.Ca + da * (H.$a - H.jc * H.Ca) + 1);\n b.vertexAttribPointer(0, 2, b.FLOAT, !1, 0, w);\n b.vertexAttribPointer(1, 2, b.FLOAT, !1, 0, w + 4 * A);\n b.drawElements(b.TRIANGLES, H.indices.length, b.UNSIGNED_SHORT, T);\n w += 4 * H.Ua.length;\n T += 2 * H.indices.length;\n }\n console.assert(w == 4 * A);\n console.assert(T == 2 * D);\n }\n }\n };\n this.canvas = function() {\n return a() && b.canvas;\n };\n}(), ka = m.onRuntimeInitialized;\nm.onRuntimeInitialized = function() {\n function a(q) {\n switch(q) {\n case l.srcOver:\n return \"source-over\";\n case l.screen:\n return \"screen\";\n case l.overlay:\n return \"overlay\";\n case l.darken:\n return \"darken\";\n case l.lighten:\n return \"lighten\";\n case l.colorDodge:\n return \"color-dodge\";\n case l.colorBurn:\n return \"color-burn\";\n case l.hardLight:\n return \"hard-light\";\n case l.softLight:\n return \"soft-light\";\n case l.difference:\n return \"difference\";\n case l.exclusion:\n return \"exclusion\";\n case l.multiply:\n return \"multiply\";\n case l.hue:\n return \"hue\";\n case l.saturation:\n return \"saturation\";\n case l.color:\n return \"color\";\n case l.luminosity:\n return \"luminosity\";\n }\n }\n function b(q) {\n return \"rgba(\" + ((16711680 & q) >>> 16) + \",\" + ((65280 & q) >>> 8) + \",\" + ((255 & q) >>> 0) + \",\" + ((4278190080 & q) >>> 24) / 255 + \")\";\n }\n function c() {\n 0 < M.length && (ja.Qb(w.drawWidth(), w.drawHeight(), M, T, ea), M = [], ea = T = 0, w.reset(512, 512));\n for (const q of D) {\n for (const x of q.H) {\n x();\n }\n q.H = [];\n }\n D.clear();\n }\n ka && ka();\n var d = m.RenderPaintStyle;\n const e = m.RenderPath, f = m.RenderPaint, g = m.Renderer, n = m.StrokeCap, p = m.StrokeJoin, l = m.BlendMode, u = d.fill, v = d.stroke, y = m.FillRule.evenOdd;\n let k = 1;\n var t = m.RenderImage.extend(\"CanvasRenderImage\", {__construct:function({la:q, xa:x} = {}) {\n this.__parent.__construct.call(this);\n this.Ka = k;\n k = k + 1 & 2147483647 || 1;\n this.la = q;\n this.xa = x;\n }, __destruct:function() {\n this.Ja && (ja.Mb(this.Ja), URL.revokeObjectURL(this.Xa));\n this.__parent.__destruct.call(this);\n }, decode:function(q) {\n var x = this;\n x.xa && x.xa(x);\n var F = new Image();\n x.Xa = URL.createObjectURL(new Blob([q], {type:\"image/png\",}));\n F.onload = function() {\n x.Fb = F;\n x.Ja = ja.Lb(F);\n x.size(F.width, F.height);\n x.la && x.la(x);\n };\n F.src = x.Xa;\n },}), r = e.extend(\"CanvasRenderPath\", {__construct:function() {\n this.__parent.__construct.call(this);\n this.T = new Path2D();\n }, rewind:function() {\n this.T = new Path2D();\n }, addPath:function(q, x, F, I, B, G, J) {\n var K = this.T, Z = K.addPath;\n q = q.T;\n const Q = new DOMMatrix();\n Q.a = x;\n Q.b = F;\n Q.c = I;\n Q.d = B;\n Q.e = G;\n Q.f = J;\n Z.call(K, q, Q);\n }, fillRule:function(q) {\n this.Wa = q;\n }, moveTo:function(q, x) {\n this.T.moveTo(q, x);\n }, lineTo:function(q, x) {\n this.T.lineTo(q, x);\n }, cubicTo:function(q, x, F, I, B, G) {\n this.T.bezierCurveTo(q, x, F, I, B, G);\n }, close:function() {\n this.T.closePath();\n },}), A = f.extend(\"CanvasRenderPaint\", {color:function(q) {\n this.Ya = b(q);\n }, thickness:function(q) {\n this.Ib = q;\n }, join:function(q) {\n switch(q) {\n case p.miter:\n this.Ia = \"miter\";\n break;\n case p.round:\n this.Ia = \"round\";\n break;\n case p.bevel:\n this.Ia = \"bevel\";\n }\n }, cap:function(q) {\n switch(q) {\n case n.butt:\n this.Ha = \"butt\";\n break;\n case n.round:\n this.Ha = \"round\";\n break;\n case n.square:\n this.Ha = \"square\";\n }\n }, style:function(q) {\n this.Hb = q;\n }, blendMode:function(q) {\n this.Eb = a(q);\n }, clearGradient:function() {\n this.ja = null;\n }, linearGradient:function(q, x, F, I) {\n this.ja = {zb:q, Ab:x, cb:F, eb:I, Ra:[],};\n }, radialGradient:function(q, x, F, I) {\n this.ja = {zb:q, Ab:x, cb:F, eb:I, Ra:[], ec:!0,};\n }, addStop:function(q, x) {\n this.ja.Ra.push({color:q, stop:x,});\n }, completeGradient:function() {\n }, draw:function(q, x, F) {\n let I = this.Hb;\n var B = this.Ya, G = this.ja;\n q.globalCompositeOperation = this.Eb;\n if (null != G) {\n B = G.zb;\n var J = G.Ab;\n const Z = G.cb;\n var K = G.eb;\n const Q = G.Ra;\n G.ec ? (G = Z - B, K -= J, B = q.createRadialGradient(B, J, 0, B, J, Math.sqrt(G * G + K * K))) : B = q.createLinearGradient(B, J, Z, K);\n for (let X = 0, R = Q.length; X < R; X++) {\n J = Q[X], B.addColorStop(J.stop, b(J.color));\n }\n this.Ya = B;\n this.ja = null;\n }\n switch(I) {\n case v:\n q.strokeStyle = B;\n q.lineWidth = this.Ib;\n q.lineCap = this.Ha;\n q.lineJoin = this.Ia;\n q.stroke(x);\n break;\n case u:\n q.fillStyle = B, q.fill(x, F);\n }\n },});\n const D = new Set();\n let w = null, M = [], T = 0, ea = 0;\n var ra = m.CanvasRenderer = g.extend(\"Renderer\", {__construct:function(q) {\n this.__parent.__construct.call(this);\n this.S = [1, 0, 0, 1, 0, 0];\n this.C = q.getContext(\"2d\");\n this.Va = q;\n this.H = [];\n }, save:function() {\n this.S.push(...this.S.slice(this.S.length - 6));\n this.H.push(this.C.save.bind(this.C));\n }, restore:function() {\n const q = this.S.length - 6;\n if (6 > q) {\n throw \"restore() called without matching save().\";\n }\n this.S.splice(q);\n this.H.push(this.C.restore.bind(this.C));\n }, transform:function(q, x, F, I, B, G) {\n const J = this.S, K = J.length - 6;\n J.splice(K, 6, J[K] * q + J[K + 2] * x, J[K + 1] * q + J[K + 3] * x, J[K] * F + J[K + 2] * I, J[K + 1] * F + J[K + 3] * I, J[K] * B + J[K + 2] * G + J[K + 4], J[K + 1] * B + J[K + 3] * G + J[K + 5]);\n this.H.push(this.C.transform.bind(this.C, q, x, F, I, B, G));\n }, rotate:function(q) {\n const x = Math.sin(q);\n q = Math.cos(q);\n this.transform(q, x, -x, q, 0, 0);\n }, _drawPath:function(q, x) {\n this.H.push(x.draw.bind(x, this.C, q.T, q.Wa === y ? \"evenodd\" : \"nonzero\"));\n }, _drawRiveImage:function(q, x, F, I) {\n var B = q.Fb;\n if (B) {\n var G = this.C, J = a(F);\n this.H.push(function() {\n G.globalCompositeOperation = J;\n G.globalAlpha = I;\n G.drawImage(B, 0, 0);\n G.globalAlpha = 1;\n });\n }\n }, _getMatrix:function(q) {\n const x = this.S, F = x.length - 6;\n for (let I = 0; 6 > I; ++I) {\n q[I] = x[F + I];\n }\n }, _drawImageMesh:function(q, x, F, I, B, G, J, K, Z, Q, X) {\n x = this.C.canvas.width;\n var R = this.C.canvas.height;\n const Yb = Q - K, Zb = X - Z;\n K = Math.max(K, 0);\n Z = Math.max(Z, 0);\n Q = Math.min(Q, x);\n X = Math.min(X, R);\n const Ga = Q - K, Ha = X - Z;\n console.assert(Ga <= Math.min(Yb, x));\n console.assert(Ha <= Math.min(Zb, R));\n if (!(0 >= Ga || 0 >= Ha)) {\n Q = Ga < Yb || Ha < Zb;\n x = X = 1;\n var sa = Math.ceil(Ga * X), ta = Math.ceil(Ha * x);\n R = ja.hc();\n sa > R && (X *= R / sa, sa = R);\n ta > R && (x *= R / ta, ta = R);\n w || (w = new m.DynamicRectanizer(R), w.reset(512, 512));\n R = w.addRect(sa, ta);\n 0 > R && (c(), D.add(this), R = w.addRect(sa, ta), console.assert(0 <= R));\n var $b = R & 65535, ac = R >> 16;\n M.push({ha:this.S.slice(this.S.length - 6), image:q, Za:$b, $a:ac, ic:K, jc:Z, Ac:sa, kb:ta, Ba:X, Ca:x, Ua:new Float32Array(B), Db:new Float32Array(G), indices:new Uint16Array(J), mc:Q, xb:q.Ka << 1 | (Q ? 1 : 0),});\n T += B.length;\n ea += J.length;\n var za = this.C, qd = a(F);\n this.H.push(function() {\n za.save();\n za.resetTransform();\n za.globalCompositeOperation = qd;\n za.globalAlpha = I;\n const bc = ja.canvas();\n bc && za.drawImage(bc, $b, ac, sa, ta, K, Z, Ga, Ha);\n za.restore();\n });\n }\n }, _clipPath:function(q) {\n this.H.push(this.C.clip.bind(this.C, q.T, q.Wa === y ? \"evenodd\" : \"nonzero\"));\n }, clear:function() {\n D.add(this);\n this.H.push(this.C.clearRect.bind(this.C, 0, 0, this.Va.width, this.Va.height));\n }, flush:function() {\n }, translate:function(q, x) {\n this.transform(1, 0, 0, 1, q, x);\n },});\n m.makeRenderer = function(q) {\n const x = new ra(q), F = x.C;\n return new Proxy(x, {get(I, B) {\n if (\"function\" === typeof I[B]) {\n return function(...G) {\n return I[B].apply(I, G);\n };\n }\n if (\"function\" === typeof F[B]) {\n if (-1 < ia.indexOf(B)) {\n throw Error(\"RiveException: Method call to '\" + B + \"()' is not allowed, as the renderer cannot immediately pass through the return values of any canvas 2d context methods.\");\n }\n return function(...G) {\n x.H.push(F[B].bind(F, ...G));\n };\n }\n return I[B];\n }, set(I, B, G) {\n if (B in F) {\n return x.H.push(() => {\n F[B] = G;\n }), !0;\n }\n },});\n };\n m.decodeImage = function(q, x) {\n (new t({la:x})).decode(q);\n };\n m.renderFactory = {makeRenderPaint:function() {\n return new A();\n }, makeRenderPath:function() {\n return new r();\n }, makeRenderImage:function() {\n let q = da;\n return new t({xa:() => {\n q.total++;\n }, la:() => {\n q.loaded++;\n if (q.loaded === q.total) {\n const x = q.ready;\n x && (x(), q.ready = null);\n }\n },});\n },};\n let H = m.load, da = null;\n m.load = function(q, x, F = !0) {\n const I = new m.FallbackFileAssetLoader();\n void 0 !== x && I.addLoader(x);\n F && (x = new m.CDNFileAssetLoader(), I.addLoader(x));\n return new Promise(function(B) {\n let G = null;\n da = {total:0, loaded:0, ready:function() {\n B(G);\n },};\n G = H(q, I);\n 0 == da.total && B(G);\n });\n };\n let rd = m.RendererWrapper.prototype.align;\n m.RendererWrapper.prototype.align = function(q, x, F, I, B = 1.0) {\n rd.call(this, q, x, F, I, B);\n };\n d = new ca();\n m.requestAnimationFrame = d.requestAnimationFrame.bind(d);\n m.cancelAnimationFrame = d.cancelAnimationFrame.bind(d);\n m.enableFPSCounter = d.Rb.bind(d);\n m.disableFPSCounter = d.Ob;\n d.pb = c;\n m.resolveAnimationFrame = c;\n m.cleanup = function() {\n w && w.delete();\n };\n};\nvar la = Object.assign({}, m), ma = \"./this.program\", na = \"object\" == typeof window, oa = \"function\" == typeof importScripts, pa = \"\", qa, ua;\nif (na || oa) {\n oa ? pa = self.location.href : \"undefined\" != typeof document && document.currentScript && (pa = document.currentScript.src), _scriptDir && (pa = _scriptDir), 0 !== pa.indexOf(\"blob:\") ? pa = pa.substr(0, pa.replace(/[?#].*/, \"\").lastIndexOf(\"/\") + 1) : pa = \"\", oa && (ua = a => {\n var b = new XMLHttpRequest();\n b.open(\"GET\", a, !1);\n b.responseType = \"arraybuffer\";\n b.send(null);\n return new Uint8Array(b.response);\n }), qa = (a, b, c) => {\n var d = new XMLHttpRequest();\n d.open(\"GET\", a, !0);\n d.responseType = \"arraybuffer\";\n d.onload = () => {\n 200 == d.status || 0 == d.status && d.response ? b(d.response) : c();\n };\n d.onerror = c;\n d.send(null);\n };\n}\nvar va = m.print || console.log.bind(console), wa = m.printErr || console.error.bind(console);\nObject.assign(m, la);\nla = null;\nm.thisProgram && (ma = m.thisProgram);\nvar xa;\nm.wasmBinary && (xa = m.wasmBinary);\nvar noExitRuntime = m.noExitRuntime || !0;\n\"object\" != typeof WebAssembly && ya(\"no native wasm support detected\");\nvar Aa, z, Ba = !1, C, E, Ca, Da, L, N, Ea, Fa;\nfunction Ia() {\n var a = Aa.buffer;\n m.HEAP8 = C = new Int8Array(a);\n m.HEAP16 = Ca = new Int16Array(a);\n m.HEAP32 = L = new Int32Array(a);\n m.HEAPU8 = E = new Uint8Array(a);\n m.HEAPU16 = Da = new Uint16Array(a);\n m.HEAPU32 = N = new Uint32Array(a);\n m.HEAPF32 = Ea = new Float32Array(a);\n m.HEAPF64 = Fa = new Float64Array(a);\n}\nvar Ja, Ka = [], La = [], Ma = [];\nfunction Na() {\n var a = m.preRun.shift();\n Ka.unshift(a);\n}\nvar Oa = 0, Pa = null, Qa = null;\nfunction ya(a) {\n if (m.onAbort) {\n m.onAbort(a);\n }\n a = \"Aborted(\" + a + \")\";\n wa(a);\n Ba = !0;\n a = new WebAssembly.RuntimeError(a + \". Build with -sASSERTIONS for more info.\");\n ba(a);\n throw a;\n}\nfunction Ra(a) {\n return a.startsWith(\"data:application/octet-stream;base64,\");\n}\nvar Sa;\nSa = \"canvas_advanced.wasm\";\nif (!Ra(Sa)) {\n var Ta = Sa;\n Sa = m.locateFile ? m.locateFile(Ta, pa) : pa + Ta;\n}\nfunction Ua(a) {\n if (a == Sa && xa) {\n return new Uint8Array(xa);\n }\n if (ua) {\n return ua(a);\n }\n throw \"both async and sync fetching of the wasm failed\";\n}\nfunction Va(a) {\n if (!xa && (na || oa)) {\n if (\"function\" == typeof fetch && !a.startsWith(\"file://\")) {\n return fetch(a, {credentials:\"same-origin\"}).then(b => {\n if (!b.ok) {\n throw \"failed to load wasm binary file at '\" + a + \"'\";\n }\n return b.arrayBuffer();\n }).catch(() => Ua(a));\n }\n if (qa) {\n return new Promise((b, c) => {\n qa(a, d => b(new Uint8Array(d)), c);\n });\n }\n }\n return Promise.resolve().then(() => Ua(a));\n}\nfunction Wa(a, b, c) {\n return Va(a).then(d => WebAssembly.instantiate(d, b)).then(d => d).then(c, d => {\n wa(\"failed to asynchronously prepare wasm: \" + d);\n ya(d);\n });\n}\nfunction Xa(a, b) {\n var c = Sa;\n return xa || \"function\" != typeof WebAssembly.instantiateStreaming || Ra(c) || c.startsWith(\"file://\") || \"function\" != typeof fetch ? Wa(c, a, b) : fetch(c, {credentials:\"same-origin\"}).then(d => WebAssembly.instantiateStreaming(d, a).then(b, function(e) {\n wa(\"wasm streaming compile failed: \" + e);\n wa(\"falling back to ArrayBuffer instantiation\");\n return Wa(c, a, b);\n }));\n}\nvar Ya, Za, cb = {456380:(a, b, c, d, e) => {\n if (\"undefined\" === typeof window || void 0 === (window.AudioContext || window.webkitAudioContext)) {\n return 0;\n }\n if (\"undefined\" === typeof window.h) {\n window.h = {Aa:0};\n window.h.I = {};\n window.h.I.ya = a;\n window.h.I.capture = b;\n window.h.I.La = c;\n window.h.ga = {};\n window.h.ga.stopped = d;\n window.h.ga.yb = e;\n let f = window.h;\n f.D = [];\n f.yc = function(g) {\n for (var n = 0; n < f.D.length; ++n) {\n if (null == f.D[n]) {\n return f.D[n] = g, n;\n }\n }\n f.D.push(g);\n return f.D.length - 1;\n };\n f.Cb = function(g) {\n for (f.D[g] = null; 0 < f.D.length;) {\n if (null == f.D[f.D.length - 1]) {\n f.D.pop();\n } else {\n break;\n }\n }\n };\n f.Sc = function(g) {\n for (var n = 0; n < f.D.length; ++n) {\n if (f.D[n] == g) {\n return f.Cb(n);\n }\n }\n };\n f.ra = function(g) {\n return f.D[g];\n };\n f.Ta = [\"touchend\", \"click\"];\n f.unlock = function() {\n for (var g = 0; g < f.D.length; ++g) {\n var n = f.D[g];\n null != n && null != n.J && n.state === f.ga.yb && n.J.resume().then(() => {\n $a(n.qb);\n }, p => {\n console.error(\"Failed to resume audiocontext\", p);\n });\n }\n f.Ta.map(function(p) {\n document.removeEventListener(p, f.unlock, !0);\n });\n };\n f.Ta.map(function(g) {\n document.addEventListener(g, f.unlock, !0);\n });\n }\n window.h.Aa += 1;\n return 1;\n}, 458558:() => {\n \"undefined\" !== typeof window.h && (window.h.Ta.map(function(a) {\n document.removeEventListener(a, window.h.unlock, !0);\n }), --window.h.Aa, 0 === window.h.Aa && delete window.h);\n}, 458862:() => void 0 !== navigator.mediaDevices && void 0 !== navigator.mediaDevices.getUserMedia, 458966:() => {\n try {\n var a = new (window.AudioContext || window.webkitAudioContext)(), b = a.sampleRate;\n a.close();\n return b;\n } catch (c) {\n return 0;\n }\n}, 459137:(a, b, c, d, e, f) => {\n if (\"undefined\" === typeof window.h) {\n return -1;\n }\n var g = {}, n = {};\n a == window.h.I.ya && 0 != c && (n.sampleRate = c);\n g.J = new (window.AudioContext || window.webkitAudioContext)(n);\n g.J.suspend();\n g.state = window.h.ga.stopped;\n c = 0;\n a != window.h.I.ya && (c = b);\n g.Z = g.J.createScriptProcessor(d, c, b);\n g.Z.onaudioprocess = function(p) {\n if (null == g.sa || 0 == g.sa.length) {\n g.sa = new Float32Array(Ea.buffer, e, d * b);\n }\n if (a == window.h.I.capture || a == window.h.I.La) {\n for (var l = 0; l < b; l += 1) {\n for (var u = p.inputBuffer.getChannelData(l), v = g.sa, y = 0; y < d; y += 1) {\n v[y * b + l] = u[y];\n }\n }\n ab(f, d, e);\n }\n if (a == window.h.I.ya || a == window.h.I.La) {\n for (bb(f, d, e), l = 0; l < p.outputBuffer.numberOfChannels; ++l) {\n for (u = p.outputBuffer.getChannelData(l), v = g.sa, y = 0; y < d; y += 1) {\n u[y] = v[y * b + l];\n }\n }\n } else {\n for (l = 0; l < p.outputBuffer.numberOfChannels; ++l) {\n p.outputBuffer.getChannelData(l).fill(0.0);\n }\n }\n };\n a != window.h.I.capture && a != window.h.I.La || navigator.mediaDevices.getUserMedia({audio:!0, video:!1}).then(function(p) {\n g.Da = g.J.createMediaStreamSource(p);\n g.Da.connect(g.Z);\n g.Z.connect(g.J.destination);\n }).catch(function(p) {\n console.log(\"Failed to get user media: \" + p);\n });\n a == window.h.I.ya && g.Z.connect(g.J.destination);\n g.qb = f;\n return window.h.yc(g);\n}, 462014:a => window.h.ra(a).J.sampleRate, 462087:a => {\n a = window.h.ra(a);\n void 0 !== a.Z && (a.Z.onaudioprocess = function() {\n }, a.Z.disconnect(), a.Z = void 0);\n void 0 !== a.Da && (a.Da.disconnect(), a.Da = void 0);\n a.J.close();\n a.J = void 0;\n a.qb = void 0;\n}, 462487:a => {\n window.h.Cb(a);\n}, 462537:a => {\n a = window.h.ra(a);\n a.J.resume();\n a.state = window.h.ga.yb;\n}, 462676:a => {\n a = window.h.ra(a);\n a.J.suspend();\n a.state = window.h.ga.stopped;\n}}, db = a => {\n for (; 0 < a.length;) {\n a.shift()(m);\n }\n}, eb = (a, b) => {\n for (var c = 0, d = a.length - 1; 0 <= d; d--) {\n var e = a[d];\n \".\" === e ? a.splice(d, 1) : \"..\" === e ? (a.splice(d, 1), c++) : c && (a.splice(d, 1), c--);\n }\n if (b) {\n for (; c; c--) {\n a.unshift(\"..\");\n }\n }\n return a;\n}, fb = a => {\n var b = \"/\" === a.charAt(0), c = \"/\" === a.substr(-1);\n (a = eb(a.split(\"/\").filter(d => !!d), !b).join(\"/\")) || b || (a = \".\");\n a && c && (a += \"/\");\n return (b ? \"/\" : \"\") + a;\n}, gb = a => {\n var b = /^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(a).slice(1);\n a = b[0];\n b = b[1];\n if (!a && !b) {\n return \".\";\n }\n b && (b = b.substr(0, b.length - 1));\n return a + b;\n}, hb = a => {\n if (\"/\" === a) {\n return \"/\";\n }\n a = fb(a);\n a = a.replace(/\\/$/, \"\");\n var b = a.lastIndexOf(\"/\");\n return -1 === b ? a : a.substr(b + 1);\n}, ib = () => {\n if (\"object\" == typeof crypto && \"function\" == typeof crypto.getRandomValues) {\n return a => crypto.getRandomValues(a);\n }\n ya(\"initRandomDevice\");\n}, jb = a => (jb = ib())(a);\nfunction kb() {\n for (var a = \"\", b = !1, c = arguments.length - 1; -1 <= c && !b; c--) {\n b = 0 <= c ? arguments[c] : \"/\";\n if (\"string\" != typeof b) {\n throw new TypeError(\"Arguments to path.resolve must be strings\");\n }\n if (!b) {\n return \"\";\n }\n a = b + \"/\" + a;\n b = \"/\" === b.charAt(0);\n }\n a = eb(a.split(\"/\").filter(d => !!d), !b).join(\"/\");\n return (b ? \"/\" : \"\") + a || \".\";\n}\nvar lb = \"undefined\" != typeof TextDecoder ? new TextDecoder(\"utf8\") : void 0, mb = (a, b, c) => {\n var d = b + c;\n for (c = b; a[c] && !(c >= d);) {\n ++c;\n }\n if (16 < c - b && a.buffer && lb) {\n return lb.decode(a.subarray(b, c));\n }\n for (d = \"\"; b < c;) {\n var e = a[b++];\n if (e & 128) {\n var f = a[b++] & 63;\n if (192 == (e & 224)) {\n d += String.fromCharCode((e & 31) << 6 | f);\n } else {\n var g = a[b++] & 63;\n e = 224 == (e & 240) ? (e & 15) << 12 | f << 6 | g : (e & 7) << 18 | f << 12 | g << 6 | a[b++] & 63;\n 65536 > e ? d += String.fromCharCode(e) : (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023));\n }\n } else {\n d += String.fromCharCode(e);\n }\n }\n return d;\n}, nb = [], ob = a => {\n for (var b = 0, c = 0; c < a.length; ++c) {\n var d = a.charCodeAt(c);\n 127 >= d ? b++ : 2047 >= d ? b += 2 : 55296 <= d && 57343 >= d ? (b += 4, ++c) : b += 3;\n }\n return b;\n}, pb = (a, b, c, d) => {\n if (!(0 < d)) {\n return 0;\n }\n var e = c;\n d = c + d - 1;\n for (var f = 0; f < a.length; ++f) {\n var g = a.charCodeAt(f);\n if (55296 <= g && 57343 >= g) {\n var n = a.charCodeAt(++f);\n g = 65536 + ((g & 1023) << 10) | n & 1023;\n }\n if (127 >= g) {\n if (c >= d) {\n break;\n }\n b[c++] = g;\n } else {\n if (2047 >= g) {\n if (c + 1 >= d) {\n break;\n }\n b[c++] = 192 | g >> 6;\n } else {\n if (65535 >= g) {\n if (c + 2 >= d) {\n break;\n }\n b[c++] = 224 | g >> 12;\n } else {\n if (c + 3 >= d) {\n break;\n }\n b[c++] = 240 | g >> 18;\n b[c++] = 128 | g >> 12 & 63;\n }\n b[c++] = 128 | g >> 6 & 63;\n }\n b[c++] = 128 | g & 63;\n }\n }\n b[c] = 0;\n return c - e;\n};\nfunction qb(a, b) {\n var c = Array(ob(a) + 1);\n a = pb(a, c, 0, c.length);\n b && (c.length = a);\n return c;\n}\nvar rb = [];\nfunction sb(a, b) {\n rb[a] = {input:[], F:[], V:b};\n tb(a, ub);\n}\nvar ub = {open:function(a) {\n var b = rb[a.node.za];\n if (!b) {\n throw new O(43);\n }\n a.s = b;\n a.seekable = !1;\n}, close:function(a) {\n a.s.V.qa(a.s);\n}, qa:function(a) {\n a.s.V.qa(a.s);\n}, read:function(a, b, c, d) {\n if (!a.s || !a.s.V.jb) {\n throw new O(60);\n }\n for (var e = 0, f = 0; f < d; f++) {\n try {\n var g = a.s.V.jb(a.s);\n } catch (n) {\n throw new O(29);\n }\n if (void 0 === g && 0 === e) {\n throw new O(6);\n }\n if (null === g || void 0 === g) {\n break;\n }\n e++;\n b[c + f] = g;\n }\n e && (a.node.timestamp = Date.now());\n return e;\n}, write:function(a, b, c, d) {\n if (!a.s || !a.s.V.Oa) {\n throw new O(60);\n }\n try {\n for (var e = 0; e < d; e++) {\n a.s.V.Oa(a.s, b[c + e]);\n }\n } catch (f) {\n throw new O(29);\n }\n d && (a.node.timestamp = Date.now());\n return e;\n},}, vb = {jb:function() {\n a: {\n if (!nb.length) {\n var a = null;\n \"undefined\" != typeof window && \"function\" == typeof window.prompt ? (a = window.prompt(\"Input: \"), null !== a && (a += \"\\n\")) : \"function\" == typeof readline && (a = readline(), null !== a && (a += \"\\n\"));\n if (!a) {\n a = null;\n break a;\n }\n nb = qb(a, !0);\n }\n a = nb.shift();\n }\n return a;\n}, Oa:function(a, b) {\n null === b || 10 === b ? (va(mb(a.F, 0)), a.F = []) : 0 != b && a.F.push(b);\n}, qa:function(a) {\n a.F && 0 < a.F.length && (va(mb(a.F, 0)), a.F = []);\n}, bc:function() {\n return {Fc:25856, Hc:5, Ec:191, Gc:35387, Dc:[3, 28, 127, 21, 4, 0, 1, 0, 17, 19, 26, 0, 18, 15, 23, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,]};\n}, cc:function() {\n return 0;\n}, dc:function() {\n return [24, 80];\n},}, wb = {Oa:function(a, b) {\n null === b || 10 === b ? (wa(mb(a.F, 0)), a.F = []) : 0 != b && a.F.push(b);\n}, qa:function(a) {\n a.F && 0 < a.F.length && (wa(mb(a.F, 0)), a.F = []);\n},};\nfunction xb(a, b) {\n var c = a.j ? a.j.length : 0;\n c >= b || (b = Math.max(b, c * (1048576 > c ? 2.0 : 1.125) >>> 0), 0 != c && (b = Math.max(b, 256)), c = a.j, a.j = new Uint8Array(b), 0 < a.v && a.j.set(c.subarray(0, a.v), 0));\n}\nvar P = {O:null, U() {\n return P.createNode(null, \"/\", 16895, 0);\n}, createNode(a, b, c, d) {\n if (24576 === (c & 61440) || 4096 === (c & 61440)) {\n throw new O(63);\n }\n P.O || (P.O = {dir:{node:{Y:P.l.Y, P:P.l.P, ka:P.l.ka, va:P.l.va, vb:P.l.vb, Bb:P.l.Bb, wb:P.l.wb, tb:P.l.tb, Ea:P.l.Ea}, stream:{ba:P.m.ba}}, file:{node:{Y:P.l.Y, P:P.l.P}, stream:{ba:P.m.ba, read:P.m.read, write:P.m.write, pa:P.m.pa, mb:P.m.mb, ob:P.m.ob}}, link:{node:{Y:P.l.Y, P:P.l.P, ma:P.l.ma}, stream:{}}, ab:{node:{Y:P.l.Y, P:P.l.P}, stream:yb}});\n c = zb(a, b, c, d);\n 16384 === (c.mode & 61440) ? (c.l = P.O.dir.node, c.m = P.O.dir.stream, c.j = {}) : 32768 === (c.mode & 61440) ? (c.l = P.O.file.node, c.m = P.O.file.stream, c.v = 0, c.j = null) : 40960 === (c.mode & 61440) ? (c.l = P.O.link.node, c.m = P.O.link.stream) : 8192 === (c.mode & 61440) && (c.l = P.O.ab.node, c.m = P.O.ab.stream);\n c.timestamp = Date.now();\n a && (a.j[b] = c, a.timestamp = c.timestamp);\n return c;\n}, Kc(a) {\n return a.j ? a.j.subarray ? a.j.subarray(0, a.v) : new Uint8Array(a.j) : new Uint8Array(0);\n}, l:{Y(a) {\n var b = {};\n b.Jc = 8192 === (a.mode & 61440) ? a.id : 1;\n b.Mc = a.id;\n b.mode = a.mode;\n b.Oc = 1;\n b.uid = 0;\n b.Lc = 0;\n b.za = a.za;\n 16384 === (a.mode & 61440) ? b.size = 4096 : 32768 === (a.mode & 61440) ? b.size = a.v : 40960 === (a.mode & 61440) ? b.size = a.link.length : b.size = 0;\n b.Bc = new Date(a.timestamp);\n b.Nc = new Date(a.timestamp);\n b.Ic = new Date(a.timestamp);\n b.Jb = 4096;\n b.Cc = Math.ceil(b.size / b.Jb);\n return b;\n}, P(a, b) {\n void 0 !== b.mode && (a.mode = b.mode);\n void 0 !== b.timestamp && (a.timestamp = b.timestamp);\n if (void 0 !== b.size && (b = b.size, a.v != b)) {\n if (0 == b) {\n a.j = null, a.v = 0;\n } else {\n var c = a.j;\n a.j = new Uint8Array(b);\n c && a.j.set(c.subarray(0, Math.min(b, a.v)));\n a.v = b;\n }\n }\n}, ka() {\n throw Ab[44];\n}, va(a, b, c, d) {\n return P.createNode(a, b, c, d);\n}, vb(a, b, c) {\n if (16384 === (a.mode & 61440)) {\n try {\n var d = Bb(b, c);\n } catch (f) {\n }\n if (d) {\n for (var e in d.j) {\n throw new O(55);\n }\n }\n }\n delete a.parent.j[a.name];\n a.parent.timestamp = Date.now();\n a.name = c;\n b.j[c] = a;\n b.timestamp = a.parent.timestamp;\n a.parent = b;\n}, Bb(a, b) {\n delete a.j[b];\n a.timestamp = Date.now();\n}, wb(a, b) {\n var c = Bb(a, b), d;\n for (d in c.j) {\n throw new O(55);\n }\n delete a.j[b];\n a.timestamp = Date.now();\n}, tb(a) {\n var b = [\".\", \"..\"], c;\n for (c in a.j) {\n a.j.hasOwnProperty(c) && b.push(c);\n }\n return b;\n}, Ea(a, b, c) {\n a = P.createNode(a, b, 41471, 0);\n a.link = c;\n return a;\n}, ma(a) {\n if (40960 !== (a.mode & 61440)) {\n throw new O(28);\n }\n return a.link;\n},}, m:{read(a, b, c, d, e) {\n var f = a.node.j;\n if (e >= a.node.v) {\n return 0;\n }\n a = Math.min(a.node.v - e, d);\n if (8 < a && f.subarray) {\n b.set(f.subarray(e, e + a), c);\n } else {\n for (d = 0; d < a; d++) {\n b[c + d] = f[e + d];\n }\n }\n return a;\n}, write(a, b, c, d, e, f) {\n b.buffer === C.buffer && (f = !1);\n if (!d) {\n return 0;\n }\n a = a.node;\n a.timestamp = Date.now();\n if (b.subarray && (!a.j || a.j.subarray)) {\n if (f) {\n return a.j = b.subarray(c, c + d), a.v = d;\n }\n if (0 === a.v && 0 === e) {\n return a.j = b.slice(c, c + d), a.v = d;\n }\n if (e + d <= a.v) {\n return a.j.set(b.subarray(c, c + d), e), d;\n }\n }\n xb(a, e + d);\n if (a.j.subarray && b.subarray) {\n a.j.set(b.subarray(c, c + d), e);\n } else {\n for (f = 0; f < d; f++) {\n a.j[e + f] = b[c + f];\n }\n }\n a.v = Math.max(a.v, e + d);\n return d;\n}, ba(a, b, c) {\n 1 === c ? b += a.position : 2 === c && 32768 === (a.node.mode & 61440) && (b += a.node.v);\n if (0 > b) {\n throw new O(28);\n }\n return b;\n}, pa(a, b, c) {\n xb(a.node, b + c);\n a.node.v = Math.max(a.node.v, b + c);\n}, mb(a, b, c, d, e) {\n if (32768 !== (a.node.mode & 61440)) {\n throw new O(43);\n }\n a = a.node.j;\n if (e & 2 || a.buffer !== C.buffer) {\n if (0 < c || c + b < a.length) {\n a.subarray ? a = a.subarray(c, c + b) : a = Array.prototype.slice.call(a, c, c + b);\n }\n c = !0;\n ya();\n b = void 0;\n if (!b) {\n throw new O(48);\n }\n C.set(a, b);\n } else {\n c = !1, b = a.byteOffset;\n }\n return {o:b, M:c};\n}, ob(a, b, c, d) {\n P.m.write(a, b, 0, d, c, !1);\n return 0;\n},},};\nfunction Cb(a, b) {\n var c = 0;\n a && (c |= 365);\n b && (c |= 146);\n return c;\n}\nvar Db = null, Eb = {}, Fb = [], Gb = 1, Hb = null, Ib = !0, O = null, Ab = {}, Kb = (a, b = {}) => {\n a = kb(a);\n if (!a) {\n return {path:\"\", node:null};\n }\n b = Object.assign({hb:!0, Qa:0}, b);\n if (8 < b.Qa) {\n throw new O(32);\n }\n a = a.split(\"/\").filter(g => !!g);\n for (var c = Db, d = \"/\", e = 0; e < a.length; e++) {\n var f = e === a.length - 1;\n if (f && b.parent) {\n break;\n }\n c = Bb(c, a[e]);\n d = fb(d + \"/\" + a[e]);\n c.wa && (!f || f && b.hb) && (c = c.wa.root);\n if (!f || b.gb) {\n for (f = 0; 40960 === (c.mode & 61440);) {\n if (c = Jb(d), d = kb(gb(d), c), c = Kb(d, {Qa:b.Qa + 1}).node, 40 < f++) {\n throw new O(32);\n }\n }\n }\n }\n return {path:d, node:c};\n}, Lb = a => {\n for (var b;;) {\n if (a === a.parent) {\n return a = a.U.nb, b ? \"/\" !== a[a.length - 1] ? `${a}/${b}` : a + b : a;\n }\n b = b ? `${a.name}/${b}` : a.name;\n a = a.parent;\n }\n}, Mb = (a, b) => {\n for (var c = 0, d = 0; d < b.length; d++) {\n c = (c << 5) - c + b.charCodeAt(d) | 0;\n }\n return (a + c >>> 0) % Hb.length;\n}, Bb = (a, b) => {\n var c;\n if (c = (c = Nb(a, \"x\")) ? c : a.l.ka ? 0 : 2) {\n throw new O(c, a);\n }\n for (c = Hb[Mb(a.id, b)]; c; c = c.lc) {\n var d = c.name;\n if (c.parent.id === a.id && d === b) {\n return c;\n }\n }\n return a.l.ka(a, b);\n}, zb = (a, b, c, d) => {\n a = new Ob(a, b, c, d);\n b = Mb(a.parent.id, a.name);\n a.lc = Hb[b];\n return Hb[b] = a;\n}, Pb = a => {\n var b = [\"r\", \"w\", \"rw\"][a & 3];\n a & 512 && (b += \"w\");\n return b;\n}, Nb = (a, b) => {\n if (Ib) {\n return 0;\n }\n if (!b.includes(\"r\") || a.mode & 292) {\n if (b.includes(\"w\") && !(a.mode & 146) || b.includes(\"x\") && !(a.mode & 73)) {\n return 2;\n }\n } else {\n return 2;\n }\n return 0;\n}, Qb = (a, b) => {\n try {\n return Bb(a, b), 20;\n } catch (c) {\n }\n return Nb(a, \"wx\");\n}, Rb = () => {\n for (var a = 0; 4096 >= a; a++) {\n if (!Fb[a]) {\n return a;\n }\n }\n throw new O(33);\n}, Sb = a => {\n a = Fb[a];\n if (!a) {\n throw new O(8);\n }\n return a;\n}, Ub = (a, b = -1) => {\n Tb || (Tb = function() {\n this.h = {};\n }, Tb.prototype = {}, Object.defineProperties(Tb.prototype, {object:{get() {\n return this.node;\n }, set(c) {\n this.node = c;\n }}, flags:{get() {\n return this.h.flags;\n }, set(c) {\n this.h.flags = c;\n },}, position:{get() {\n return this.h.position;\n }, set(c) {\n this.h.position = c;\n },},}));\n a = Object.assign(new Tb(), a);\n -1 == b && (b = Rb());\n a.X = b;\n return Fb[b] = a;\n}, yb = {open:a => {\n a.m = Eb[a.node.za].m;\n a.m.open && a.m.open(a);\n}, ba:() => {\n throw new O(70);\n},}, tb = (a, b) => {\n Eb[a] = {m:b};\n}, Vb = (a, b) => {\n var c = \"/\" === b, d = !b;\n if (c && Db) {\n throw new O(10);\n }\n if (!c && !d) {\n var e = Kb(b, {hb:!1});\n b = e.path;\n e = e.node;\n if (e.wa) {\n throw new O(10);\n }\n if (16384 !== (e.mode & 61440)) {\n throw new O(54);\n }\n }\n b = {type:a, Qc:{}, nb:b, kc:[]};\n a = a.U(b);\n a.U = b;\n b.root = a;\n c ? Db = a : e && (e.wa = b, e.U && e.U.kc.push(b));\n}, Wb = (a, b, c) => {\n var d = Kb(a, {parent:!0}).node;\n a = hb(a);\n if (!a || \".\" === a || \"..\" === a) {\n throw new O(28);\n }\n var e = Qb(d, a);\n if (e) {\n throw new O(e);\n }\n if (!d.l.va) {\n throw new O(63);\n }\n return d.l.va(d, a, b, c);\n}, Xb = (a, b, c) => {\n \"undefined\" == typeof c && (c = b, b = 438);\n Wb(a, b | 8192, c);\n}, cc = (a, b) => {\n if (!kb(a)) {\n throw new O(44);\n }\n var c = Kb(b, {parent:!0}).node;\n if (!c) {\n throw new O(44);\n }\n b = hb(b);\n var d = Qb(c, b);\n if (d) {\n throw new O(d);\n }\n if (!c.l.Ea) {\n throw new O(63);\n }\n c.l.Ea(c, b, a);\n}, Jb = a => {\n a = Kb(a).node;\n if (!a) {\n throw new O(44);\n }\n if (!a.l.ma) {\n throw new O(28);\n }\n return kb(Lb(a.parent), a.l.ma(a));\n}, ec = (a, b, c) => {\n if (\"\" === a) {\n throw new O(44);\n }\n if (\"string\" == typeof b) {\n var d = {r:0, \"r+\":2, w:577, \"w+\":578, a:1089, \"a+\":1090,}[b];\n if (\"undefined\" == typeof d) {\n throw Error(`Unknown file open mode: ${b}`);\n }\n b = d;\n }\n c = b & 64 ? (\"undefined\" == typeof c ? 438 : c) & 4095 | 32768 : 0;\n if (\"object\" == typeof a) {\n var e = a;\n } else {\n a = fb(a);\n try {\n e = Kb(a, {gb:!(b & 131072)}).node;\n } catch (f) {\n }\n }\n d = !1;\n if (b & 64) {\n if (e) {\n if (b & 128) {\n throw new O(20);\n }\n } else {\n e = Wb(a, c, 0), d = !0;\n }\n }\n if (!e) {\n throw new O(44);\n }\n 8192 === (e.mode & 61440) && (b &= -513);\n if (b & 65536 && 16384 !== (e.mode & 61440)) {\n throw new O(54);\n }\n if (!d && (c = e ? 40960 === (e.mode & 61440) ? 32 : 16384 === (e.mode & 61440) && (\"r\" !== Pb(b) || b & 512) ? 31 : Nb(e, Pb(b)) : 44)) {\n throw new O(c);\n }\n if (b & 512 && !d) {\n c = e;\n c = \"string\" == typeof c ? Kb(c, {gb:!0}).node : c;\n if (!c.l.P) {\n throw new O(63);\n }\n if (16384 === (c.mode & 61440)) {\n throw new O(31);\n }\n if (32768 !== (c.mode & 61440)) {\n throw new O(28);\n }\n if (d = Nb(c, \"w\")) {\n throw new O(d);\n }\n c.l.P(c, {size:0, timestamp:Date.now()});\n }\n b &= -131713;\n e = Ub({node:e, path:Lb(e), flags:b, seekable:!0, position:0, m:e.m, zc:[], error:!1});\n e.m.open && e.m.open(e);\n !m.logReadFiles || b & 1 || (dc || (dc = {}), a in dc || (dc[a] = 1));\n return e;\n}, fc = (a, b, c) => {\n if (null === a.X) {\n throw new O(8);\n }\n if (!a.seekable || !a.m.ba) {\n throw new O(70);\n }\n if (0 != c && 1 != c && 2 != c) {\n throw new O(28);\n }\n a.position = a.m.ba(a, b, c);\n a.zc = [];\n}, gc = () => {\n O || (O = function(a, b) {\n this.name = \"ErrnoError\";\n this.node = b;\n this.pc = function(c) {\n this.aa = c;\n };\n this.pc(a);\n this.message = \"FS error\";\n }, O.prototype = Error(), O.prototype.constructor = O, [44].forEach(a => {\n Ab[a] = new O(a);\n Ab[a].stack = \"<generic error, no stack>\";\n }));\n}, hc, jc = (a, b, c) => {\n a = fb(\"/dev/\" + a);\n var d = Cb(!!b, !!c);\n ic || (ic = 64);\n var e = ic++ << 8 | 0;\n tb(e, {open:f => {\n f.seekable = !1;\n }, close:() => {\n c && c.buffer && c.buffer.length && c(10);\n }, read:(f, g, n, p) => {\n for (var l = 0, u = 0; u < p; u++) {\n try {\n var v = b();\n } catch (y) {\n throw new O(29);\n }\n if (void 0 === v && 0 === l) {\n throw new O(6);\n }\n if (null === v || void 0 === v) {\n break;\n }\n l++;\n g[n + u] = v;\n }\n l && (f.node.timestamp = Date.now());\n return l;\n }, write:(f, g, n, p) => {\n for (var l = 0; l < p; l++) {\n try {\n c(g[n + l]);\n } catch (u) {\n throw new O(29);\n }\n }\n p && (f.node.timestamp = Date.now());\n return l;\n }});\n Xb(a, d, e);\n}, ic, kc = {}, Tb, dc, lc = void 0;\nfunction mc() {\n lc += 4;\n return L[lc - 4 >> 2];\n}\nfunction nc(a) {\n if (void 0 === a) {\n return \"_unknown\";\n }\n a = a.replace(/[^a-zA-Z0-9_]/g, \"$\");\n var b = a.charCodeAt(0);\n return 48 <= b && 57 >= b ? `_${a}` : a;\n}\nfunction oc(a, b) {\n a = nc(a);\n return {[a]:function() {\n return b.apply(this, arguments);\n }}[a];\n}\nfunction pc() {\n this.M = [void 0];\n this.ib = [];\n}\nvar S = new pc(), qc = void 0;\nfunction U(a) {\n throw new qc(a);\n}\nvar rc = a => {\n a || U(\"Cannot use deleted val. handle = \" + a);\n return S.get(a).value;\n}, sc = a => {\n switch(a) {\n case void 0:\n return 1;\n case null:\n return 2;\n case !0:\n return 3;\n case !1:\n return 4;\n default:\n return S.pa({ub:1, value:a});\n }\n};\nfunction tc(a) {\n var b = Error, c = oc(a, function(d) {\n this.name = a;\n this.message = d;\n d = Error(d).stack;\n void 0 !== d && (this.stack = this.toString() + \"\\n\" + d.replace(/^Error(:[^\\n]*)?\\n/, \"\"));\n });\n c.prototype = Object.create(b.prototype);\n c.prototype.constructor = c;\n c.prototype.toString = function() {\n return void 0 === this.message ? this.name : `${this.name}: ${this.message}`;\n };\n return c;\n}\nvar uc = void 0, vc = void 0;\nfunction V(a) {\n for (var b = \"\"; E[a];) {\n b += vc[E[a++]];\n }\n return b;\n}\nvar wc = [];\nfunction xc() {\n for (; wc.length;) {\n var a = wc.pop();\n a.g.fa = !1;\n a[\"delete\"]();\n }\n}\nvar yc = void 0, zc = {};\nfunction Ac(a, b) {\n for (void 0 === b && U(\"ptr should not be undefined\"); a.A;) {\n b = a.na(b), a = a.A;\n }\n return b;\n}\nvar Bc = {};\nfunction Cc(a) {\n a = Dc(a);\n var b = V(a);\n Ec(a);\n return b;\n}\nfunction Fc(a, b) {\n var c = Bc[a];\n void 0 === c && U(b + \" has unknown type \" + Cc(a));\n return c;\n}\nfunction Gc() {\n}\nvar Hc = !1;\nfunction Ic(a) {\n --a.count.value;\n 0 === a.count.value && (a.G ? a.L.W(a.G) : a.u.i.W(a.o));\n}\nfunction Jc(a, b, c) {\n if (b === c) {\n return a;\n }\n if (void 0 === c.A) {\n return null;\n }\n a = Jc(a, b, c.A);\n return null === a ? null : c.Pb(a);\n}\nvar Kc = {};\nfunction Lc(a, b) {\n b = Ac(a, b);\n return zc[b];\n}\nvar Mc = void 0;\nfunction Nc(a) {\n throw new Mc(a);\n}\nfunction Oc(a, b) {\n b.u && b.o || Nc(\"makeClassHandle requires ptr and ptrType\");\n !!b.L !== !!b.G && Nc(\"Both smartPtrType and smartPtr must be specified\");\n b.count = {value:1};\n return Pc(Object.create(a, {g:{value:b,},}));\n}\nfunction Pc(a) {\n if (\"undefined\" === typeof FinalizationRegistry) {\n return Pc = b => b, a;\n }\n Hc = new FinalizationRegistry(b => {\n Ic(b.g);\n });\n Pc = b => {\n var c = b.g;\n c.G && Hc.register(b, {g:c}, b);\n return b;\n };\n Gc = b => {\n Hc.unregister(b);\n };\n return Pc(a);\n}\nvar Qc = {};\nfunction Rc(a) {\n for (; a.length;) {\n var b = a.pop();\n a.pop()(b);\n }\n}\nfunction Sc(a) {\n return this.fromWireType(L[a >> 2]);\n}\nvar Tc = {}, Uc = {};\nfunction W(a, b, c) {\n function d(n) {\n n = c(n);\n n.length !== a.length && Nc(\"Mismatched type converter count\");\n for (var p = 0; p < a.length; ++p) {\n Vc(a[p], n[p]);\n }\n }\n a.forEach(function(n) {\n Uc[n] = b;\n });\n var e = Array(b.length), f = [], g = 0;\n b.forEach((n, p) => {\n Bc.hasOwnProperty(n) ? e[p] = Bc[n] : (f.push(n), Tc.hasOwnProperty(n) || (Tc[n] = []), Tc[n].push(() => {\n e[p] = Bc[n];\n ++g;\n g === f.length && d(e);\n }));\n });\n 0 === f.length && d(e);\n}\nfunction Wc(a) {\n switch(a) {\n case 1:\n return 0;\n case 2:\n return 1;\n case 4:\n return 2;\n case 8:\n return 3;\n default:\n throw new TypeError(`Unknown type size: ${a}`);\n }\n}\nfunction Xc(a, b, c = {}) {\n var d = b.name;\n a || U(`type \"${d}\" must have a positive integer typeid pointer`);\n if (Bc.hasOwnProperty(a)) {\n if (c.$b) {\n return;\n }\n U(`Cannot register type '${d}' twice`);\n }\n Bc[a] = b;\n delete Uc[a];\n Tc.hasOwnProperty(a) && (b = Tc[a], delete Tc[a], b.forEach(e => e()));\n}\nfunction Vc(a, b, c = {}) {\n if (!(\"argPackAdvance\" in b)) {\n throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");\n }\n Xc(a, b, c);\n}\nfunction Yc(a) {\n U(a.g.u.i.name + \" instance already deleted\");\n}\nfunction Zc() {\n}\nfunction $c(a, b, c) {\n if (void 0 === a[b].B) {\n var d = a[b];\n a[b] = function() {\n a[b].B.hasOwnProperty(arguments.length) || U(`Function '${c}' called with an invalid number of arguments (${arguments.length}) - expects one of (${a[b].B})!`);\n return a[b].B[arguments.length].apply(this, arguments);\n };\n a[b].B = [];\n a[b].B[d.ea] = d;\n }\n}\nfunction ad(a, b, c) {\n m.hasOwnProperty(a) ? ((void 0 === c || void 0 !== m[a].B && void 0 !== m[a].B[c]) && U(`Cannot register public name '${a}' twice`), $c(m, a, a), m.hasOwnProperty(c) && U(`Cannot register multiple overloads of a function with the same number of arguments (${c})!`), m[a].B[c] = b) : (m[a] = b, void 0 !== c && (m[a].Pc = c));\n}\nfunction bd(a, b, c, d, e, f, g, n) {\n this.name = a;\n this.constructor = b;\n this.N = c;\n this.W = d;\n this.A = e;\n this.Ub = f;\n this.na = g;\n this.Pb = n;\n this.rb = [];\n}\nfunction cd(a, b, c) {\n for (; b !== c;) {\n b.na || U(`Expected null or instance of ${c.name}, got an instance of ${b.name}`), a = b.na(a), b = b.A;\n }\n return a;\n}\nfunction dd(a, b) {\n if (null === b) {\n return this.Na && U(`null is not a valid ${this.name}`), 0;\n }\n b.g || U(`Cannot pass \"${ed(b)}\" as a ${this.name}`);\n b.g.o || U(`Cannot pass deleted object as a pointer of type ${this.name}`);\n return cd(b.g.o, b.g.u.i, this.i);\n}\nfunction fd(a, b) {\n if (null === b) {\n this.Na && U(`null is not a valid ${this.name}`);\n if (this.ua) {\n var c = this.Pa();\n null !== a && a.push(this.W, c);\n return c;\n }\n return 0;\n }\n b.g || U(`Cannot pass \"${ed(b)}\" as a ${this.name}`);\n b.g.o || U(`Cannot pass deleted object as a pointer of type ${this.name}`);\n !this.ta && b.g.u.ta && U(`Cannot convert argument of type ${b.g.L ? b.g.L.name : b.g.u.name} to parameter type ${this.name}`);\n c = cd(b.g.o, b.g.u.i, this.i);\n if (this.ua) {\n switch(void 0 === b.g.G && U(\"Passing raw pointer to smart pointer is illegal\"), this.tc) {\n case 0:\n b.g.L === this ? c = b.g.G : U(`Cannot convert argument of type ${b.g.L ? b.g.L.name : b.g.u.name} to parameter type ${this.name}`);\n break;\n case 1:\n c = b.g.G;\n break;\n case 2:\n if (b.g.L === this) {\n c = b.g.G;\n } else {\n var d = b.clone();\n c = this.oc(c, sc(function() {\n d[\"delete\"]();\n }));\n null !== a && a.push(this.W, c);\n }\n break;\n default:\n U(\"Unsupporting sharing policy\");\n }\n }\n return c;\n}\nfunction gd(a, b) {\n if (null === b) {\n return this.Na && U(`null is not a valid ${this.name}`), 0;\n }\n b.g || U(`Cannot pass \"${ed(b)}\" as a ${this.name}`);\n b.g.o || U(`Cannot pass deleted object as a pointer of type ${this.name}`);\n b.g.u.ta && U(`Cannot convert argument of type ${b.g.u.name} to parameter type ${this.name}`);\n return cd(b.g.o, b.g.u.i, this.i);\n}\nfunction hd(a, b, c, d) {\n this.name = a;\n this.i = b;\n this.Na = c;\n this.ta = d;\n this.ua = !1;\n this.W = this.oc = this.Pa = this.sb = this.tc = this.nc = void 0;\n void 0 !== b.A ? this.toWireType = fd : (this.toWireType = d ? dd : gd, this.K = null);\n}\nfunction jd(a, b, c) {\n m.hasOwnProperty(a) || Nc(\"Replacing nonexistant public symbol\");\n void 0 !== m[a].B && void 0 !== c ? m[a].B[c] = b : (m[a] = b, m[a].ea = c);\n}\nvar kd = [], ld = a => {\n var b = kd[a];\n b || (a >= kd.length && (kd.length = a + 1), kd[a] = b = Ja.get(a));\n return b;\n}, md = (a, b) => {\n var c = [];\n return function() {\n c.length = 0;\n Object.assign(c, arguments);\n if (a.includes(\"j\")) {\n var d = m[\"dynCall_\" + a];\n d = c && c.length ? d.apply(null, [b].concat(c)) : d.call(null, b);\n } else {\n d = ld(b).apply(null, c);\n }\n return d;\n };\n};\nfunction Y(a, b) {\n a = V(a);\n var c = a.includes(\"j\") ? md(a, b) : ld(b);\n \"function\" != typeof c && U(`unknown function pointer with signature ${a}: ${b}`);\n return c;\n}\nvar nd = void 0;\nfunction od(a, b) {\n function c(f) {\n e[f] || Bc[f] || (Uc[f] ? Uc[f].forEach(c) : (d.push(f), e[f] = !0));\n }\n var d = [], e = {};\n b.forEach(c);\n throw new nd(`${a}: ` + d.map(Cc).join([\", \"]));\n}\nfunction pd(a, b, c, d, e) {\n var f = b.length;\n 2 > f && U(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");\n var g = null !== b[1] && null !== c, n = !1;\n for (c = 1; c < b.length; ++c) {\n if (null !== b[c] && void 0 === b[c].K) {\n n = !0;\n break;\n }\n }\n var p = \"void\" !== b[0].name, l = f - 2, u = Array(l), v = [], y = [];\n return function() {\n arguments.length !== l && U(`function ${a} called with ${arguments.length} arguments, expected ${l} args!`);\n y.length = 0;\n v.length = g ? 2 : 1;\n v[0] = e;\n if (g) {\n var k = b[1].toWireType(y, this);\n v[1] = k;\n }\n for (var t = 0; t < l; ++t) {\n u[t] = b[t + 2].toWireType(y, arguments[t]), v.push(u[t]);\n }\n t = d.apply(null, v);\n if (n) {\n Rc(y);\n } else {\n for (var r = g ? 1 : 2; r < b.length; r++) {\n var A = 1 === r ? k : u[r - 2];\n null !== b[r].K && b[r].K(A);\n }\n }\n k = p ? b[0].fromWireType(t) : void 0;\n return k;\n };\n}\nfunction sd(a, b) {\n for (var c = [], d = 0; d < a; d++) {\n c.push(N[b + 4 * d >> 2]);\n }\n return c;\n}\nfunction td(a, b, c) {\n a instanceof Object || U(`${c} with invalid \"this\": ${a}`);\n a instanceof b.i.constructor || U(`${c} incompatible with \"this\" of type ${a.constructor.name}`);\n a.g.o || U(`cannot call emscripten binding method ${c} on deleted object`);\n return cd(a.g.o, a.g.u.i, b.i);\n}\nfunction ud(a) {\n a >= S.h && 0 === --S.get(a).ub && S.Zb(a);\n}\nfunction vd(a, b, c) {\n switch(b) {\n case 0:\n return function(d) {\n return this.fromWireType((c ? C : E)[d]);\n };\n case 1:\n return function(d) {\n return this.fromWireType((c ? Ca : Da)[d >> 1]);\n };\n case 2:\n return function(d) {\n return this.fromWireType((c ? L : N)[d >> 2]);\n };\n default:\n throw new TypeError(\"Unknown integer type: \" + a);\n }\n}\nfunction ed(a) {\n if (null === a) {\n return \"null\";\n }\n var b = typeof a;\n return \"object\" === b || \"array\" === b || \"function\" === b ? a.toString() : \"\" + a;\n}\nfunction wd(a, b) {\n switch(b) {\n case 2:\n return function(c) {\n return this.fromWireType(Ea[c >> 2]);\n };\n case 3:\n return function(c) {\n return this.fromWireType(Fa[c >> 3]);\n };\n default:\n throw new TypeError(\"Unknown float type: \" + a);\n }\n}\nfunction xd(a, b, c) {\n switch(b) {\n case 0:\n return c ? function(d) {\n return C[d];\n } : function(d) {\n return E[d];\n };\n case 1:\n return c ? function(d) {\n return Ca[d >> 1];\n } : function(d) {\n return Da[d >> 1];\n };\n case 2:\n return c ? function(d) {\n return L[d >> 2];\n } : function(d) {\n return N[d >> 2];\n };\n default:\n throw new TypeError(\"Unknown integer type: \" + a);\n }\n}\nvar yd = \"undefined\" != typeof TextDecoder ? new TextDecoder(\"utf-16le\") : void 0, zd = (a, b) => {\n var c = a >> 1;\n for (var d = c + b / 2; !(c >= d) && Da[c];) {\n ++c;\n }\n c <<= 1;\n if (32 < c - a && yd) {\n return yd.decode(E.subarray(a, c));\n }\n c = \"\";\n for (d = 0; !(d >= b / 2); ++d) {\n var e = Ca[a + 2 * d >> 1];\n if (0 == e) {\n break;\n }\n c += String.fromCharCode(e);\n }\n return c;\n}, Ad = (a, b, c) => {\n void 0 === c && (c = 2147483647);\n if (2 > c) {\n return 0;\n }\n c -= 2;\n var d = b;\n c = c < 2 * a.length ? c / 2 : a.length;\n for (var e = 0; e < c; ++e) {\n Ca[b >> 1] = a.charCodeAt(e), b += 2;\n }\n Ca[b >> 1] = 0;\n return b - d;\n}, Bd = a => 2 * a.length, Cd = (a, b) => {\n for (var c = 0, d = \"\"; !(c >= b / 4);) {\n var e = L[a + 4 * c >> 2];\n if (0 == e) {\n break;\n }\n ++c;\n 65536 <= e ? (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023)) : d += String.fromCharCode(e);\n }\n return d;\n}, Dd = (a, b, c) => {\n void 0 === c && (c = 2147483647);\n if (4 > c) {\n return 0;\n }\n var d = b;\n c = d + c - 4;\n for (var e = 0; e < a.length; ++e) {\n var f = a.charCodeAt(e);\n if (55296 <= f && 57343 >= f) {\n var g = a.charCodeAt(++e);\n f = 65536 + ((f & 1023) << 10) | g & 1023;\n }\n L[b >> 2] = f;\n b += 4;\n if (b + 4 > c) {\n break;\n }\n }\n L[b >> 2] = 0;\n return b - d;\n}, Ed = a => {\n for (var b = 0, c = 0; c < a.length; ++c) {\n var d = a.charCodeAt(c);\n 55296 <= d && 57343 >= d && ++c;\n b += 4;\n }\n return b;\n}, Fd = {};\nfunction Gd(a) {\n var b = Fd[a];\n return void 0 === b ? V(a) : b;\n}\nvar Hd = [];\nfunction Id(a) {\n var b = Hd.length;\n Hd.push(a);\n return b;\n}\nfunction Jd(a, b) {\n for (var c = Array(a), d = 0; d < a; ++d) {\n c[d] = Fc(N[b + 4 * d >> 2], \"parameter \" + d);\n }\n return c;\n}\nvar Kd = [], Ld = [], Md = {}, Od = () => {\n if (!Nd) {\n var a = {USER:\"web_user\", LOGNAME:\"web_user\", PATH:\"/\", PWD:\"/\", HOME:\"/home/web_user\", LANG:(\"object\" == typeof navigator && navigator.languages && navigator.languages[0] || \"C\").replace(\"-\", \"_\") + \".UTF-8\", _:ma || \"./this.program\"}, b;\n for (b in Md) {\n void 0 === Md[b] ? delete a[b] : a[b] = Md[b];\n }\n var c = [];\n for (b in a) {\n c.push(`${b}=${a[b]}`);\n }\n Nd = c;\n }\n return Nd;\n}, Nd, Pd = a => 0 === a % 4 && (0 !== a % 100 || 0 === a % 400), Qd = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Rd = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], Sd = (a, b, c, d) => {\n function e(k, t, r) {\n for (k = \"number\" == typeof k ? k.toString() : k || \"\"; k.length < t;) {\n k = r[0] + k;\n }\n return k;\n }\n function f(k, t) {\n return e(k, t, \"0\");\n }\n function g(k, t) {\n function r(D) {\n return 0 > D ? -1 : 0 < D ? 1 : 0;\n }\n var A;\n 0 === (A = r(k.getFullYear() - t.getFullYear())) && 0 === (A = r(k.getMonth() - t.getMonth())) && (A = r(k.getDate() - t.getDate()));\n return A;\n }\n function n(k) {\n switch(k.getDay()) {\n case 0:\n return new Date(k.getFullYear() - 1, 11, 29);\n case 1:\n return k;\n case 2:\n return new Date(k.getFullYear(), 0, 3);\n case 3:\n return new Date(k.getFullYear(), 0, 2);\n case 4:\n return new Date(k.getFullYear(), 0, 1);\n case 5:\n return new Date(k.getFullYear() - 1, 11, 31);\n case 6:\n return new Date(k.getFullYear() - 1, 11, 30);\n }\n }\n function p(k) {\n var t = k.ca;\n for (k = new Date((new Date(k.da + 1900, 0, 1)).getTime()); 0 < t;) {\n var r = k.getMonth(), A = (Pd(k.getFullYear()) ? Qd : Rd)[r];\n if (t > A - k.getDate()) {\n t -= A - k.getDate() + 1, k.setDate(1), 11 > r ? k.setMonth(r + 1) : (k.setMonth(0), k.setFullYear(k.getFullYear() + 1));\n } else {\n k.setDate(k.getDate() + t);\n break;\n }\n }\n r = new Date(k.getFullYear() + 1, 0, 4);\n t = n(new Date(k.getFullYear(), 0, 4));\n r = n(r);\n return 0 >= g(t, k) ? 0 >= g(r, k) ? k.getFullYear() + 1 : k.getFullYear() : k.getFullYear() - 1;\n }\n var l = L[d + 40 >> 2];\n d = {wc:L[d >> 2], vc:L[d + 4 >> 2], Fa:L[d + 8 >> 2], Sa:L[d + 12 >> 2], Ga:L[d + 16 >> 2], da:L[d + 20 >> 2], R:L[d + 24 >> 2], ca:L[d + 28 >> 2], Rc:L[d + 32 >> 2], uc:L[d + 36 >> 2], xc:l ? l ? mb(E, l) : \"\" : \"\"};\n c = c ? mb(E, c) : \"\";\n l = {\"%c\":\"%a %b %d %H:%M:%S %Y\", \"%D\":\"%m/%d/%y\", \"%F\":\"%Y-%m-%d\", \"%h\":\"%b\", \"%r\":\"%I:%M:%S %p\", \"%R\":\"%H:%M\", \"%T\":\"%H:%M:%S\", \"%x\":\"%m/%d/%y\", \"%X\":\"%H:%M:%S\", \"%Ec\":\"%c\", \"%EC\":\"%C\", \"%Ex\":\"%m/%d/%y\", \"%EX\":\"%H:%M:%S\", \"%Ey\":\"%y\", \"%EY\":\"%Y\", \"%Od\":\"%d\", \"%Oe\":\"%e\", \"%OH\":\"%H\", \"%OI\":\"%I\", \"%Om\":\"%m\", \"%OM\":\"%M\", \"%OS\":\"%S\", \"%Ou\":\"%u\", \"%OU\":\"%U\", \"%OV\":\"%V\", \"%Ow\":\"%w\", \"%OW\":\"%W\", \"%Oy\":\"%y\",};\n for (var u in l) {\n c = c.replace(new RegExp(u, \"g\"), l[u]);\n }\n var v = \"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"), y = \"January February March April May June July August September October November December\".split(\" \");\n l = {\"%a\":k => v[k.R].substring(0, 3), \"%A\":k => v[k.R], \"%b\":k => y[k.Ga].substring(0, 3), \"%B\":k => y[k.Ga], \"%C\":k => f((k.da + 1900) / 100 | 0, 2), \"%d\":k => f(k.Sa, 2), \"%e\":k => e(k.Sa, 2, \" \"), \"%g\":k => p(k).toString().substring(2), \"%G\":k => p(k), \"%H\":k => f(k.Fa, 2), \"%I\":k => {\n k = k.Fa;\n 0 == k ? k = 12 : 12 < k && (k -= 12);\n return f(k, 2);\n }, \"%j\":k => {\n for (var t = 0, r = 0; r <= k.Ga - 1; t += (Pd(k.da + 1900) ? Qd : Rd)[r++]) {\n }\n return f(k.Sa + t, 3);\n }, \"%m\":k => f(k.Ga + 1, 2), \"%M\":k => f(k.vc, 2), \"%n\":() => \"\\n\", \"%p\":k => 0 <= k.Fa && 12 > k.Fa ? \"AM\" : \"PM\", \"%S\":k => f(k.wc, 2), \"%t\":() => \"\\t\", \"%u\":k => k.R || 7, \"%U\":k => f(Math.floor((k.ca + 7 - k.R) / 7), 2), \"%V\":k => {\n var t = Math.floor((k.ca + 7 - (k.R + 6) % 7) / 7);\n 2 >= (k.R + 371 - k.ca - 2) % 7 && t++;\n if (t) {\n 53 == t && (r = (k.R + 371 - k.ca) % 7, 4 == r || 3 == r && Pd(k.da) || (t = 1));\n } else {\n t = 52;\n var r = (k.R + 7 - k.ca - 1) % 7;\n (4 == r || 5 == r && Pd(k.da % 400 - 1)) && t++;\n }\n return f(t, 2);\n }, \"%w\":k => k.R, \"%W\":k => f(Math.floor((k.ca + 7 - (k.R + 6) % 7) / 7), 2), \"%y\":k => (k.da + 1900).toString().substring(2), \"%Y\":k => k.da + 1900, \"%z\":k => {\n k = k.uc;\n var t = 0 <= k;\n k = Math.abs(k) / 60;\n return (t ? \"+\" : \"-\") + String(\"0000\" + (k / 60 * 100 + k % 60)).slice(-4);\n }, \"%Z\":k => k.xc, \"%%\":() => \"%\"};\n c = c.replace(/%%/g, \"\\x00\\x00\");\n for (u in l) {\n c.includes(u) && (c = c.replace(new RegExp(u, \"g\"), l[u](d)));\n }\n c = c.replace(/\\0\\0/g, \"%\");\n u = qb(c, !1);\n if (u.length > b) {\n return 0;\n }\n C.set(u, a);\n return u.length - 1;\n};\nfunction Ob(a, b, c, d) {\n a || (a = this);\n this.parent = a;\n this.U = a.U;\n this.wa = null;\n this.id = Gb++;\n this.name = b;\n this.mode = c;\n this.l = {};\n this.m = {};\n this.za = d;\n}\nObject.defineProperties(Ob.prototype, {read:{get:function() {\n return 365 === (this.mode & 365);\n}, set:function(a) {\n a ? this.mode |= 365 : this.mode &= -366;\n}}, write:{get:function() {\n return 146 === (this.mode & 146);\n}, set:function(a) {\n a ? this.mode |= 146 : this.mode &= -147;\n}}});\ngc();\nHb = Array(4096);\nVb(P, \"/\");\nWb(\"/tmp\", 16895, 0);\nWb(\"/home\", 16895, 0);\nWb(\"/home/web_user\", 16895, 0);\n(() => {\n Wb(\"/dev\", 16895, 0);\n tb(259, {read:() => 0, write:(d, e, f, g) => g,});\n Xb(\"/dev/null\", 259);\n sb(1280, vb);\n sb(1536, wb);\n Xb(\"/dev/tty\", 1280);\n Xb(\"/dev/tty1\", 1536);\n var a = new Uint8Array(1024), b = 0, c = () => {\n 0 === b && (b = jb(a).byteLength);\n return a[--b];\n };\n jc(\"random\", c);\n jc(\"urandom\", c);\n Wb(\"/dev/shm\", 16895, 0);\n Wb(\"/dev/shm/tmp\", 16895, 0);\n})();\n(() => {\n Wb(\"/proc\", 16895, 0);\n var a = Wb(\"/proc/self\", 16895, 0);\n Wb(\"/proc/self/fd\", 16895, 0);\n Vb({U:() => {\n var b = zb(a, \"fd\", 16895, 73);\n b.l = {ka:(c, d) => {\n var e = Sb(+d);\n c = {parent:null, U:{nb:\"fake\"}, l:{ma:() => e.path},};\n return c.parent = c;\n }};\n return b;\n }}, \"/proc/self/fd\");\n})();\nObject.assign(pc.prototype, {get(a) {\n return this.M[a];\n}, has(a) {\n return void 0 !== this.M[a];\n}, pa(a) {\n var b = this.ib.pop() || this.M.length;\n this.M[b] = a;\n return b;\n}, Zb(a) {\n this.M[a] = void 0;\n this.ib.push(a);\n}});\nqc = m.BindingError = class extends Error {\n constructor(a) {\n super(a);\n this.name = \"BindingError\";\n }\n};\nS.M.push({value:void 0}, {value:null}, {value:!0}, {value:!1},);\nS.h = S.M.length;\nm.count_emval_handles = function() {\n for (var a = 0, b = S.h; b < S.M.length; ++b) {\n void 0 !== S.M[b] && ++a;\n }\n return a;\n};\nuc = m.PureVirtualError = tc(\"PureVirtualError\");\nfor (var Td = Array(256), Ud = 0; 256 > Ud; ++Ud) {\n Td[Ud] = String.fromCharCode(Ud);\n}\nvc = Td;\nm.getInheritedInstanceCount = function() {\n return Object.keys(zc).length;\n};\nm.getLiveInheritedInstances = function() {\n var a = [], b;\n for (b in zc) {\n zc.hasOwnProperty(b) && a.push(zc[b]);\n }\n return a;\n};\nm.flushPendingDeletes = xc;\nm.setDelayFunction = function(a) {\n yc = a;\n wc.length && yc && yc(xc);\n};\nMc = m.InternalError = class extends Error {\n constructor(a) {\n super(a);\n this.name = \"InternalError\";\n }\n};\nZc.prototype.isAliasOf = function(a) {\n if (!(this instanceof Zc && a instanceof Zc)) {\n return !1;\n }\n var b = this.g.u.i, c = this.g.o, d = a.g.u.i;\n for (a = a.g.o; b.A;) {\n c = b.na(c), b = b.A;\n }\n for (; d.A;) {\n a = d.na(a), d = d.A;\n }\n return b === d && c === a;\n};\nZc.prototype.clone = function() {\n this.g.o || Yc(this);\n if (this.g.ia) {\n return this.g.count.value += 1, this;\n }\n var a = Pc, b = Object, c = b.create, d = Object.getPrototypeOf(this), e = this.g;\n a = a(c.call(b, d, {g:{value:{count:e.count, fa:e.fa, ia:e.ia, o:e.o, u:e.u, G:e.G, L:e.L,},}}));\n a.g.count.value += 1;\n a.g.fa = !1;\n return a;\n};\nZc.prototype[\"delete\"] = function() {\n this.g.o || Yc(this);\n this.g.fa && !this.g.ia && U(\"Object already scheduled for deletion\");\n Gc(this);\n Ic(this.g);\n this.g.ia || (this.g.G = void 0, this.g.o = void 0);\n};\nZc.prototype.isDeleted = function() {\n return !this.g.o;\n};\nZc.prototype.deleteLater = function() {\n this.g.o || Yc(this);\n this.g.fa && !this.g.ia && U(\"Object already scheduled for deletion\");\n wc.push(this);\n 1 === wc.length && yc && yc(xc);\n this.g.fa = !0;\n return this;\n};\nhd.prototype.Vb = function(a) {\n this.sb && (a = this.sb(a));\n return a;\n};\nhd.prototype.bb = function(a) {\n this.W && this.W(a);\n};\nhd.prototype.argPackAdvance = 8;\nhd.prototype.readValueFromPointer = Sc;\nhd.prototype.deleteObject = function(a) {\n if (null !== a) {\n a[\"delete\"]();\n }\n};\nhd.prototype.fromWireType = function(a) {\n function b() {\n return this.ua ? Oc(this.i.N, {u:this.nc, o:c, L:this, G:a,}) : Oc(this.i.N, {u:this, o:a,});\n }\n var c = this.Vb(a);\n if (!c) {\n return this.bb(a), null;\n }\n var d = Lc(this.i, c);\n if (void 0 !== d) {\n if (0 === d.g.count.value) {\n return d.g.o = c, d.g.G = a, d.clone();\n }\n d = d.clone();\n this.bb(a);\n return d;\n }\n d = this.i.Ub(c);\n d = Kc[d];\n if (!d) {\n return b.call(this);\n }\n d = this.ta ? d.Kb : d.pointerType;\n var e = Jc(c, this.i, d.i);\n return null === e ? b.call(this) : this.ua ? Oc(d.i.N, {u:d, o:e, L:this, G:a,}) : Oc(d.i.N, {u:d, o:e,});\n};\nnd = m.UnboundTypeError = tc(\"UnboundTypeError\");\nvar Xd = {__syscall_fcntl64:function(a, b, c) {\n lc = c;\n try {\n var d = Sb(a);\n switch(b) {\n case 0:\n var e = mc();\n return 0 > e ? -28 : Ub(d, e).X;\n case 1:\n case 2:\n return 0;\n case 3:\n return d.flags;\n case 4:\n return e = mc(), d.flags |= e, 0;\n case 5:\n return e = mc(), Ca[e + 0 >> 1] = 2, 0;\n case 6:\n case 7:\n return 0;\n case 16:\n case 8:\n return -28;\n case 9:\n return L[Vd() >> 2] = 28, -1;\n default:\n return -28;\n }\n } catch (f) {\n if (\"undefined\" == typeof kc || \"ErrnoError\" !== f.name) {\n throw f;\n }\n return -f.aa;\n }\n}, __syscall_ioctl:function(a, b, c) {\n lc = c;\n try {\n var d = Sb(a);\n switch(b) {\n case 21509:\n return d.s ? 0 : -59;\n case 21505:\n if (!d.s) {\n return -59;\n }\n if (d.s.V.bc) {\n b = [3, 28, 127, 21, 4, 0, 1, 0, 17, 19, 26, 0, 18, 15, 23, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,];\n var e = mc();\n L[e >> 2] = 25856;\n L[e + 4 >> 2] = 5;\n L[e + 8 >> 2] = 191;\n L[e + 12 >> 2] = 35387;\n for (var f = 0; 32 > f; f++) {\n C[e + f + 17 >> 0] = b[f] || 0;\n }\n }\n return 0;\n case 21510:\n case 21511:\n case 21512:\n return d.s ? 0 : -59;\n case 21506:\n case 21507:\n case 21508:\n if (!d.s) {\n return -59;\n }\n if (d.s.V.cc) {\n for (e = mc(), b = [], f = 0; 32 > f; f++) {\n b.push(C[e + f + 17 >> 0]);\n }\n }\n return 0;\n case 21519:\n if (!d.s) {\n return -59;\n }\n e = mc();\n return L[e >> 2] = 0;\n case 21520:\n return d.s ? -28 : -59;\n case 21531:\n e = mc();\n if (!d.m.ac) {\n throw new O(59);\n }\n return d.m.ac(d, b, e);\n case 21523:\n if (!d.s) {\n return -59;\n }\n d.s.V.dc && (f = [24, 80], e = mc(), Ca[e >> 1] = f[0], Ca[e + 2 >> 1] = f[1]);\n return 0;\n case 21524:\n return d.s ? 0 : -59;\n case 21515:\n return d.s ? 0 : -59;\n default:\n return -28;\n }\n } catch (g) {\n if (\"undefined\" == typeof kc || \"ErrnoError\" !== g.name) {\n throw g;\n }\n return -g.aa;\n }\n}, __syscall_openat:function(a, b, c, d) {\n lc = d;\n try {\n b = b ? mb(E, b) : \"\";\n var e = b;\n if (\"/\" === e.charAt(0)) {\n b = e;\n } else {\n var f = -100 === a ? \"/\" : Sb(a).path;\n if (0 == e.length) {\n throw new O(44);\n }\n b = fb(f + \"/\" + e);\n }\n var g = d ? mc() : 0;\n return ec(b, c, g).X;\n } catch (n) {\n if (\"undefined\" == typeof kc || \"ErrnoError\" !== n.name) {\n throw n;\n }\n return -n.aa;\n }\n}, _embind_create_inheriting_constructor:function(a, b, c) {\n a = V(a);\n b = Fc(b, \"wrapper\");\n c = rc(c);\n var d = [].slice, e = b.i, f = e.N, g = e.A.N, n = e.A.constructor;\n a = oc(a, function() {\n e.A.rb.forEach(function(l) {\n if (this[l] === g[l]) {\n throw new uc(`Pure virtual function ${l} must be implemented in JavaScript`);\n }\n }.bind(this));\n Object.defineProperty(this, \"__parent\", {value:f});\n this.__construct.apply(this, d.call(arguments));\n });\n f.__construct = function() {\n this === f && U(\"Pass correct 'this' to __construct\");\n var l = n.implement.apply(void 0, [this].concat(d.call(arguments)));\n Gc(l);\n var u = l.g;\n l.notifyOnDestruction();\n u.ia = !0;\n Object.defineProperties(this, {g:{value:u}});\n Pc(this);\n l = u.o;\n l = Ac(e, l);\n zc.hasOwnProperty(l) ? U(`Tried to register registered instance: ${l}`) : zc[l] = this;\n };\n f.__destruct = function() {\n this === f && U(\"Pass correct 'this' to __destruct\");\n Gc(this);\n var l = this.g.o;\n l = Ac(e, l);\n zc.hasOwnProperty(l) ? delete zc[l] : U(`Tried to unregister unregistered instance: ${l}`);\n };\n a.prototype = Object.create(f);\n for (var p in c) {\n a.prototype[p] = c[p];\n }\n return sc(a);\n}, _embind_finalize_value_object:function(a) {\n var b = Qc[a];\n delete Qc[a];\n var c = b.Pa, d = b.W, e = b.fb, f = e.map(g => g.Yb).concat(e.map(g => g.rc));\n W([a], f, g => {\n var n = {};\n e.forEach((p, l) => {\n var u = g[l], v = p.Wb, y = p.Xb, k = g[l + e.length], t = p.qc, r = p.sc;\n n[p.Sb] = {read:A => u.fromWireType(v(y, A)), write:(A, D) => {\n var w = [];\n t(r, A, k.toWireType(w, D));\n Rc(w);\n }};\n });\n return [{name:b.name, fromWireType:function(p) {\n var l = {}, u;\n for (u in n) {\n l[u] = n[u].read(p);\n }\n d(p);\n return l;\n }, toWireType:function(p, l) {\n for (var u in n) {\n if (!(u in l)) {\n throw new TypeError(`Missing field: \"${u}\"`);\n }\n }\n var v = c();\n for (u in n) {\n n[u].write(v, l[u]);\n }\n null !== p && p.push(d, v);\n return v;\n }, argPackAdvance:8, readValueFromPointer:Sc, K:d,}];\n });\n}, _embind_register_bigint:function() {\n}, _embind_register_bool:function(a, b, c, d, e) {\n var f = Wc(c);\n b = V(b);\n Vc(a, {name:b, fromWireType:function(g) {\n return !!g;\n }, toWireType:function(g, n) {\n return n ? d : e;\n }, argPackAdvance:8, readValueFromPointer:function(g) {\n if (1 === c) {\n var n = C;\n } else if (2 === c) {\n n = Ca;\n } else if (4 === c) {\n n = L;\n } else {\n throw new TypeError(\"Unknown boolean type size: \" + b);\n }\n return this.fromWireType(n[g >> f]);\n }, K:null,});\n}, _embind_register_class:function(a, b, c, d, e, f, g, n, p, l, u, v, y) {\n u = V(u);\n f = Y(e, f);\n n && (n = Y(g, n));\n l && (l = Y(p, l));\n y = Y(v, y);\n var k = nc(u);\n ad(k, function() {\n od(`Cannot construct ${u} due to unbound types`, [d]);\n });\n W([a, b, c], d ? [d] : [], function(t) {\n t = t[0];\n if (d) {\n var r = t.i;\n var A = r.N;\n } else {\n A = Zc.prototype;\n }\n t = oc(k, function() {\n if (Object.getPrototypeOf(this) !== D) {\n throw new qc(\"Use 'new' to construct \" + u);\n }\n if (void 0 === w.$) {\n throw new qc(u + \" has no accessible constructor\");\n }\n var T = w.$[arguments.length];\n if (void 0 === T) {\n throw new qc(`Tried to invoke ctor of ${u} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(w.$).toString()}) parameters instead!`);\n }\n return T.apply(this, arguments);\n });\n var D = Object.create(A, {constructor:{value:t},});\n t.prototype = D;\n var w = new bd(u, t, D, y, r, f, n, l);\n w.A && (void 0 === w.A.oa && (w.A.oa = []), w.A.oa.push(w));\n r = new hd(u, w, !0, !1);\n A = new hd(u + \"*\", w, !1, !1);\n var M = new hd(u + \" const*\", w, !1, !0);\n Kc[a] = {pointerType:A, Kb:M};\n jd(k, t);\n return [r, A, M];\n });\n}, _embind_register_class_class_function:function(a, b, c, d, e, f, g) {\n var n = sd(c, d);\n b = V(b);\n f = Y(e, f);\n W([], [a], function(p) {\n function l() {\n od(`Cannot call ${u} due to unbound types`, n);\n }\n p = p[0];\n var u = `${p.name}.${b}`;\n b.startsWith(\"@@\") && (b = Symbol[b.substring(2)]);\n var v = p.i.constructor;\n void 0 === v[b] ? (l.ea = c - 1, v[b] = l) : ($c(v, b, u), v[b].B[c - 1] = l);\n W([], n, function(y) {\n y = pd(u, [y[0], null].concat(y.slice(1)), null, f, g);\n void 0 === v[b].B ? (y.ea = c - 1, v[b] = y) : v[b].B[c - 1] = y;\n if (p.i.oa) {\n for (const k of p.i.oa) {\n k.constructor.hasOwnProperty(b) || (k.constructor[b] = y);\n }\n }\n return [];\n });\n return [];\n });\n}, _embind_register_class_class_property:function(a, b, c, d, e, f, g, n) {\n b = V(b);\n f = Y(e, f);\n W([], [a], function(p) {\n p = p[0];\n var l = `${p.name}.${b}`, u = {get() {\n od(`Cannot access ${l} due to unbound types`, [c]);\n }, enumerable:!0, configurable:!0};\n u.set = n ? () => {\n od(`Cannot access ${l} due to unbound types`, [c]);\n } : () => {\n U(`${l} is a read-only property`);\n };\n Object.defineProperty(p.i.constructor, b, u);\n W([], [c], function(v) {\n v = v[0];\n var y = {get() {\n return v.fromWireType(f(d));\n }, enumerable:!0};\n n && (n = Y(g, n), y.set = k => {\n var t = [];\n n(d, v.toWireType(t, k));\n Rc(t);\n });\n Object.defineProperty(p.i.constructor, b, y);\n return [];\n });\n return [];\n });\n}, _embind_register_class_constructor:function(a, b, c, d, e, f) {\n var g = sd(b, c);\n e = Y(d, e);\n W([], [a], function(n) {\n n = n[0];\n var p = `constructor ${n.name}`;\n void 0 === n.i.$ && (n.i.$ = []);\n if (void 0 !== n.i.$[b - 1]) {\n throw new qc(`Cannot register multiple constructors with identical number of parameters (${b - 1}) for class '${n.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);\n }\n n.i.$[b - 1] = () => {\n od(`Cannot construct ${n.name} due to unbound types`, g);\n };\n W([], g, function(l) {\n l.splice(1, 0, null);\n n.i.$[b - 1] = pd(p, l, null, e, f);\n return [];\n });\n return [];\n });\n}, _embind_register_class_function:function(a, b, c, d, e, f, g, n) {\n var p = sd(c, d);\n b = V(b);\n f = Y(e, f);\n W([], [a], function(l) {\n function u() {\n od(`Cannot call ${v} due to unbound types`, p);\n }\n l = l[0];\n var v = `${l.name}.${b}`;\n b.startsWith(\"@@\") && (b = Symbol[b.substring(2)]);\n n && l.i.rb.push(b);\n var y = l.i.N, k = y[b];\n void 0 === k || void 0 === k.B && k.className !== l.name && k.ea === c - 2 ? (u.ea = c - 2, u.className = l.name, y[b] = u) : ($c(y, b, v), y[b].B[c - 2] = u);\n W([], p, function(t) {\n t = pd(v, t, l, f, g);\n void 0 === y[b].B ? (t.ea = c - 2, y[b] = t) : y[b].B[c - 2] = t;\n return [];\n });\n return [];\n });\n}, _embind_register_class_property:function(a, b, c, d, e, f, g, n, p, l) {\n b = V(b);\n e = Y(d, e);\n W([], [a], function(u) {\n u = u[0];\n var v = `${u.name}.${b}`, y = {get() {\n od(`Cannot access ${v} due to unbound types`, [c, g]);\n }, enumerable:!0, configurable:!0};\n y.set = p ? () => {\n od(`Cannot access ${v} due to unbound types`, [c, g]);\n } : () => {\n U(v + \" is a read-only property\");\n };\n Object.defineProperty(u.i.N, b, y);\n W([], p ? [c, g] : [c], function(k) {\n var t = k[0], r = {get() {\n var D = td(this, u, v + \" getter\");\n return t.fromWireType(e(f, D));\n }, enumerable:!0};\n if (p) {\n p = Y(n, p);\n var A = k[1];\n r.set = function(D) {\n var w = td(this, u, v + \" setter\"), M = [];\n p(l, w, A.toWireType(M, D));\n Rc(M);\n };\n }\n Object.defineProperty(u.i.N, b, r);\n return [];\n });\n return [];\n });\n}, _embind_register_emval:function(a, b) {\n b = V(b);\n Vc(a, {name:b, fromWireType:function(c) {\n var d = rc(c);\n ud(c);\n return d;\n }, toWireType:function(c, d) {\n return sc(d);\n }, argPackAdvance:8, readValueFromPointer:Sc, K:null,});\n}, _embind_register_enum:function(a, b, c, d) {\n function e() {\n }\n c = Wc(c);\n b = V(b);\n e.values = {};\n Vc(a, {name:b, constructor:e, fromWireType:function(f) {\n return this.constructor.values[f];\n }, toWireType:function(f, g) {\n return g.value;\n }, argPackAdvance:8, readValueFromPointer:vd(b, c, d), K:null,});\n ad(b, e);\n}, _embind_register_enum_value:function(a, b, c) {\n var d = Fc(a, \"enum\");\n b = V(b);\n a = d.constructor;\n d = Object.create(d.constructor.prototype, {value:{value:c}, constructor:{value:oc(`${d.name}_${b}`, function() {\n })},});\n a.values[c] = d;\n a[b] = d;\n}, _embind_register_float:function(a, b, c) {\n c = Wc(c);\n b = V(b);\n Vc(a, {name:b, fromWireType:function(d) {\n return d;\n }, toWireType:function(d, e) {\n return e;\n }, argPackAdvance:8, readValueFromPointer:wd(b, c), K:null,});\n}, _embind_register_function:function(a, b, c, d, e, f) {\n var g = sd(b, c);\n a = V(a);\n e = Y(d, e);\n ad(a, function() {\n od(`Cannot call ${a} due to unbound types`, g);\n }, b - 1);\n W([], g, function(n) {\n jd(a, pd(a, [n[0], null].concat(n.slice(1)), null, e, f), b - 1);\n return [];\n });\n}, _embind_register_integer:function(a, b, c, d, e) {\n b = V(b);\n -1 === e && (e = 4294967295);\n e = Wc(c);\n var f = n => n;\n if (0 === d) {\n var g = 32 - 8 * c;\n f = n => n << g >>> g;\n }\n c = b.includes(\"unsigned\") ? function(n, p) {\n return p >>> 0;\n } : function(n, p) {\n return p;\n };\n Vc(a, {name:b, fromWireType:f, toWireType:c, argPackAdvance:8, readValueFromPointer:xd(b, e, 0 !== d), K:null,});\n}, _embind_register_memory_view:function(a, b, c) {\n function d(f) {\n f >>= 2;\n var g = N;\n return new e(g.buffer, g[f + 1], g[f]);\n }\n var e = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array,][b];\n c = V(c);\n Vc(a, {name:c, fromWireType:d, argPackAdvance:8, readValueFromPointer:d,}, {$b:!0,});\n}, _embind_register_std_string:function(a, b) {\n b = V(b);\n var c = \"std::string\" === b;\n Vc(a, {name:b, fromWireType:function(d) {\n var e = N[d >> 2], f = d + 4;\n if (c) {\n for (var g = f, n = 0; n <= e; ++n) {\n var p = f + n;\n if (n == e || 0 == E[p]) {\n g = g ? mb(E, g, p - g) : \"\";\n if (void 0 === l) {\n var l = g;\n } else {\n l += String.fromCharCode(0), l += g;\n }\n g = p + 1;\n }\n }\n } else {\n l = Array(e);\n for (n = 0; n < e; ++n) {\n l[n] = String.fromCharCode(E[f + n]);\n }\n l = l.join(\"\");\n }\n Ec(d);\n return l;\n }, toWireType:function(d, e) {\n e instanceof ArrayBuffer && (e = new Uint8Array(e));\n var f = \"string\" == typeof e;\n f || e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Int8Array || U(\"Cannot pass non-string to std::string\");\n var g = c && f ? ob(e) : e.length;\n var n = Wd(4 + g + 1), p = n + 4;\n N[n >> 2] = g;\n if (c && f) {\n pb(e, E, p, g + 1);\n } else {\n if (f) {\n for (f = 0; f < g; ++f) {\n var l = e.charCodeAt(f);\n 255 < l && (Ec(p), U(\"String has UTF-16 code units that do not fit in 8 bits\"));\n E[p + f] = l;\n }\n } else {\n for (f = 0; f < g; ++f) {\n E[p + f] = e[f];\n }\n }\n }\n null !== d && d.push(Ec, n);\n return n;\n }, argPackAdvance:8, readValueFromPointer:Sc, K:function(d) {\n Ec(d);\n },});\n}, _embind_register_std_wstring:function(a, b, c) {\n c = V(c);\n if (2 === b) {\n var d = zd;\n var e = Ad;\n var f = Bd;\n var g = () => Da;\n var n = 1;\n } else {\n 4 === b && (d = Cd, e = Dd, f = Ed, g = () => N, n = 2);\n }\n Vc(a, {name:c, fromWireType:function(p) {\n for (var l = N[p >> 2], u = g(), v, y = p + 4, k = 0; k <= l; ++k) {\n var t = p + 4 + k * b;\n if (k == l || 0 == u[t >> n]) {\n y = d(y, t - y), void 0 === v ? v = y : (v += String.fromCharCode(0), v += y), y = t + b;\n }\n }\n Ec(p);\n return v;\n }, toWireType:function(p, l) {\n \"string\" != typeof l && U(`Cannot pass non-string to C++ string type ${c}`);\n var u = f(l), v = Wd(4 + u + b);\n N[v >> 2] = u >> n;\n e(l, v + 4, u + b);\n null !== p && p.push(Ec, v);\n return v;\n }, argPackAdvance:8, readValueFromPointer:Sc, K:function(p) {\n Ec(p);\n },});\n}, _embind_register_value_object:function(a, b, c, d, e, f) {\n Qc[a] = {name:V(b), Pa:Y(c, d), W:Y(e, f), fb:[],};\n}, _embind_register_value_object_field:function(a, b, c, d, e, f, g, n, p, l) {\n Qc[a].fb.push({Sb:V(b), Yb:c, Wb:Y(d, e), Xb:f, rc:g, qc:Y(n, p), sc:l,});\n}, _embind_register_void:function(a, b) {\n b = V(b);\n Vc(a, {fc:!0, name:b, argPackAdvance:0, fromWireType:function() {\n }, toWireType:function() {\n },});\n}, _emscripten_get_now_is_monotonic:() => !0, _emval_as:function(a, b, c) {\n a = rc(a);\n b = Fc(b, \"emval::as\");\n var d = [], e = sc(d);\n N[c >> 2] = e;\n return b.toWireType(d, a);\n}, _emval_call_method:function(a, b, c, d, e) {\n a = Hd[a];\n b = rc(b);\n c = Gd(c);\n var f = [];\n N[d >> 2] = sc(f);\n return a(b, c, f, e);\n}, _emval_call_void_method:function(a, b, c, d) {\n a = Hd[a];\n b = rc(b);\n c = Gd(c);\n a(b, c, null, d);\n}, _emval_decref:ud, _emval_get_method_caller:function(a, b) {\n var c = Jd(a, b), d = c[0];\n b = d.name + \"_$\" + c.slice(1).map(function(g) {\n return g.name;\n }).join(\"_\") + \"$\";\n var e = Kd[b];\n if (void 0 !== e) {\n return e;\n }\n var f = Array(a - 1);\n e = Id((g, n, p, l) => {\n for (var u = 0, v = 0; v < a - 1; ++v) {\n f[v] = c[v + 1].readValueFromPointer(l + u), u += c[v + 1].argPackAdvance;\n }\n g = g[n].apply(g, f);\n for (v = 0; v < a - 1; ++v) {\n c[v + 1].Nb && c[v + 1].Nb(f[v]);\n }\n if (!d.fc) {\n return d.toWireType(p, g);\n }\n });\n return Kd[b] = e;\n}, _emval_get_module_property:function(a) {\n a = Gd(a);\n return sc(m[a]);\n}, _emval_get_property:function(a, b) {\n a = rc(a);\n b = rc(b);\n return sc(a[b]);\n}, _emval_incref:function(a) {\n 4 < a && (S.get(a).ub += 1);\n}, _emval_new_array:function() {\n return sc([]);\n}, _emval_new_cstring:function(a) {\n return sc(Gd(a));\n}, _emval_new_object:function() {\n return sc({});\n}, _emval_run_destructors:function(a) {\n var b = rc(a);\n Rc(b);\n ud(a);\n}, _emval_set_property:function(a, b, c) {\n a = rc(a);\n b = rc(b);\n c = rc(c);\n a[b] = c;\n}, _emval_take_value:function(a, b) {\n a = Fc(a, \"_emval_take_value\");\n a = a.readValueFromPointer(b);\n return sc(a);\n}, abort:() => {\n ya(\"\");\n}, emscripten_asm_const_int:(a, b, c) => {\n Ld.length = 0;\n var d;\n for (c >>= 2; d = E[b++];) {\n c += 105 != d & c, Ld.push(105 == d ? L[c] : Fa[c++ >> 1]), ++c;\n }\n return cb[a].apply(null, Ld);\n}, emscripten_date_now:function() {\n return Date.now();\n}, emscripten_get_now:() => performance.now(), emscripten_memcpy_big:(a, b, c) => E.copyWithin(a, b, b + c), emscripten_resize_heap:a => {\n var b = E.length;\n a >>>= 0;\n if (2147483648 < a) {\n return !1;\n }\n for (var c = 1; 4 >= c; c *= 2) {\n var d = b * (1 + 0.2 / c);\n d = Math.min(d, a + 100663296);\n var e = Math;\n d = Math.max(a, d);\n a: {\n e = e.min.call(e, 2147483648, d + (65536 - d % 65536) % 65536) - Aa.buffer.byteLength + 65535 >>> 16;\n try {\n Aa.grow(e);\n Ia();\n var f = 1;\n break a;\n } catch (g) {\n }\n f = void 0;\n }\n if (f) {\n return !0;\n }\n }\n return !1;\n}, environ_get:(a, b) => {\n var c = 0;\n Od().forEach(function(d, e) {\n var f = b + c;\n e = N[a + 4 * e >> 2] = f;\n for (f = 0; f < d.length; ++f) {\n C[e++ >> 0] = d.charCodeAt(f);\n }\n C[e >> 0] = 0;\n c += d.length + 1;\n });\n return 0;\n}, environ_sizes_get:(a, b) => {\n var c = Od();\n N[a >> 2] = c.length;\n var d = 0;\n c.forEach(function(e) {\n d += e.length + 1;\n });\n N[b >> 2] = d;\n return 0;\n}, fd_close:function(a) {\n try {\n var b = Sb(a);\n if (null === b.X) {\n throw new O(8);\n }\n b.Ma && (b.Ma = null);\n try {\n b.m.close && b.m.close(b);\n } catch (c) {\n throw c;\n } finally {\n Fb[b.X] = null;\n }\n b.X = null;\n return 0;\n } catch (c) {\n if (\"undefined\" == typeof kc || \"ErrnoError\" !== c.name) {\n throw c;\n }\n return c.aa;\n }\n}, fd_read:function(a, b, c, d) {\n try {\n a: {\n var e = Sb(a);\n a = b;\n for (var f, g = b = 0; g < c; g++) {\n var n = N[a >> 2], p = N[a + 4 >> 2];\n a += 8;\n var l = e, u = n, v = p, y = f, k = C;\n if (0 > v || 0 > y) {\n throw new O(28);\n }\n if (null === l.X) {\n throw new O(8);\n }\n if (1 === (l.flags & 2097155)) {\n throw new O(8);\n }\n if (16384 === (l.node.mode & 61440)) {\n throw new O(31);\n }\n if (!l.m.read) {\n throw new O(28);\n }\n var t = \"undefined\" != typeof y;\n if (!t) {\n y = l.position;\n } else if (!l.seekable) {\n throw new O(70);\n }\n var r = l.m.read(l, k, u, v, y);\n t || (l.position += r);\n var A = r;\n if (0 > A) {\n var D = -1;\n break a;\n }\n b += A;\n if (A < p) {\n break;\n }\n \"undefined\" !== typeof f && (f += A);\n }\n D = b;\n }\n N[d >> 2] = D;\n return 0;\n } catch (w) {\n if (\"undefined\" == typeof kc || \"ErrnoError\" !== w.name) {\n throw w;\n }\n return w.aa;\n }\n}, fd_seek:function(a, b, c, d, e) {\n b = c + 2097152 >>> 0 < 4194305 - !!b ? (b >>> 0) + 4294967296 * c : NaN;\n try {\n if (isNaN(b)) {\n return 61;\n }\n var f = Sb(a);\n fc(f, b, d);\n Za = [f.position >>> 0, (Ya = f.position, 1.0 <= +Math.abs(Ya) ? 0.0 < Ya ? +Math.floor(Ya / 4294967296.0) >>> 0 : ~~+Math.ceil((Ya - +(~~Ya >>> 0)) / 4294967296.0) >>> 0 : 0)];\n L[e >> 2] = Za[0];\n L[e + 4 >> 2] = Za[1];\n f.Ma && 0 === b && 0 === d && (f.Ma = null);\n return 0;\n } catch (g) {\n if (\"undefined\" == typeof kc || \"ErrnoError\" !== g.name) {\n throw g;\n }\n return g.aa;\n }\n}, fd_write:function(a, b, c, d) {\n try {\n a: {\n var e = Sb(a);\n a = b;\n for (var f, g = b = 0; g < c; g++) {\n var n = N[a >> 2], p = N[a + 4 >> 2];\n a += 8;\n var l = e, u = n, v = p, y = f, k = C;\n if (0 > v || 0 > y) {\n throw new O(28);\n }\n if (null === l.X) {\n throw new O(8);\n }\n if (0 === (l.flags & 2097155)) {\n throw new O(8);\n }\n if (16384 === (l.node.mode & 61440)) {\n throw new O(31);\n }\n if (!l.m.write) {\n throw new O(28);\n }\n l.seekable && l.flags & 1024 && fc(l, 0, 2);\n var t = \"undefined\" != typeof y;\n if (!t) {\n y = l.position;\n } else if (!l.seekable) {\n throw new O(70);\n }\n var r = l.m.write(l, k, u, v, y, void 0);\n t || (l.position += r);\n var A = r;\n if (0 > A) {\n var D = -1;\n break a;\n }\n b += A;\n \"undefined\" !== typeof f && (f += A);\n }\n D = b;\n }\n N[d >> 2] = D;\n return 0;\n } catch (w) {\n if (\"undefined\" == typeof kc || \"ErrnoError\" !== w.name) {\n throw w;\n }\n return w.aa;\n }\n}, strftime_l:(a, b, c, d) => Sd(a, b, c, d)};\n(function() {\n function a(c) {\n z = c = c.exports;\n Aa = z.memory;\n Ia();\n Ja = z.__indirect_function_table;\n La.unshift(z.__wasm_call_ctors);\n Oa--;\n m.monitorRunDependencies && m.monitorRunDependencies(Oa);\n if (0 == Oa && (null !== Pa && (clearInterval(Pa), Pa = null), Qa)) {\n var d = Qa;\n Qa = null;\n d();\n }\n return c;\n }\n var b = {env:Xd, wasi_snapshot_preview1:Xd,};\n Oa++;\n m.monitorRunDependencies && m.monitorRunDependencies(Oa);\n if (m.instantiateWasm) {\n try {\n return m.instantiateWasm(b, a);\n } catch (c) {\n wa(\"Module.instantiateWasm callback failed with error: \" + c), ba(c);\n }\n }\n Xa(b, function(c) {\n a(c.instance);\n }).catch(ba);\n return {};\n})();\nvar Ec = a => (Ec = z.free)(a), Wd = a => (Wd = z.malloc)(a), Vd = () => (Vd = z.__errno_location)(), $a = m._ma_device__on_notification_unlocked = a => ($a = m._ma_device__on_notification_unlocked = z.ma_device__on_notification_unlocked)(a);\nm._ma_malloc_emscripten = (a, b) => (m._ma_malloc_emscripten = z.ma_malloc_emscripten)(a, b);\nm._ma_free_emscripten = (a, b) => (m._ma_free_emscripten = z.ma_free_emscripten)(a, b);\nvar ab = m._ma_device_process_pcm_frames_capture__webaudio = (a, b, c) => (ab = m._ma_device_process_pcm_frames_capture__webaudio = z.ma_device_process_pcm_frames_capture__webaudio)(a, b, c), bb = m._ma_device_process_pcm_frames_playback__webaudio = (a, b, c) => (bb = m._ma_device_process_pcm_frames_playback__webaudio = z.ma_device_process_pcm_frames_playback__webaudio)(a, b, c), Dc = a => (Dc = z.__getTypeName)(a);\nm.__embind_initialize_bindings = () => (m.__embind_initialize_bindings = z._embind_initialize_bindings)();\nm.dynCall_iiji = (a, b, c, d, e) => (m.dynCall_iiji = z.dynCall_iiji)(a, b, c, d, e);\nm.dynCall_jiji = (a, b, c, d, e) => (m.dynCall_jiji = z.dynCall_jiji)(a, b, c, d, e);\nm.dynCall_iiiji = (a, b, c, d, e, f) => (m.dynCall_iiiji = z.dynCall_iiiji)(a, b, c, d, e, f);\nm.dynCall_iij = (a, b, c, d) => (m.dynCall_iij = z.dynCall_iij)(a, b, c, d);\nm.dynCall_jii = (a, b, c) => (m.dynCall_jii = z.dynCall_jii)(a, b, c);\nm.dynCall_viijii = (a, b, c, d, e, f, g) => (m.dynCall_viijii = z.dynCall_viijii)(a, b, c, d, e, f, g);\nm.dynCall_iiiiij = (a, b, c, d, e, f, g) => (m.dynCall_iiiiij = z.dynCall_iiiiij)(a, b, c, d, e, f, g);\nm.dynCall_iiiiijj = (a, b, c, d, e, f, g, n, p) => (m.dynCall_iiiiijj = z.dynCall_iiiiijj)(a, b, c, d, e, f, g, n, p);\nm.dynCall_iiiiiijj = (a, b, c, d, e, f, g, n, p, l) => (m.dynCall_iiiiiijj = z.dynCall_iiiiiijj)(a, b, c, d, e, f, g, n, p, l);\nvar Yd;\nQa = function Zd() {\n Yd || $d();\n Yd || (Qa = Zd);\n};\nfunction $d() {\n function a() {\n if (!Yd && (Yd = !0, m.calledRun = !0, !Ba)) {\n m.noFSInit || hc || (hc = !0, gc(), m.stdin = m.stdin, m.stdout = m.stdout, m.stderr = m.stderr, m.stdin ? jc(\"stdin\", m.stdin) : cc(\"/dev/tty\", \"/dev/stdin\"), m.stdout ? jc(\"stdout\", null, m.stdout) : cc(\"/dev/tty\", \"/dev/stdout\"), m.stderr ? jc(\"stderr\", null, m.stderr) : cc(\"/dev/tty1\", \"/dev/stderr\"), ec(\"/dev/stdin\", 0), ec(\"/dev/stdout\", 1), ec(\"/dev/stderr\", 1));\n Ib = !1;\n db(La);\n aa(m);\n if (m.onRuntimeInitialized) {\n m.onRuntimeInitialized();\n }\n if (m.postRun) {\n for (\"function\" == typeof m.postRun && (m.postRun = [m.postRun]); m.postRun.length;) {\n var b = m.postRun.shift();\n Ma.unshift(b);\n }\n }\n db(Ma);\n }\n }\n if (!(0 < Oa)) {\n if (m.preRun) {\n for (\"function\" == typeof m.preRun && (m.preRun = [m.preRun]); m.preRun.length;) {\n Na();\n }\n }\n db(Ka);\n 0 < Oa || (m.setStatus ? (m.setStatus(\"Running...\"), setTimeout(function() {\n setTimeout(function() {\n m.setStatus(\"\");\n }, 1);\n a();\n }, 1)) : a());\n }\n}\nif (m.preInit) {\n for (\"function\" == typeof m.preInit && (m.preInit = [m.preInit]); 0 < m.preInit.length;) {\n m.preInit.pop()();\n }\n}\n$d();\n\n\n\n return moduleArg.ready\n}\n\n);\n})();\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Rive);\n\n/***/ }),\n/* 2 */\n/***/ ((module) => {\n\nmodule.exports = /*#__PURE__*/JSON.parse('{\"name\":\"@rive-app/canvas\",\"version\":\"2.30.0\",\"description\":\"Rive\\'s canvas based web api.\",\"main\":\"rive.js\",\"homepage\":\"https://rive.app\",\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/rive-app/rive-wasm/tree/master/js\"},\"keywords\":[\"rive\",\"animation\"],\"author\":\"Rive\",\"contributors\":[\"Luigi Rosso <luigi@rive.app> (https://rive.app)\",\"Maxwell Talbot <max@rive.app> (https://rive.app)\",\"Arthur Vivian <arthur@rive.app> (https://rive.app)\",\"Umberto Sonnino <umberto@rive.app> (https://rive.app)\",\"Matthew Sullivan <matt.j.sullivan@gmail.com> (mailto:matt.j.sullivan@gmail.com)\"],\"license\":\"MIT\",\"files\":[\"rive.js\",\"rive.js.map\",\"rive.wasm\",\"rive_fallback.wasm\",\"rive.d.ts\",\"rive_advanced.mjs.d.ts\"],\"typings\":\"rive.d.ts\",\"dependencies\":{},\"browser\":{\"fs\":false,\"path\":false}}');\n\n/***/ }),\n/* 3 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Animation: () => (/* reexport safe */ _Animation__WEBPACK_IMPORTED_MODULE_0__.Animation)\n/* harmony export */ });\n/* harmony import */ var _Animation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);\n\n\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Animation: () => (/* binding */ Animation)\n/* harmony export */ });\n/**\n * Represents an animation that can be played on an Artboard.\n * Wraps animations and instances from the runtime and keeps track of playback state.\n *\n * The `Animation` class manages the state and behavior of a single animation instance,\n * including its current time, loop count, and ability to scrub to a specific time.\n *\n * The class provides methods to advance the animation, apply its interpolated keyframe\n * values to the Artboard, and clean up the underlying animation instance when the\n * animation is no longer needed.\n */\nvar Animation = /** @class */ (function () {\n /**\n * Constructs a new animation\n * @constructor\n * @param {any} animation: runtime animation object\n * @param {any} instance: runtime animation instance object\n */\n function Animation(animation, artboard, runtime, playing) {\n this.animation = animation;\n this.artboard = artboard;\n this.playing = playing;\n this.loopCount = 0;\n /**\n * The time to which the animation should move to on the next render.\n * If not null, the animation will scrub to this time instead of advancing by the given time.\n */\n this.scrubTo = null;\n this.instance = new runtime.LinearAnimationInstance(animation, artboard);\n }\n Object.defineProperty(Animation.prototype, \"name\", {\n /**\n * Returns the animation's name\n */\n get: function () {\n return this.animation.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animation.prototype, \"time\", {\n /**\n * Returns the animation's name\n */\n get: function () {\n return this.instance.time;\n },\n /**\n * Sets the animation's current time\n */\n set: function (value) {\n this.instance.time = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animation.prototype, \"loopValue\", {\n /**\n * Returns the animation's loop type\n */\n get: function () {\n return this.animation.loopValue;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animation.prototype, \"needsScrub\", {\n /**\n * Indicates whether the animation needs to be scrubbed.\n * @returns `true` if the animation needs to be scrubbed, `false` otherwise.\n */\n get: function () {\n return this.scrubTo !== null;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Advances the animation by the give time. If the animation needs scrubbing,\n * time is ignored and the stored scrub value is used.\n * @param time the time to advance the animation by if no scrubbing required\n */\n Animation.prototype.advance = function (time) {\n if (this.scrubTo === null) {\n this.instance.advance(time);\n }\n else {\n this.instance.time = 0;\n this.instance.advance(this.scrubTo);\n this.scrubTo = null;\n }\n };\n /**\n * Apply interpolated keyframe values to the artboard. This should be called after calling\n * .advance() on an animation instance so that new values are applied to properties.\n *\n * Note: This does not advance the artboard, which updates all objects on the artboard\n * @param mix - Mix value for the animation from 0 to 1\n */\n Animation.prototype.apply = function (mix) {\n this.instance.apply(mix);\n };\n /**\n * Deletes the backing Wasm animation instance; once this is called, this\n * animation is no more.\n */\n Animation.prototype.cleanup = function () {\n this.instance.delete();\n };\n return Animation;\n}());\n\n\n\n/***/ }),\n/* 5 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AudioAssetWrapper: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_2__.AudioAssetWrapper),\n/* harmony export */ AudioWrapper: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_2__.AudioWrapper),\n/* harmony export */ BLANK_URL: () => (/* reexport safe */ _sanitizeUrl__WEBPACK_IMPORTED_MODULE_1__.BLANK_URL),\n/* harmony export */ CustomFileAssetLoaderWrapper: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_2__.CustomFileAssetLoaderWrapper),\n/* harmony export */ FileAssetWrapper: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_2__.FileAssetWrapper),\n/* harmony export */ Finalizable: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_2__.Finalizable),\n/* harmony export */ FontAssetWrapper: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_2__.FontAssetWrapper),\n/* harmony export */ FontWrapper: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_2__.FontWrapper),\n/* harmony export */ ImageAssetWrapper: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_2__.ImageAssetWrapper),\n/* harmony export */ ImageWrapper: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_2__.ImageWrapper),\n/* harmony export */ finalizationRegistry: () => (/* reexport safe */ _finalizationRegistry__WEBPACK_IMPORTED_MODULE_2__.finalizationRegistry),\n/* harmony export */ registerTouchInteractions: () => (/* reexport safe */ _registerTouchInteractions__WEBPACK_IMPORTED_MODULE_0__.registerTouchInteractions),\n/* harmony export */ sanitizeUrl: () => (/* reexport safe */ _sanitizeUrl__WEBPACK_IMPORTED_MODULE_1__.sanitizeUrl)\n/* harmony export */ });\n/* harmony import */ var _registerTouchInteractions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);\n/* harmony import */ var _sanitizeUrl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);\n/* harmony import */ var _finalizationRegistry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(8);\n\n\n\n\n\n/***/ }),\n/* 6 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ registerTouchInteractions: () => (/* binding */ registerTouchInteractions)\n/* harmony export */ });\nvar _this = undefined;\n/**\n * Returns the clientX and clientY properties from touch or mouse events. Also\n * calls preventDefault() on the event if it is a touchstart or touchmove to prevent\n * scrolling the page on mobile devices\n * @param event - Either a TouchEvent or a MouseEvent\n * @returns - Coordinates of the clientX and clientY properties from the touch/mouse event\n */\nvar getClientCoordinates = function (event, isTouchScrollEnabled) {\n var _a, _b;\n if ([\"touchstart\", \"touchmove\"].indexOf(event.type) > -1 &&\n ((_a = event.touches) === null || _a === void 0 ? void 0 : _a.length)) {\n // This flag, if false, prevents touch events on the canvas default behavior\n // which may prevent scrolling if a drag motion on the canvas is performed\n if (!isTouchScrollEnabled) {\n event.preventDefault();\n }\n return {\n clientX: event.touches[0].clientX,\n clientY: event.touches[0].clientY,\n };\n }\n else if (event.type === \"touchend\" &&\n ((_b = event.changedTouches) === null || _b === void 0 ? void 0 : _b.length)) {\n return {\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n };\n }\n else {\n return {\n clientX: event.clientX,\n clientY: event.clientY,\n };\n }\n};\n/**\n * Registers mouse move/up/down callback handlers on the canvas to send meaningful coordinates to\n * the state machine pointer move/up/down functions based on cursor interaction\n */\nvar registerTouchInteractions = function (_a) {\n var canvas = _a.canvas, artboard = _a.artboard, _b = _a.stateMachines, stateMachines = _b === void 0 ? [] : _b, renderer = _a.renderer, rive = _a.rive, fit = _a.fit, alignment = _a.alignment, _c = _a.isTouchScrollEnabled, isTouchScrollEnabled = _c === void 0 ? false : _c, _d = _a.layoutScaleFactor, layoutScaleFactor = _d === void 0 ? 1.0 : _d;\n if (!canvas ||\n !stateMachines.length ||\n !renderer ||\n !rive ||\n !artboard ||\n typeof window === \"undefined\") {\n return null;\n }\n /**\n * After a touchend event, some browsers may fire synthetic mouse events\n * (mouseover, mousedown, mousemove, mouseup) if the touch interaction did not cause\n * any default action (such as scrolling).\n *\n * This is done to simulate the behavior of a mouse for applications that do not support\n * touch events.\n *\n * We're keeping track of the previous event to not send the synthetic mouse events if the\n * touch event was a click (touchstart -> touchend).\n *\n * This is only needed when `isTouchScrollEnabled` is false\n * When true, `preventDefault()` is called which prevents this behaviour.\n **/\n var _prevEventType = null;\n var _syntheticEventsActive = false;\n var processEventCallback = function (event) {\n // Exit early out of all synthetic mouse events\n // https://stackoverflow.com/questions/9656990/how-to-prevent-simulated-mouse-events-in-mobile-browsers\n // https://stackoverflow.com/questions/25572070/javascript-touchend-versus-click-dilemma\n if (_syntheticEventsActive && event instanceof MouseEvent) {\n // Synthetic event finished\n if (event.type == \"mouseup\") {\n _syntheticEventsActive = false;\n }\n return;\n }\n // Test if it's a \"touch click\". This could cause the browser to send\n // synthetic mouse events.\n _syntheticEventsActive =\n isTouchScrollEnabled &&\n event.type === \"touchend\" &&\n _prevEventType === \"touchstart\";\n _prevEventType = event.type;\n var boundingRect = event.currentTarget.getBoundingClientRect();\n var _a = getClientCoordinates(event, isTouchScrollEnabled), clientX = _a.clientX, clientY = _a.clientY;\n if (!clientX && !clientY) {\n return;\n }\n var canvasX = clientX - boundingRect.left;\n var canvasY = clientY - boundingRect.top;\n var forwardMatrix = rive.computeAlignment(fit, alignment, {\n minX: 0,\n minY: 0,\n maxX: boundingRect.width,\n maxY: boundingRect.height,\n }, artboard.bounds, layoutScaleFactor);\n var invertedMatrix = new rive.Mat2D();\n forwardMatrix.invert(invertedMatrix);\n var canvasCoordinatesVector = new rive.Vec2D(canvasX, canvasY);\n var transformedVector = rive.mapXY(invertedMatrix, canvasCoordinatesVector);\n var transformedX = transformedVector.x();\n var transformedY = transformedVector.y();\n transformedVector.delete();\n invertedMatrix.delete();\n canvasCoordinatesVector.delete();\n forwardMatrix.delete();\n switch (event.type) {\n /**\n * There's a 2px buffer for a hitRadius when translating the pointer coordinates\n * down to the state machine. In cases where the hitbox is about that much away\n * from the Artboard border, we don't have exact precision on determining pointer\n * exit. We're therefore adding to the translated coordinates on mouseout of a canvas\n * to ensure that we report the mouse has truly exited the hitarea.\n * https://github.com/rive-app/rive-cpp/blob/master/src/animation/state_machine_instance.cpp#L336\n *\n * We add/subtract 10000 to account for when the graphic goes beyond the canvas bound\n * due to for example, a fit: 'cover'. Not perfect, but helps reliably (for now) ensure\n * we report going out of bounds when the mouse is out of the canvas\n */\n case \"mouseout\":\n for (var _i = 0, stateMachines_1 = stateMachines; _i < stateMachines_1.length; _i++) {\n var stateMachine = stateMachines_1[_i];\n stateMachine.pointerMove(transformedX, transformedY);\n }\n break;\n // Pointer moving/hovering on the canvas\n case \"touchmove\":\n case \"mouseover\":\n case \"mousemove\": {\n for (var _b = 0, stateMachines_2 = stateMachines; _b < stateMachines_2.length; _b++) {\n var stateMachine = stateMachines_2[_b];\n stateMachine.pointerMove(transformedX, transformedY);\n }\n break;\n }\n // Pointer click initiated but not released yet on the canvas\n case \"touchstart\":\n case \"mousedown\": {\n for (var _c = 0, stateMachines_3 = stateMachines; _c < stateMachines_3.length; _c++) {\n var stateMachine = stateMachines_3[_c];\n stateMachine.pointerDown(transformedX, transformedY);\n }\n break;\n }\n // Pointer click released on the canvas\n case \"touchend\":\n case \"mouseup\": {\n for (var _d = 0, stateMachines_4 = stateMachines; _d < stateMachines_4.length; _d++) {\n var stateMachine = stateMachines_4[_d];\n stateMachine.pointerUp(transformedX, transformedY);\n }\n break;\n }\n default:\n }\n };\n var callback = processEventCallback.bind(_this);\n canvas.addEventListener(\"mouseover\", callback);\n canvas.addEventListener(\"mouseout\", callback);\n canvas.addEventListener(\"mousemove\", callback);\n canvas.addEventListener(\"mousedown\", callback);\n canvas.addEventListener(\"mouseup\", callback);\n canvas.addEventListener(\"touchmove\", callback, {\n passive: isTouchScrollEnabled,\n });\n canvas.addEventListener(\"touchstart\", callback, {\n passive: isTouchScrollEnabled,\n });\n canvas.addEventListener(\"touchend\", callback);\n return function () {\n canvas.removeEventListener(\"mouseover\", callback);\n canvas.removeEventListener(\"mouseout\", callback);\n canvas.removeEventListener(\"mousemove\", callback);\n canvas.removeEventListener(\"mousedown\", callback);\n canvas.removeEventListener(\"mouseup\", callback);\n canvas.removeEventListener(\"touchmove\", callback);\n canvas.removeEventListener(\"touchstart\", callback);\n canvas.removeEventListener(\"touchend\", callback);\n };\n};\n\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BLANK_URL: () => (/* binding */ BLANK_URL),\n/* harmony export */ sanitizeUrl: () => (/* binding */ sanitizeUrl)\n/* harmony export */ });\n// Reference: https://github.com/braintree/sanitize-url/tree/main\nvar invalidProtocolRegex = /^([^\\w]*)(javascript|data|vbscript)/im;\nvar htmlEntitiesRegex = /&#(\\w+)(^\\w|;)?/g;\nvar htmlCtrlEntityRegex = /&(newline|tab);/gi;\nvar ctrlCharactersRegex = /[\\u0000-\\u001F\\u007F-\\u009F\\u2000-\\u200D\\uFEFF]/gim;\nvar urlSchemeRegex = /^.+(:|&colon;)/gim;\nvar relativeFirstCharacters = [\".\", \"/\"];\nvar BLANK_URL = \"about:blank\";\nfunction isRelativeUrlWithoutProtocol(url) {\n return relativeFirstCharacters.indexOf(url[0]) > -1;\n}\n// adapted from https://stackoverflow.com/a/29824550/2601552\nfunction decodeHtmlCharacters(str) {\n var removedNullByte = str.replace(ctrlCharactersRegex, \"\");\n return removedNullByte.replace(htmlEntitiesRegex, function (match, dec) {\n return String.fromCharCode(dec);\n });\n}\nfunction sanitizeUrl(url) {\n if (!url) {\n return BLANK_URL;\n }\n var sanitizedUrl = decodeHtmlCharacters(url)\n .replace(htmlCtrlEntityRegex, \"\")\n .replace(ctrlCharactersRegex, \"\")\n .trim();\n if (!sanitizedUrl) {\n return BLANK_URL;\n }\n if (isRelativeUrlWithoutProtocol(sanitizedUrl)) {\n return sanitizedUrl;\n }\n var urlSchemeParseResults = sanitizedUrl.match(urlSchemeRegex);\n if (!urlSchemeParseResults) {\n return sanitizedUrl;\n }\n var urlScheme = urlSchemeParseResults[0];\n if (invalidProtocolRegex.test(urlScheme)) {\n return BLANK_URL;\n }\n return sanitizedUrl;\n}\n\n\n/***/ }),\n/* 8 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AudioAssetWrapper: () => (/* binding */ AudioAssetWrapper),\n/* harmony export */ AudioWrapper: () => (/* binding */ AudioWrapper),\n/* harmony export */ CustomFileAssetLoaderWrapper: () => (/* binding */ CustomFileAssetLoaderWrapper),\n/* harmony export */ FileAssetWrapper: () => (/* binding */ FileAssetWrapper),\n/* harmony export */ Finalizable: () => (/* binding */ Finalizable),\n/* harmony export */ FontAssetWrapper: () => (/* binding */ FontAssetWrapper),\n/* harmony export */ FontWrapper: () => (/* binding */ FontWrapper),\n/* harmony export */ ImageAssetWrapper: () => (/* binding */ ImageAssetWrapper),\n/* harmony export */ ImageWrapper: () => (/* binding */ ImageWrapper),\n/* harmony export */ finalizationRegistry: () => (/* binding */ finalizationRegistry)\n/* harmony export */ });\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar Finalizable = /** @class */ (function () {\n function Finalizable() {\n this.selfUnref = false;\n }\n return Finalizable;\n}());\nvar ImageWrapper = /** @class */ (function (_super) {\n __extends(ImageWrapper, _super);\n function ImageWrapper(image) {\n var _this = _super.call(this) || this;\n _this._nativeImage = image;\n return _this;\n }\n Object.defineProperty(ImageWrapper.prototype, \"nativeImage\", {\n get: function () {\n return this._nativeImage;\n },\n enumerable: false,\n configurable: true\n });\n ImageWrapper.prototype.unref = function () {\n if (this.selfUnref) {\n this._nativeImage.unref();\n }\n };\n return ImageWrapper;\n}(Finalizable));\nvar AudioWrapper = /** @class */ (function (_super) {\n __extends(AudioWrapper, _super);\n function AudioWrapper(audio) {\n var _this = _super.call(this) || this;\n _this._nativeAudio = audio;\n return _this;\n }\n Object.defineProperty(AudioWrapper.prototype, \"nativeAudio\", {\n get: function () {\n return this._nativeAudio;\n },\n enumerable: false,\n configurable: true\n });\n AudioWrapper.prototype.unref = function () {\n if (this.selfUnref) {\n this._nativeAudio.unref();\n }\n };\n return AudioWrapper;\n}(Finalizable));\nvar FontWrapper = /** @class */ (function (_super) {\n __extends(FontWrapper, _super);\n function FontWrapper(font) {\n var _this = _super.call(this) || this;\n _this._nativeFont = font;\n return _this;\n }\n Object.defineProperty(FontWrapper.prototype, \"nativeFont\", {\n get: function () {\n return this._nativeFont;\n },\n enumerable: false,\n configurable: true\n });\n FontWrapper.prototype.unref = function () {\n if (this.selfUnref) {\n this._nativeFont.unref();\n }\n };\n return FontWrapper;\n}(Finalizable));\nvar CustomFileAssetLoaderWrapper = /** @class */ (function () {\n function CustomFileAssetLoaderWrapper(runtime, loaderCallback) {\n this._assetLoaderCallback = loaderCallback;\n this.assetLoader = new runtime.CustomFileAssetLoader({\n loadContents: this.loadContents.bind(this),\n });\n }\n CustomFileAssetLoaderWrapper.prototype.loadContents = function (asset, bytes) {\n var assetWrapper;\n if (asset.isImage) {\n assetWrapper = new ImageAssetWrapper(asset);\n }\n else if (asset.isAudio) {\n assetWrapper = new AudioAssetWrapper(asset);\n }\n else if (asset.isFont) {\n assetWrapper = new FontAssetWrapper(asset);\n }\n return this._assetLoaderCallback(assetWrapper, bytes);\n };\n return CustomFileAssetLoaderWrapper;\n}());\n/**\n * Rive class representing a FileAsset with relevant metadata fields to describe\n * an asset associated wtih the Rive File\n */\nvar FileAssetWrapper = /** @class */ (function () {\n function FileAssetWrapper(nativeAsset) {\n this._nativeFileAsset = nativeAsset;\n }\n FileAssetWrapper.prototype.decode = function (bytes) {\n this._nativeFileAsset.decode(bytes);\n };\n Object.defineProperty(FileAssetWrapper.prototype, \"name\", {\n get: function () {\n return this._nativeFileAsset.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FileAssetWrapper.prototype, \"fileExtension\", {\n get: function () {\n return this._nativeFileAsset.fileExtension;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FileAssetWrapper.prototype, \"uniqueFilename\", {\n get: function () {\n return this._nativeFileAsset.uniqueFilename;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FileAssetWrapper.prototype, \"isAudio\", {\n get: function () {\n return this._nativeFileAsset.isAudio;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FileAssetWrapper.prototype, \"isImage\", {\n get: function () {\n return this._nativeFileAsset.isImage;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FileAssetWrapper.prototype, \"isFont\", {\n get: function () {\n return this._nativeFileAsset.isFont;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FileAssetWrapper.prototype, \"cdnUuid\", {\n get: function () {\n return this._nativeFileAsset.cdnUuid;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(FileAssetWrapper.prototype, \"nativeFileAsset\", {\n get: function () {\n return this._nativeFileAsset;\n },\n enumerable: false,\n configurable: true\n });\n return FileAssetWrapper;\n}());\n/**\n * Rive class extending the FileAsset that exposes a `setRenderImage()` API with a\n * decoded Image (via the `decodeImage()` API) to set a new Image on the Rive FileAsset\n */\nvar ImageAssetWrapper = /** @class */ (function (_super) {\n __extends(ImageAssetWrapper, _super);\n function ImageAssetWrapper() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ImageAssetWrapper.prototype.setRenderImage = function (image) {\n this._nativeFileAsset.setRenderImage(image.nativeImage);\n };\n return ImageAssetWrapper;\n}(FileAssetWrapper));\n/**\n * Rive class extending the FileAsset that exposes a `setAudioSource()` API with a\n * decoded Audio (via the `decodeAudio()` API) to set a new Audio on the Rive FileAsset\n */\nvar AudioAssetWrapper = /** @class */ (function (_super) {\n __extends(AudioAssetWrapper, _super);\n function AudioAssetWrapper() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AudioAssetWrapper.prototype.setAudioSource = function (audio) {\n this._nativeFileAsset.setAudioSource(audio.nativeAudio);\n };\n return AudioAssetWrapper;\n}(FileAssetWrapper));\n/**\n * Rive class extending the FileAsset that exposes a `setFont()` API with a\n * decoded Font (via the `decodeFont()` API) to set a new Font on the Rive FileAsset\n */\nvar FontAssetWrapper = /** @class */ (function (_super) {\n __extends(FontAssetWrapper, _super);\n function FontAssetWrapper() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FontAssetWrapper.prototype.setFont = function (font) {\n this._nativeFileAsset.setFont(font.nativeFont);\n };\n return FontAssetWrapper;\n}(FileAssetWrapper));\nvar FakeFinalizationRegistry = /** @class */ (function (_super) {\n __extends(FakeFinalizationRegistry, _super);\n function FakeFinalizationRegistry(fn) {\n return _super.call(this, fn) || this;\n }\n FakeFinalizationRegistry.prototype.register = function (object) {\n object.selfUnref = true;\n };\n FakeFinalizationRegistry.prototype.unregister = function (_) { };\n return FakeFinalizationRegistry;\n}(FinalizationRegistry));\nvar MyFinalizationRegistry = FinalizationRegistry || FakeFinalizationRegistry;\nvar finalizationRegistry = new MyFinalizationRegistry(function (ob) {\n ob.unref();\n});\n\n\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk.\n(() => {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Alignment: () => (/* binding */ Alignment),\n/* harmony export */ DataEnum: () => (/* binding */ DataEnum),\n/* harmony export */ EventType: () => (/* binding */ EventType),\n/* harmony export */ Fit: () => (/* binding */ Fit),\n/* harmony export */ Layout: () => (/* binding */ Layout),\n/* harmony export */ LoopType: () => (/* binding */ LoopType),\n/* harmony export */ Rive: () => (/* binding */ Rive),\n/* harmony export */ RiveEventType: () => (/* binding */ RiveEventType),\n/* harmony export */ RiveFile: () => (/* binding */ RiveFile),\n/* harmony export */ RuntimeLoader: () => (/* binding */ RuntimeLoader),\n/* harmony export */ StateMachineInput: () => (/* binding */ StateMachineInput),\n/* harmony export */ StateMachineInputType: () => (/* binding */ StateMachineInputType),\n/* harmony export */ Testing: () => (/* binding */ Testing),\n/* harmony export */ ViewModel: () => (/* binding */ ViewModel),\n/* harmony export */ ViewModelInstance: () => (/* binding */ ViewModelInstance),\n/* harmony export */ ViewModelInstanceAssetImage: () => (/* binding */ ViewModelInstanceAssetImage),\n/* harmony export */ ViewModelInstanceBoolean: () => (/* binding */ ViewModelInstanceBoolean),\n/* harmony export */ ViewModelInstanceColor: () => (/* binding */ ViewModelInstanceColor),\n/* harmony export */ ViewModelInstanceEnum: () => (/* binding */ ViewModelInstanceEnum),\n/* harmony export */ ViewModelInstanceList: () => (/* binding */ ViewModelInstanceList),\n/* harmony export */ ViewModelInstanceNumber: () => (/* binding */ ViewModelInstanceNumber),\n/* harmony export */ ViewModelInstanceString: () => (/* binding */ ViewModelInstanceString),\n/* harmony export */ ViewModelInstanceTrigger: () => (/* binding */ ViewModelInstanceTrigger),\n/* harmony export */ ViewModelInstanceValue: () => (/* binding */ ViewModelInstanceValue),\n/* harmony export */ decodeAudio: () => (/* binding */ decodeAudio),\n/* harmony export */ decodeFont: () => (/* binding */ decodeFont),\n/* harmony export */ decodeImage: () => (/* binding */ decodeImage)\n/* harmony export */ });\n/* harmony import */ var _rive_advanced_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);\n/* harmony import */ var package_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);\n/* harmony import */ var _animation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5);\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\n\n\n\nvar RiveError = /** @class */ (function (_super) {\n __extends(RiveError, _super);\n function RiveError() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.isHandledError = true;\n return _this;\n }\n return RiveError;\n}(Error));\n// #regions helpers\nvar resolveErrorMessage = function (error) {\n return error && error.isHandledError\n ? error.message\n : \"Problem loading file; may be corrupt!\";\n};\n// #region layout\n// Fit options for the canvas\nvar Fit;\n(function (Fit) {\n Fit[\"Cover\"] = \"cover\";\n Fit[\"Contain\"] = \"contain\";\n Fit[\"Fill\"] = \"fill\";\n Fit[\"FitWidth\"] = \"fitWidth\";\n Fit[\"FitHeight\"] = \"fitHeight\";\n Fit[\"None\"] = \"none\";\n Fit[\"ScaleDown\"] = \"scaleDown\";\n Fit[\"Layout\"] = \"layout\";\n})(Fit || (Fit = {}));\n// Alignment options for the canvas\nvar Alignment;\n(function (Alignment) {\n Alignment[\"Center\"] = \"center\";\n Alignment[\"TopLeft\"] = \"topLeft\";\n Alignment[\"TopCenter\"] = \"topCenter\";\n Alignment[\"TopRight\"] = \"topRight\";\n Alignment[\"CenterLeft\"] = \"centerLeft\";\n Alignment[\"CenterRight\"] = \"centerRight\";\n Alignment[\"BottomLeft\"] = \"bottomLeft\";\n Alignment[\"BottomCenter\"] = \"bottomCenter\";\n Alignment[\"BottomRight\"] = \"bottomRight\";\n})(Alignment || (Alignment = {}));\n// Alignment options for Rive animations in a HTML canvas\nvar Layout = /** @class */ (function () {\n function Layout(params) {\n var _a, _b, _c, _d, _e, _f, _g;\n this.fit = (_a = params === null || params === void 0 ? void 0 : params.fit) !== null && _a !== void 0 ? _a : Fit.Contain;\n this.alignment = (_b = params === null || params === void 0 ? void 0 : params.alignment) !== null && _b !== void 0 ? _b : Alignment.Center;\n this.layoutScaleFactor = (_c = params === null || params === void 0 ? void 0 : params.layoutScaleFactor) !== null && _c !== void 0 ? _c : 1;\n this.minX = (_d = params === null || params === void 0 ? void 0 : params.minX) !== null && _d !== void 0 ? _d : 0;\n this.minY = (_e = params === null || params === void 0 ? void 0 : params.minY) !== null && _e !== void 0 ? _e : 0;\n this.maxX = (_f = params === null || params === void 0 ? void 0 : params.maxX) !== null && _f !== void 0 ? _f : 0;\n this.maxY = (_g = params === null || params === void 0 ? void 0 : params.maxY) !== null && _g !== void 0 ? _g : 0;\n }\n // Alternative constructor to build a Layout from an interface/object\n Layout.new = function (_a) {\n var fit = _a.fit, alignment = _a.alignment, minX = _a.minX, minY = _a.minY, maxX = _a.maxX, maxY = _a.maxY;\n console.warn(\"This function is deprecated: please use `new Layout({})` instead\");\n return new Layout({ fit: fit, alignment: alignment, minX: minX, minY: minY, maxX: maxX, maxY: maxY });\n };\n /**\n * Makes a copy of the layout, replacing any specified parameters\n */\n Layout.prototype.copyWith = function (_a) {\n var fit = _a.fit, alignment = _a.alignment, layoutScaleFactor = _a.layoutScaleFactor, minX = _a.minX, minY = _a.minY, maxX = _a.maxX, maxY = _a.maxY;\n return new Layout({\n fit: fit !== null && fit !== void 0 ? fit : this.fit,\n alignment: alignment !== null && alignment !== void 0 ? alignment : this.alignment,\n layoutScaleFactor: layoutScaleFactor !== null && layoutScaleFactor !== void 0 ? layoutScaleFactor : this.layoutScaleFactor,\n minX: minX !== null && minX !== void 0 ? minX : this.minX,\n minY: minY !== null && minY !== void 0 ? minY : this.minY,\n maxX: maxX !== null && maxX !== void 0 ? maxX : this.maxX,\n maxY: maxY !== null && maxY !== void 0 ? maxY : this.maxY,\n });\n };\n // Returns fit for the Wasm runtime format\n Layout.prototype.runtimeFit = function (rive) {\n if (this.cachedRuntimeFit)\n return this.cachedRuntimeFit;\n var fit;\n if (this.fit === Fit.Cover)\n fit = rive.Fit.cover;\n else if (this.fit === Fit.Contain)\n fit = rive.Fit.contain;\n else if (this.fit === Fit.Fill)\n fit = rive.Fit.fill;\n else if (this.fit === Fit.FitWidth)\n fit = rive.Fit.fitWidth;\n else if (this.fit === Fit.FitHeight)\n fit = rive.Fit.fitHeight;\n else if (this.fit === Fit.ScaleDown)\n fit = rive.Fit.scaleDown;\n else if (this.fit === Fit.Layout)\n fit = rive.Fit.layout;\n else\n fit = rive.Fit.none;\n this.cachedRuntimeFit = fit;\n return fit;\n };\n // Returns alignment for the Wasm runtime format\n Layout.prototype.runtimeAlignment = function (rive) {\n if (this.cachedRuntimeAlignment)\n return this.cachedRuntimeAlignment;\n var alignment;\n if (this.alignment === Alignment.TopLeft)\n alignment = rive.Alignment.topLeft;\n else if (this.alignment === Alignment.TopCenter)\n alignment = rive.Alignment.topCenter;\n else if (this.alignment === Alignment.TopRight)\n alignment = rive.Alignment.topRight;\n else if (this.alignment === Alignment.CenterLeft)\n alignment = rive.Alignment.centerLeft;\n else if (this.alignment === Alignment.CenterRight)\n alignment = rive.Alignment.centerRight;\n else if (this.alignment === Alignment.BottomLeft)\n alignment = rive.Alignment.bottomLeft;\n else if (this.alignment === Alignment.BottomCenter)\n alignment = rive.Alignment.bottomCenter;\n else if (this.alignment === Alignment.BottomRight)\n alignment = rive.Alignment.bottomRight;\n else\n alignment = rive.Alignment.center;\n this.cachedRuntimeAlignment = alignment;\n return alignment;\n };\n return Layout;\n}());\n\n// Runtime singleton; use getInstance to provide a callback that returns the\n// Rive runtime\nvar RuntimeLoader = /** @class */ (function () {\n // Class is never instantiated\n function RuntimeLoader() {\n }\n // Loads the runtime\n RuntimeLoader.loadRuntime = function () {\n _rive_advanced_mjs__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({\n // Loads Wasm bundle\n locateFile: function () { return RuntimeLoader.wasmURL; },\n })\n .then(function (rive) {\n var _a;\n RuntimeLoader.runtime = rive;\n // Fire all the callbacks\n while (RuntimeLoader.callBackQueue.length > 0) {\n (_a = RuntimeLoader.callBackQueue.shift()) === null || _a === void 0 ? void 0 : _a(RuntimeLoader.runtime);\n }\n })\n .catch(function (error) {\n // Capture specific error details\n var errorDetails = {\n message: (error === null || error === void 0 ? void 0 : error.message) || \"Unknown error\",\n type: (error === null || error === void 0 ? void 0 : error.name) || \"Error\",\n // Some browsers may provide additional WebAssembly-specific details\n wasmError: error instanceof WebAssembly.CompileError ||\n error instanceof WebAssembly.RuntimeError,\n originalError: error,\n };\n // Log detailed error for debugging\n console.debug(\"Rive WASM load error details:\", errorDetails);\n // In case unpkg fails, or the wasm was not supported, we try to load the fallback module from jsdelivr.\n // This `rive_fallback.wasm` is compiled to support older architecture.\n // TODO: (Gordon): preemptively test browser support and load the correct wasm file. Then use jsdelvr only if unpkg fails.\n var backupJsdelivrUrl = \"https://cdn.jsdelivr.net/npm/\".concat(package_json__WEBPACK_IMPORTED_MODULE_1__.name, \"@\").concat(package_json__WEBPACK_IMPORTED_MODULE_1__.version, \"/rive_fallback.wasm\");\n if (RuntimeLoader.wasmURL.toLowerCase() !== backupJsdelivrUrl) {\n console.warn(\"Failed to load WASM from \".concat(RuntimeLoader.wasmURL, \" (\").concat(errorDetails.message, \"), trying jsdelivr as a backup\"));\n RuntimeLoader.setWasmUrl(backupJsdelivrUrl);\n RuntimeLoader.loadRuntime();\n }\n else {\n var errorMessage = [\n \"Could not load Rive WASM file from \".concat(RuntimeLoader.wasmURL, \" or \").concat(backupJsdelivrUrl, \".\"),\n \"Possible reasons:\",\n \"- Network connection is down\",\n \"- WebAssembly is not supported in this environment\",\n \"- The WASM file is corrupted or incompatible\",\n \"\\nError details:\",\n \"- Type: \".concat(errorDetails.type),\n \"- Message: \".concat(errorDetails.message),\n \"- WebAssembly-specific error: \".concat(errorDetails.wasmError),\n \"\\nTo resolve, you may need to:\",\n \"1. Check your network connection\",\n \"2. Set a new WASM source via RuntimeLoader.setWasmUrl()\",\n \"3. Call RuntimeLoader.loadRuntime() again\",\n ].join(\"\\n\");\n console.error(errorMessage);\n }\n });\n };\n // Provides a runtime instance via a callback\n RuntimeLoader.getInstance = function (callback) {\n // If it's not loading, start loading runtime\n if (!RuntimeLoader.isLoading) {\n RuntimeLoader.isLoading = true;\n RuntimeLoader.loadRuntime();\n }\n if (!RuntimeLoader.runtime) {\n RuntimeLoader.callBackQueue.push(callback);\n }\n else {\n callback(RuntimeLoader.runtime);\n }\n };\n // Provides a runtime instance via a promise\n RuntimeLoader.awaitInstance = function () {\n return new Promise(function (resolve) {\n return RuntimeLoader.getInstance(function (rive) { return resolve(rive); });\n });\n };\n // Manually sets the wasm url\n RuntimeLoader.setWasmUrl = function (url) {\n RuntimeLoader.wasmURL = url;\n };\n // Gets the current wasm url\n RuntimeLoader.getWasmUrl = function () {\n return RuntimeLoader.wasmURL;\n };\n // Flag to indicate that loading has started/completed\n RuntimeLoader.isLoading = false;\n // List of callbacks for the runtime that come in while loading\n RuntimeLoader.callBackQueue = [];\n // Path to the Wasm file; default path works for testing only;\n // if embedded wasm is used then this is never used.\n RuntimeLoader.wasmURL = \"https://unpkg.com/\".concat(package_json__WEBPACK_IMPORTED_MODULE_1__.name, \"@\").concat(package_json__WEBPACK_IMPORTED_MODULE_1__.version, \"/rive.wasm\");\n return RuntimeLoader;\n}());\n\n// #endregion\n// #region state machines\nvar StateMachineInputType;\n(function (StateMachineInputType) {\n StateMachineInputType[StateMachineInputType[\"Number\"] = 56] = \"Number\";\n StateMachineInputType[StateMachineInputType[\"Trigger\"] = 58] = \"Trigger\";\n StateMachineInputType[StateMachineInputType[\"Boolean\"] = 59] = \"Boolean\";\n})(StateMachineInputType || (StateMachineInputType = {}));\n/**\n * An input for a state machine\n */\nvar StateMachineInput = /** @class */ (function () {\n function StateMachineInput(type, runtimeInput) {\n this.type = type;\n this.runtimeInput = runtimeInput;\n }\n Object.defineProperty(StateMachineInput.prototype, \"name\", {\n /**\n * Returns the name of the input\n */\n get: function () {\n return this.runtimeInput.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateMachineInput.prototype, \"value\", {\n /**\n * Returns the current value of the input\n */\n get: function () {\n return this.runtimeInput.value;\n },\n /**\n * Sets the value of the input\n */\n set: function (value) {\n this.runtimeInput.value = value;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Fires a trigger; does nothing on Number or Boolean input types\n */\n StateMachineInput.prototype.fire = function () {\n if (this.type === StateMachineInputType.Trigger) {\n this.runtimeInput.fire();\n }\n };\n /**\n * Deletes the input\n */\n StateMachineInput.prototype.delete = function () {\n this.runtimeInput = null;\n };\n return StateMachineInput;\n}());\n\nvar RiveEventType;\n(function (RiveEventType) {\n RiveEventType[RiveEventType[\"General\"] = 128] = \"General\";\n RiveEventType[RiveEventType[\"OpenUrl\"] = 131] = \"OpenUrl\";\n})(RiveEventType || (RiveEventType = {}));\nvar StateMachine = /** @class */ (function () {\n /**\n * @constructor\n * @param stateMachine runtime state machine object\n * @param instance runtime state machine instance object\n */\n function StateMachine(stateMachine, runtime, playing, artboard) {\n this.stateMachine = stateMachine;\n this.playing = playing;\n this.artboard = artboard;\n /**\n * Caches the inputs from the runtime\n */\n this.inputs = [];\n this.instance = new runtime.StateMachineInstance(stateMachine, artboard);\n this.initInputs(runtime);\n }\n Object.defineProperty(StateMachine.prototype, \"name\", {\n get: function () {\n return this.stateMachine.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateMachine.prototype, \"statesChanged\", {\n /**\n * Returns a list of state names that have changed on this frame\n */\n get: function () {\n var names = [];\n for (var i = 0; i < this.instance.stateChangedCount(); i++) {\n names.push(this.instance.stateChangedNameByIndex(i));\n }\n return names;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Advances the state machine instance by a given time.\n * @param time - the time to advance the animation by in seconds\n */\n StateMachine.prototype.advance = function (time) {\n this.instance.advance(time);\n };\n /**\n * Advances the state machine instance by a given time and apply changes to artboard.\n * @param time - the time to advance the animation by in seconds\n */\n StateMachine.prototype.advanceAndApply = function (time) {\n this.instance.advanceAndApply(time);\n };\n /**\n * Returns the number of events reported from the last advance call\n * @returns Number of events reported\n */\n StateMachine.prototype.reportedEventCount = function () {\n return this.instance.reportedEventCount();\n };\n /**\n * Returns a RiveEvent object emitted from the last advance call at the given index\n * of a list of potentially multiple events. If an event at the index is not found,\n * undefined is returned.\n * @param i index of the event reported in a list of potentially multiple events\n * @returns RiveEvent or extended RiveEvent object returned, or undefined\n */\n StateMachine.prototype.reportedEventAt = function (i) {\n return this.instance.reportedEventAt(i);\n };\n /**\n * Fetches references to the state machine's inputs and caches them\n * @param runtime an instance of the runtime; needed for the SMIInput types\n */\n StateMachine.prototype.initInputs = function (runtime) {\n // Fetch the inputs from the runtime if we don't have them\n for (var i = 0; i < this.instance.inputCount(); i++) {\n var input = this.instance.input(i);\n this.inputs.push(this.mapRuntimeInput(input, runtime));\n }\n };\n /**\n * Maps a runtime input to it's appropriate type\n * @param input\n */\n StateMachine.prototype.mapRuntimeInput = function (input, runtime) {\n if (input.type === runtime.SMIInput.bool) {\n return new StateMachineInput(StateMachineInputType.Boolean, input.asBool());\n }\n else if (input.type === runtime.SMIInput.number) {\n return new StateMachineInput(StateMachineInputType.Number, input.asNumber());\n }\n else if (input.type === runtime.SMIInput.trigger) {\n return new StateMachineInput(StateMachineInputType.Trigger, input.asTrigger());\n }\n };\n /**\n * Deletes the backing Wasm state machine instance; once this is called, this\n * state machine is no more.\n */\n StateMachine.prototype.cleanup = function () {\n this.inputs.forEach(function (input) {\n input.delete();\n });\n this.inputs.length = 0;\n this.instance.delete();\n };\n StateMachine.prototype.bindViewModelInstance = function (viewModelInstance) {\n if (viewModelInstance.runtimeInstance != null) {\n this.instance.bindViewModelInstance(viewModelInstance.runtimeInstance);\n }\n };\n return StateMachine;\n}());\n// #endregion\n// #region animator\n/**\n * Manages animation\n */\nvar Animator = /** @class */ (function () {\n /**\n * Constructs a new animator\n * @constructor\n * @param runtime Rive runtime; needed to instance animations & state machines\n * @param artboard the artboard that holds all animations and state machines\n * @param animations optional list of animations\n * @param stateMachines optional list of state machines\n */\n function Animator(runtime, artboard, eventManager, animations, stateMachines) {\n if (animations === void 0) { animations = []; }\n if (stateMachines === void 0) { stateMachines = []; }\n this.runtime = runtime;\n this.artboard = artboard;\n this.eventManager = eventManager;\n this.animations = animations;\n this.stateMachines = stateMachines;\n }\n /**\n * Adds animations and state machines by their names. If names are shared\n * between animations & state machines, then the first one found will be\n * created. Best not to use the same names for these in your Rive file.\n * @param animatable the name(s) of animations and state machines to add\n * @returns a list of names of the playing animations and state machines\n */\n Animator.prototype.add = function (animatables, playing, fireEvent) {\n if (fireEvent === void 0) { fireEvent = true; }\n animatables = mapToStringArray(animatables);\n // If animatables is empty, play or pause everything\n if (animatables.length === 0) {\n this.animations.forEach(function (a) { return (a.playing = playing); });\n this.stateMachines.forEach(function (m) { return (m.playing = playing); });\n }\n else {\n // Play/pause already instanced items, or create new instances\n var instancedAnimationNames = this.animations.map(function (a) { return a.name; });\n var instancedMachineNames = this.stateMachines.map(function (m) { return m.name; });\n for (var i = 0; i < animatables.length; i++) {\n var aIndex = instancedAnimationNames.indexOf(animatables[i]);\n var mIndex = instancedMachineNames.indexOf(animatables[i]);\n if (aIndex >= 0 || mIndex >= 0) {\n if (aIndex >= 0) {\n // Animation is instanced, play/pause it\n this.animations[aIndex].playing = playing;\n }\n else {\n // State machine is instanced, play/pause it\n this.stateMachines[mIndex].playing = playing;\n }\n }\n else {\n // Try to create a new animation instance\n var anim = this.artboard.animationByName(animatables[i]);\n if (anim) {\n var newAnimation = new _animation__WEBPACK_IMPORTED_MODULE_2__.Animation(anim, this.artboard, this.runtime, playing);\n // Display the first frame of the specified animation\n newAnimation.advance(0);\n newAnimation.apply(1.0);\n this.animations.push(newAnimation);\n }\n else {\n // Try to create a new state machine instance\n var sm = this.artboard.stateMachineByName(animatables[i]);\n if (sm) {\n var newStateMachine = new StateMachine(sm, this.runtime, playing, this.artboard);\n this.stateMachines.push(newStateMachine);\n }\n }\n }\n }\n }\n // Fire play/paused events for animations\n if (fireEvent) {\n if (playing) {\n this.eventManager.fire({\n type: EventType.Play,\n data: this.playing,\n });\n }\n else {\n this.eventManager.fire({\n type: EventType.Pause,\n data: this.paused,\n });\n }\n }\n return playing ? this.playing : this.paused;\n };\n /**\n * Adds linear animations by their names.\n * @param animatables the name(s) of animations to add\n * @param playing whether animations should play on instantiation\n */\n Animator.prototype.initLinearAnimations = function (animatables, playing) {\n // Play/pause already instanced items, or create new instances\n // This validation is kept to maintain compatibility with current behavior.\n // But given that it this is called during artboard initialization\n // it should probably be safe to remove.\n var instancedAnimationNames = this.animations.map(function (a) { return a.name; });\n for (var i = 0; i < animatables.length; i++) {\n var aIndex = instancedAnimationNames.indexOf(animatables[i]);\n if (aIndex >= 0) {\n this.animations[aIndex].playing = playing;\n }\n else {\n // Try to create a new animation instance\n var anim = this.artboard.animationByName(animatables[i]);\n if (anim) {\n var newAnimation = new _animation__WEBPACK_IMPORTED_MODULE_2__.Animation(anim, this.artboard, this.runtime, playing);\n // Display the first frame of the specified animation\n newAnimation.advance(0);\n newAnimation.apply(1.0);\n this.animations.push(newAnimation);\n }\n else {\n console.error(\"Animation with name \".concat(animatables[i], \" not found.\"));\n }\n }\n }\n };\n /**\n * Adds state machines by their names.\n * @param animatables the name(s) of state machines to add\n * @param playing whether state machines should play on instantiation\n */\n Animator.prototype.initStateMachines = function (animatables, playing) {\n // Play/pause already instanced items, or create new instances\n // This validation is kept to maintain compatibility with current behavior.\n // But given that it this is called during artboard initialization\n // it should probably be safe to remove.\n var instancedStateMachineNames = this.stateMachines.map(function (a) { return a.name; });\n for (var i = 0; i < animatables.length; i++) {\n var aIndex = instancedStateMachineNames.indexOf(animatables[i]);\n if (aIndex >= 0) {\n this.stateMachines[aIndex].playing = playing;\n }\n else {\n // Try to create a new state machine instance\n var sm = this.artboard.stateMachineByName(animatables[i]);\n if (sm) {\n var newStateMachine = new StateMachine(sm, this.runtime, playing, this.artboard);\n this.stateMachines.push(newStateMachine);\n if (!playing) {\n newStateMachine.advanceAndApply(0);\n }\n }\n else {\n console.warn(\"State Machine with name \".concat(animatables[i], \" not found.\"));\n // In order to maintain compatibility with current behavior, if a state machine is not found\n // we look for an animation with the same name\n this.initLinearAnimations([animatables[i]], playing);\n }\n }\n }\n };\n /**\n * Play the named animations/state machines\n * @param animatables the names of the animations/machines to play; plays all if empty\n * @returns a list of the playing items\n */\n Animator.prototype.play = function (animatables) {\n return this.add(animatables, true);\n };\n /**\n * Pauses named animations and state machines, or everything if nothing is\n * specified\n * @param animatables names of the animations and state machines to pause\n * @returns a list of names of the animations and state machines paused\n */\n Animator.prototype.pause = function (animatables) {\n return this.add(animatables, false);\n };\n /**\n * Set time of named animations\n * @param animations names of the animations to scrub\n * @param value time scrub value, a floating point number to which the playhead is jumped\n * @returns a list of names of the animations that were scrubbed\n */\n Animator.prototype.scrub = function (animatables, value) {\n var forScrubbing = this.animations.filter(function (a) {\n return animatables.includes(a.name);\n });\n forScrubbing.forEach(function (a) { return (a.scrubTo = value); });\n return forScrubbing.map(function (a) { return a.name; });\n };\n Object.defineProperty(Animator.prototype, \"playing\", {\n /**\n * Returns a list of names of all animations and state machines currently\n * playing\n */\n get: function () {\n return this.animations\n .filter(function (a) { return a.playing; })\n .map(function (a) { return a.name; })\n .concat(this.stateMachines.filter(function (m) { return m.playing; }).map(function (m) { return m.name; }));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animator.prototype, \"paused\", {\n /**\n * Returns a list of names of all animations and state machines currently\n * paused\n */\n get: function () {\n return this.animations\n .filter(function (a) { return !a.playing; })\n .map(function (a) { return a.name; })\n .concat(this.stateMachines.filter(function (m) { return !m.playing; }).map(function (m) { return m.name; }));\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Stops and removes all named animations and state machines\n * @param animatables animations and state machines to remove\n * @returns a list of names of removed items\n */\n Animator.prototype.stop = function (animatables) {\n var _this = this;\n animatables = mapToStringArray(animatables);\n // If nothing's specified, wipe them out, all of them\n var removedNames = [];\n // Stop everything\n if (animatables.length === 0) {\n removedNames = this.animations\n .map(function (a) { return a.name; })\n .concat(this.stateMachines.map(function (m) { return m.name; }));\n // Clean up before emptying the arrays\n this.animations.forEach(function (a) { return a.cleanup(); });\n this.stateMachines.forEach(function (m) { return m.cleanup(); });\n // Empty out the arrays\n this.animations.splice(0, this.animations.length);\n this.stateMachines.splice(0, this.stateMachines.length);\n }\n else {\n // Remove only the named animations/state machines\n var animationsToRemove = this.animations.filter(function (a) {\n return animatables.includes(a.name);\n });\n animationsToRemove.forEach(function (a) {\n a.cleanup();\n _this.animations.splice(_this.animations.indexOf(a), 1);\n });\n var machinesToRemove = this.stateMachines.filter(function (m) {\n return animatables.includes(m.name);\n });\n machinesToRemove.forEach(function (m) {\n m.cleanup();\n _this.stateMachines.splice(_this.stateMachines.indexOf(m), 1);\n });\n removedNames = animationsToRemove\n .map(function (a) { return a.name; })\n .concat(machinesToRemove.map(function (m) { return m.name; }));\n }\n this.eventManager.fire({\n type: EventType.Stop,\n data: removedNames,\n });\n // Return the list of animations removed\n return removedNames;\n };\n Object.defineProperty(Animator.prototype, \"isPlaying\", {\n /**\n * Returns true if at least one animation is active\n */\n get: function () {\n return (this.animations.reduce(function (acc, curr) { return acc || curr.playing; }, false) ||\n this.stateMachines.reduce(function (acc, curr) { return acc || curr.playing; }, false));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animator.prototype, \"isPaused\", {\n /**\n * Returns true if all animations are paused and there's at least one animation\n */\n get: function () {\n return (!this.isPlaying &&\n (this.animations.length > 0 || this.stateMachines.length > 0));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animator.prototype, \"isStopped\", {\n /**\n * Returns true if there are no playing or paused animations/state machines\n */\n get: function () {\n return this.animations.length === 0 && this.stateMachines.length === 0;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * If there are no animations or state machines, add the first one found\n * @returns the name of the animation or state machine instanced\n */\n Animator.prototype.atLeastOne = function (playing, fireEvent) {\n if (fireEvent === void 0) { fireEvent = true; }\n var instancedName;\n if (this.animations.length === 0 && this.stateMachines.length === 0) {\n if (this.artboard.animationCount() > 0) {\n // Add the first animation\n this.add([(instancedName = this.artboard.animationByIndex(0).name)], playing, fireEvent);\n }\n else if (this.artboard.stateMachineCount() > 0) {\n // Add the first state machine\n this.add([(instancedName = this.artboard.stateMachineByIndex(0).name)], playing, fireEvent);\n }\n }\n return instancedName;\n };\n /**\n * Checks if any animations have looped and if so, fire the appropriate event\n */\n Animator.prototype.handleLooping = function () {\n for (var _i = 0, _a = this.animations.filter(function (a) { return a.playing; }); _i < _a.length; _i++) {\n var animation = _a[_i];\n // Emit if the animation looped\n if (animation.loopValue === 0 && animation.loopCount) {\n animation.loopCount = 0;\n // This is a one-shot; if it has ended, delete the instance\n this.stop(animation.name);\n }\n else if (animation.loopValue === 1 && animation.loopCount) {\n this.eventManager.fire({\n type: EventType.Loop,\n data: { animation: animation.name, type: LoopType.Loop },\n });\n animation.loopCount = 0;\n }\n // Wasm indicates a loop at each time the animation\n // changes direction, so a full loop/lap occurs every\n // two loop counts\n else if (animation.loopValue === 2 && animation.loopCount > 1) {\n this.eventManager.fire({\n type: EventType.Loop,\n data: { animation: animation.name, type: LoopType.PingPong },\n });\n animation.loopCount = 0;\n }\n }\n };\n /**\n * Checks if states have changed in state machines and fires a statechange\n * event\n */\n Animator.prototype.handleStateChanges = function () {\n var statesChanged = [];\n for (var _i = 0, _a = this.stateMachines.filter(function (sm) { return sm.playing; }); _i < _a.length; _i++) {\n var stateMachine = _a[_i];\n statesChanged.push.apply(statesChanged, stateMachine.statesChanged);\n }\n if (statesChanged.length > 0) {\n this.eventManager.fire({\n type: EventType.StateChange,\n data: statesChanged,\n });\n }\n };\n Animator.prototype.handleAdvancing = function (time) {\n this.eventManager.fire({\n type: EventType.Advance,\n data: time,\n });\n };\n return Animator;\n}());\n// #endregion\n// #region events\n/**\n * Supported event types triggered in Rive\n */\nvar EventType;\n(function (EventType) {\n EventType[\"Load\"] = \"load\";\n EventType[\"LoadError\"] = \"loaderror\";\n EventType[\"Play\"] = \"play\";\n EventType[\"Pause\"] = \"pause\";\n EventType[\"Stop\"] = \"stop\";\n EventType[\"Loop\"] = \"loop\";\n EventType[\"Draw\"] = \"draw\";\n EventType[\"Advance\"] = \"advance\";\n EventType[\"StateChange\"] = \"statechange\";\n EventType[\"RiveEvent\"] = \"riveevent\";\n EventType[\"AudioStatusChange\"] = \"audiostatuschange\";\n})(EventType || (EventType = {}));\n/**\n * Looping types: one-shot, loop, and ping-pong\n */\nvar LoopType;\n(function (LoopType) {\n LoopType[\"OneShot\"] = \"oneshot\";\n LoopType[\"Loop\"] = \"loop\";\n LoopType[\"PingPong\"] = \"pingpong\";\n})(LoopType || (LoopType = {}));\n// Manages Rive events and listeners\nvar EventManager = /** @class */ (function () {\n function EventManager(listeners) {\n if (listeners === void 0) { listeners = []; }\n this.listeners = listeners;\n }\n // Gets listeners of specified type\n EventManager.prototype.getListeners = function (type) {\n return this.listeners.filter(function (e) { return e.type === type; });\n };\n // Adds a listener\n EventManager.prototype.add = function (listener) {\n if (!this.listeners.includes(listener)) {\n this.listeners.push(listener);\n }\n };\n /**\n * Removes a listener\n * @param listener the listener with the callback to be removed\n */\n EventManager.prototype.remove = function (listener) {\n // We can't simply look for the listener as it'll be a different instance to\n // one originally subscribed. Find all the listeners of the right type and\n // then check their callbacks which should match.\n for (var i = 0; i < this.listeners.length; i++) {\n var currentListener = this.listeners[i];\n if (currentListener.type === listener.type) {\n if (currentListener.callback === listener.callback) {\n this.listeners.splice(i, 1);\n break;\n }\n }\n }\n };\n /**\n * Clears all listeners of specified type, or every listener if no type is\n * specified\n * @param type the type of listeners to clear, or all listeners if not\n * specified\n */\n EventManager.prototype.removeAll = function (type) {\n var _this = this;\n if (!type) {\n this.listeners.splice(0, this.listeners.length);\n }\n else {\n this.listeners\n .filter(function (l) { return l.type === type; })\n .forEach(function (l) { return _this.remove(l); });\n }\n };\n // Fires an event\n EventManager.prototype.fire = function (event) {\n var eventListeners = this.getListeners(event.type);\n eventListeners.forEach(function (listener) { return listener.callback(event); });\n };\n return EventManager;\n}());\n// Manages a queue of tasks\nvar TaskQueueManager = /** @class */ (function () {\n function TaskQueueManager(eventManager) {\n this.eventManager = eventManager;\n this.queue = [];\n }\n // Adds a task top the queue\n TaskQueueManager.prototype.add = function (task) {\n this.queue.push(task);\n };\n // Processes all tasks in the queue\n TaskQueueManager.prototype.process = function () {\n while (this.queue.length > 0) {\n var task = this.queue.shift();\n if (task === null || task === void 0 ? void 0 : task.action) {\n task.action();\n }\n if (task === null || task === void 0 ? void 0 : task.event) {\n this.eventManager.fire(task.event);\n }\n }\n };\n return TaskQueueManager;\n}());\n// #endregion\n// #region Audio\nvar SystemAudioStatus;\n(function (SystemAudioStatus) {\n SystemAudioStatus[SystemAudioStatus[\"AVAILABLE\"] = 0] = \"AVAILABLE\";\n SystemAudioStatus[SystemAudioStatus[\"UNAVAILABLE\"] = 1] = \"UNAVAILABLE\";\n})(SystemAudioStatus || (SystemAudioStatus = {}));\n// Class to handle audio context availability and status changes\nvar AudioManager = /** @class */ (function (_super) {\n __extends(AudioManager, _super);\n function AudioManager() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._started = false;\n _this._enabled = false;\n _this._status = SystemAudioStatus.UNAVAILABLE;\n return _this;\n }\n AudioManager.prototype.delay = function (time) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (resolve) { return setTimeout(resolve, time); })];\n });\n });\n };\n AudioManager.prototype.timeout = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, new Promise(function (_, reject) { return setTimeout(reject, 50); })];\n });\n });\n };\n // Alerts animations on status changes and removes the listeners to avoid alerting twice.\n AudioManager.prototype.reportToListeners = function () {\n this.fire({ type: EventType.AudioStatusChange });\n this.removeAll();\n };\n /**\n * The audio context has been resolved.\n * Alert any listeners that we can now play audio.\n * Rive will now play audio at the configured volume.\n */\n AudioManager.prototype.enableAudio = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this._enabled) {\n this._enabled = true;\n this._status = SystemAudioStatus.AVAILABLE;\n this.reportToListeners();\n }\n return [2 /*return*/];\n });\n });\n };\n /**\n * Check if we are able to play audio.\n *\n * We currently check the audio context, when resume() returns before a timeout we know that the\n * audio context is running and we can enable audio.\n */\n AudioManager.prototype.testAudio = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n if (!(this._status === SystemAudioStatus.UNAVAILABLE &&\n this._audioContext !== null)) return [3 /*break*/, 4];\n _b.label = 1;\n case 1:\n _b.trys.push([1, 3, , 4]);\n return [4 /*yield*/, Promise.race([this._audioContext.resume(), this.timeout()])];\n case 2:\n _b.sent();\n this.enableAudio();\n return [3 /*break*/, 4];\n case 3:\n _a = _b.sent();\n return [3 /*break*/, 4];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n /**\n * Establish audio for use with rive.\n * We both test if we can use audio intermittently and listen for user interaction.\n * The aim is to enable audio playback as soon as the browser allows this.\n */\n AudioManager.prototype._establishAudio = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!this._started) return [3 /*break*/, 5];\n this._started = true;\n if (!(typeof window == \"undefined\")) return [3 /*break*/, 1];\n this.enableAudio();\n return [3 /*break*/, 5];\n case 1:\n this._audioContext = new AudioContext();\n this.listenForUserAction();\n _a.label = 2;\n case 2:\n if (!(this._status === SystemAudioStatus.UNAVAILABLE)) return [3 /*break*/, 5];\n return [4 /*yield*/, this.testAudio()];\n case 3:\n _a.sent();\n return [4 /*yield*/, this.delay(1000)];\n case 4:\n _a.sent();\n return [3 /*break*/, 2];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n AudioManager.prototype.listenForUserAction = function () {\n var _this = this;\n // NOTE: AudioContexts are ready immediately if requested in a ui callback\n // we *could* re request one in this listener.\n var _clickListener = function () { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n // note this has \"better\" results than calling `await this.testAudio()`\n // as we force audio to be enabled in the current thread, rather than chancing\n // the thread to be passed over for some other async context\n this.enableAudio();\n return [2 /*return*/];\n });\n }); };\n // NOTE: we should test this on mobile/pads\n document.addEventListener(\"pointerdown\", _clickListener, {\n once: true,\n });\n };\n /**\n * Establish the audio context for rive, this lets rive know that we can play audio.\n */\n AudioManager.prototype.establishAudio = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n this._establishAudio();\n return [2 /*return*/];\n });\n });\n };\n Object.defineProperty(AudioManager.prototype, \"systemVolume\", {\n get: function () {\n if (this._status === SystemAudioStatus.UNAVAILABLE) {\n // We do an immediate test to avoid depending on the delay of the running test\n this.testAudio();\n return 0;\n }\n return 1;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AudioManager.prototype, \"status\", {\n get: function () {\n return this._status;\n },\n enumerable: false,\n configurable: true\n });\n return AudioManager;\n}(EventManager));\nvar audioManager = new AudioManager();\nvar FakeResizeObserver = /** @class */ (function () {\n function FakeResizeObserver() {\n }\n FakeResizeObserver.prototype.observe = function () { };\n FakeResizeObserver.prototype.unobserve = function () { };\n FakeResizeObserver.prototype.disconnect = function () { };\n return FakeResizeObserver;\n}());\nvar MyResizeObserver = globalThis.ResizeObserver || FakeResizeObserver;\n/**\n * This class takes care of any observers that will be attached to an animation.\n * It should be treated as a singleton because observers are much more performant\n * when used for observing multiple elements by a single instance.\n */\nvar ObjectObservers = /** @class */ (function () {\n function ObjectObservers() {\n var _this = this;\n this._elementsMap = new Map();\n /**\n * Resize observers trigger both when the element changes its size and also when the\n * element is added or removed from the document.\n */\n this._onObservedEntry = function (entry) {\n var observed = _this._elementsMap.get(entry.target);\n if (observed !== null) {\n observed.onResize(entry.target.clientWidth == 0 || entry.target.clientHeight == 0);\n }\n else {\n _this._resizeObserver.unobserve(entry.target);\n }\n };\n this._onObserved = function (entries) {\n entries.forEach(_this._onObservedEntry);\n };\n this._resizeObserver = new MyResizeObserver(this._onObserved);\n }\n // Adds an observable element\n ObjectObservers.prototype.add = function (element, onResize) {\n var observed = {\n onResize: onResize,\n element: element,\n };\n this._elementsMap.set(element, observed);\n this._resizeObserver.observe(element);\n return observed;\n };\n // Removes an observable element\n ObjectObservers.prototype.remove = function (observed) {\n this._resizeObserver.unobserve(observed.element);\n this._elementsMap.delete(observed.element);\n };\n return ObjectObservers;\n}());\nvar observers = new ObjectObservers();\nvar RiveFile = /** @class */ (function () {\n function RiveFile(params) {\n // Allow the runtime to automatically load assets hosted in Rive's runtime.\n this.enableRiveAssetCDN = true;\n this.referenceCount = 0;\n this.destroyed = false;\n this.src = params.src;\n this.buffer = params.buffer;\n if (params.assetLoader)\n this.assetLoader = params.assetLoader;\n this.enableRiveAssetCDN =\n typeof params.enableRiveAssetCDN == \"boolean\"\n ? params.enableRiveAssetCDN\n : true;\n // New event management system\n this.eventManager = new EventManager();\n if (params.onLoad)\n this.on(EventType.Load, params.onLoad);\n if (params.onLoadError)\n this.on(EventType.LoadError, params.onLoadError);\n }\n RiveFile.prototype.initData = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, loader, loaderWrapper, _b;\n var _c;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!this.src) return [3 /*break*/, 2];\n _a = this;\n return [4 /*yield*/, loadRiveFile(this.src)];\n case 1:\n _a.buffer = _d.sent();\n _d.label = 2;\n case 2:\n if (this.destroyed) {\n return [2 /*return*/];\n }\n if (this.assetLoader) {\n loaderWrapper = new _utils__WEBPACK_IMPORTED_MODULE_3__.CustomFileAssetLoaderWrapper(this.runtime, this.assetLoader);\n loader = loaderWrapper.assetLoader;\n }\n // Load the Rive file\n _b = this;\n return [4 /*yield*/, this.runtime.load(new Uint8Array(this.buffer), loader, this.enableRiveAssetCDN)];\n case 3:\n // Load the Rive file\n _b.file = _d.sent();\n if (this.destroyed) {\n (_c = this.file) === null || _c === void 0 ? void 0 : _c.delete();\n this.file = null;\n return [2 /*return*/];\n }\n if (this.file !== null) {\n this.eventManager.fire({\n type: EventType.Load,\n data: this,\n });\n }\n else {\n this.fireLoadError(RiveFile.fileLoadErrorMessage);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n RiveFile.prototype.init = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _a, error_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n // If no source file url specified, it's a bust\n if (!this.src && !this.buffer) {\n this.fireLoadError(RiveFile.missingErrorMessage);\n return [2 /*return*/];\n }\n _b.label = 1;\n case 1:\n _b.trys.push([1, 4, , 5]);\n _a = this;\n return [4 /*yield*/, RuntimeLoader.awaitInstance()];\n case 2:\n _a.runtime = _b.sent();\n if (this.destroyed) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this.initData()];\n case 3:\n _b.sent();\n return [3 /*break*/, 5];\n case 4:\n error_1 = _b.sent();\n this.fireLoadError(error_1 instanceof Error ? error_1.message : RiveFile.fileLoadErrorMessage);\n return [3 /*break*/, 5];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n RiveFile.prototype.fireLoadError = function (message) {\n this.eventManager.fire({\n type: EventType.LoadError,\n data: message,\n });\n throw new Error(message);\n };\n /**\n * Subscribe to Rive-generated events\n * @param type the type of event to subscribe to\n * @param callback callback to fire when the event occurs\n */\n RiveFile.prototype.on = function (type, callback) {\n this.eventManager.add({\n type: type,\n callback: callback,\n });\n };\n /**\n * Unsubscribes from a Rive-generated event\n * @param type the type of event to unsubscribe from\n * @param callback the callback to unsubscribe\n */\n RiveFile.prototype.off = function (type, callback) {\n this.eventManager.remove({\n type: type,\n callback: callback,\n });\n };\n RiveFile.prototype.cleanup = function () {\n var _a;\n this.referenceCount -= 1;\n if (this.referenceCount <= 0) {\n this.removeAllRiveEventListeners();\n (_a = this.file) === null || _a === void 0 ? void 0 : _a.delete();\n this.file = null;\n this.destroyed = true;\n }\n };\n /**\n * Unsubscribes all Rive listeners from an event type, or everything if no type is\n * given\n * @param type the type of event to unsubscribe from, or all types if\n * undefined\n */\n RiveFile.prototype.removeAllRiveEventListeners = function (type) {\n this.eventManager.removeAll(type);\n };\n RiveFile.prototype.getInstance = function () {\n if (this.file !== null) {\n this.referenceCount += 1;\n return this.file;\n }\n };\n // Error message for missing source or buffer\n RiveFile.missingErrorMessage = \"Rive source file or data buffer required\";\n // Error message for file load error\n RiveFile.fileLoadErrorMessage = \"The file failed to load\";\n return RiveFile;\n}());\n\nvar Rive = /** @class */ (function () {\n function Rive(params) {\n var _this = this;\n var _a;\n // Tracks if a Rive file is loaded\n this.loaded = false;\n // Tracks if a Rive file is destroyed\n this.destroyed = false;\n // Reference of an object that handles any observers for the animation\n this._observed = null;\n /**\n * Tracks if a Rive file is loaded; we need this in addition to loaded as some\n * commands (e.g. contents) can be called as soon as the file is loaded.\n * However, playback commands need to be queued and run in order once initial\n * animations and autoplay has been sorted out. This applies to play, pause,\n * and start.\n */\n this.readyForPlaying = false;\n // Runtime artboard\n this.artboard = null;\n // place to clear up event listeners\n this.eventCleanup = null;\n this.shouldDisableRiveListeners = false;\n this.automaticallyHandleEvents = false;\n // Allow the runtime to automatically load assets hosted in Rive's runtime.\n this.enableRiveAssetCDN = true;\n // Keep a local value of the set volume to update it asynchronously\n this._volume = 1;\n // Keep a local value of the set width to update it asynchronously\n this._artboardWidth = undefined;\n // Keep a local value of the set height to update it asynchronously\n this._artboardHeight = undefined;\n // Keep a local value of the device pixel ratio used in rendering and canvas/artboard resizing\n this._devicePixelRatioUsed = 1;\n // Whether the canvas element's size is 0\n this._hasZeroSize = false;\n // Audio event listener\n this._audioEventListener = null;\n // draw method bound to the class\n this._boundDraw = null;\n this._viewModelInstance = null;\n this._dataEnums = null;\n // Durations to generate a frame for the last second. Used for performance profiling.\n this.durations = [];\n this.frameTimes = [];\n this.frameCount = 0;\n this.isTouchScrollEnabled = false;\n this.onCanvasResize = function (hasZeroSize) {\n var toggledDisplay = _this._hasZeroSize !== hasZeroSize;\n _this._hasZeroSize = hasZeroSize;\n if (!hasZeroSize) {\n if (toggledDisplay) {\n _this.resizeDrawingSurfaceToCanvas();\n }\n }\n else if (!_this._layout.maxX || !_this._layout.maxY) {\n _this.resizeToCanvas();\n }\n };\n /**\n * Used be draw to track when a second of active rendering time has passed.\n * Used for debugging purposes\n */\n this.renderSecondTimer = 0;\n this._boundDraw = this.draw.bind(this);\n this.canvas = params.canvas;\n if (params.canvas.constructor === HTMLCanvasElement) {\n this._observed = observers.add(this.canvas, this.onCanvasResize);\n }\n this.src = params.src;\n this.buffer = params.buffer;\n this.riveFile = params.riveFile;\n this.layout = (_a = params.layout) !== null && _a !== void 0 ? _a : new Layout();\n this.shouldDisableRiveListeners = !!params.shouldDisableRiveListeners;\n this.isTouchScrollEnabled = !!params.isTouchScrollEnabled;\n this.automaticallyHandleEvents = !!params.automaticallyHandleEvents;\n this.enableRiveAssetCDN =\n params.enableRiveAssetCDN === undefined\n ? true\n : params.enableRiveAssetCDN;\n // New event management system\n this.eventManager = new EventManager();\n if (params.onLoad)\n this.on(EventType.Load, params.onLoad);\n if (params.onLoadError)\n this.on(EventType.LoadError, params.onLoadError);\n if (params.onPlay)\n this.on(EventType.Play, params.onPlay);\n if (params.onPause)\n this.on(EventType.Pause, params.onPause);\n if (params.onStop)\n this.on(EventType.Stop, params.onStop);\n if (params.onLoop)\n this.on(EventType.Loop, params.onLoop);\n if (params.onStateChange)\n this.on(EventType.StateChange, params.onStateChange);\n if (params.onAdvance)\n this.on(EventType.Advance, params.onAdvance);\n /**\n * @deprecated Use camelCase'd versions instead.\n */\n if (params.onload && !params.onLoad)\n this.on(EventType.Load, params.onload);\n if (params.onloaderror && !params.onLoadError)\n this.on(EventType.LoadError, params.onloaderror);\n if (params.onplay && !params.onPlay)\n this.on(EventType.Play, params.onplay);\n if (params.onpause && !params.onPause)\n this.on(EventType.Pause, params.onpause);\n if (params.onstop && !params.onStop)\n this.on(EventType.Stop, params.onstop);\n if (params.onloop && !params.onLoop)\n this.on(EventType.Loop, params.onloop);\n if (params.onstatechange && !params.onStateChange)\n this.on(EventType.StateChange, params.onstatechange);\n /**\n * Asset loading\n */\n if (params.assetLoader)\n this.assetLoader = params.assetLoader;\n // Hook up the task queue\n this.taskQueue = new TaskQueueManager(this.eventManager);\n this.init({\n src: this.src,\n buffer: this.buffer,\n riveFile: this.riveFile,\n autoplay: params.autoplay,\n autoBind: params.autoBind,\n animations: params.animations,\n stateMachines: params.stateMachines,\n artboard: params.artboard,\n useOffscreenRenderer: params.useOffscreenRenderer,\n });\n }\n Object.defineProperty(Rive.prototype, \"viewModelCount\", {\n get: function () {\n return this.file.viewModelCount();\n },\n enumerable: false,\n configurable: true\n });\n // Alternative constructor to build a Rive instance from an interface/object\n Rive.new = function (params) {\n console.warn(\"This function is deprecated: please use `new Rive({})` instead\");\n return new Rive(params);\n };\n // Event handler for when audio context becomes available\n Rive.prototype.onSystemAudioChanged = function () {\n this.volume = this._volume;\n };\n // Initializes the Rive object either from constructor or load()\n Rive.prototype.init = function (_a) {\n var _this = this;\n var src = _a.src, buffer = _a.buffer, riveFile = _a.riveFile, animations = _a.animations, stateMachines = _a.stateMachines, artboard = _a.artboard, _b = _a.autoplay, autoplay = _b === void 0 ? false : _b, _c = _a.useOffscreenRenderer, useOffscreenRenderer = _c === void 0 ? false : _c, _d = _a.autoBind, autoBind = _d === void 0 ? false : _d;\n if (this.destroyed) {\n return;\n }\n this.src = src;\n this.buffer = buffer;\n this.riveFile = riveFile;\n // If no source file url specified, it's a bust\n if (!this.src && !this.buffer && !this.riveFile) {\n throw new RiveError(Rive.missingErrorMessage);\n }\n // List of animations that should be initialized.\n var startingAnimationNames = mapToStringArray(animations);\n // List of state machines that should be initialized\n var startingStateMachineNames = mapToStringArray(stateMachines);\n // Ensure loaded is marked as false if loading new file\n this.loaded = false;\n this.readyForPlaying = false;\n // Ensure the runtime is loaded\n RuntimeLoader.awaitInstance()\n .then(function (runtime) {\n if (_this.destroyed) {\n return;\n }\n _this.runtime = runtime;\n _this.removeRiveListeners();\n _this.deleteRiveRenderer();\n // Get the canvas where you want to render the animation and create a renderer\n _this.renderer = _this.runtime.makeRenderer(_this.canvas, useOffscreenRenderer);\n // Initial size adjustment based on devicePixelRatio if no width/height are\n // specified explicitly\n if (!(_this.canvas.width || _this.canvas.height)) {\n _this.resizeDrawingSurfaceToCanvas();\n }\n // Load Rive data from a source uri or a data buffer\n _this.initData(artboard, startingAnimationNames, startingStateMachineNames, autoplay, autoBind)\n .then(function (hasInitialized) {\n if (hasInitialized) {\n return _this.setupRiveListeners();\n }\n })\n .catch(function (e) {\n console.error(e);\n });\n })\n .catch(function (e) {\n console.error(e);\n });\n };\n /**\n * Setup Rive Listeners on the canvas\n * @param riveListenerOptions - Enables TouchEvent events on the canvas. Set to true to allow\n * touch scrolling on the canvas element on touch-enabled devices\n * i.e. { isTouchScrollEnabled: true }\n */\n Rive.prototype.setupRiveListeners = function (riveListenerOptions) {\n var _this = this;\n if (this.eventCleanup) {\n this.eventCleanup();\n }\n if (!this.shouldDisableRiveListeners) {\n var activeStateMachines = (this.animator.stateMachines || [])\n .filter(function (sm) { return sm.playing && _this.runtime.hasListeners(sm.instance); })\n .map(function (sm) { return sm.instance; });\n var touchScrollEnabledOption = this.isTouchScrollEnabled;\n if (riveListenerOptions &&\n \"isTouchScrollEnabled\" in riveListenerOptions) {\n touchScrollEnabledOption = riveListenerOptions.isTouchScrollEnabled;\n }\n this.eventCleanup = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.registerTouchInteractions)({\n canvas: this.canvas,\n artboard: this.artboard,\n stateMachines: activeStateMachines,\n renderer: this.renderer,\n rive: this.runtime,\n fit: this._layout.runtimeFit(this.runtime),\n alignment: this._layout.runtimeAlignment(this.runtime),\n isTouchScrollEnabled: touchScrollEnabledOption,\n layoutScaleFactor: this._layout.layoutScaleFactor,\n });\n }\n };\n /**\n * Remove Rive Listeners setup on the canvas\n */\n Rive.prototype.removeRiveListeners = function () {\n if (this.eventCleanup) {\n this.eventCleanup();\n this.eventCleanup = null;\n }\n };\n /**\n * If the instance has audio and the system audio is not ready\n * we hook the instance to the audio manager\n */\n Rive.prototype.initializeAudio = function () {\n var _this = this;\n var _a;\n // Initialize audio if needed\n if (audioManager.status == SystemAudioStatus.UNAVAILABLE) {\n if (((_a = this.artboard) === null || _a === void 0 ? void 0 : _a.hasAudio) && this._audioEventListener === null) {\n this._audioEventListener = {\n type: EventType.AudioStatusChange,\n callback: function () { return _this.onSystemAudioChanged(); },\n };\n audioManager.add(this._audioEventListener);\n audioManager.establishAudio();\n }\n }\n };\n Rive.prototype.initArtboardSize = function () {\n if (!this.artboard)\n return;\n // Use preset values if they are not undefined\n this._artboardWidth = this.artboard.width =\n this._artboardWidth || this.artboard.width;\n this._artboardHeight = this.artboard.height =\n this._artboardHeight || this.artboard.height;\n };\n // Initializes runtime with Rive data and preps for playing.\n // Returns true for successful initialization.\n Rive.prototype.initData = function (artboardName, animationNames, stateMachineNames, autoplay, autoBind) {\n return __awaiter(this, void 0, void 0, function () {\n var error_2, msg;\n var _a;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 3, , 4]);\n if (!(this.riveFile == null)) return [3 /*break*/, 2];\n this.riveFile = new RiveFile({\n src: this.src,\n buffer: this.buffer,\n enableRiveAssetCDN: this.enableRiveAssetCDN,\n assetLoader: this.assetLoader,\n });\n return [4 /*yield*/, this.riveFile.init()];\n case 1:\n _b.sent();\n _b.label = 2;\n case 2:\n // Check for riveFile in case it has been cleaned up while initializing;\n if (!this.riveFile) {\n return [2 /*return*/, false];\n }\n this.file = this.riveFile.getInstance();\n // Initialize and draw frame\n this.initArtboard(artboardName, animationNames, stateMachineNames, autoplay, autoBind);\n // Initialize the artboard size\n this.initArtboardSize();\n // Check for audio\n this.initializeAudio();\n // Everything's set up, emit a load event\n this.loaded = true;\n this.eventManager.fire({\n type: EventType.Load,\n data: (_a = this.src) !== null && _a !== void 0 ? _a : \"buffer\",\n });\n // Flag ready for playback commands and clear the task queue; this order\n // is important or it may infinitely recurse\n this.readyForPlaying = true;\n this.taskQueue.process();\n this.drawFrame();\n return [2 /*return*/, true];\n case 3:\n error_2 = _b.sent();\n msg = resolveErrorMessage(error_2);\n console.warn(msg);\n this.eventManager.fire({ type: EventType.LoadError, data: msg });\n return [2 /*return*/, Promise.reject(msg)];\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n // Initialize for playback\n Rive.prototype.initArtboard = function (artboardName, animationNames, stateMachineNames, autoplay, autoBind) {\n if (!this.file) {\n return;\n }\n // Fetch the artboard\n var rootArtboard = artboardName\n ? this.file.artboardByName(artboardName)\n : this.file.defaultArtboard();\n // Check we have a working artboard\n if (!rootArtboard) {\n var msg = \"Invalid artboard name or no default artboard\";\n console.warn(msg);\n this.eventManager.fire({ type: EventType.LoadError, data: msg });\n return;\n }\n this.artboard = rootArtboard;\n rootArtboard.volume = this._volume * audioManager.systemVolume;\n // Check that the artboard has at least 1 animation\n if (this.artboard.animationCount() < 1) {\n var msg = \"Artboard has no animations\";\n this.eventManager.fire({ type: EventType.LoadError, data: msg });\n throw msg;\n }\n // Initialize the animator\n this.animator = new Animator(this.runtime, this.artboard, this.eventManager);\n // Initialize the animations; as loaded hasn't happened yet, we need to\n // suppress firing the play/pause events until the load event has fired. To\n // do this we tell the animator to suppress firing events, and add event\n // firing to the task queue.\n var instanceNames;\n if (animationNames.length > 0 || stateMachineNames.length > 0) {\n instanceNames = animationNames.concat(stateMachineNames);\n this.animator.initLinearAnimations(animationNames, autoplay);\n this.animator.initStateMachines(stateMachineNames, autoplay);\n }\n else {\n instanceNames = [this.animator.atLeastOne(autoplay, false)];\n }\n // Queue up firing the playback events\n this.taskQueue.add({\n event: {\n type: autoplay ? EventType.Play : EventType.Pause,\n data: instanceNames,\n },\n });\n if (autoBind) {\n var viewModel = this.file.defaultArtboardViewModel(rootArtboard);\n if (viewModel !== null) {\n var runtimeInstance = viewModel.defaultInstance();\n if (runtimeInstance !== null) {\n var viewModelInstance = new ViewModelInstance(runtimeInstance, null);\n this.bindViewModelInstance(viewModelInstance);\n }\n }\n }\n };\n // Draws the current artboard frame\n Rive.prototype.drawFrame = function () {\n var _a, _b;\n if ((_a = document === null || document === void 0 ? void 0 : document.timeline) === null || _a === void 0 ? void 0 : _a.currentTime) {\n if (this.loaded && this.artboard && !this.frameRequestId) {\n this._boundDraw(document.timeline.currentTime);\n (_b = this.runtime) === null || _b === void 0 ? void 0 : _b.resolveAnimationFrame();\n }\n }\n else {\n this.startRendering();\n }\n };\n /**\n * Draw rendering loop; renders animation frames at the correct time interval.\n * @param time the time at which to render a frame\n */\n Rive.prototype.draw = function (time, onSecond) {\n var _a;\n // Clear the frameRequestId, as we're now rendering a fresh frame\n this.frameRequestId = null;\n var before = performance.now();\n // On the first pass, make sure lastTime has a valid value\n if (!this.lastRenderTime) {\n this.lastRenderTime = time;\n }\n // Handle the onSecond callback\n this.renderSecondTimer += time - this.lastRenderTime;\n if (this.renderSecondTimer > 5000) {\n this.renderSecondTimer = 0;\n onSecond === null || onSecond === void 0 ? void 0 : onSecond();\n }\n // Calculate the elapsed time between frames in seconds\n var elapsedTime = (time - this.lastRenderTime) / 1000;\n this.lastRenderTime = time;\n // - Advance non-paused animations by the elapsed number of seconds\n // - Advance any animations that require scrubbing\n // - Advance to the first frame even when autoplay is false\n var activeAnimations = this.animator.animations\n .filter(function (a) { return a.playing || a.needsScrub; })\n // The scrubbed animations must be applied first to prevent weird artifacts\n // if the playing animations conflict with the scrubbed animating attribuates.\n .sort(function (first) { return (first.needsScrub ? -1 : 1); });\n for (var _i = 0, activeAnimations_1 = activeAnimations; _i < activeAnimations_1.length; _i++) {\n var animation = activeAnimations_1[_i];\n animation.advance(elapsedTime);\n if (animation.instance.didLoop) {\n animation.loopCount += 1;\n }\n animation.apply(1.0);\n }\n // - Advance non-paused state machines by the elapsed number of seconds\n // - Advance to the first frame even when autoplay is false\n var activeStateMachines = this.animator.stateMachines.filter(function (a) { return a.playing; });\n for (var _b = 0, activeStateMachines_1 = activeStateMachines; _b < activeStateMachines_1.length; _b++) {\n var stateMachine = activeStateMachines_1[_b];\n // Check for events before the current frame's state machine advance\n var numEventsReported = stateMachine.reportedEventCount();\n if (numEventsReported) {\n for (var i = 0; i < numEventsReported; i++) {\n var event_1 = stateMachine.reportedEventAt(i);\n if (event_1) {\n if (event_1.type === RiveEventType.OpenUrl) {\n this.eventManager.fire({\n type: EventType.RiveEvent,\n data: event_1,\n });\n // Handle the event side effect if explicitly enabled\n if (this.automaticallyHandleEvents) {\n var newAnchorTag = document.createElement(\"a\");\n var _c = event_1, url = _c.url, target = _c.target;\n var sanitizedUrl = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.sanitizeUrl)(url);\n url && newAnchorTag.setAttribute(\"href\", sanitizedUrl);\n target && newAnchorTag.setAttribute(\"target\", target);\n if (sanitizedUrl && sanitizedUrl !== _utils__WEBPACK_IMPORTED_MODULE_3__.BLANK_URL) {\n newAnchorTag.click();\n }\n }\n }\n else {\n this.eventManager.fire({\n type: EventType.RiveEvent,\n data: event_1,\n });\n }\n }\n }\n }\n stateMachine.advanceAndApply(elapsedTime);\n // stateMachine.instance.apply(this.artboard);\n }\n // Once the animations have been applied to the artboard, advance it\n // by the elapsed time.\n if (this.animator.stateMachines.length == 0) {\n this.artboard.advance(elapsedTime);\n }\n var renderer = this.renderer;\n // Canvas must be wiped to prevent artifacts\n renderer.clear();\n renderer.save();\n // Update the renderer alignment if necessary\n this.alignRenderer();\n // Do not draw on 0 canvas size\n if (!this._hasZeroSize) {\n this.artboard.draw(renderer);\n }\n renderer.restore();\n renderer.flush();\n // Check for any animations that looped\n this.animator.handleLooping();\n // Check for any state machines that had a state change\n this.animator.handleStateChanges();\n // Report advanced time\n this.animator.handleAdvancing(elapsedTime);\n // Add duration to create frame to durations array\n this.frameCount++;\n var after = performance.now();\n this.frameTimes.push(after);\n this.durations.push(after - before);\n while (this.frameTimes[0] <= after - 1000) {\n this.frameTimes.shift();\n this.durations.shift();\n }\n (_a = this._viewModelInstance) === null || _a === void 0 ? void 0 : _a.handleCallbacks();\n // Calling requestAnimationFrame will rerun draw() at the correct rate:\n // https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Basic_animations\n if (this.animator.isPlaying) {\n // Request a new rendering frame\n this.startRendering();\n }\n else if (this.animator.isPaused) {\n // Reset the end time so on playback it starts at the correct frame\n this.lastRenderTime = 0;\n }\n else if (this.animator.isStopped) {\n // Reset animation instances, artboard and time\n // TODO: implement this properly when we have instancing\n // this.initArtboard();\n // this.drawFrame();\n this.lastRenderTime = 0;\n }\n };\n /**\n * Align the renderer\n */\n Rive.prototype.alignRenderer = function () {\n var _a = this, renderer = _a.renderer, runtime = _a.runtime, _layout = _a._layout, artboard = _a.artboard;\n // Align things up safe in the knowledge we can restore if changed\n renderer.align(_layout.runtimeFit(runtime), _layout.runtimeAlignment(runtime), {\n minX: _layout.minX,\n minY: _layout.minY,\n maxX: _layout.maxX,\n maxY: _layout.maxY,\n }, artboard.bounds, this._devicePixelRatioUsed * _layout.layoutScaleFactor);\n };\n Object.defineProperty(Rive.prototype, \"fps\", {\n get: function () {\n return this.durations.length;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"frameTime\", {\n get: function () {\n if (this.durations.length === 0) {\n return 0;\n }\n return (this.durations.reduce(function (a, b) { return a + b; }, 0) / this.durations.length).toFixed(4);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Cleans up all Wasm-generated objects that need to be manually destroyed:\n * artboard instances, animation instances, state machine instances,\n * renderer instance, file and runtime.\n *\n * Once this is called, you will need to initialise a new instance of the\n * Rive class\n */\n Rive.prototype.cleanup = function () {\n var _a, _b;\n this.destroyed = true;\n // Stop the renderer if it hasn't already been stopped.\n this.stopRendering();\n // Clean up any artboard, animation or state machine instances.\n this.cleanupInstances();\n // Remove from observer\n if (this._observed !== null) {\n observers.remove(this._observed);\n }\n this.removeRiveListeners();\n if (this.file) {\n (_a = this.riveFile) === null || _a === void 0 ? void 0 : _a.cleanup();\n this.file = null;\n }\n this.riveFile = null;\n this.deleteRiveRenderer();\n if (this._audioEventListener !== null) {\n audioManager.remove(this._audioEventListener);\n this._audioEventListener = null;\n }\n (_b = this._viewModelInstance) === null || _b === void 0 ? void 0 : _b.cleanup();\n this._viewModelInstance = null;\n this._dataEnums = null;\n };\n /**\n * Cleans up the Renderer object. Only call this API if you no longer\n * need to render Rive content in your session.\n */\n Rive.prototype.deleteRiveRenderer = function () {\n var _a;\n (_a = this.renderer) === null || _a === void 0 ? void 0 : _a.delete();\n this.renderer = null;\n };\n /**\n * Cleans up any Wasm-generated objects that need to be manually destroyed:\n * artboard instances, animation instances, state machine instances.\n *\n * Once this is called, things will need to be reinitialized or bad things\n * might happen.\n */\n Rive.prototype.cleanupInstances = function () {\n if (this.eventCleanup !== null) {\n this.eventCleanup();\n }\n // Delete all animation and state machine instances\n this.stop();\n if (this.artboard) {\n this.artboard.delete();\n this.artboard = null;\n }\n };\n /**\n * Tries to query the setup Artboard for a text run node with the given name.\n *\n * @param textRunName - Name of the text run node associated with a text object\n * @returns - TextValueRun node or undefined if the text run cannot be queried\n */\n Rive.prototype.retrieveTextRun = function (textRunName) {\n var _a;\n if (!textRunName) {\n console.warn(\"No text run name provided\");\n return;\n }\n if (!this.artboard) {\n console.warn(\"Tried to access text run, but the Artboard is null\");\n return;\n }\n var textRun = this.artboard.textRun(textRunName);\n if (!textRun) {\n console.warn(\"Could not access a text run with name '\".concat(textRunName, \"' in the '\").concat((_a = this.artboard) === null || _a === void 0 ? void 0 : _a.name, \"' Artboard. Note that you must rename a text run node in the Rive editor to make it queryable at runtime.\"));\n return;\n }\n return textRun;\n };\n /**\n * Returns a string from a given text run node name, or undefined if the text run\n * cannot be queried.\n *\n * @param textRunName - Name of the text run node associated with a text object\n * @returns - String value of the text run node or undefined\n */\n Rive.prototype.getTextRunValue = function (textRunName) {\n var textRun = this.retrieveTextRun(textRunName);\n return textRun ? textRun.text : undefined;\n };\n /**\n * Sets a text value for a given text run node name if possible\n *\n * @param textRunName - Name of the text run node associated with a text object\n * @param textRunValue - String value to set on the text run node\n */\n Rive.prototype.setTextRunValue = function (textRunName, textRunValue) {\n var textRun = this.retrieveTextRun(textRunName);\n if (textRun) {\n textRun.text = textRunValue;\n }\n };\n // Plays specified animations; if none specified, it unpauses everything.\n Rive.prototype.play = function (animationNames, autoplay) {\n var _this = this;\n animationNames = mapToStringArray(animationNames);\n // If the file's not loaded, queue up the play\n if (!this.readyForPlaying) {\n this.taskQueue.add({\n action: function () { return _this.play(animationNames, autoplay); },\n });\n return;\n }\n this.animator.play(animationNames);\n if (this.eventCleanup) {\n this.eventCleanup();\n }\n this.setupRiveListeners();\n this.startRendering();\n };\n // Pauses specified animations; if none specified, pauses all.\n Rive.prototype.pause = function (animationNames) {\n var _this = this;\n animationNames = mapToStringArray(animationNames);\n // If the file's not loaded, early out, nothing to pause\n if (!this.readyForPlaying) {\n this.taskQueue.add({\n action: function () { return _this.pause(animationNames); },\n });\n return;\n }\n if (this.eventCleanup) {\n this.eventCleanup();\n }\n this.animator.pause(animationNames);\n };\n Rive.prototype.scrub = function (animationNames, value) {\n var _this = this;\n animationNames = mapToStringArray(animationNames);\n // If the file's not loaded, early out, nothing to pause\n if (!this.readyForPlaying) {\n this.taskQueue.add({\n action: function () { return _this.scrub(animationNames, value); },\n });\n return;\n }\n // Scrub the animation time; we draw a single frame here so that if\n // nothing's currently playing, the scrubbed animation is still rendered/\n this.animator.scrub(animationNames, value || 0);\n this.drawFrame();\n };\n // Stops specified animations; if none specifies, stops them all.\n Rive.prototype.stop = function (animationNames) {\n var _this = this;\n animationNames = mapToStringArray(animationNames);\n // If the file's not loaded, early out, nothing to pause\n if (!this.readyForPlaying) {\n this.taskQueue.add({\n action: function () { return _this.stop(animationNames); },\n });\n return;\n }\n // If there is no artboard, this.animator will be undefined\n if (this.animator) {\n this.animator.stop(animationNames);\n }\n if (this.eventCleanup) {\n this.eventCleanup();\n }\n };\n /**\n * Resets the animation\n * @param artboard the name of the artboard, or default if none given\n * @param animations the names of animations for playback\n * @param stateMachines the names of state machines for playback\n * @param autoplay whether to autoplay when reset, defaults to false\n *\n */\n Rive.prototype.reset = function (params) {\n var _a, _b;\n // Get the current artboard, animations, state machines, and playback states\n var artBoardName = params === null || params === void 0 ? void 0 : params.artboard;\n var animationNames = mapToStringArray(params === null || params === void 0 ? void 0 : params.animations);\n var stateMachineNames = mapToStringArray(params === null || params === void 0 ? void 0 : params.stateMachines);\n var autoplay = (_a = params === null || params === void 0 ? void 0 : params.autoplay) !== null && _a !== void 0 ? _a : false;\n var autoBind = (_b = params === null || params === void 0 ? void 0 : params.autoBind) !== null && _b !== void 0 ? _b : false;\n // Stop everything and clean up\n this.cleanupInstances();\n // Reinitialize an artboard instance with the state\n this.initArtboard(artBoardName, animationNames, stateMachineNames, autoplay, autoBind);\n this.taskQueue.process();\n };\n // Loads a new Rive file, keeping listeners in place\n Rive.prototype.load = function (params) {\n this.file = null;\n // Stop all animations\n this.stop();\n // Reinitialize\n this.init(params);\n };\n Object.defineProperty(Rive.prototype, \"layout\", {\n /**\n * Returns the current layout. Note that layout should be treated as\n * immutable. If you want to change the layout, create a new one use the\n * layout setter\n */\n get: function () {\n return this._layout;\n },\n // Sets a new layout\n set: function (layout) {\n this._layout = layout;\n // If the maxX or maxY are 0, then set them to the canvas width and height\n if (!layout.maxX || !layout.maxY) {\n this.resizeToCanvas();\n }\n if (this.loaded && !this.animator.isPlaying) {\n this.drawFrame();\n }\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Sets the layout bounds to the current canvas size; this is typically called\n * when the canvas is resized\n */\n Rive.prototype.resizeToCanvas = function () {\n this._layout = this.layout.copyWith({\n minX: 0,\n minY: 0,\n maxX: this.canvas.width,\n maxY: this.canvas.height,\n });\n };\n /**\n * Accounts for devicePixelRatio as a multiplier to render the size of the canvas drawing surface.\n * Uses the size of the backing canvas to set new width/height attributes. Need to re-render\n * and resize the layout to match the new drawing surface afterwards.\n * Useful function for consumers to include in a window resize listener.\n *\n * This method will set the {@link devicePixelRatioUsed} property.\n *\n * Optionally, you can provide a {@link customDevicePixelRatio} to provide a\n * custom value.\n */\n Rive.prototype.resizeDrawingSurfaceToCanvas = function (customDevicePixelRatio) {\n if (this.canvas instanceof HTMLCanvasElement && !!window) {\n var _a = this.canvas.getBoundingClientRect(), width = _a.width, height = _a.height;\n var dpr = customDevicePixelRatio || window.devicePixelRatio || 1;\n this.devicePixelRatioUsed = dpr;\n this.canvas.width = dpr * width;\n this.canvas.height = dpr * height;\n this.resizeToCanvas();\n this.drawFrame();\n if (this.layout.fit === Fit.Layout) {\n var scaleFactor = this._layout.layoutScaleFactor;\n this.artboard.width = width / scaleFactor;\n this.artboard.height = height / scaleFactor;\n }\n }\n };\n Object.defineProperty(Rive.prototype, \"source\", {\n // Returns the animation source, which may be undefined\n get: function () {\n return this.src;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"activeArtboard\", {\n /**\n * Returns the name of the active artboard\n */\n get: function () {\n return this.artboard ? this.artboard.name : \"\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"animationNames\", {\n // Returns a list of animation names on the chosen artboard\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded || !this.artboard) {\n return [];\n }\n var animationNames = [];\n for (var i = 0; i < this.artboard.animationCount(); i++) {\n animationNames.push(this.artboard.animationByIndex(i).name);\n }\n return animationNames;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"stateMachineNames\", {\n /**\n * Returns a list of state machine names from the current artboard\n */\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded || !this.artboard) {\n return [];\n }\n var stateMachineNames = [];\n for (var i = 0; i < this.artboard.stateMachineCount(); i++) {\n stateMachineNames.push(this.artboard.stateMachineByIndex(i).name);\n }\n return stateMachineNames;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Returns the inputs for the specified instanced state machine, or an empty\n * list if the name is invalid or the state machine is not instanced\n * @param name the state machine name\n * @returns the inputs for the named state machine\n */\n Rive.prototype.stateMachineInputs = function (name) {\n // If the file's not loaded, early out, nothing to pause\n if (!this.loaded) {\n return;\n }\n var stateMachine = this.animator.stateMachines.find(function (m) { return m.name === name; });\n return stateMachine === null || stateMachine === void 0 ? void 0 : stateMachine.inputs;\n };\n // Returns the input with the provided name at the given path\n Rive.prototype.retrieveInputAtPath = function (name, path) {\n if (!name) {\n console.warn(\"No input name provided for path '\".concat(path, \"'\"));\n return;\n }\n if (!this.artboard) {\n console.warn(\"Tried to access input: '\".concat(name, \"', at path: '\").concat(path, \"', but the Artboard is null\"));\n return;\n }\n var input = this.artboard.inputByPath(name, path);\n if (!input) {\n console.warn(\"Could not access an input with name: '\".concat(name, \"', at path:'\").concat(path, \"'\"));\n return;\n }\n return input;\n };\n /**\n * Set the boolean input with the provided name at the given path with value\n * @param input the state machine input name\n * @param value the value to set the input to\n * @param path the path the input is located at an artboard level\n */\n Rive.prototype.setBooleanStateAtPath = function (inputName, value, path) {\n var input = this.retrieveInputAtPath(inputName, path);\n if (!input)\n return;\n if (input.type === StateMachineInputType.Boolean) {\n input.asBool().value = value;\n }\n else {\n console.warn(\"Input with name: '\".concat(inputName, \"', at path:'\").concat(path, \"' is not a boolean\"));\n }\n };\n /**\n * Set the number input with the provided name at the given path with value\n * @param input the state machine input name\n * @param value the value to set the input to\n * @param path the path the input is located at an artboard level\n */\n Rive.prototype.setNumberStateAtPath = function (inputName, value, path) {\n var input = this.retrieveInputAtPath(inputName, path);\n if (!input)\n return;\n if (input.type === StateMachineInputType.Number) {\n input.asNumber().value = value;\n }\n else {\n console.warn(\"Input with name: '\".concat(inputName, \"', at path:'\").concat(path, \"' is not a number\"));\n }\n };\n /**\n * Fire the trigger with the provided name at the given path\n * @param input the state machine input name\n * @param path the path the input is located at an artboard level\n */\n Rive.prototype.fireStateAtPath = function (inputName, path) {\n var input = this.retrieveInputAtPath(inputName, path);\n if (!input)\n return;\n if (input.type === StateMachineInputType.Trigger) {\n input.asTrigger().fire();\n }\n else {\n console.warn(\"Input with name: '\".concat(inputName, \"', at path:'\").concat(path, \"' is not a trigger\"));\n }\n };\n // Returns the TextValueRun object for the provided name at the given path\n Rive.prototype.retrieveTextAtPath = function (name, path) {\n if (!name) {\n console.warn(\"No text name provided for path '\".concat(path, \"'\"));\n return;\n }\n if (!path) {\n console.warn(\"No path provided for text '\".concat(name, \"'\"));\n return;\n }\n if (!this.artboard) {\n console.warn(\"Tried to access text: '\".concat(name, \"', at path: '\").concat(path, \"', but the Artboard is null\"));\n return;\n }\n var text = this.artboard.textByPath(name, path);\n if (!text) {\n console.warn(\"Could not access text with name: '\".concat(name, \"', at path:'\").concat(path, \"'\"));\n return;\n }\n return text;\n };\n /**\n * Retrieves the text value for a specified text run at a given path\n * @param textName The name of the text run\n * @param path The path to the text run within the artboard\n * @returns The text value of the text run, or undefined if not found\n *\n * @example\n * // Get the text value for a text run named \"title\" at one nested artboard deep\n * const titleText = riveInstance.getTextRunValueAtPath(\"title\", \"artboard1\");\n *\n * @example\n * // Get the text value for a text run named \"subtitle\" within a nested group two artboards deep\n * const subtitleText = riveInstance.getTextRunValueAtPath(\"subtitle\", \"group/nestedGroup\");\n *\n * @remarks\n * If the text run cannot be found at the specified path, a warning will be logged to the console.\n */\n Rive.prototype.getTextRunValueAtPath = function (textName, path) {\n var run = this.retrieveTextAtPath(textName, path);\n if (!run) {\n console.warn(\"Could not get text with name: '\".concat(textName, \"', at path:'\").concat(path, \"'\"));\n return;\n }\n return run.text;\n };\n /**\n * Sets the text value for a specified text run at a given path\n * @param textName The name of the text run\n * @param value The new text value to set\n * @param path The path to the text run within the artboard\n * @returns void\n *\n * @example\n * // Set the text value for a text run named \"title\" at one nested artboard deep\n * riveInstance.setTextRunValueAtPath(\"title\", \"New Title\", \"artboard1\");\n *\n * @example\n * // Set the text value for a text run named \"subtitle\" within a nested group two artboards deep\n * riveInstance.setTextRunValueAtPath(\"subtitle\", \"New Subtitle\", \"group/nestedGroup\");\n *\n * @remarks\n * If the text run cannot be found at the specified path, a warning will be logged to the console.\n */\n Rive.prototype.setTextRunValueAtPath = function (textName, value, path) {\n var run = this.retrieveTextAtPath(textName, path);\n if (!run) {\n console.warn(\"Could not set text with name: '\".concat(textName, \"', at path:'\").concat(path, \"'\"));\n return;\n }\n run.text = value;\n };\n Object.defineProperty(Rive.prototype, \"playingStateMachineNames\", {\n // Returns a list of playing machine names\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded) {\n return [];\n }\n return this.animator.stateMachines\n .filter(function (m) { return m.playing; })\n .map(function (m) { return m.name; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"playingAnimationNames\", {\n // Returns a list of playing animation names\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded) {\n return [];\n }\n return this.animator.animations.filter(function (a) { return a.playing; }).map(function (a) { return a.name; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"pausedAnimationNames\", {\n // Returns a list of paused animation names\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded) {\n return [];\n }\n return this.animator.animations\n .filter(function (a) { return !a.playing; })\n .map(function (a) { return a.name; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"pausedStateMachineNames\", {\n /**\n * Returns a list of paused machine names\n * @returns a list of state machine names that are paused\n */\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded) {\n return [];\n }\n return this.animator.stateMachines\n .filter(function (m) { return !m.playing; })\n .map(function (m) { return m.name; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"isPlaying\", {\n /**\n * @returns true if any animation is playing\n */\n get: function () {\n return this.animator.isPlaying;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"isPaused\", {\n /**\n * @returns true if all instanced animations are paused\n */\n get: function () {\n return this.animator.isPaused;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"isStopped\", {\n /**\n * @returns true if no animations are playing or paused\n */\n get: function () {\n return this.animator.isStopped;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"bounds\", {\n /**\n * @returns the bounds of the current artboard, or undefined if the artboard\n * isn't loaded yet.\n */\n get: function () {\n return this.artboard ? this.artboard.bounds : undefined;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Subscribe to Rive-generated events\n * @param type the type of event to subscribe to\n * @param callback callback to fire when the event occurs\n */\n Rive.prototype.on = function (type, callback) {\n this.eventManager.add({\n type: type,\n callback: callback,\n });\n };\n /**\n * Unsubscribes from a Rive-generated event\n * @param type the type of event to unsubscribe from\n * @param callback the callback to unsubscribe\n */\n Rive.prototype.off = function (type, callback) {\n this.eventManager.remove({\n type: type,\n callback: callback,\n });\n };\n /**\n * Unsubscribes from a Rive-generated event\n * @deprecated\n * @param callback the callback to unsubscribe from\n */\n Rive.prototype.unsubscribe = function (type, callback) {\n console.warn(\"This function is deprecated: please use `off()` instead.\");\n this.off(type, callback);\n };\n /**\n * Unsubscribes all Rive listeners from an event type, or everything if no type is\n * given\n * @param type the type of event to unsubscribe from, or all types if\n * undefined\n */\n Rive.prototype.removeAllRiveEventListeners = function (type) {\n this.eventManager.removeAll(type);\n };\n /**\n * Unsubscribes all listeners from an event type, or everything if no type is\n * given\n * @deprecated\n * @param type the type of event to unsubscribe from, or all types if\n * undefined\n */\n Rive.prototype.unsubscribeAll = function (type) {\n console.warn(\"This function is deprecated: please use `removeAllRiveEventListeners()` instead.\");\n this.removeAllRiveEventListeners(type);\n };\n /**\n * Stops the rendering loop; this is different from pausing in that it doesn't\n * change the state of any animation. It stops rendering from occurring. This\n * is designed for situations such as when Rive isn't visible.\n *\n * The only way to start rendering again is to call `startRendering`.\n * Animations that are marked as playing will start from the position that\n * they would have been at if rendering had not been stopped.\n */\n Rive.prototype.stopRendering = function () {\n if (this.loaded && this.frameRequestId) {\n if (this.runtime.cancelAnimationFrame) {\n this.runtime.cancelAnimationFrame(this.frameRequestId);\n }\n else {\n cancelAnimationFrame(this.frameRequestId);\n }\n this.frameRequestId = null;\n }\n };\n /**\n * Starts the rendering loop if it has been previously stopped. If the\n * renderer is already active, then this will have zero effect.\n */\n Rive.prototype.startRendering = function () {\n if (this.loaded && this.artboard && !this.frameRequestId) {\n if (this.runtime.requestAnimationFrame) {\n this.frameRequestId = this.runtime.requestAnimationFrame(this._boundDraw);\n }\n else {\n this.frameRequestId = requestAnimationFrame(this._boundDraw);\n }\n }\n };\n /**\n * Enables frames-per-second (FPS) reporting for the runtime\n * If no callback is provided, Rive will append a fixed-position div at the top-right corner of\n * the page with the FPS reading\n * @param fpsCallback - Callback from the runtime during the RAF loop that supplies the FPS value\n */\n Rive.prototype.enableFPSCounter = function (fpsCallback) {\n this.runtime.enableFPSCounter(fpsCallback);\n };\n /**\n * Disables frames-per-second (FPS) reporting for the runtime\n */\n Rive.prototype.disableFPSCounter = function () {\n this.runtime.disableFPSCounter();\n };\n Object.defineProperty(Rive.prototype, \"contents\", {\n /**\n * Returns the contents of a Rive file: the artboards, animations, and state machines\n */\n get: function () {\n if (!this.loaded) {\n return undefined;\n }\n var riveContents = {\n artboards: [],\n };\n for (var i = 0; i < this.file.artboardCount(); i++) {\n var artboard = this.file.artboardByIndex(i);\n var artboardContents = {\n name: artboard.name,\n animations: [],\n stateMachines: [],\n };\n for (var j = 0; j < artboard.animationCount(); j++) {\n var animation = artboard.animationByIndex(j);\n artboardContents.animations.push(animation.name);\n }\n for (var k = 0; k < artboard.stateMachineCount(); k++) {\n var stateMachine = artboard.stateMachineByIndex(k);\n var name_1 = stateMachine.name;\n var instance = new this.runtime.StateMachineInstance(stateMachine, artboard);\n var inputContents = [];\n for (var l = 0; l < instance.inputCount(); l++) {\n var input = instance.input(l);\n inputContents.push({ name: input.name, type: input.type });\n }\n artboardContents.stateMachines.push({\n name: name_1,\n inputs: inputContents,\n });\n }\n riveContents.artboards.push(artboardContents);\n }\n return riveContents;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"volume\", {\n /**\n * Getter / Setter for the volume of the artboard\n */\n get: function () {\n if (this.artboard && this.artboard.volume !== this._volume) {\n this._volume = this.artboard.volume;\n }\n return this._volume;\n },\n set: function (value) {\n this._volume = value;\n if (this.artboard) {\n this.artboard.volume = value * audioManager.systemVolume;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"artboardWidth\", {\n /**\n * The width of the artboard.\n *\n * This will return 0 if the artboard is not loaded yet and a custom\n * width has not been set.\n *\n * Do not set this value manually when using {@link resizeDrawingSurfaceToCanvas}\n * with a {@link Layout.fit} of {@link Fit.Layout}, as the artboard width is\n * automatically set.\n */\n get: function () {\n var _a;\n if (this.artboard) {\n return this.artboard.width;\n }\n return (_a = this._artboardWidth) !== null && _a !== void 0 ? _a : 0;\n },\n set: function (value) {\n this._artboardWidth = value;\n if (this.artboard) {\n this.artboard.width = value;\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"artboardHeight\", {\n /**\n * The height of the artboard.\n *\n * This will return 0 if the artboard is not loaded yet and a custom\n * height has not been set.\n *\n * Do not set this value manually when using {@link resizeDrawingSurfaceToCanvas}\n * with a {@link Layout.fit} of {@link Fit.Layout}, as the artboard height is\n * automatically set.\n */\n get: function () {\n var _a;\n if (this.artboard) {\n return this.artboard.height;\n }\n return (_a = this._artboardHeight) !== null && _a !== void 0 ? _a : 0;\n },\n set: function (value) {\n this._artboardHeight = value;\n if (this.artboard) {\n this.artboard.height = value;\n }\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Reset the artboard size to its original values.\n */\n Rive.prototype.resetArtboardSize = function () {\n if (this.artboard) {\n this.artboard.resetArtboardSize();\n this._artboardWidth = this.artboard.width;\n this._artboardHeight = this.artboard.height;\n }\n else {\n // If the artboard isn't loaded, we need to reset the custom width and height\n this._artboardWidth = undefined;\n this._artboardHeight = undefined;\n }\n };\n Object.defineProperty(Rive.prototype, \"devicePixelRatioUsed\", {\n /**\n * The device pixel ratio used in rendering and canvas/artboard resizing.\n *\n * This value will be overidden by the device pixel ratio used in\n * {@link resizeDrawingSurfaceToCanvas}. If you use that method, do not set this value.\n */\n get: function () {\n return this._devicePixelRatioUsed;\n },\n set: function (value) {\n this._devicePixelRatioUsed = value;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Initialize the data context with the view model instance.\n */\n Rive.prototype.bindViewModelInstance = function (viewModelInstance) {\n var _a;\n if (this.artboard && !this.destroyed) {\n if (viewModelInstance && viewModelInstance.runtimeInstance) {\n viewModelInstance.internalIncrementReferenceCount();\n (_a = this._viewModelInstance) === null || _a === void 0 ? void 0 : _a.cleanup();\n this._viewModelInstance = viewModelInstance;\n if (this.animator.stateMachines.length > 0) {\n this.animator.stateMachines.forEach(function (stateMachine) {\n return stateMachine.bindViewModelInstance(viewModelInstance);\n });\n }\n else {\n this.artboard.bindViewModelInstance(viewModelInstance.runtimeInstance);\n }\n }\n }\n };\n Object.defineProperty(Rive.prototype, \"viewModelInstance\", {\n get: function () {\n return this._viewModelInstance;\n },\n enumerable: false,\n configurable: true\n });\n Rive.prototype.viewModelByIndex = function (index) {\n var viewModel = this.file.viewModelByIndex(index);\n if (viewModel !== null) {\n return new ViewModel(viewModel);\n }\n return null;\n };\n Rive.prototype.viewModelByName = function (name) {\n var viewModel = this.file.viewModelByName(name);\n if (viewModel !== null) {\n return new ViewModel(viewModel);\n }\n return null;\n };\n Rive.prototype.enums = function () {\n if (this._dataEnums === null) {\n var dataEnums = this.file.enums();\n this._dataEnums = dataEnums.map(function (dataEnum) {\n return new DataEnum(dataEnum);\n });\n }\n return this._dataEnums;\n };\n Rive.prototype.defaultViewModel = function () {\n if (this.artboard) {\n var viewModel = this.file.defaultArtboardViewModel(this.artboard);\n if (viewModel) {\n return new ViewModel(viewModel);\n }\n }\n return null;\n };\n // Error message for missing source or buffer\n Rive.missingErrorMessage = \"Rive source file or data buffer required\";\n // Error message for removed rive file\n Rive.cleanupErrorMessage = \"Attempt to use file after calling cleanup.\";\n return Rive;\n}());\n\nvar ViewModel = /** @class */ (function () {\n function ViewModel(viewModel) {\n this._viewModel = viewModel;\n }\n Object.defineProperty(ViewModel.prototype, \"instanceCount\", {\n get: function () {\n return this._viewModel.instanceCount;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewModel.prototype, \"name\", {\n get: function () {\n return this._viewModel.name;\n },\n enumerable: false,\n configurable: true\n });\n ViewModel.prototype.instanceByIndex = function (index) {\n var instance = this._viewModel.instanceByIndex(index);\n if (instance !== null) {\n return new ViewModelInstance(instance, null);\n }\n return null;\n };\n ViewModel.prototype.instanceByName = function (name) {\n var instance = this._viewModel.instanceByName(name);\n if (instance !== null) {\n return new ViewModelInstance(instance, null);\n }\n return null;\n };\n ViewModel.prototype.defaultInstance = function () {\n var runtimeInstance = this._viewModel.defaultInstance();\n if (runtimeInstance !== null) {\n return new ViewModelInstance(runtimeInstance, null);\n }\n return null;\n };\n ViewModel.prototype.instance = function () {\n var runtimeInstance = this._viewModel.instance();\n if (runtimeInstance !== null) {\n return new ViewModelInstance(runtimeInstance, null);\n }\n return null;\n };\n Object.defineProperty(ViewModel.prototype, \"properties\", {\n get: function () {\n return this._viewModel.getProperties();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewModel.prototype, \"instanceNames\", {\n get: function () {\n return this._viewModel.getInstanceNames();\n },\n enumerable: false,\n configurable: true\n });\n return ViewModel;\n}());\n\nvar DataEnum = /** @class */ (function () {\n function DataEnum(dataEnum) {\n this._dataEnum = dataEnum;\n }\n Object.defineProperty(DataEnum.prototype, \"name\", {\n get: function () {\n return this._dataEnum.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DataEnum.prototype, \"values\", {\n get: function () {\n return this._dataEnum.values;\n },\n enumerable: false,\n configurable: true\n });\n return DataEnum;\n}());\n\nvar PropertyType;\n(function (PropertyType) {\n PropertyType[\"Number\"] = \"number\";\n PropertyType[\"String\"] = \"string\";\n PropertyType[\"Boolean\"] = \"boolean\";\n PropertyType[\"Color\"] = \"color\";\n PropertyType[\"Trigger\"] = \"trigger\";\n PropertyType[\"Enum\"] = \"enum\";\n PropertyType[\"List\"] = \"list\";\n PropertyType[\"Image\"] = \"image\";\n})(PropertyType || (PropertyType = {}));\nvar ViewModelInstance = /** @class */ (function () {\n function ViewModelInstance(runtimeInstance, parent) {\n this._parents = [];\n this._children = [];\n this._viewModelInstances = new Map();\n this._propertiesWithCallbacks = [];\n this._referenceCount = 0;\n this._runtimeInstance = runtimeInstance;\n if (parent !== null) {\n this._parents.push(parent);\n }\n }\n Object.defineProperty(ViewModelInstance.prototype, \"runtimeInstance\", {\n get: function () {\n return this._runtimeInstance;\n },\n enumerable: false,\n configurable: true\n });\n ViewModelInstance.prototype.handleCallbacks = function () {\n if (this._propertiesWithCallbacks.length !== 0) {\n this._propertiesWithCallbacks.forEach(function (property) {\n property.handleCallbacks();\n });\n this._propertiesWithCallbacks.forEach(function (property) {\n property.clearChanges();\n });\n }\n this._children.forEach(function (child) { return child.handleCallbacks(); });\n };\n ViewModelInstance.prototype.addParent = function (parent) {\n if (!this._parents.includes(parent)) {\n this._parents.push(parent);\n if (this._propertiesWithCallbacks.length > 0 ||\n this._children.length > 0) {\n parent.addToViewModelCallbacks(this);\n }\n }\n };\n ViewModelInstance.prototype.removeParent = function (parent) {\n var index = this._parents.indexOf(parent);\n if (index !== -1) {\n var parent_1 = this._parents[index];\n parent_1.removeFromViewModelCallbacks(this);\n this._parents.splice(index, 1);\n }\n };\n /*\n * method for internal use, it shouldn't be called externally\n */\n ViewModelInstance.prototype.addToPropertyCallbacks = function (property) {\n var _this = this;\n if (!this._propertiesWithCallbacks.includes(property)) {\n this._propertiesWithCallbacks.push(property);\n if (this._propertiesWithCallbacks.length > 0) {\n this._parents.forEach(function (parent) {\n parent.addToViewModelCallbacks(_this);\n });\n }\n }\n };\n /*\n * method for internal use, it shouldn't be called externally\n */\n ViewModelInstance.prototype.removeFromPropertyCallbacks = function (property) {\n var _this = this;\n if (this._propertiesWithCallbacks.includes(property)) {\n this._propertiesWithCallbacks = this._propertiesWithCallbacks.filter(function (prop) { return prop !== property; });\n if (this._children.length === 0 &&\n this._propertiesWithCallbacks.length === 0) {\n this._parents.forEach(function (parent) {\n parent.removeFromViewModelCallbacks(_this);\n });\n }\n }\n };\n /*\n * method for internal use, it shouldn't be called externally\n */\n ViewModelInstance.prototype.addToViewModelCallbacks = function (instance) {\n var _this = this;\n if (!this._children.includes(instance)) {\n this._children.push(instance);\n this._parents.forEach(function (parent) {\n parent.addToViewModelCallbacks(_this);\n });\n }\n };\n /*\n * method for internal use, it shouldn't be called externally\n */\n ViewModelInstance.prototype.removeFromViewModelCallbacks = function (instance) {\n var _this = this;\n if (this._children.includes(instance)) {\n this._children = this._children.filter(function (child) { return child !== instance; });\n if (this._children.length === 0 &&\n this._propertiesWithCallbacks.length === 0) {\n this._parents.forEach(function (parent) {\n parent.removeFromViewModelCallbacks(_this);\n });\n }\n }\n };\n ViewModelInstance.prototype.clearCallbacks = function () {\n this._propertiesWithCallbacks.forEach(function (property) {\n property.clearCallbacks();\n });\n };\n ViewModelInstance.prototype.propertyFromPath = function (path, type) {\n var pathSegments = path.split(\"/\");\n return this.propertyFromPathSegments(pathSegments, 0, type);\n };\n ViewModelInstance.prototype.viewModelFromPathSegments = function (pathSegments, index) {\n var viewModelInstance = this.internalViewModelInstance(pathSegments[index]);\n if (viewModelInstance !== null) {\n if (index == pathSegments.length - 1) {\n return viewModelInstance;\n }\n else {\n return viewModelInstance.viewModelFromPathSegments(pathSegments, index++);\n }\n }\n return null;\n };\n ViewModelInstance.prototype.propertyFromPathSegments = function (pathSegments, index, type) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;\n if (index < pathSegments.length - 1) {\n var viewModelInstance = this.internalViewModelInstance(pathSegments[index]);\n if (viewModelInstance !== null) {\n return viewModelInstance.propertyFromPathSegments(pathSegments, index + 1, type);\n }\n else {\n return null;\n }\n }\n var instance = null;\n switch (type) {\n case PropertyType.Number:\n instance = (_b = (_a = this._runtimeInstance) === null || _a === void 0 ? void 0 : _a.number(pathSegments[index])) !== null && _b !== void 0 ? _b : null;\n if (instance !== null) {\n return new ViewModelInstanceNumber(instance, this);\n }\n break;\n case PropertyType.String:\n instance = (_d = (_c = this._runtimeInstance) === null || _c === void 0 ? void 0 : _c.string(pathSegments[index])) !== null && _d !== void 0 ? _d : null;\n if (instance !== null) {\n return new ViewModelInstanceString(instance, this);\n }\n break;\n case PropertyType.Boolean:\n instance = (_f = (_e = this._runtimeInstance) === null || _e === void 0 ? void 0 : _e.boolean(pathSegments[index])) !== null && _f !== void 0 ? _f : null;\n if (instance !== null) {\n return new ViewModelInstanceBoolean(instance, this);\n }\n break;\n case PropertyType.Color:\n instance = (_h = (_g = this._runtimeInstance) === null || _g === void 0 ? void 0 : _g.color(pathSegments[index])) !== null && _h !== void 0 ? _h : null;\n if (instance !== null) {\n return new ViewModelInstanceColor(instance, this);\n }\n break;\n case PropertyType.Trigger:\n instance = (_k = (_j = this._runtimeInstance) === null || _j === void 0 ? void 0 : _j.trigger(pathSegments[index])) !== null && _k !== void 0 ? _k : null;\n if (instance !== null) {\n return new ViewModelInstanceTrigger(instance, this);\n }\n break;\n case PropertyType.Enum:\n instance = (_m = (_l = this._runtimeInstance) === null || _l === void 0 ? void 0 : _l.enum(pathSegments[index])) !== null && _m !== void 0 ? _m : null;\n if (instance !== null) {\n return new ViewModelInstanceEnum(instance, this);\n }\n break;\n case PropertyType.List:\n instance = (_p = (_o = this._runtimeInstance) === null || _o === void 0 ? void 0 : _o.list(pathSegments[index])) !== null && _p !== void 0 ? _p : null;\n if (instance !== null) {\n return new ViewModelInstanceList(instance, this);\n }\n break;\n case PropertyType.Image:\n instance = (_r = (_q = this._runtimeInstance) === null || _q === void 0 ? void 0 : _q.image(pathSegments[index])) !== null && _r !== void 0 ? _r : null;\n if (instance !== null) {\n return new ViewModelInstanceAssetImage(instance, this);\n }\n break;\n }\n return null;\n };\n ViewModelInstance.prototype.internalViewModelInstance = function (name) {\n var _a;\n if (this._viewModelInstances.has(name)) {\n return this._viewModelInstances.get(name);\n }\n var viewModelRuntimeInstance = (_a = this._runtimeInstance) === null || _a === void 0 ? void 0 : _a.viewModel(name);\n if (viewModelRuntimeInstance !== null) {\n var viewModelInstance = new ViewModelInstance(viewModelRuntimeInstance, this);\n viewModelInstance.internalIncrementReferenceCount();\n this._viewModelInstances.set(name, viewModelInstance);\n return viewModelInstance;\n }\n return null;\n };\n /**\n * method to access a property instance of type number belonging\n * to the view model instance or to a nested view model instance\n * @param path - path to the number property\n */\n ViewModelInstance.prototype.number = function (path) {\n var viewmodelInstanceValue = this.propertyFromPath(path, PropertyType.Number);\n return viewmodelInstanceValue;\n };\n /**\n * method to access a property instance of type string belonging\n * to the view model instance or to a nested view model instance\n * @param path - path to the string property\n */\n ViewModelInstance.prototype.string = function (path) {\n var viewmodelInstanceValue = this.propertyFromPath(path, PropertyType.String);\n return viewmodelInstanceValue;\n };\n /**\n * method to access a property instance of type boolean belonging\n * to the view model instance or to a nested view model instance\n * @param path - path to the boolean property\n */\n ViewModelInstance.prototype.boolean = function (path) {\n var viewmodelInstanceValue = this.propertyFromPath(path, PropertyType.Boolean);\n return viewmodelInstanceValue;\n };\n /**\n * method to access a property instance of type color belonging\n * to the view model instance or to a nested view model instance\n * @param path - path to the ttrigger property\n */\n ViewModelInstance.prototype.color = function (path) {\n var viewmodelInstanceValue = this.propertyFromPath(path, PropertyType.Color);\n return viewmodelInstanceValue;\n };\n /**\n * method to access a property instance of type trigger belonging\n * to the view model instance or to a nested view model instance\n * @param path - path to the trigger property\n */\n ViewModelInstance.prototype.trigger = function (path) {\n var viewmodelInstanceValue = this.propertyFromPath(path, PropertyType.Trigger);\n return viewmodelInstanceValue;\n };\n /**\n * method to access a property instance of type enum belonging\n * to the view model instance or to a nested view model instance\n * @param path - path to the enum property\n */\n ViewModelInstance.prototype.enum = function (path) {\n var viewmodelInstanceValue = this.propertyFromPath(path, PropertyType.Enum);\n return viewmodelInstanceValue;\n };\n /**\n * method to access a property instance of type list belonging\n * to the view model instance or to a nested view model instance\n * @param path - path to the list property\n */\n ViewModelInstance.prototype.list = function (path) {\n var viewmodelInstanceValue = this.propertyFromPath(path, PropertyType.List);\n return viewmodelInstanceValue;\n };\n /**\n * method to access a view model property instance belonging\n * to the view model instance or to a nested view model instance\n * @param path - path to the image property\n */\n ViewModelInstance.prototype.image = function (path) {\n var viewmodelInstanceValue = this.propertyFromPath(path, PropertyType.Image);\n return viewmodelInstanceValue;\n };\n /**\n * method to access a view model property instance belonging\n * to the view model instance or to a nested view model instance\n * @param path - path to the view model property\n */\n ViewModelInstance.prototype.viewModel = function (path) {\n var pathSegments = path.split(\"/\");\n var parentViewModelInstance = pathSegments.length > 1\n ? this.viewModelFromPathSegments(pathSegments.slice(0, pathSegments.length - 1), 0)\n : this;\n if (parentViewModelInstance != null) {\n return parentViewModelInstance.internalViewModelInstance(pathSegments[pathSegments.length - 1]);\n }\n return null;\n };\n ViewModelInstance.prototype.internalReplaceViewModel = function (name, value) {\n var _a;\n if (value.runtimeInstance !== null) {\n var result = ((_a = this._runtimeInstance) === null || _a === void 0 ? void 0 : _a.replaceViewModel(name, value.runtimeInstance)) ||\n false;\n if (result) {\n value.internalIncrementReferenceCount();\n var oldInstance_1 = this.internalViewModelInstance(name);\n if (oldInstance_1 !== null) {\n oldInstance_1.removeParent(this);\n if (this._children.includes(oldInstance_1)) {\n this._children = this._children.filter(function (child) { return child !== oldInstance_1; });\n }\n oldInstance_1.cleanup();\n }\n this._viewModelInstances.set(name, value);\n value.addParent(this);\n }\n return result;\n }\n return false;\n };\n /**\n * method to replace a view model property with another view model value\n * @param path - path to the view model property\n * @param value - view model that will replace the original\n */\n ViewModelInstance.prototype.replaceViewModel = function (path, value) {\n var _a;\n var pathSegments = path.split(\"/\");\n var viewModelInstance = pathSegments.length > 1\n ? this.viewModelFromPathSegments(pathSegments.slice(0, pathSegments.length - 1), 0)\n : this;\n return ((_a = viewModelInstance === null || viewModelInstance === void 0 ? void 0 : viewModelInstance.internalReplaceViewModel(pathSegments[pathSegments.length - 1], value)) !== null && _a !== void 0 ? _a : false);\n };\n /*\n * method to add one to the reference counter of the instance.\n * Use if the file owning the reference is destroyed but the instance needs to stay around\n */\n ViewModelInstance.prototype.incrementReferenceCount = function () {\n var _a;\n this._referenceCount++;\n (_a = this._runtimeInstance) === null || _a === void 0 ? void 0 : _a.incrementReferenceCount();\n };\n /*\n * method to subtract one to the reference counter of the instance.\n * Use if incrementReferenceCount has been called\n */\n ViewModelInstance.prototype.decrementReferenceCount = function () {\n var _a;\n this._referenceCount--;\n (_a = this._runtimeInstance) === null || _a === void 0 ? void 0 : _a.decrementReferenceCount();\n };\n Object.defineProperty(ViewModelInstance.prototype, \"properties\", {\n get: function () {\n var _a;\n return (((_a = this._runtimeInstance) === null || _a === void 0 ? void 0 : _a.getProperties().map(function (prop) { return (__assign({}, prop)); })) || []);\n },\n enumerable: false,\n configurable: true\n });\n ViewModelInstance.prototype.internalIncrementReferenceCount = function () {\n this._referenceCount++;\n };\n ViewModelInstance.prototype.cleanup = function () {\n var _this = this;\n this._referenceCount--;\n if (this._referenceCount <= 0) {\n this._runtimeInstance = null;\n this.clearCallbacks();\n this._propertiesWithCallbacks = [];\n this._viewModelInstances.forEach(function (value) {\n value.cleanup();\n });\n this._viewModelInstances.clear();\n var children = __spreadArray([], this._children, true);\n this._children.length = 0;\n var parents = __spreadArray([], this._parents, true);\n this._parents.length = 0;\n children.forEach(function (child) {\n child.removeParent(_this);\n });\n parents.forEach(function (parent) {\n parent.removeFromViewModelCallbacks(_this);\n });\n }\n };\n return ViewModelInstance;\n}());\n\nvar ViewModelInstanceValue = /** @class */ (function () {\n function ViewModelInstanceValue(instance, parent) {\n this.callbacks = [];\n this._viewModelInstanceValue = instance;\n this._parentViewModel = parent;\n }\n ViewModelInstanceValue.prototype.on = function (callback) {\n // Since we don't clean the changed flag for properties that don't have listeners,\n // we clean it the first time we add a listener to it\n if (this.callbacks.length === 0) {\n this._viewModelInstanceValue.clearChanges();\n }\n if (!this.callbacks.includes(callback)) {\n this.callbacks.push(callback);\n this._parentViewModel.addToPropertyCallbacks(this);\n }\n };\n ViewModelInstanceValue.prototype.off = function (callback) {\n if (!callback) {\n this.callbacks.length = 0;\n }\n else {\n this.callbacks = this.callbacks.filter(function (cb) { return cb !== callback; });\n }\n if (this.callbacks.length === 0) {\n this._parentViewModel.removeFromPropertyCallbacks(this);\n }\n };\n ViewModelInstanceValue.prototype.internalHandleCallback = function (callback) { };\n ViewModelInstanceValue.prototype.handleCallbacks = function () {\n var _this = this;\n if (this._viewModelInstanceValue.hasChanged) {\n this.callbacks.forEach(function (callback) {\n _this.internalHandleCallback(callback);\n });\n }\n };\n ViewModelInstanceValue.prototype.clearChanges = function () {\n this._viewModelInstanceValue.clearChanges();\n };\n ViewModelInstanceValue.prototype.clearCallbacks = function () {\n this.callbacks.length = 0;\n };\n Object.defineProperty(ViewModelInstanceValue.prototype, \"name\", {\n get: function () {\n return this._viewModelInstanceValue.name;\n },\n enumerable: false,\n configurable: true\n });\n return ViewModelInstanceValue;\n}());\n\nvar ViewModelInstanceString = /** @class */ (function (_super) {\n __extends(ViewModelInstanceString, _super);\n function ViewModelInstanceString(instance, parent) {\n return _super.call(this, instance, parent) || this;\n }\n Object.defineProperty(ViewModelInstanceString.prototype, \"value\", {\n get: function () {\n return this._viewModelInstanceValue.value;\n },\n set: function (val) {\n this._viewModelInstanceValue.value = val;\n },\n enumerable: false,\n configurable: true\n });\n ViewModelInstanceString.prototype.internalHandleCallback = function (callback) {\n callback(this.value);\n };\n return ViewModelInstanceString;\n}(ViewModelInstanceValue));\n\nvar ViewModelInstanceNumber = /** @class */ (function (_super) {\n __extends(ViewModelInstanceNumber, _super);\n function ViewModelInstanceNumber(instance, parent) {\n return _super.call(this, instance, parent) || this;\n }\n Object.defineProperty(ViewModelInstanceNumber.prototype, \"value\", {\n get: function () {\n return this._viewModelInstanceValue.value;\n },\n set: function (val) {\n this._viewModelInstanceValue.value = val;\n },\n enumerable: false,\n configurable: true\n });\n ViewModelInstanceNumber.prototype.internalHandleCallback = function (callback) {\n callback(this.value);\n };\n return ViewModelInstanceNumber;\n}(ViewModelInstanceValue));\n\nvar ViewModelInstanceBoolean = /** @class */ (function (_super) {\n __extends(ViewModelInstanceBoolean, _super);\n function ViewModelInstanceBoolean(instance, parent) {\n return _super.call(this, instance, parent) || this;\n }\n Object.defineProperty(ViewModelInstanceBoolean.prototype, \"value\", {\n get: function () {\n return this._viewModelInstanceValue.value;\n },\n set: function (val) {\n this._viewModelInstanceValue.value = val;\n },\n enumerable: false,\n configurable: true\n });\n ViewModelInstanceBoolean.prototype.internalHandleCallback = function (callback) {\n callback(this.value);\n };\n return ViewModelInstanceBoolean;\n}(ViewModelInstanceValue));\n\nvar ViewModelInstanceTrigger = /** @class */ (function (_super) {\n __extends(ViewModelInstanceTrigger, _super);\n function ViewModelInstanceTrigger(instance, parent) {\n return _super.call(this, instance, parent) || this;\n }\n ViewModelInstanceTrigger.prototype.trigger = function () {\n return this._viewModelInstanceValue.trigger();\n };\n ViewModelInstanceTrigger.prototype.internalHandleCallback = function (callback) {\n callback();\n };\n return ViewModelInstanceTrigger;\n}(ViewModelInstanceValue));\n\nvar ViewModelInstanceEnum = /** @class */ (function (_super) {\n __extends(ViewModelInstanceEnum, _super);\n function ViewModelInstanceEnum(instance, parent) {\n return _super.call(this, instance, parent) || this;\n }\n Object.defineProperty(ViewModelInstanceEnum.prototype, \"value\", {\n get: function () {\n return this._viewModelInstanceValue.value;\n },\n set: function (val) {\n this._viewModelInstanceValue.value = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewModelInstanceEnum.prototype, \"valueIndex\", {\n get: function () {\n return this._viewModelInstanceValue\n .valueIndex;\n },\n set: function (val) {\n this._viewModelInstanceValue.valueIndex = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ViewModelInstanceEnum.prototype, \"values\", {\n get: function () {\n return this._viewModelInstanceValue.values;\n },\n enumerable: false,\n configurable: true\n });\n ViewModelInstanceEnum.prototype.internalHandleCallback = function (callback) {\n callback(this.value);\n };\n return ViewModelInstanceEnum;\n}(ViewModelInstanceValue));\n\nvar ViewModelInstanceList = /** @class */ (function (_super) {\n __extends(ViewModelInstanceList, _super);\n function ViewModelInstanceList(instance, parent) {\n return _super.call(this, instance, parent) || this;\n }\n Object.defineProperty(ViewModelInstanceList.prototype, \"length\", {\n get: function () {\n return this._viewModelInstanceValue.size;\n },\n enumerable: false,\n configurable: true\n });\n ViewModelInstanceList.prototype.addInstance = function (instance) {\n if (instance.runtimeInstance != null) {\n this._viewModelInstanceValue.addInstance(instance.runtimeInstance);\n instance.addParent(this._parentViewModel);\n }\n };\n ViewModelInstanceList.prototype.addInstanceAt = function (instance, index) {\n if (instance.runtimeInstance != null) {\n if (this._viewModelInstanceValue.addInstanceAt(instance.runtimeInstance, index)) {\n instance.addParent(this._parentViewModel);\n return true;\n }\n }\n return false;\n };\n ViewModelInstanceList.prototype.removeInstance = function (instance) {\n if (instance.runtimeInstance != null) {\n this._viewModelInstanceValue.removeInstance(instance.runtimeInstance);\n instance.removeParent(this._parentViewModel);\n }\n };\n ViewModelInstanceList.prototype.removeInstanceAt = function (index) {\n this._viewModelInstanceValue.removeInstanceAt(index);\n };\n ViewModelInstanceList.prototype.instanceAt = function (index) {\n var runtimeInstance = this._viewModelInstanceValue.instanceAt(index);\n if (runtimeInstance != null) {\n var viewModelInstance = new ViewModelInstance(runtimeInstance, this._parentViewModel);\n return viewModelInstance;\n }\n return null;\n };\n ViewModelInstanceList.prototype.swap = function (a, b) {\n this._viewModelInstanceValue.swap(a, b);\n };\n ViewModelInstanceList.prototype.internalHandleCallback = function (callback) {\n callback();\n };\n return ViewModelInstanceList;\n}(ViewModelInstanceValue));\n\nvar ViewModelInstanceColor = /** @class */ (function (_super) {\n __extends(ViewModelInstanceColor, _super);\n function ViewModelInstanceColor(instance, parent) {\n return _super.call(this, instance, parent) || this;\n }\n Object.defineProperty(ViewModelInstanceColor.prototype, \"value\", {\n get: function () {\n return this._viewModelInstanceValue.value;\n },\n set: function (val) {\n this._viewModelInstanceValue.value = val;\n },\n enumerable: false,\n configurable: true\n });\n ViewModelInstanceColor.prototype.rgb = function (r, g, b) {\n this._viewModelInstanceValue.rgb(r, g, b);\n };\n ViewModelInstanceColor.prototype.rgba = function (r, g, b, a) {\n this._viewModelInstanceValue.argb(a, r, g, b);\n };\n ViewModelInstanceColor.prototype.argb = function (a, r, g, b) {\n this._viewModelInstanceValue.argb(a, r, g, b);\n };\n // Value 0 to 255\n ViewModelInstanceColor.prototype.alpha = function (a) {\n this._viewModelInstanceValue.alpha(a);\n };\n // Value 0 to 1\n ViewModelInstanceColor.prototype.opacity = function (o) {\n this._viewModelInstanceValue.alpha(Math.round(Math.max(0, Math.min(1, o)) * 255));\n };\n ViewModelInstanceColor.prototype.internalHandleCallback = function (callback) {\n callback(this.value);\n };\n return ViewModelInstanceColor;\n}(ViewModelInstanceValue));\n\nvar ViewModelInstanceAssetImage = /** @class */ (function (_super) {\n __extends(ViewModelInstanceAssetImage, _super);\n function ViewModelInstanceAssetImage(instance, root) {\n return _super.call(this, instance, root) || this;\n }\n Object.defineProperty(ViewModelInstanceAssetImage.prototype, \"value\", {\n set: function (image) {\n var _a;\n this._viewModelInstanceValue.value((_a = image === null || image === void 0 ? void 0 : image.nativeImage) !== null && _a !== void 0 ? _a : null);\n },\n enumerable: false,\n configurable: true\n });\n ViewModelInstanceAssetImage.prototype.internalHandleCallback = function (callback) {\n callback();\n };\n return ViewModelInstanceAssetImage;\n}(ViewModelInstanceValue));\n\n// Loads Rive data from a URI via fetch.\nvar loadRiveFile = function (src) { return __awaiter(void 0, void 0, void 0, function () {\n var req, res, buffer;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n req = new Request(src);\n return [4 /*yield*/, fetch(req)];\n case 1:\n res = _a.sent();\n return [4 /*yield*/, res.arrayBuffer()];\n case 2:\n buffer = _a.sent();\n return [2 /*return*/, buffer];\n }\n });\n}); };\n// #endregion\n// #region utility functions\n/*\n * Utility function to ensure an object is a string array\n */\nvar mapToStringArray = function (obj) {\n if (typeof obj === \"string\") {\n return [obj];\n }\n else if (obj instanceof Array) {\n return obj;\n }\n // If obj is undefined, return empty array\n return [];\n};\n// #endregion\n// #region testing utilities\n// Exports to only be used for tests\nvar Testing = {\n EventManager: EventManager,\n TaskQueueManager: TaskQueueManager,\n};\n// #endregion\n// #region asset loaders\n/**\n * Decodes bytes into an audio asset.\n *\n * Be sure to call `.unref()` on the audio once it is no longer needed. This\n * allows the engine to clean it up when it is not used by any more animations.\n */\nvar decodeAudio = function (bytes) { return __awaiter(void 0, void 0, void 0, function () {\n var decodedPromise, audio, audioWrapper;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n decodedPromise = new Promise(function (resolve) {\n return RuntimeLoader.getInstance(function (rive) {\n rive.decodeAudio(bytes, resolve);\n });\n });\n return [4 /*yield*/, decodedPromise];\n case 1:\n audio = _a.sent();\n audioWrapper = new _utils__WEBPACK_IMPORTED_MODULE_3__.AudioWrapper(audio);\n _utils__WEBPACK_IMPORTED_MODULE_3__.finalizationRegistry.register(audioWrapper, audio);\n return [2 /*return*/, audioWrapper];\n }\n });\n}); };\n/**\n * Decodes bytes into an image.\n *\n * Be sure to call `.unref()` on the image once it is no longer needed. This\n * allows the engine to clean it up when it is not used by any more animations.\n */\nvar decodeImage = function (bytes) { return __awaiter(void 0, void 0, void 0, function () {\n var decodedPromise, image, imageWrapper;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n decodedPromise = new Promise(function (resolve) {\n return RuntimeLoader.getInstance(function (rive) {\n rive.decodeImage(bytes, resolve);\n });\n });\n return [4 /*yield*/, decodedPromise];\n case 1:\n image = _a.sent();\n imageWrapper = new _utils__WEBPACK_IMPORTED_MODULE_3__.ImageWrapper(image);\n _utils__WEBPACK_IMPORTED_MODULE_3__.finalizationRegistry.register(imageWrapper, image);\n return [2 /*return*/, imageWrapper];\n }\n });\n}); };\n/**\n * Decodes bytes into a font.\n *\n * Be sure to call `.unref()` on the font once it is no longer needed. This\n * allows the engine to clean it up when it is not used by any more animations.\n */\nvar decodeFont = function (bytes) { return __awaiter(void 0, void 0, void 0, function () {\n var decodedPromise, font, fontWrapper;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n decodedPromise = new Promise(function (resolve) {\n return RuntimeLoader.getInstance(function (rive) {\n rive.decodeFont(bytes, resolve);\n });\n });\n return [4 /*yield*/, decodedPromise];\n case 1:\n font = _a.sent();\n fontWrapper = new _utils__WEBPACK_IMPORTED_MODULE_3__.FontWrapper(font);\n _utils__WEBPACK_IMPORTED_MODULE_3__.finalizationRegistry.register(fontWrapper, font);\n return [2 /*return*/, fontWrapper];\n }\n });\n}); };\n// #endregion\n\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=rive.js.map","module.exports = require('./lib/axios');","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\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","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <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","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict'\n\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(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\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","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\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","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","import Overlay from './Overlay';\n\nexport default Overlay;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./PanelManager.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./BaseButton.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./ScrollableContainer.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport './ScrollableContainer.styles.css';\nimport { Layout } from '@/external/spatial-navigation/utils';\n\nconst wait = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\nexport interface ScrollableContainerContextType {\n /**\n * Sets a reference for a focusable item.\n * This is used to register the item in the context so it can be focused later.\n */\n setRef: (ref: HTMLElement) => void;\n /**\n * Called when an item is focused.\n * This function scrolls the container to the focused item if necessary.\n */\n scrollToFocusedElement: (layout: Layout) => void;\n /**\n * An array of all registered focusable items.\n * This is used to determine the order of focusable items.\n */\n refsMap: HTMLElement[];\n}\n\ntype ScrollableContainerProps = {\n children?: React.ReactNode;\n /**\n * The element that is scrollable.\n * This is typically a container that has overflow set to auto or scroll.\n */\n scrollableContainerRef?: HTMLElement | null;\n /**\n * The top offset of the container, used to adjust the scroll position.\n * This is useful if the container has a fixed header or similar elements.\n */\n containerTopOffset?: number;\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * ScrollableContainer component provides a context for focusable items\n * that allows them to register themselves and handle scrolling\n * when they become focused.\n * @example\n * ```jsx\n * <ScrollableContainer scrollableContainerRef={scrollableContainerRef}>\n * <FocusableItem>Item 1</FocusableItem>\n * <FocusableItem>Item 2</FocusableItem>\n * <FocusableItem>Item 3</FocusableItem>\n * </ScrollableContainer>\n * ```\n */\nclass ScrollableContainer extends React.Component<ScrollableContainerProps> {\n private refsMap: HTMLElement[] = [];\n private hash = '';\n private lastHash = '';\n state = {\n scrolled: false,\n };\n\n setRef = (ref: HTMLElement) => {\n this.refsMap.push(ref);\n this.hash = Math.random().toString(36).substring(2, 15);\n };\n\n static childContextTypes = {\n refsMap: React.PropTypes.arrayOf(React.PropTypes.instanceOf(HTMLElement)),\n setRef: React.PropTypes.func,\n scrollToFocusedElement: React.PropTypes.func,\n };\n\n getOrderedRefs = () => {\n if (this.hash === this.lastHash) {\n return this.refsMap;\n }\n\n this.refsMap = this.refsMap.sort((a, b) => {\n if (!this.props.scrollableContainerRef) return 0;\n const containerRect = this.props.scrollableContainerRef.getBoundingClientRect();\n const aRect = a ? a.getBoundingClientRect() : { top: 0, bottom: 0 };\n const bRect = b ? b.getBoundingClientRect() : { top: 0, bottom: 0 };\n\n // Calculate the actual distance from container top (positive means below, negative means above)\n const aDistance = aRect.top - containerRect.top;\n const bDistance = bRect.top - containerRect.top;\n\n return aDistance - bDistance;\n });\n\n this.lastHash = this.hash;\n return this.refsMap;\n };\n\n /**\n * @description - Scrolls the container to the focused element if necessary\n */\n private scrollToFocusedElement = async (layout: Layout) => {\n if (!this.props.scrollableContainerRef || !layout.node) return;\n const refs = this.getOrderedRefs();\n\n // Wait for the next frame to ensure the layout is updated\n if (process.env.NODE_ENV !== 'test') {\n await wait(0);\n }\n\n const containerRect = this.props.scrollableContainerRef.getBoundingClientRect();\n const nodeRect = layout.node.getBoundingClientRect();\n let index = -1;\n\n for (let i = refs.length - 1; i >= 0; i--) {\n if (refs[i].contains(layout.node)) {\n index = i;\n break;\n }\n }\n\n if (index === -1) {\n console.warn(\n 'Element not found in refsMap to focus to. Register the element wrapping it with <FocusableItem />'\n );\n return;\n }\n\n let hasOutside = false;\n\n refs.slice(index).forEach((el) => {\n const rect = el.getBoundingClientRect();\n if (rect.bottom > containerRect.bottom || rect.top < containerRect.top) {\n hasOutside = true;\n }\n });\n\n if (!hasOutside) return;\n\n const target =\n index === 0\n ? 0\n : this.props.scrollableContainerRef.scrollTop +\n (nodeRect.top -\n containerRect.top -\n (this.props.containerTopOffset || 0));\n this.props.scrollableContainerRef.scrollTop = target;\n\n const newScrolled = target > 0;\n if (this.state.scrolled !== newScrolled) {\n this.setState({ scrolled: newScrolled });\n }\n };\n\n getChildContext(): ScrollableContainerContextType {\n return {\n refsMap: this.refsMap,\n setRef: this.setRef,\n scrollToFocusedElement: this.scrollToFocusedElement,\n };\n }\n\n componentWillUnmount(): void {\n this.refsMap = [];\n this.hash = '';\n this.lastHash = '';\n }\n\n render() {\n const {\n scrollableContainerRef: _,\n containerTopOffset: __,\n ...rest\n } = this.props;\n\n return (\n <div\n className=\"scrollable-container\"\n data-scrolled={this.state.scrolled}\n {...rest}\n >\n {this.props.children}\n </div>\n );\n }\n}\n\nexport const DEFAULT_SCROLLABLE_CONTAINER_CONTEXT: ScrollableContainerContextType = {\n setRef: (_: HTMLElement) => {},\n scrollToFocusedElement: () => {},\n refsMap: [],\n};\n\nexport const SCROLLABLE_CONTEXT_TYPE = {\n refsMap: React.PropTypes.arrayOf(React.PropTypes.instanceOf(HTMLElement)),\n setRef: React.PropTypes.func,\n scrollToFocusedElement: React.PropTypes.func,\n};\n\nexport default ScrollableContainer;\n","import React from 'react';\nimport {\n DEFAULT_SCROLLABLE_CONTAINER_CONTEXT,\n SCROLLABLE_CONTEXT_TYPE,\n} from './ScrollableContainer';\n\ntype Props = {\n children: React.ReactNode;\n};\n\n/**\n * Component to be used as a child of `ScrollableContainer`.\n * Wraps the focusable item and registers it in the context\n */\nclass FocusableItem extends React.Component<Props> {\n private ref: HTMLDivElement | null = null;\n context = DEFAULT_SCROLLABLE_CONTAINER_CONTEXT;\n static contextTypes = SCROLLABLE_CONTEXT_TYPE;\n\n componentDidMount(): void {\n if (this.ref && this.context.setRef) {\n this.context.setRef(this.ref);\n }\n }\n\n render() {\n return (\n <div className=\"focusable-item\" ref={(e) => (this.ref = e)}>\n {this.props.children}\n </div>\n );\n }\n}\n\nexport default FocusableItem as React.ComponentType<Props>;\n","import React from 'react';\nimport { ButtonHTMLAttributes } from 'react';\nimport './BaseButton.styles.css';\nimport FocusableItem from '@/components/core/ScrollableContainer/FocusableItem';\n\nclass BaseButton extends React.Component<\n ButtonHTMLAttributes<HTMLButtonElement>\n> {\n render() {\n const className = ['base-button', this.props.className].join(' ');\n\n return (\n <FocusableItem>\n <button {...this.props} className={className}>\n {this.props.children}\n </button>\n </FocusableItem>\n );\n }\n}\n\nexport default BaseButton;\n","import React from 'react';\nimport { IconProps } from './Icon';\n\nclass KeyPlaysIcon extends React.Component<IconProps, {}> {\n render() {\n return (\n <svg\n width={this.props.width}\n height={this.props.height}\n viewBox=\"0 0 30 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M27.375 4.75H2.625V7H27.375V4.75Z\" fill=\"white\" />\n <path d=\"M25.125 0.25H4.875V2.5H25.125V0.25Z\" fill=\"white\" />\n <path\n d=\"M0.375 9.25V31.75H29.625V9.25H0.375ZM11.625 26.125V14.875L20.625 20.5L11.625 26.125Z\"\n fill=\"white\"\n />\n </svg>\n );\n }\n}\n\nexport default KeyPlaysIcon;\n","import React from 'react';\nimport { IconProps } from './Icon';\n\nclass PlayIcon extends React.Component<IconProps, {}> {\n render() {\n return (\n <svg\n width={this.props.width}\n height={this.props.height}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M18.1891 8.29879C18.6116 8.5331 18.9367 8.80345 19.162 9.10985C19.3873 9.41624 19.5 9.71863 19.5 10.019C19.5 10.3194 19.396 10.6158 19.1837 10.9102C18.9713 11.2026 18.6463 11.4669 18.2108 11.7012L10.9111 15.6724L3.58975 19.6035C3.15207 19.8378 2.74256 19.9679 2.36122 19.994C1.98204 20.02 1.65703 19.9619 1.38836 19.8177C1.12185 19.6735 0.905177 19.4453 0.742673 19.1328C0.582335 18.8204 0.5 18.4419 0.5 17.9994V2.00062C0.5 1.55805 0.573669 1.17956 0.721006 0.867153C0.87051 0.554748 1.09152 0.326452 1.38836 0.182265C1.6852 0.0380777 2.02104 -0.0199976 2.39372 0.00603615C2.76639 0.0340725 3.16507 0.164241 3.58975 0.398545L10.9111 4.36769L18.1891 8.29879Z\"\n fill=\"white\"\n />\n </svg>\n );\n }\n}\n\nexport default PlayIcon;\n","import React from 'react';\nimport { IconProps } from './Icon';\nclass BetsIcon extends React.Component<IconProps> {\n constructor(props: IconProps) {\n super(props);\n }\n\n render() {\n return (\n <svg\n width={this.props.width}\n height={this.props.height}\n viewBox=\"0 0 36 36\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M26.4393 4.5H6.61944L3.34766 31.5C3.34766 31.5 19.7066 31.5 22.7432 31.5C23.3056 31.5 23.8679 31.4591 24.4251 31.3773C26.0406 31.1268 28.7193 30.3445 29.8491 27.6808C30.3501 26.4947 30.7387 23.1919 30.8665 22.3023C31.1783 20.1345 30.0178 18.8819 28.8625 18.1508C28.6069 17.9923 28.6733 17.6038 28.9647 17.5322C30.1814 17.2203 31.3266 16.571 31.6435 15.1906C31.8633 14.2192 32.0781 12.0872 32.2263 10.9011C32.9113 5.92643 29.568 4.5 26.4393 4.5ZM24.1542 19.792H15.8213L15.6117 21.5047H23.9497L23.4589 25.4773H10.1468L11.2715 16.3154H24.5836L24.1593 19.7869L24.1542 19.792ZM24.7779 14.7202H11.4658L11.9821 10.5227H25.2942L24.783 14.7202H24.7779Z\"\n fill=\"#9DA0A6\"\n />\n </svg>\n );\n }\n}\n\nexport default BetsIcon;\n","import React from 'react';\nimport { IconProps } from './Icon';\n\nclass StatsIcon extends React.Component<IconProps, {}> {\n render() {\n return (\n <svg\n width={this.props.width}\n height={this.props.height}\n viewBox=\"0 0 36 36\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_538_5831)\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.5925 1.7998V32.6941H10.4849V14.8588H3.671V32.6941H0.899902V34.7641H35.099V32.6941H32.3603V8.0125H25.514V32.6941H21.4397V1.7998H14.5925Z\"\n fill=\"#9DA0A6\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_538_5831\">\n <rect width=\"36\" height=\"36\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n }\n}\n\nexport default StatsIcon;\n","import React from 'react';\nimport { IconProps } from './Icon';\n\nclass FantasyIcon extends React.Component<IconProps, {}> {\n render() {\n return (\n <svg\n width={this.props.width}\n height={this.props.height}\n viewBox=\"0 0 36 36\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.96879 29.0297C11.6061 31.2694 14.6822 32.9334 18.0001 33.9152C21.3179 32.9334 24.394 31.2694 27.0313 29.0297C29.6686 26.7899 31.8089 24.0239 33.3151 20.9089C31.6987 16.1971 30.9721 11.2259 31.1722 6.24861C26.9818 4.51945 22.5273 3.51728 18.0001 3.28516C13.4728 3.51728 9.01831 4.51945 4.82788 6.24861C5.02804 11.2259 4.30143 16.1971 2.68506 20.9089C4.19119 24.0239 6.33149 26.7899 8.96879 29.0297ZM11.7503 14.7153L12.2646 10.5164H25.5772L25.0616 14.7153H11.7503ZM23.7355 25.4753H10.423L11.5486 16.3157H24.8599L24.4349 19.7871H16.1048L15.8917 21.4998H24.2282L23.7355 25.4753Z\"\n fill=\"#9DA0A6\"\n />\n </svg>\n );\n }\n}\n\nexport default FantasyIcon;\n","import React from 'react';\nimport { IconProps } from './Icon';\n\nclass WarningIcon extends React.Component<IconProps, {}> {\n render() {\n return (\n <svg\n width={this.props.width}\n height={this.props.height}\n viewBox=\"0 0 22 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M11.0022 0.75L21.8012 19.4545H0.203125L11.0022 0.75ZM11.7522 13.5V7.5H10.2522V13.5H11.7522ZM11.8022 14.95H10.2022V16.55H11.8022V14.95Z\"\n fill=\"#F58B00\"\n />\n </svg>\n );\n }\n}\n\nexport default WarningIcon;\n","import React from 'react';\nimport { IconProps } from './Icon';\n\nconst ExpandIcon = (props: IconProps) => {\n return (\n <svg\n width={props.width}\n height={props.height}\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.5 34.5L24 34.5L24 37.5L10.5 37.5L10.5 24L13.5 24L13.5 34.5ZM34.5 24L34.5 13.5006L24.0006 13.5045L23.9994 10.5045L37.5 10.4994L37.5 24L34.5 24Z\"\n fill=\"white\"\n />\n </svg>\n );\n};\n\nexport default ExpandIcon;\n","import React from 'react';\nimport { IconProps } from './Icon';\n\nconst CollapseIcon = (props: IconProps) => {\n return (\n <svg\n width={props.width}\n height={props.height}\n viewBox=\"0 0 49 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M20 39L20 28.5L9.5 28.5L9.5 25.5L23 25.5L23 39L20 39ZM39.5 22.5L26 22.5L26 9.00392L29 9.00392L29 19.5L39.5 19.5L39.5 22.5Z\"\n fill=\"white\"\n />\n </svg>\n );\n};\n\nexport default CollapseIcon;\n","import React from 'react';\nimport { IconProps } from './Icon';\n\nconst TimesIcon = (props: IconProps) => {\n return (\n <svg\n width={props.width}\n height={props.height}\n viewBox=\"0 0 25 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.29999 3.73242L12.8 10.2324L19.3 3.73242L21.0678 5.50019L14.5678 12.0002L21.0678 18.5002L19.3 20.268L12.8 13.768L6.29999 20.268L4.53223 18.5002L11.0322 12.0002L4.53223 5.50019L6.29999 3.73242Z\"\n fill=\"#FF7F7F\"\n />\n </svg>\n );\n};\n\nexport default TimesIcon;\n","import React from 'react';\nimport { IconProps } from './Icon';\n\nconst CheckmarkIcon = (props: IconProps) => {\n return (\n <svg\n width={props.width}\n height={props.height}\n viewBox=\"0 0 25 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M22.0678 6.50019L9.79999 18.768L3.53223 12.5002L5.29999 10.7324L9.79999 15.2324L20.3 4.73242L22.0678 6.50019Z\"\n fill=\"#41BA42\"\n />\n </svg>\n );\n};\n\nexport default CheckmarkIcon;\n","import React from 'react';\nimport { IconProps } from './Icon';\n\nclass FlameIcon extends React.Component<IconProps> {\n constructor(props: IconProps) {\n super(props);\n }\n\n render() {\n return (\n <svg\n width={this.props.width}\n height={this.props.height}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.54183 0.327148L9.39895 0.669996C11.7818 1.62315 13.1252 3.98581 13.1252 7.08363V7.65808L14.6806 6.1026L15.1035 6.73694C15.9332 7.98141 17.2918 10.2078 17.2918 12.5003C17.2918 16.6478 14.0406 19.3753 10.0002 19.3753C5.95971 19.3753 2.7085 16.6478 2.7085 12.5003C2.7085 9.7532 4.31768 8.02946 5.74552 6.49998L5.79325 6.44885C7.27047 4.86611 8.54183 3.47254 8.54183 1.25029V0.327148ZM10.5323 10.5213L10.6145 10.7677C11.0056 11.941 11.4873 12.5422 11.892 13.0473L11.9337 13.0993C12.1409 13.3583 12.338 13.61 12.4799 13.9081C12.6244 14.2115 12.7085 14.5549 12.7085 15.0003C12.7085 16.496 11.4959 17.7086 10.0002 17.7086C8.50439 17.7086 7.29183 16.496 7.29183 15.0003C7.29183 13.5264 8.18282 11.9311 10.3096 10.655L10.5323 10.5213Z\"\n fill=\"#F58B00\"\n />\n </svg>\n );\n }\n}\n\nexport default FlameIcon; ","import React from 'react';\nimport { IconProps } from './Icon';\n\nclass BetsWarningIcon extends React.Component<IconProps> {\n constructor(props: IconProps) {\n super(props);\n }\n\n render() {\n return (\n <svg\n width={this.props.width}\n height={this.props.height}\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3 16C3 8.8203 8.8203 3 16 3C23.1797 3 29 8.8203 29 16C29 23.1797 23.1797 29 16 29C8.8203 29 3 23.1797 3 16ZM14.6001 12.0668H17.4001V9.26676H14.6001V12.0668ZM17.3333 22.6667V14H14.6667V22.6667H17.3333Z\"\n fill=\"#FFB759\"\n />\n </svg>\n );\n }\n}\n\nexport default BetsWarningIcon;\n","import React from 'react';\nimport { IconProps } from './Icon';\n\nclass MobilePhoneIcon extends React.Component<IconProps> {\n constructor(props: IconProps) {\n super(props);\n }\n\n render() {\n return (\n <svg\n width={this.props.width}\n height={this.props.height}\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.33333 1.66663C8.04467 1.66663 7 2.7113 7 3.99996V28C7 29.2886 8.04467 30.3333 9.33333 30.3333H22.6667C23.9553 30.3333 25 29.2886 25 28V3.99996C25 2.7113 23.9553 1.66663 22.6667 1.66663H9.33333ZM9 7.66663V23H23V7.66663H9ZM18 26H14V27.3333H18V26Z\"\n fill=\"#6C6E6F\"\n />\n </svg>\n );\n }\n}\n\nexport default MobilePhoneIcon;\n","import React from 'react';\nimport KeyPlaysIcon from './KeyPlaysIcon';\nimport PlayIcon from './PlayIcon';\nimport BetsIcon from './BetsIcon';\nimport StatsIcon from './StatsIcon';\nimport FantasyIcon from './FantasyIcon';\nimport WarningIcon from './WarningIcon';\nimport ExpandIcon from './ExpandIcon';\nimport CollapseIcon from './CollapseIcon';\nimport TimesIcon from './TimesIcon';\nimport CheckmarkIcon from './CheckmarkIcon';\nimport FlameIcon from './FlameIcon';\nimport BetsWarningIcon from './BetsWarningIcon';\nimport MobilePhoneIcon from './MobilePhoneIcon';\n\nconst iconImports = {\n keyPlays: KeyPlaysIcon,\n play: PlayIcon,\n bets: BetsIcon,\n stats: StatsIcon,\n fantasy: FantasyIcon,\n warning: WarningIcon,\n expand: ExpandIcon,\n collapse: CollapseIcon,\n times: TimesIcon,\n checkmark: CheckmarkIcon,\n flame: FlameIcon,\n betsWarning: BetsWarningIcon,\n mobilePhone: MobilePhoneIcon,\n};\n\nexport type IconsName = keyof typeof iconImports;\n\nexport type IconProps = {\n iconName: IconsName;\n width: number;\n height: number;\n};\n\n// Skeleton component for loading state\nconst Skeleton = (props: Omit<IconProps, 'iconName'>) => (\n <div style={{ width: props.width, height: props.height }} />\n);\n\ninterface IconState {\n loaded: boolean;\n}\nclass Icon extends React.Component<IconProps, IconState> {\n render() {\n const { iconName, width, height } = this.props;\n\n const IconComponent = iconImports[iconName];\n if (!IconComponent) {\n return <Skeleton width={width} height={height} />;\n }\n\n return <IconComponent iconName={iconName} width={width} height={height} />;\n }\n}\n\nexport default Icon;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./PanelNavButton.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import BaseButton from '@/components/atoms/BaseButton/BaseButton';\nimport Icon, { IconsName } from '@/components/atoms/SvgIcon/Icon';\nimport './PanelNavButton.styles.css';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { withFocusable } from '@/external/spatial-navigation';\n\ntype PanelNavButtonProps = {\n iconName: IconsName;\n index: number;\n active: boolean;\n children?: React.ReactNode;\n focused?: boolean;\n focusKey: string;\n onBecameFocused: () => void;\n};\n\nclass PanelNavButton extends React.Component<PanelNavButtonProps, {}> {\n static displayName = 'PanelNavButton';\n\n static propTypes = {\n iconName: PropTypes.string.isRequired,\n index: PropTypes.number.isRequired,\n active: PropTypes.bool.isRequired,\n children: PropTypes.node,\n focused: PropTypes.bool,\n onBecameFocused: PropTypes.func,\n buttonRef: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n };\n\n render() {\n const { iconName, active, children, focused } = this.props;\n\n return (\n <div\n className={[\n 'panel-nav-button-container',\n 'T02',\n active ? 'panel-nav-button-active' : '',\n ].join(' ')}\n data-focused={focused}\n data-style=\"display: flex;\"\n >\n <BaseButton>\n <Icon iconName={iconName} height={36} width={36} />\n </BaseButton>\n {children}\n </div>\n );\n }\n}\n\nexport default withFocusable<PanelNavButtonProps>()(PanelNavButton);\n","import PanelNavButton from './PanelNavButton';\n\nexport default PanelNavButton;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./PanelNavigation.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { pause } from '@/external/spatial-navigation';\nimport SDK from '..';\n\n/**\n * @description Useful when you want to lose the focus of the SDK and delegate it to the Client App.\n */\nconst deliverFocus = (e: HTMLElement) => {\n const eventVm = SDK.getMaestroEventViewModel();\n e.dataset['focused'] = 'false';\n pause();\n eventVm.delegate.startFocusManagement();\n};\n\nexport default deliverFocus;\n","import PanelNavButton from '@/components/molecules/PanelNavButton';\nimport { IconsName } from '@/components/atoms/SvgIcon/Icon';\nimport './PanelNavigation.styles.css';\nimport React from 'react';\nimport deliverFocus from '@/helpers/deliver-focus';\nimport { Details, Direction } from '@/external/spatial-navigation/utils';\nimport { setFocus } from '@/external/spatial-navigation';\n\ninterface PanelNavigationProps {\n items: {\n title: string;\n onEnter: () => void;\n iconName: IconsName;\n active: boolean;\n }[];\n}\n\nclass PanelNavigationButton extends React.Component<{\n item: PanelNavigationProps['items'][number];\n index: number;\n itemFocused: number | null;\n onBecameFocused: (index: number) => () => void;\n onArrowPress?: (direction: Direction) => void;\n}> {\n handleArrowPress = (d: Direction, _props: any, details: Details) => {\n if (d === 'left' && this.props.itemFocused === 0 && details.layout) {\n deliverFocus(details.layout.node);\n return;\n }\n\n if (this.props.onArrowPress) {\n this.props.onArrowPress(d);\n }\n };\n\n render() {\n const { item, index } = this.props;\n return (\n <PanelNavButton\n iconName={item.iconName}\n key={item.title}\n index={index}\n onBecameFocused={this.props.onBecameFocused(index)}\n active={item.active}\n focusKey={`PANEL_NAV_BUTTON_${index}`}\n onArrowPress={this.handleArrowPress}\n >\n {item.title}\n </PanelNavButton>\n );\n }\n}\n\nclass PanelNavigation extends React.Component<PanelNavigationProps> {\n state = {\n itemFocused: null,\n lastFocused: null,\n };\n\n handleBecameFocused = (index: number) => () => {\n if (this.state.lastFocused !== index && this.state.lastFocused) {\n setFocus(`PANEL_NAV_BUTTON_${this.state.lastFocused}`);\n return;\n }\n\n this.setState({ itemFocused: index, lastFocused: null }, () => {\n if (this.props.items[index]) {\n this.props.items[index].onEnter();\n }\n });\n };\n\n handleArrowPress = (direction: Direction) => {\n if (direction === 'down') {\n this.setState({ lastFocused: this.state.itemFocused });\n }\n };\n\n render() {\n return (\n <div className=\"panel-navigation\">\n {this.props.items.map((item, index) => (\n <PanelNavigationButton\n itemFocused={this.state.itemFocused}\n onBecameFocused={this.handleBecameFocused}\n onArrowPress={this.handleArrowPress}\n key={item.title}\n item={item}\n index={index}\n />\n ))}\n </div>\n );\n }\n}\n\nexport default PanelNavigation;\n","import PanelNavigation from './PanelNavigation';\n\nexport default PanelNavigation;\n","import React from 'react';\nimport { ImgHTMLAttributes } from 'react';\n\ninterface ImageProps extends ImgHTMLAttributes<HTMLImageElement> {}\n\nclass Image extends React.Component<ImageProps> {\n state = {\n failed: false,\n };\n\n constructor(props: ImageProps) {\n super(props);\n }\n\n handleError = () => {\n this.setState({ failed: true });\n };\n\n render() {\n if (this.state.failed) {\n console.warn('Image failed to load:', this.props.src);\n return null;\n }\n\n return (\n <img\n alt={this.props.alt || 'Image'}\n {...this.props}\n onError={this.handleError}\n />\n );\n }\n}\n\nexport default Image;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./KeyPlayCardView.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import Icon from './Icon';\n\nexport default Icon;\n","import React from 'react';\n\nexport default class ScoreCard extends React.Component<\n {\n awayTeamScore?: number;\n homeTeamScore?: number;\n homeTeamName: string;\n awayTeamName: string;\n },\n {}\n> {\n render() {\n const {\n awayTeamScore,\n homeTeamScore,\n homeTeamName,\n awayTeamName,\n } = this.props;\n\n return (\n <div className=\"score\" data-style=\"display: flex;\">\n <div className=\"score-team T05_ALT\" data-style=\"display: flex;\">\n <span>{homeTeamName}</span>\n <span className=\"T30 score-value\">{homeTeamScore}</span>\n </div>\n <div className=\"score-team T05_ALT\" data-style=\"display: flex;\">\n <span className=\"T30 score-value\">{awayTeamScore}</span>\n <span>{awayTeamName}</span>\n </div>\n </div>\n );\n }\n}\n","import Image from '@/components/atoms/Image';\nimport { BASE_64_KEY_PLAY_THUMBNAIL_FALLBACK } from '../constants';\nimport IKeyPlay, { KeyPlayLoadFailureStatus } from '../interfaces/IKeyPlays';\nimport './KeyPlayCardView.styles.css';\nimport SDK from '@/index';\nimport Icon from '@/components/atoms/SvgIcon';\nimport React from 'react';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport ScoreCard from './KeyPlayCardScoreTagView';\nimport KeyPlaysViewModel from '../view-model/KeyPlaysViewModel';\nimport deliverFocus from '@/helpers/deliver-focus';\nimport { Direction, Layout } from '@/external/spatial-navigation/utils';\nimport FocusableItem from '@/components/core/ScrollableContainer/FocusableItem';\nimport {\n DEFAULT_SCROLLABLE_CONTAINER_CONTEXT,\n SCROLLABLE_CONTEXT_TYPE,\n} from '@/components/core/ScrollableContainer/ScrollableContainer';\n\ntype KeyPlayCardViewProps = IKeyPlay & {\n isPlaying: boolean;\n playbackProgress: number | null;\n isScoring: boolean;\n setRef: (ref: HTMLDivElement | null) => void;\n};\n\ntype KeyPlaysCardViewState = {\n failedClip: KeyPlayLoadFailureStatus | null;\n};\n\nexport class KeyPlayCardView extends React.Component<\n KeyPlayCardViewProps & WithFocusableProps,\n KeyPlaysCardViewState\n> {\n private failedClipListener: () => void = () => {};\n private ref: HTMLDivElement | null = null;\n private vm: KeyPlaysViewModel;\n state = {\n failedClip: null,\n };\n\n constructor(props: KeyPlayCardViewProps) {\n super(props);\n this.vm = SDK.getMaestroEventViewModel().keyPlaysViewModel;\n }\n\n componentDidMount() {\n this.failedClipListener = this.vm.failedClips.subscribe((failedClips) => {\n this.setState({ failedClip: failedClips[this.props.clipID] });\n });\n\n this.props.setRef(this.ref);\n }\n\n componentWillUnmount() {\n if (this.failedClipListener) {\n this.failedClipListener();\n }\n }\n\n renderImage = () => {\n const { playerImageUrl, teamImageUrl, thumbnailImageUrl } = this.props;\n if (playerImageUrl) {\n return (\n <Image\n src={playerImageUrl}\n crossOrigin=\"anonymous\"\n alt=\"Key Play Player Image\"\n className=\"cardImage\"\n />\n );\n }\n\n if (teamImageUrl) {\n return (\n <Image\n src={teamImageUrl}\n crossOrigin=\"anonymous\"\n alt=\"Key Play Team Image\"\n className=\"cardImage\"\n />\n );\n }\n\n if (thumbnailImageUrl) {\n return (\n <Image\n src={thumbnailImageUrl}\n crossOrigin=\"anonymous\"\n alt=\"Key Play Thumbnail Image\"\n className=\"cardImage\"\n />\n );\n }\n\n return (\n <Image\n src={BASE_64_KEY_PLAY_THUMBNAIL_FALLBACK}\n crossOrigin=\"anonymous\"\n alt=\"Key Play Thumbnail Image\"\n className=\"cardImage\"\n />\n );\n };\n\n render() {\n const {\n clipID,\n description,\n isPlaying,\n playbackProgress,\n isScoring,\n focused,\n awayTeamScore,\n homeTeamScore,\n homeTeamName,\n awayTeamName,\n } = this.props;\n const { failedClip } = this.state;\n\n return (\n <div\n className=\"key-play-card focus-ring\"\n id={clipID}\n data-focused={focused}\n data-style=\"display: flex;\"\n ref={(ref) => (this.ref = ref)}\n >\n <div className=\"key-play-card-content\">\n {this.renderImage()}\n <div className=\"text-content T05_ALT\" data-style=\"display: flex;\">\n <div className=\"multi-line\">{description}</div>\n </div>\n </div>\n {isPlaying && playbackProgress !== null && (\n <progress value={playbackProgress} max=\"1\" />\n )}\n {isScoring && (\n <ScoreCard\n awayTeamScore={awayTeamScore}\n homeTeamScore={homeTeamScore}\n homeTeamName={homeTeamName}\n awayTeamName={awayTeamName}\n />\n )}\n\n {failedClip === 'recentFailure' && (\n <div className=\"error-state\" data-style=\"display: flex;\">\n <Icon iconName=\"warning\" width={21.6} height={18.7} />\n <span className=\"T05_ALT\">Could not play this clip. </span>\n </div>\n )}\n {failedClip === 'nonRecentFailure' && (\n <div className=\"non-recent-error-state\">\n <Icon iconName=\"warning\" width={21.6} height={18.7} />\n </div>\n )}\n </div>\n );\n }\n}\n\nconst FocusableKeyPlayCard = withFocusable<KeyPlayCardViewProps>()(\n KeyPlayCardView as React.ComponentType<KeyPlayCardViewProps>\n);\n\nexport default class KeyPlayCard extends React.Component<\n Omit<KeyPlayCardViewProps, 'setRef'> & WithFocusableProps\n> {\n private ref: HTMLDivElement | null = null;\n context = DEFAULT_SCROLLABLE_CONTAINER_CONTEXT;\n static contextTypes = SCROLLABLE_CONTEXT_TYPE;\n\n setRef = (ref: HTMLDivElement | null) => {\n this.ref = ref;\n };\n\n handleLeftPressed = (d: Direction) => {\n if (d === 'left' && this.ref) {\n deliverFocus(this.ref);\n }\n };\n\n onBecameFocused = (layout: Layout) => {\n this.context.scrollToFocusedElement(layout);\n };\n\n render() {\n return (\n <FocusableItem>\n <FocusableKeyPlayCard\n {...this.props}\n setRef={this.setRef}\n onArrowPress={this.handleLeftPressed}\n onBecameFocused={this.onBecameFocused}\n />\n </FocusableItem>\n );\n }\n}\n","import IMaestroKeyPlaysResponse from './interfaces/IKeyPlaysResponse';\n\nexport const KEY_PLAYS_RESPONSE_MOCK_DATA: IMaestroKeyPlaysResponse = {\n entities: {\n team: {\n '251': {\n id: '251',\n displayName: 'Texas Longhorns',\n color: 'c15d26',\n alternateColor: 'ffffff',\n shortName: 'Texas',\n homeAway: 'away',\n displayOrder: '1',\n logoRef:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/teams/251.jpg?w=184&h=144',\n logoDarkRef: 'https://a.espncdn.com/i/teamlogos/ncaa/500-dark/251.png',\n },\n '264': {\n id: '264',\n displayName: 'Washington Huskies',\n color: '33006f',\n alternateColor: 'e8d3a2',\n shortName: 'Washington',\n homeAway: 'home',\n displayOrder: '0',\n logoRef:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/teams/264.jpg?w=184&h=144',\n logoDarkRef: 'https://a.espncdn.com/i/teamlogos/ncaa/500-dark/264.png',\n },\n },\n athlete: {\n '4360423': {\n id: '4360423',\n shortName: 'M. Penix Jr.',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4360423.jpg?w=184&h=144',\n },\n '4430637': {\n id: '4430637',\n shortName: 'J. Polk',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4430637.jpg?w=184&h=144',\n },\n '4430834': {\n id: '4430834',\n shortName: 'J. McMillan',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4430834.jpg?w=184&h=144',\n },\n '4569337': {\n id: '4569337',\n shortName: 'R. Sanborn',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4569337.jpg?w=184&h=144',\n },\n '4570040': {\n id: '4570040',\n shortName: 'B. Murphy II',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4570040.jpg?w=184&h=144',\n },\n '4597500': {\n id: '4597500',\n shortName: 'A. Mitchell',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4597500.jpg?w=184&h=144',\n },\n '4689338': {\n id: '4689338',\n shortName: 'D. Johnson',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4689338.jpg?w=184&h=144',\n },\n '4870609': {\n id: '4870609',\n shortName: 'C. Baxter',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4870609.jpg?w=184&h=144',\n },\n '4889929': {\n id: '4889929',\n shortName: 'Q. Ewers',\n headshot:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4889929.jpg?w=184&h=144',\n },\n },\n },\n sections: [\n {\n title: '1st Quarter',\n items: [\n {\n description: \"Ja'Lynn Polk's 77-yard catch sets up Washington TD\",\n team: '264',\n awayScore: '0',\n homeScore: '7',\n wallClock: '2024-01-02T02:11:05Z',\n displayClock: '11:04',\n shortPeriod: 'Q1',\n scoringPlay: true,\n athlete: '4689338',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4689338.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225214',\n },\n {\n description: 'Germie Bernard makes leaping grab for Washington',\n team: '264',\n wallClock: '2024-01-02T02:38:54Z',\n displayClock: '1:30',\n shortPeriod: 'Q1',\n scoringPlay: false,\n athlete: '4360423',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4360423.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225401',\n },\n ],\n },\n {\n title: '2nd Quarter',\n items: [\n {\n description: 'Dillon Johnson scores 2nd TD of game for the Huskies',\n team: '264',\n awayScore: '7',\n homeScore: '14',\n wallClock: '2024-01-02T02:47:33Z',\n displayClock: '13:08',\n shortPeriod: 'Q2',\n scoringPlay: true,\n athlete: '4689338',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4689338.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225442',\n },\n {\n description: 'Texas takes over after Washington muffs punt',\n team: '251',\n wallClock: '2024-01-02T02:54:50Z',\n displayClock: '11:45',\n shortPeriod: 'Q2',\n scoringPlay: false,\n athlete: '4569337',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4569337.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225487',\n },\n {\n description: 'Big man TD! Byron Murphy II punches it in for Texas',\n team: '251',\n awayScore: '14',\n homeScore: '14',\n wallClock: '2024-01-02T02:57:22Z',\n displayClock: '10:08',\n shortPeriod: 'Q2',\n scoringPlay: true,\n athlete: '4570040',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4570040.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225513',\n },\n {\n description:\n 'Rome Odunze makes over-the-shoulder grab for Washington',\n team: '264',\n wallClock: '2024-01-02T03:02:27Z',\n displayClock: '9:31',\n shortPeriod: 'Q2',\n scoringPlay: false,\n athlete: '4360423',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4360423.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225518',\n },\n {\n description: \"Texas stops Washington's attempt on 4th down\",\n team: '251',\n wallClock: '2024-01-02T03:06:28Z',\n displayClock: '6:59',\n shortPeriod: 'Q2',\n scoringPlay: false,\n athlete: '4689338',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4689338.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225559',\n },\n {\n description:\n \"Ja'Lynn Polk makes bobbling TD catch and Washington goes ahead\",\n team: '264',\n awayScore: '14',\n homeScore: '21',\n wallClock: '2024-01-02T03:27:56Z',\n displayClock: '1:27',\n shortPeriod: 'Q2',\n scoringPlay: true,\n athlete: '4430637',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4430637.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225686',\n },\n {\n description: \"Texas ties the score after CJ Baxter's TD run\",\n team: '251',\n awayScore: '21',\n homeScore: '21',\n wallClock: '2024-01-02T03:38:42Z',\n displayClock: '0:17',\n shortPeriod: 'Q2',\n scoringPlay: true,\n athlete: '4870609',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4870609.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39225762',\n },\n ],\n },\n {\n title: '3rd Quarter',\n items: [\n {\n description:\n 'Penix threads the needle to McMillan for Washington score',\n team: '264',\n awayScore: '21',\n homeScore: '28',\n wallClock: '2024-01-02T04:11:00Z',\n displayClock: '10:30',\n shortPeriod: 'Q3',\n scoringPlay: true,\n athlete: '4430834',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4430834.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39226021',\n },\n {\n description: 'Texas commits their first turnover of the game',\n team: '264',\n wallClock: '2024-01-02T04:16:16Z',\n displayClock: '10:14',\n shortPeriod: 'Q3',\n scoringPlay: false,\n athlete: '4870609',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4870609.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39226030',\n },\n ],\n },\n {\n title: '4th Quarter',\n items: [\n {\n description:\n 'Hang time! Adonai Mitchell makes incredible TD grab for Texas',\n team: '251',\n awayScore: '28',\n homeScore: '34',\n wallClock: '2024-01-01T05:08:14Z',\n displayClock: '7:23',\n shortPeriod: 'Q4',\n scoringPlay: true,\n athlete: '4597500',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4597500.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39226360',\n },\n {\n description: 'How did Penix drop this pass in to Odunze?',\n team: '264',\n wallClock: '2024-01-01T05:17:15Z',\n displayClock: '3:48',\n shortPeriod: 'Q4',\n scoringPlay: false,\n athlete: '4360423',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4360423.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39226394',\n },\n {\n description:\n \"Jordan Whittington's big catch gives Texas good field position\",\n team: '251',\n wallClock: '2024-01-01T05:41:48Z',\n displayClock: '0:28',\n shortPeriod: 'Q4',\n scoringPlay: false,\n athlete: '4889929',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4889929.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39226506',\n },\n {\n description:\n \"Washington survives Texas' final drive to win Sugar Bowl\",\n team: '264',\n wallClock: '2024-01-02T04:43:41Z',\n displayClock: '0:00',\n shortPeriod: 'Q4',\n scoringPlay: false,\n athlete: '4889929',\n thumbnail:\n 'https://stitcher.espn.com/ctv/sports/football/leagues/college-football/athletes/4889929.jpg?w=184&h=144',\n thumbnailType: 'headshot',\n clipID: '39226585',\n },\n ],\n },\n ],\n};\n\nexport const BASE_64_KEY_PLAY_THUMBNAIL_FALLBACK =\n 'data:image/jpeg;base64,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';\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./KeyPlaysView.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import BaseButton from './BaseButton';\n\nexport default BaseButton;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./ActionButton.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import BaseButton from '@/components/atoms/BaseButton';\nimport './ActionButton.styles.css';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport React from 'react';\n\nclass ActionButton extends React.Component<WithFocusableProps, {}> {\n render() {\n return (\n <BaseButton className=\"action-button T05_ALT\" {...this.props}>\n {this.props.children}\n </BaseButton>\n );\n }\n}\n\nexport default withFocusable()(ActionButton);\n","import ActionButton from './ActionButton';\n\nexport default ActionButton;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./KeyPlayErrorStateView.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import ActionButton from '@/components/molecules/ActionButton';\nimport { KeyPlaysErrorState } from '../interfaces/IKeyPlays';\nimport './KeyPlayErrorStateView.styles.css';\nimport React from 'react';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\n\ntype Props = {\n errorState: KeyPlaysErrorState;\n onRetry: () => void;\n};\n\nclass UnpopulatedEvent extends React.Component {\n render() {\n return (\n <div className=\"sdk--key-play-error-state-unpopulatedEvent\" data-style=\"display: flex;\">\n <div className=\"main-content\" data-style=\"display: flex;\">\n <h3 className=\"T70\">Greatness takes time.</h3>\n <p className=\"T20\">\n Key plays are still in the making! Come back soon to check &apos;em\n out.\n </p>\n </div>\n <div className=\"unpopulatedEvent-examples\" data-style=\"display: flex;\">\n {Array.from({ length: 4 }).map((_, i) => (\n <div key={i} className=\"example\" data-style=\"display: flex;\" />\n ))}\n </div>\n </div>\n );\n }\n}\n\nclass UnsupportedEvent extends React.Component {\n render() {\n return (\n <div className=\"sdk--key-play-error-state-unsupportedEvent\" data-style=\"display: flex;\">\n <h3 className=\"T70\">No Key Plays Available</h3>\n <svg\n viewBox=\"0 0 520 359\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g opacity=\"0.16\">\n <path\n d=\"M146.334 219.427V244.686L168.723 198.187V38.0215L165.279 40.3178V188.427L146.334 219.427Z\"\n fill=\"#6D6D6D\"\n />\n <rect\n x=\"94.6687\"\n y=\"219.427\"\n width=\"51.6662\"\n height=\"25.259\"\n fill=\"#777777\"\n />\n <rect\n x=\"145.187\"\n y=\"39.1694\"\n width=\"20.6665\"\n height=\"149.258\"\n fill=\"#666666\"\n />\n <path\n d=\"M146.335 219.427H94.6687L143.465 187.279H167.001L146.335 219.427Z\"\n fill=\"#666666\"\n />\n <path\n d=\"M375.389 219.427V244.686L353 198.187V38.0215L356.445 40.3178V188.427L375.389 219.427Z\"\n fill=\"#6D6D6D\"\n />\n <rect\n width=\"51.6662\"\n height=\"25.259\"\n transform=\"matrix(-1 0 0 1 427.055 219.427)\"\n fill=\"#777777\"\n />\n <rect\n width=\"20.6665\"\n height=\"149.258\"\n transform=\"matrix(-1 0 0 1 376.537 39.1694)\"\n fill=\"#666666\"\n />\n <path\n d=\"M375.389 219.427H427.055L378.259 187.279H354.722L375.389 219.427Z\"\n fill=\"#666666\"\n />\n <path\n d=\"M23.4844 141.354H496.517L410.981 121.835H93.5208L23.4844 141.354Z\"\n fill=\"#B1B1B1\"\n />\n <rect\n x=\"23.4844\"\n y=\"141.354\"\n width=\"473.033\"\n height=\"19.5183\"\n fill=\"#777777\"\n />\n <rect\n x=\"72.8545\"\n y=\"51.7993\"\n width=\"374.293\"\n height=\"45.9255\"\n fill=\"#CDCDCD\"\n />\n </g>\n </svg>\n </div>\n );\n }\n}\n\nclass SimpleTabLoadFailure extends React.Component<WithFocusableProps> {\n render() {\n const { focused } = this.props;\n\n return (\n <div\n data-focused={focused}\n className=\"sdk--key-play-error-state-tabLoadFailure focus-ring\"\n data-style=\"display: flex;\"\n >\n <h3 className=\"T70\">Let&apos;s try that again...</h3>\n <p className=\"T20\">{\"We're having trouble loading this.\"}</p>\n <ActionButton\n data-focused={focused}\n onEnterPress={this.props.onEnterPress}\n >\n Refresh\n </ActionButton>\n </div>\n );\n }\n}\n\nconst TabLoadFailure = withFocusable()(SimpleTabLoadFailure);\n\nclass KeyPlayErrorStateView extends React.Component<Props, {}> {\n render() {\n const { errorState, onRetry } = this.props;\n\n if (errorState === 'unsupportedEvent') {\n return <UnsupportedEvent />;\n }\n\n if (errorState === 'unpopulatedEvent') {\n return <UnpopulatedEvent />;\n }\n\n if (errorState === 'tabLoadFailure') {\n return <TabLoadFailure onEnterPress={onRetry} />;\n }\n\n return null;\n }\n}\n\nexport default KeyPlayErrorStateView;\n","import ScrollableContainer from './ScrollableContainer';\n\nexport default ScrollableContainer;\n","import React, { Component } from 'react';\nimport KeyPlayCardView from './KeyPlayCardView';\nimport './KeyPlaysView.styles.css';\nimport KeyPlayErrorStateView from './KeyPlayErrorStateView';\nimport SDK from '@/index';\nimport IKeyPlay, { KeyPlaysErrorState } from '../interfaces/IKeyPlays';\nimport KeyPlaysViewModel from '../view-model/KeyPlaysViewModel';\nimport { setFocus } from '@/external/spatial-navigation';\nimport ScrollableContainer from '@/components/core/ScrollableContainer';\n\nconst STICKY_HEADER_HEIGHT = 32;\n\ntype Unsubscribe = () => void;\n\ninterface IKeyPlayItem {\n id: string;\n clipID: string;\n awayTeamScore?: number;\n homeTeamScore?: number;\n awayTeamName: string;\n homeTeamName: string;\n description: string;\n playerImageUrl: string;\n teamImageUrl: string;\n thumbnailImageUrl: string;\n}\n\ninterface IKeyPlaySection {\n title: string;\n items: IKeyPlayItem[];\n}\n\ninterface IKeyPlaysState {\n playbackProgress: number | null;\n playbackIndex: number | null;\n items: IKeyPlaySection[];\n scrollableContainer: HTMLDivElement | null;\n}\n\nexport class KeyPlays extends Component<{}, IKeyPlaysState> {\n private container: HTMLDivElement | null = null;\n private playbackProgressUnsub: Unsubscribe | null = null;\n private playbackIndexUnsub: Unsubscribe | null = null;\n private itemsUnsub: Unsubscribe | null = null;\n private vm: KeyPlaysViewModel;\n\n constructor(props: {}) {\n super(props);\n this.vm = SDK.getMaestroEventViewModel().keyPlaysViewModel;\n\n const rawSections = this.vm.items.value as {\n title: string;\n items: IKeyPlay[];\n }[];\n this.state = {\n scrollableContainer: null,\n playbackProgress: this.vm.currentClipPlaybackProgress.value ?? null,\n playbackIndex: this.vm.currentlyPlayingClipIndex.value ?? null,\n items: rawSections.map((section) => ({\n title: section.title,\n items: section.items.map((item) => ({\n id: item.id,\n clipID: item.clipID,\n awayTeamScore: item.awayTeamScore,\n homeTeamScore: item.homeTeamScore,\n awayTeamName: item.awayTeamName,\n homeTeamName: item.homeTeamName,\n description: item.description,\n playerImageUrl: item.playerImageUrl || '',\n teamImageUrl: item.teamImageUrl || '',\n thumbnailImageUrl: item.thumbnailImageUrl || '',\n })),\n })),\n };\n }\n\n componentDidMount() {\n this.playbackProgressUnsub = this.vm.currentClipPlaybackProgress.subscribe(\n (value) => {\n this.setState({ playbackProgress: value ?? null });\n }\n );\n this.playbackIndexUnsub = this.vm.currentlyPlayingClipIndex.subscribe(\n (value) => {\n this.setState({ playbackIndex: value ?? null });\n }\n );\n this.itemsUnsub = this.vm.items.subscribe((rawSections) => {\n this.setState({\n items: (rawSections as { title: string; items: IKeyPlay[] }[]).map(\n (section) => ({\n title: section.title,\n items: section.items.map((item) => ({\n id: item.id,\n clipID: item.clipID,\n awayTeamScore: item.awayTeamScore,\n homeTeamScore: item.homeTeamScore,\n awayTeamName: item.awayTeamName,\n homeTeamName: item.homeTeamName,\n description: item.description,\n playerImageUrl: item.playerImageUrl || '',\n teamImageUrl: item.teamImageUrl || '',\n thumbnailImageUrl: item.thumbnailImageUrl || '',\n })),\n })\n ),\n });\n });\n\n this.setState({\n scrollableContainer: this.container,\n });\n }\n\n componentWillUnmount() {\n this.playbackProgressUnsub && this.playbackProgressUnsub();\n this.playbackIndexUnsub && this.playbackIndexUnsub();\n this.itemsUnsub && this.itemsUnsub();\n }\n\n private handlePlayClip = (index: number) => async () => {\n await this.vm.playKeyPlay(index);\n };\n\n render() {\n const {\n playbackProgress,\n playbackIndex,\n items,\n scrollableContainer,\n } = this.state;\n\n return (\n <ScrollableContainer\n scrollableContainerRef={scrollableContainer}\n containerTopOffset={STICKY_HEADER_HEIGHT}\n >\n <div\n ref={(el) => {\n this.container = el;\n }}\n className=\"key-plays-view\"\n data-style=\"display: flex;\"\n >\n {items.map((section, sectionIndex) => (\n <div key={`section-${sectionIndex}`} className=\"key-plays-section\" data-style=\"display: flex;\">\n <h3 className=\"key-plays-section-title T10\">{section.title}</h3>\n <div className=\"key-plays-section-items\" data-style=\"display: flex;\">\n {section.items.map((item) => {\n const absoluteIndex = this.vm.allItems.findIndex(\n (vmItem) => vmItem.id === item.id\n );\n return (\n <KeyPlayCardView\n key={item.id}\n id={item.id}\n clipID={item.clipID}\n description={item.description}\n awayTeamName={item.awayTeamName}\n homeTeamName={item.homeTeamName}\n awayTeamScore={item.awayTeamScore}\n homeTeamScore={item.homeTeamScore}\n playerImageUrl={item.playerImageUrl}\n teamImageUrl={item.teamImageUrl}\n thumbnailImageUrl={item.thumbnailImageUrl}\n isPlaying={this.vm.isCurrentlyPlaying(absoluteIndex)}\n isScoring={Boolean(\n item.awayTeamScore && item.homeTeamScore\n )}\n playbackProgress={\n absoluteIndex === playbackIndex\n ? playbackProgress\n : null\n }\n onEnterPress={this.handlePlayClip(absoluteIndex)}\n />\n );\n })}\n </div>\n </div>\n ))}\n <div className=\"key-plays-bottom-padding\" />\n </div>\n </ScrollableContainer>\n );\n }\n}\n\ninterface KeyPlaysWithErrorStateState {\n errorState: KeyPlaysErrorState;\n}\n\nexport default class KeyPlaysWithErrorState extends Component<\n {},\n KeyPlaysWithErrorStateState\n> {\n private errorStateUnsub: Unsubscribe | null = null;\n private vm: KeyPlaysViewModel;\n\n constructor(props: {}) {\n super(props);\n this.vm = SDK.getMaestroEventViewModel().keyPlaysViewModel;\n this.state = { errorState: this.vm.errorState.value as KeyPlaysErrorState };\n }\n\n componentDidMount() {\n this.errorStateUnsub = this.vm.errorState.subscribe((value) => {\n this.setState({ errorState: value as KeyPlaysErrorState });\n });\n }\n\n componentWillUnmount() {\n this.errorStateUnsub && this.errorStateUnsub();\n }\n\n private handleRetry = async () => {\n await this.vm.userRequestedNewKeyPlaysData();\n setFocus('PANEL_NAV_BUTTON_0');\n };\n\n render() {\n const { errorState } = this.state;\n\n if (errorState) {\n return (\n <KeyPlayErrorStateView\n errorState={errorState}\n onRetry={this.handleRetry}\n />\n );\n }\n\n return <KeyPlays />;\n }\n}\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./SixPackView.style.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport './SixPackView.style.css';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport {\n Details,\n Direction,\n Layout,\n} from '@/external/spatial-navigation/utils';\nimport FocusableItem from '@/components/core/ScrollableContainer/FocusableItem';\nimport {\n DEFAULT_SCROLLABLE_CONTAINER_CONTEXT,\n SCROLLABLE_CONTEXT_TYPE,\n} from '@/components/core/ScrollableContainer/ScrollableContainer';\nimport { ISixPackOdds, SixPackBetItem } from '../../view-model/BetsViewModel';\nimport deliverFocus from '@/helpers/deliver-focus';\n\ntype Props = WithFocusableProps & {\n item: SixPackBetItem;\n};\n\nclass SixPackView extends React.Component<Props> {\n get columnOrder() {\n switch (this.props.item.data.sport) {\n case 'baseball':\n case 'hockey':\n case 'soccer':\n return ['Moneyline', 'Total', 'Spread'] as const;\n default:\n return ['Spread', 'Total', 'Moneyline'] as const;\n }\n }\n\n get isSoccer() {\n return this.props.item.data.sport.toLocaleLowerCase() === 'soccer';\n }\n\n /**\n * Some sports render columns in a different order.\n */\n renderOrderedLineColumn(line: ISixPackOdds['awayTeamOdds']) {\n return this.columnOrder.map((col) => {\n switch (col) {\n case 'Moneyline':\n return <td key={col}>{line.moneylineFirstLine}</td>;\n case 'Spread':\n return (\n <td key={col}>\n {line.gameSpreadFirstLine}\n <br />\n <span className=\"T02\">{line.gameSpreadSecondLine}</span>\n </td>\n );\n case 'Total':\n return (\n <td key={col}>\n {line.totalPointsFirstLine}\n <br />\n <span className=\"T02\">{line.totalPointsSecondLine}</span>\n </td>\n );\n default:\n return null;\n }\n });\n }\n\n render() {\n const data = this.props.item.data as ISixPackOdds;\n const lines = this.isSoccer\n ? [data.homeTeamOdds, data.awayTeamOdds]\n : [data.awayTeamOdds, data.homeTeamOdds];\n\n return (\n <FocusableItem>\n <table\n className=\"six-pack-table focus-ring T02\"\n data-focused={this.props.focused}\n >\n <thead>\n <tr>\n <th scope=\"col\" />\n <th scope=\"col\">\n {this.props.item.data.gameState === 'post' ? 'Close' : 'Open'}\n </th>\n {this.columnOrder.map((col) => (\n <th scope=\"col\" key={col}>\n {col}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {lines.map((line, index) => (\n <tr key={index} className=\"T05_ALT\">\n <td>{line.teamAbbreviation}</td>\n <td>\n {line.startOfGameFirstLine}\n <br />\n <span className=\"T02\">{line.startOfGameSecondLine}</span>\n </td>\n {this.renderOrderedLineColumn(line)}\n </tr>\n ))}\n </tbody>\n </table>\n </FocusableItem>\n );\n }\n}\n\nconst FocusableSixPackView = withFocusable<Props>()(\n SixPackView\n) as React.ComponentType<Props>;\n\nexport default class FocusableSixPackViewWrapper extends React.Component<\n Props\n> {\n static contextTypes = SCROLLABLE_CONTEXT_TYPE;\n context = DEFAULT_SCROLLABLE_CONTAINER_CONTEXT;\n onBecameFocused = (layout: Layout) => {\n this.context.scrollToFocusedElement(layout);\n };\n\n onArrowPress = (d: Direction, _props: any, details: Details) => {\n if (d === 'left' && details.layout) {\n deliverFocus(details.layout.node.firstElementChild as HTMLElement);\n }\n };\n\n render() {\n return (\n <FocusableSixPackView\n {...this.props}\n onBecameFocused={this.onBecameFocused}\n onArrowPress={this.onArrowPress}\n />\n );\n }\n}\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./BetsView.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./SegmentButton.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import { HTMLAttributes } from 'react';\nimport BaseButton from '@/components/atoms/BaseButton/BaseButton';\nimport './SegmentButton.styles.css';\nimport React from 'react';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\n\ntype SegmentButtonProps = HTMLAttributes<HTMLButtonElement> &\n WithFocusableProps & {\n active: boolean;\n };\n\nclass SegmentButton extends React.Component<SegmentButtonProps> {\n render() {\n return (\n <BaseButton\n className=\"segment-button T05_ALT\"\n data-focused={this.props.focused}\n data-active={this.props.active}\n >\n {this.props.children}\n </BaseButton>\n );\n }\n}\n\nexport default withFocusable<SegmentButtonProps>()(\n SegmentButton\n) as React.ComponentType<SegmentButtonProps>;\n","import SegmentButton from './SegmentButton';\n\nexport default SegmentButton;\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./SegmentController.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport SegmentButton from '@/components/molecules/SegmentButton';\nimport './SegmentController.styles.css';\nimport {\n Details,\n Direction,\n Layout,\n} from '@/external/spatial-navigation/utils';\nimport {\n DEFAULT_SCROLLABLE_CONTAINER_CONTEXT,\n SCROLLABLE_CONTEXT_TYPE,\n} from '@/components/core/ScrollableContainer/ScrollableContainer';\nimport { setFocus, WithFocusableProps } from '@/external/spatial-navigation';\nimport deliverFocus from '@/helpers/deliver-focus';\n\nexport type SegmentItem = {\n title: string;\n onEnter: () => void;\n};\n\ninterface SegmentControllerProps {\n backgroundColor?: string;\n items: SegmentItem[];\n}\n\nclass SegmentController extends React.Component<SegmentControllerProps> {\n context = DEFAULT_SCROLLABLE_CONTAINER_CONTEXT;\n static contextTypes = SCROLLABLE_CONTEXT_TYPE;\n\n state = {\n activeIndex: 0,\n lastActiveIndex: 0,\n };\n\n onBecameFocused = (item: SegmentItem, i: number) => (layout: Layout) => {\n if (\n this.state.lastActiveIndex !== i &&\n this.state.lastActiveIndex !== null\n ) {\n setFocus(`segment-controller-${this.state.lastActiveIndex}`);\n return;\n }\n\n this.setState({\n activeIndex: i,\n lastActiveIndex: null,\n });\n\n item.onEnter();\n this.context.scrollToFocusedElement(layout);\n };\n\n handleArrowPress = (index: number) => (\n direction: Direction,\n _props: WithFocusableProps,\n details: Details\n ) => {\n if (direction === 'down' || direction === 'up') {\n this.setState({ lastActiveIndex: this.state.activeIndex });\n }\n\n if (direction === 'left' && index === 0 && details.layout) {\n deliverFocus(details.layout.node.firstElementChild as HTMLElement);\n }\n };\n\n render() {\n return (\n <div\n className=\"segment-controller\"\n style={{\n backgroundColor: this.props.backgroundColor,\n }}\n >\n {this.props.items.map((item, index) => (\n <SegmentButton\n focusKey={`segment-controller-${index}`}\n key={item.title}\n onBecameFocused={this.onBecameFocused(item, index)}\n onArrowPress={this.handleArrowPress(index)}\n active={this.state.activeIndex === index}\n >\n {item.title}\n </SegmentButton>\n ))}\n </div>\n );\n }\n}\n\nexport default SegmentController;\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./UserBetsView.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./Parlay.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import api from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./BetsCard.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport './BetsCard.styles.css';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport FocusableItem from '@/components/core/ScrollableContainer/FocusableItem';\n\nexport type BetsCardProps = {\n children: React.ReactNode;\n header: (props: BetsCardProps & WithFocusableProps) => React.ReactNode;\n footer: (props: BetsCardProps & WithFocusableProps) => React.ReactNode;\n};\n\nclass BetsCard extends React.Component<BetsCardProps & WithFocusableProps> {\n render() {\n return (\n <FocusableItem>\n <div className=\"bets-card focus-ring\" data-focused={this.props.focused} data-style=\"display: flex;\">\n {this.props.header(this.props)}\n <div className=\"bets-card-divider\" />\n {this.props.children}\n {this.props.footer(this.props)}\n </div>\n </FocusableItem>\n );\n }\n}\n\nexport default withFocusable<BetsCardProps>()(BetsCard) as React.ComponentType<\n BetsCardProps & WithFocusableProps\n>;\n","import api from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./OutcomeBadge.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport './OutcomeBadge.styles.css';\nimport Icon from '@/components/atoms/SvgIcon';\n\ntype Props = {\n outcome: string;\n};\n\nconst OutcomeBadge = (props: Props) => {\n return (\n <div className=\"bet-outcome-badge T02\" data-style=\"display: flex;\">\n <Icon\n iconName={props.outcome === 'WIN' ? 'checkmark' : 'times'}\n width={24}\n height={24}\n />\n {props.outcome}\n </div>\n );\n};\n\nexport default OutcomeBadge;\n","import Icon from '@/components/atoms/SvgIcon';\nimport React from 'react';\nimport OutcomeBadge from '../../UserBets/OutcomeBadge/OutcomeBadge';\nimport { WithFocusableProps } from '@/external/spatial-navigation';\nimport Image from '@/components/atoms/Image';\n\ntype BetsCardHeaderProps = {\n betCardProps: WithFocusableProps;\n cardExpanded: boolean;\n children?: React.ReactNode;\n legCountThreshold?: number;\n overrideOutcome?: string;\n outcome?: string;\n betType: string;\n renderIcon?: () => React.ReactNode;\n iconUrl?: string;\n legCount?: number;\n};\n\nconst BetsCardHeader = (props: BetsCardHeaderProps) => {\n const outcome =\n props.overrideOutcome !== 'NOT_SET' ? props.overrideOutcome : props.outcome;\n\n return (\n <div className=\"bets-card-header T05_ALT\" data-style=\"display: flex;\">\n {props.renderIcon\n ? props.renderIcon()\n : props.iconUrl && (\n <Image\n crossOrigin=\"anonymous\"\n src={props.iconUrl}\n alt={`${props.betType} Icon`}\n width={28}\n height={22}\n />\n )}\n <div className=\"T05_ALT\">{props.betType.toLocaleLowerCase()}</div>\n <span className=\"T02\">{props.children}</span>\n <div className=\"bets-card-status-container\" data-style=\"display: flex;\">\n {outcome && outcome !== 'PENDING' && <OutcomeBadge outcome={outcome} />}\n {props.legCountThreshold &&\n props.legCount &&\n props.legCount > props.legCountThreshold && (\n <div\n className=\"icon-container\"\n data-focused={props.betCardProps.focused}\n >\n <Icon\n iconName={props.cardExpanded ? 'collapse' : 'expand'}\n width={48}\n height={48}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default BetsCardHeader;\n","import api from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./BetPill.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport './BetPill.styles.css';\n\nconst BetPill = (props: { children: React.ReactNode }) => {\n return <label className=\"bet-pill\" data-style=\"display: flex;\">{props.children}</label>;\n};\n\nexport default BetPill;\n","import api from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./BetResult.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport './BetResult.styles.css';\n\nconst BetResult = ({ children }: { children: React.ReactNode }) => {\n return <div className=\"bet-result\" data-style=\"display: flex;\">{children}</div>;\n};\nexport default BetResult;\n","import React from 'react';\nimport BetPill from '../../components/BetPill/BetPill';\nimport { IUserBet } from '@/modules/bets/interfaces/IBets';\nimport BetResult from '../../UserBets/BetResult/BetResult';\n\ntype BetsCardFooterProps = {\n bet: IUserBet;\n};\n\nconst BetsCardFooter = (props: BetsCardFooterProps) => {\n const outcome =\n props.bet.overrideOutcome !== 'NOT_SET'\n ? props.bet.overrideOutcome\n : props.bet.outcome;\n\n return (\n <div className=\"bets-card-footer T02\" data-style=\"display: flex;\">\n <BetPill>\n ${props.bet.betAmount} {props.bet.type.toLowerCase()} {props.bet.odds}\n </BetPill>\n {outcome !== 'LOSS' && (\n <BetResult>\n {props.bet.betDisplayStatement}\n <span>${props.bet.payoutAmount}</span>\n </BetResult>\n )}\n </div>\n );\n};\n\nexport default BetsCardFooter;\n","import api from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./Bet.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport './Bet.styles.css';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport { IBetLeg } from '@/modules/bets/interfaces/IBets';\nimport Image from '@/components/atoms/Image';\nimport FocusableItem from '@/components/core/ScrollableContainer/FocusableItem';\n\ntype BetProps = {\n leg: IBetLeg;\n} & WithFocusableProps;\n\nclass Bet extends React.Component<BetProps> {\n render() {\n const accruedValue = this.props.leg.points\n ? Number(this.props.leg.points)\n : 0;\n\n return (\n <FocusableItem>\n <div\n className=\"single-bet focus-ring focus-opacity\"\n data-focusable={this.props.focusable}\n data-focused={this.props.focused}\n data-style=\"display: flex;\"\n >\n {this.props.leg.iconDark && (\n <Image\n crossOrigin=\"anonymous\"\n src={this.props.leg.iconDark}\n alt=\"Bet Icon\"\n />\n )}\n <div className=\"single-bet-main-content T02\" data-style=\"display: flex;\">\n <div className=\"single-bet-info\" data-style=\"display: flex;\">\n <div data-style=\"display: flex;\">\n <div className=\"T05_ALT\">{this.props.leg.selectionText}</div>\n <span className=\"single-bet-info-description\">\n {this.props.leg.marketText}\n </span>\n </div>\n <div className=\"single-bet-odds T01\">{this.props.leg.odds}</div>\n </div>\n {this.props.leg.accrued && (\n <div className=\"single-bet-accrued\" data-style=\"display: flex;\">\n <div className=\"single-bet-accrued-goal\" data-style=\"display: flex;\">\n {accruedValue}\n <span>/{this.props.leg.accrued.goal}</span>\n <div>\n {Math.round(\n (accruedValue / this.props.leg.accrued.goal) * 100\n )}\n %\n </div>\n </div>\n <progress\n data-complete={accruedValue === this.props.leg.accrued.goal}\n value={accruedValue}\n max={this.props.leg.accrued.goal}\n />\n </div>\n )}\n </div>\n </div>\n </FocusableItem>\n );\n }\n}\n\nexport default withFocusable<BetProps>()(Bet);\n","import { IUserBet } from '@/modules/bets/interfaces/IBets';\nimport React from 'react';\nimport Bet from '../../components/Bet/Bet';\nimport {\n Details,\n Direction,\n Layout,\n} from '@/external/spatial-navigation/utils';\nimport {\n DEFAULT_SCROLLABLE_CONTAINER_CONTEXT,\n SCROLLABLE_CONTEXT_TYPE,\n} from '@/components/core/ScrollableContainer/ScrollableContainer';\n\ntype BetsCardEventProps = {\n event: IUserBet['events'][number];\n betsFocusable: boolean;\n betId: string;\n parentFocusKey: string;\n eventIndex: number;\n betType: string;\n onBetArrowPress: (\n eventIndex: number,\n legIndex: number\n ) => (direction: Direction, props: any, details: Details) => void;\n onBetBackPress: () => void;\n};\n\nclass BetsCardEvent extends React.Component<BetsCardEventProps> {\n static contextTypes = SCROLLABLE_CONTEXT_TYPE;\n context = DEFAULT_SCROLLABLE_CONTAINER_CONTEXT;\n\n onBecameFocused = (layout: Layout) => {\n this.context.scrollToFocusedElement(layout);\n };\n\n render() {\n return (\n <div key={this.props.event.displayName} className=\"bets-card-event T10\" data-style=\"display: flex;\">\n <div className=\"T10\">{this.props.event.displayName}</div>\n <div className=\"bets-card-bets\" data-style=\"display: flex;\">\n {this.props.event.legs.map((leg, index) => (\n <Bet\n key={`${this.props.betId}-${this.props.eventIndex}-${index}`}\n focusable={this.props.betsFocusable}\n focusKey={`sdk-bets-card-${this.props.betType}-bet-${this.props.betId}-${this.props.eventIndex}-${index}`}\n onArrowPress={this.props.onBetArrowPress(\n this.props.eventIndex,\n index\n )}\n onBecameFocused={this.onBecameFocused}\n parentFocusKey={this.props.parentFocusKey}\n onBackPress={this.props.onBetBackPress}\n leg={leg}\n />\n ))}\n </div>\n </div>\n );\n }\n}\n\nexport default BetsCardEvent;\n","import React from 'react';\nimport {\n setFocus,\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport {\n Details,\n Direction,\n Layout,\n} from '@/external/spatial-navigation/utils';\nimport { IUserBet } from '@/modules/bets/interfaces/IBets';\nimport BetsCard from '../../components/BetsCard/BetsCard';\nimport BetsCardHeader from '../../components/BetsCard/BetsCardHeader';\nimport BetsCardFooter from './BetsCardFooter';\nimport BetsCardEvent from './BetsCardEvent';\nimport {\n DEFAULT_SCROLLABLE_CONTAINER_CONTEXT,\n SCROLLABLE_CONTEXT_TYPE,\n} from '@/components/core/ScrollableContainer/ScrollableContainer';\nimport deliverFocus from '@/helpers/deliver-focus';\n\nexport const EVENTS_COUNT_THRESHOLD = 3;\n\nexport type BaseBetCardProps = {\n bet: IUserBet;\n renderHeaderContent?: (props: WithFocusableProps) => React.ReactNode;\n};\n\nclass UserBetsCard extends React.Component<\n BaseBetCardProps & WithFocusableProps\n> {\n static contextTypes = SCROLLABLE_CONTEXT_TYPE;\n context = DEFAULT_SCROLLABLE_CONTAINER_CONTEXT;\n\n get betsFocusable() {\n return this.props.bet.events.length > EVENTS_COUNT_THRESHOLD;\n }\n\n get events() {\n return this.props.hasFocusedChild\n ? this.props.bet.events\n : this.props.bet.events.slice(0, EVENTS_COUNT_THRESHOLD);\n }\n\n get focusKeyPrefix() {\n return `sdk-${this.props.bet.type.toLowerCase()}-card`;\n }\n\n get betType() {\n return this.props.bet.type.toLowerCase();\n }\n\n onEnterPress = () => {\n if (!this.betsFocusable) {\n return;\n }\n\n if (!this.props.hasFocusedChild) {\n // Set focus on the first bet of the first event\n setFocus(`sdk-bets-card-${this.betType}-bet-${this.props.bet.id}-0-0`);\n }\n };\n\n focusCard = () => {\n // Focus the card itself\n setFocus(`${this.focusKeyPrefix}-${this.props.bet.id}`);\n };\n\n handleBetArrowPress = (eventIndex: number, legIndex: number) => (\n d: Direction,\n _props: any,\n details: Details\n ) => {\n if (d === 'up' && legIndex === 0 && eventIndex === 0) {\n // If the first leg of the first event is focused and up arrow is pressed,\n this.focusCard();\n // Return false to prevent further propagation\n return false;\n }\n\n if (d === 'left' && details.layout) {\n deliverFocus(details.layout.node.firstElementChild as HTMLElement);\n }\n };\n\n handleCardArrowPress = (d: Direction, _props: any, details: Details) => {\n if (d === 'left' && details.layout) {\n deliverFocus(details.layout.node.firstElementChild as HTMLElement);\n }\n };\n\n renderHeader = (headerProps: WithFocusableProps) => {\n return (\n <BetsCardHeader\n betCardProps={headerProps}\n betType={this.betType}\n iconUrl={this.props.bet.rewardInfo.icon?.dark}\n legCount={this.props.bet.legCount}\n outcome={this.props.bet.outcome}\n overrideOutcome={this.props.bet.overrideOutcome}\n cardExpanded={!!this.props.hasFocusedChild}\n legCountThreshold={EVENTS_COUNT_THRESHOLD}\n >\n {this.props.renderHeaderContent?.(headerProps)}\n </BetsCardHeader>\n );\n };\n\n renderFooter = () => {\n return <BetsCardFooter bet={this.props.bet} />;\n };\n\n becameFocused = (layout: Layout) => {\n this.context.scrollToFocusedElement(layout);\n };\n\n render() {\n return (\n <BetsCard\n header={this.renderHeader}\n footer={this.renderFooter}\n onEnterPress={this.onEnterPress}\n focusKey={`${this.focusKeyPrefix}-${this.props.bet.id}`}\n onArrowPress={this.handleCardArrowPress}\n onBecameFocused={this.becameFocused}\n >\n {this.events.map((event, eventIndex) => (\n <BetsCardEvent\n betType={this.betType}\n betsFocusable={this.betsFocusable}\n event={event}\n eventIndex={eventIndex}\n onBetArrowPress={this.handleBetArrowPress}\n key={event.displayName}\n betId={this.props.bet.id}\n parentFocusKey={this.props.focusKey!}\n onBetBackPress={this.focusCard}\n />\n ))}\n {!this.props.hasFocusedChild && this.betsFocusable && (\n <div className=\"more-bets T05_ALT\">\n +{this.props.bet.legCount - EVENTS_COUNT_THRESHOLD} more\n </div>\n )}\n </BetsCard>\n );\n }\n}\n\nexport default withFocusable<BaseBetCardProps>({ trackChildren: true })(\n UserBetsCard\n);\n","import React from 'react';\nimport './Parlay.styles.css';\nimport { IUserBet } from '@/modules/bets/interfaces/IBets';\nimport UserBetsCard from '../BetsCard/BetsCard';\n\ntype ParlayProps = {\n bet: IUserBet;\n};\n\nconst Parlay = ({ bet }: ParlayProps) => {\n const renderHeaderContent = () => {\n return (\n <div>\n {bet.legCount} Leg{bet.legCount > 1 ? 's' : ''}\n </div>\n );\n };\n\n return (\n <UserBetsCard\n focusKey={`bets-parlay-card-${bet.id}`}\n bet={bet}\n renderHeaderContent={renderHeaderContent}\n />\n );\n};\n\nexport default Parlay;\n","import React from 'react';\nimport { IUserBet } from '@/modules/bets/interfaces/IBets';\nimport UserBetsCard from '../BetsCard/BetsCard';\n\ntype BoostProps = {\n bet: IUserBet;\n};\n\nconst Boost = ({ bet }: BoostProps) => {\n return <UserBetsCard focusKey={`bets-boost-card-${bet.id}`} bet={bet} />;\n};\n\nexport default Boost;\n","import React from 'react';\nimport { IUserBet } from '@/modules/bets/interfaces/IBets';\nimport UserBetsCard from '../BetsCard/BetsCard';\n\ntype StraightProps = {\n bet: IUserBet;\n};\n\nconst Straight = ({ bet }: StraightProps) => {\n return <UserBetsCard focusKey={`bets-straight-card-${bet.id}`} bet={bet} />;\n};\n\nexport default Straight;\n","import React from 'react';\nimport { IUserBet } from '@/modules/bets/interfaces/IBets';\nimport UserBetsCard from '../BetsCard/BetsCard';\n\ntype TeaserProps = {\n bet: IUserBet;\n};\n\nconst Teaser = ({ bet }: TeaserProps) => {\n const renderHeaderContent = () => {\n return (\n <div>\n {bet.legCount} Point{bet.legCount !== 1 ? 's' : ''} Teaser\n </div>\n );\n };\n\n return (\n <UserBetsCard\n focusKey={`bets-teaser-card-${bet.id}`}\n bet={bet}\n renderHeaderContent={renderHeaderContent}\n />\n );\n};\n\nexport default Teaser;\n","import SegmentController, {\n SegmentItem,\n} from '@/components/organisms/SegmentController/SegmentController';\nimport React from 'react';\nimport './UserBetsView.styles.css';\nimport { IUserBet } from '../../interfaces/IBets';\nimport Parlay from './Parlay/Parlay';\nimport Boost from './Boost/Boost';\nimport Straight from './Straight/Straight';\nimport Teaser from './Teaser/Teaser';\nimport { UserBetsBetItem } from '../../view-model/BetsViewModel';\n\nexport type Segments = 'live' | 'settled' | 'upcoming';\n\ntype UserBetsViewProps = {\n item: UserBetsBetItem;\n};\n\nclass UserBetsView extends React.Component<\n UserBetsViewProps,\n { activeSegment: string }\n> {\n state = {\n activeSegment: this.props.item.data.defaultTab,\n };\n\n setSegment = (segment: Segments) => {\n return () => {\n if (this.state.activeSegment !== segment) {\n this.setState({ activeSegment: segment });\n }\n };\n };\n\n segmentItems: (SegmentItem & { type: Segments })[] = [\n {\n title: 'Live',\n type: 'live',\n onEnter: this.setSegment('live'),\n },\n {\n title: 'Settled',\n type: 'settled',\n onEnter: this.setSegment('settled'),\n },\n {\n title: 'Upcoming',\n type: 'upcoming',\n onEnter: this.setSegment('upcoming'),\n },\n ];\n\n onSegmentChange = (segment: Segments) => {\n this.setState({ activeSegment: segment });\n };\n\n renderBet = (bet: IUserBet) => {\n switch (bet.type) {\n case 'PARLAY':\n return <Parlay key={bet.id} bet={bet} />;\n case 'BOOST':\n return <Boost key={bet.id} bet={bet} />;\n case 'STRAIGHT':\n return <Straight key={bet.id} bet={bet} />;\n case 'TEASER':\n return <Teaser key={bet.id} bet={bet} />;\n default:\n console.warn('unknown type', bet.type);\n return null;\n }\n };\n\n renderBets = () => {\n if (this.bets?.length) {\n return this.bets.map((bet) => this.renderBet(bet as IUserBet));\n }\n\n return (\n <div className=\"no-user-bets T05_ALT\">\n No {this.state.activeSegment} Bets\n </div>\n );\n };\n\n get bets() {\n switch (this.state.activeSegment) {\n case 'live':\n return this.props.item.data.bets.live;\n case 'settled':\n return this.props.item.data.bets.settled;\n case 'upcoming':\n return this.props.item.data.bets.upcoming;\n default:\n return null;\n }\n }\n\n render() {\n return (\n <section className=\"my-bets-view\" data-style=\"display: flex;\">\n <SegmentController items={this.segmentItems} />\n {this.renderBets()}\n </section>\n );\n }\n}\n\nexport default UserBetsView;\n","import api from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./HotPropsView.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport {\n withFocusable,\n setFocus,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport Bet from '../components/Bet/Bet';\nimport BetsCard from '../components/BetsCard/BetsCard';\nimport Icon from '@/components/atoms/SvgIcon/Icon';\nimport {\n DEFAULT_SCROLLABLE_CONTAINER_CONTEXT,\n SCROLLABLE_CONTEXT_TYPE,\n} from '@/components/core/ScrollableContainer/ScrollableContainer';\nimport {\n Details,\n Direction,\n Layout,\n} from '@/external/spatial-navigation/utils';\nimport './HotPropsView.css';\nimport { HotPropsBetItem, IHotProps } from '../../view-model/BetsViewModel';\nimport BetsCardHeader from '../components/BetsCard/BetsCardHeader';\nimport deliverFocus from '@/helpers/deliver-focus';\n\ntype HotPropsViewProps = {\n item: HotPropsBetItem;\n hasFocusedChild?: boolean;\n};\n\nconst BETS_MIN_VISIBLE = 4;\n\nclass HotPropsView extends React.Component<\n HotPropsViewProps & WithFocusableProps\n> {\n getBetFocusKey(index: number) {\n return `hotprops-bet-${this.props.item.id}-${index}`;\n }\n\n getCardFocusKey() {\n return `hot-props-${this.props.item.id}`;\n }\n\n // Helper function to focus a specific bet by index\n focusBet = (index: number) => {\n setFocus(this.getBetFocusKey(index));\n };\n\n // Helper function to focus back to the card\n focusCard = () => {\n setFocus(this.getCardFocusKey());\n };\n\n // Helper function to get the total number of bets\n getTotalBets = () => {\n return (this.props.item.data as IHotProps).items.length || 0;\n };\n\n handleEnterPress = () => {\n setFocus(this.getBetFocusKey(0));\n };\n\n renderFlameIcon() {\n return <Icon iconName=\"flame\" width={20} height={20} />;\n }\n\n renderHeader(props: WithFocusableProps) {\n return (\n <BetsCardHeader\n betCardProps={props}\n betType=\"Hot Props\"\n cardExpanded={!!this.props.hasFocusedChild}\n renderIcon={this.renderFlameIcon}\n legCount={this.getTotalBets()}\n legCountThreshold={BETS_MIN_VISIBLE}\n />\n );\n }\n\n renderFooter(remaining: any, expanded: boolean) {\n return !expanded && remaining > 0 ? (\n <div className=\"hot-props-footer\">+{remaining} More</div>\n ) : null;\n }\n\n static contextTypes = SCROLLABLE_CONTEXT_TYPE;\n context = DEFAULT_SCROLLABLE_CONTAINER_CONTEXT;\n\n onCardBecameFocused = (layout: Layout) => {\n this.context.scrollToFocusedElement(layout);\n };\n\n onBetBecameFocused = (layout: Layout) => {\n this.context.scrollToFocusedElement(layout);\n };\n\n onBetArrowPress = (index: number) => (\n direction: Direction,\n _props: any,\n details: Details\n ) => {\n if (direction === 'left' && details.layout) {\n deliverFocus(details.layout.node.firstElementChild as HTMLElement);\n }\n\n if (index === 0 && direction === 'up') {\n // If the first bet is focused and up arrow is pressed, focus the card itself\n this.focusCard();\n return false; // Prevent further propagation\n }\n };\n\n onCardArrowPress = (d: Direction, _props: any, details: Details) => {\n if (d === 'left' && details.layout) {\n deliverFocus(details.layout.node.firstElementChild as HTMLElement);\n }\n };\n\n get lineItems() {\n const items = (this.props.item.data as IHotProps).items;\n if (this.props.hasFocusedChild) {\n return items;\n }\n\n return items.slice(0, BETS_MIN_VISIBLE);\n }\n\n render() {\n const { item, focused } = this.props;\n\n const lineItems = (item.data as IHotProps).items;\n const remaining = lineItems.length - BETS_MIN_VISIBLE;\n\n return (\n <div className=\"hot-props-bet-card\">\n <BetsCard\n focusKey={this.getCardFocusKey()}\n focused={focused}\n header={this.renderHeader.bind(this)}\n footer={() =>\n this.renderFooter(remaining, !!this.props.hasFocusedChild)\n }\n onEnterPress={this.handleEnterPress}\n onBecameFocused={this.onCardBecameFocused}\n onArrowPress={this.onCardArrowPress}\n >\n <div className=\"hot-props-list\" data-style=\"display: flex;\">\n {this.lineItems.map((item, idx: number) => {\n return (\n <Bet\n key={item.id}\n focusKey={this.getBetFocusKey(idx)}\n leg={item}\n focusable={this.props.hasFocusedChild}\n onBackPress={this.focusCard}\n onBecameFocused={this.onBetBecameFocused}\n onArrowPress={this.onBetArrowPress(idx)}\n parentFocusKey={this.props.focusKey}\n />\n );\n })}\n </div>\n </BetsCard>\n </div>\n );\n }\n}\n\nexport default withFocusable<HotPropsViewProps>({ trackChildren: true })(\n HotPropsView\n);\n","import api from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./GamblingDisclaimer.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport Icon from '@/components/atoms/SvgIcon/Icon';\nimport './GamblingDisclaimer.styles.css';\nimport FocusableItem from '@/components/core/ScrollableContainer/FocusableItem';\n\nconst FALLBACK_DISCLAIMER_TEXT =\n 'Odds by ESPN BET; 21+. Gambling Problem? Call 1-800-GAMBLER';\n\nclass GamblingDisclaimer extends React.Component<{ text: string }> {\n render() {\n return (\n <FocusableItem>\n <div className=\"gambling-disclaimer\">\n <Icon iconName=\"mobilePhone\" width={32} height={32} />\n <span className=\"gambling-disclaimer-text T02\">\n {this.props.text || FALLBACK_DISCLAIMER_TEXT}\n </span>\n </div>\n </FocusableItem>\n );\n }\n}\n\nexport default GamblingDisclaimer;\n","import api from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./LocationWarning.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport Icon from '@/components/atoms/SvgIcon/Icon';\nimport './LocationWarning.styles.css';\nimport FocusableItem from '@/components/core/ScrollableContainer/FocusableItem';\n\nconst FALLBACK_WARNING_TEXT =\n 'You are in a location outside of our operating area. Visit about.espnbet.com for more detail.';\n\ninterface LocationWarningProps {\n /** Location disclaimer text from API, falls back to default if not provided */\n disclaimerText?: string;\n}\n\nclass LocationWarning extends React.Component<LocationWarningProps> {\n render() {\n const { disclaimerText } = this.props;\n const displayText = disclaimerText || FALLBACK_WARNING_TEXT;\n\n return (\n <FocusableItem>\n <div className=\"location-warning\">\n <Icon iconName=\"betsWarning\" width={32} height={32} />\n <span className=\"location-warning-text T02\">{displayText}</span>\n </div>\n </FocusableItem>\n );\n }\n}\n\nexport default LocationWarning;\n","import React from 'react';\nimport ActionButton from '@/components/molecules/ActionButton';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\n\nclass TabLoadFailureView extends React.Component<WithFocusableProps> {\n render() {\n return (\n <div\n data-focused={this.props.focused}\n className=\"bets-error-state-tabLoadFailure focus-ring\"\n >\n <h3 className=\"T70\">Let&apos;s try that again...</h3>\n <p className=\"T20\">{\"We're having trouble loading this.\"}</p>\n <ActionButton\n data-focused={this.props.focused}\n onEnterPress={this.props.onEnterPress}\n >\n Refresh\n </ActionButton>\n </div>\n );\n }\n}\n\nexport default withFocusable()(TabLoadFailureView);\n","import api from \"!../../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./PromoCodeBanner.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport './PromoCodeBanner.styles.css';\nimport {\n withFocusable,\n WithFocusableProps,\n} from '@/external/spatial-navigation';\nimport {\n Details,\n Direction,\n Layout,\n} from '@/external/spatial-navigation/utils';\nimport FocusableItem from '@/components/core/ScrollableContainer/FocusableItem';\nimport {\n DEFAULT_SCROLLABLE_CONTAINER_CONTEXT,\n SCROLLABLE_CONTEXT_TYPE,\n} from '@/components/core/ScrollableContainer/ScrollableContainer';\nimport deliverFocus from '@/helpers/deliver-focus';\n\nexport interface PromoCodeBannerProps extends WithFocusableProps {\n title: string;\n description: string;\n logo: string;\n qrCode: string;\n showLogo?: boolean;\n}\n\nconst ESPN_BET_BACKGROUND_FALLBACK =\n 'https://www.espn.com/redesign/assets/img/ictv/bkg_qr_bet.jpg';\n\nclass PromoCodeBanner extends React.Component<PromoCodeBannerProps> {\n render() {\n const {\n title,\n description,\n logo,\n qrCode,\n showLogo = true,\n focused,\n } = this.props;\n\n return (\n <FocusableItem>\n <div\n className=\"promo-code-banner focus-ring\"\n data-focused={focused}\n style={{\n backgroundImage: `url(${ESPN_BET_BACKGROUND_FALLBACK})`,\n }}\n >\n <div className=\"promo-content\">\n {showLogo && (\n <div className=\"promo-logo-container\">\n <img src={logo} alt=\"ESPN Bet Logo\" className=\"promo-logo\" />\n </div>\n )}\n <div className=\"promo-tagline T20\">{title}</div>\n </div>\n\n <div className=\"promo-action-area\">\n <div className=\"qr-code-container\">\n <img src={qrCode} alt=\"QR Code\" className=\"qr-code\" />\n </div>\n <div className=\"promo-description T20\">{description}</div>\n </div>\n </div>\n </FocusableItem>\n );\n }\n}\n\nconst FocusablePromoCodeBanner = withFocusable<PromoCodeBannerProps>()(\n PromoCodeBanner\n) as React.ComponentType<PromoCodeBannerProps>;\n\nexport default class FocusablePromoCodeBannerWrapper extends React.Component<\n PromoCodeBannerProps\n> {\n static contextTypes = SCROLLABLE_CONTEXT_TYPE;\n context = DEFAULT_SCROLLABLE_CONTAINER_CONTEXT;\n\n onBecameFocused = (layout: Layout) => {\n this.context.scrollToFocusedElement(layout);\n };\n\n onArrowPress = (d: Direction, _props: any, details: Details) => {\n if (d === 'left' && details.layout) {\n deliverFocus(details.layout.node.firstElementChild as HTMLElement);\n }\n };\n\n render() {\n return (\n <FocusablePromoCodeBanner\n {...this.props}\n onBecameFocused={this.onBecameFocused}\n onArrowPress={this.onArrowPress}\n />\n );\n }\n}\n","import React, { Component } from 'react';\nimport SixPackView from './SixPack/SixPackView';\nimport './BetsView.styles.css';\nimport ScrollableContainer from '@/components/core/ScrollableContainer';\nimport SDK from '@/index';\nimport BetsViewModel, {\n BetItem,\n BetsErrorState,\n} from '../view-model/BetsViewModel';\nimport UserBetsView from './UserBets/UserBetsView';\nimport HotPropsView from './HotProps/HotPropsView';\nimport GamblingDisclaimer from './components/GamblingDisclaimer/GamblingDisclaimer';\nimport LocationWarning from './components/LocationWarning/LocationWarning';\nimport TabLoadFailureView from './TabLoadFailureView';\nimport { BetItemPromoCode } from './components/PromoCodeBanner';\n\ntype Unsubscribe = () => void;\n\ninterface BetsViewState {\n container: HTMLDivElement | null;\n betsItems: BetItem[];\n isDataLoading: boolean;\n errorState: BetsErrorState;\n}\n\nclass BetsView extends Component<{}, BetsViewState> {\n private container: HTMLDivElement | null = null;\n private betsItemsUnsub: Unsubscribe | null = null;\n private isDataLoadingUnsub: Unsubscribe | null = null;\n private errorStateUnsub: Unsubscribe | null = null;\n private vm: BetsViewModel;\n\n constructor(props: {}) {\n super(props);\n this.vm = SDK.getMaestroEventViewModel().betsViewModel;\n\n this.state = {\n container: null,\n betsItems: this.vm.betsItems.value,\n isDataLoading: this.vm.isDataLoading.value,\n errorState: this.vm.errorState.value,\n };\n }\n\n componentDidMount(): void {\n this.setState({\n container: this.container,\n });\n\n this.betsItemsUnsub = this.vm.betsItems.subscribe((value) => {\n this.setState({ betsItems: value });\n });\n\n this.isDataLoadingUnsub = this.vm.isDataLoading.subscribe((value) => {\n this.setState({ isDataLoading: value });\n });\n\n this.errorStateUnsub = this.vm.errorState.subscribe((value) => {\n this.setState({ errorState: value });\n });\n\n // Initialize the view model\n this.vm.init();\n }\n\n componentWillUnmount() {\n this.betsItemsUnsub && this.betsItemsUnsub();\n this.isDataLoadingUnsub && this.isDataLoadingUnsub();\n this.errorStateUnsub && this.errorStateUnsub();\n\n // Clean up the view model\n this.vm.cleanup();\n }\n\n renderBetItem = (item: BetItem) => {\n switch (item.type) {\n case 'sixPack':\n return <SixPackView key={item.id} item={item} />;\n case 'userBets':\n return <UserBetsView item={item} key={item.id} />;\n case 'hotProps':\n return (\n <HotPropsView\n focusKey={`hot-props-view-${item.id}`}\n key={item.id}\n item={item}\n />\n );\n case 'gamblingMessage':\n return <GamblingDisclaimer text={item.data.text} key={item.id} />;\n case 'locationDisclaimer':\n return (\n <LocationWarning key={item.id} disclaimerText={item.data.text} />\n );\n case 'promo':\n return (\n <BetItemPromoCode\n description={item.data.description}\n logo={item.data.logo}\n qrCode={item.data.qrCode}\n title={item.data.title}\n showLogo={!!item.data.logo}\n key={item.id}\n />\n );\n default:\n console.warn(`Unknown bet item type: ${(item as any).type}`);\n return null;\n }\n };\n\n clearTabLoadFailure = () => {\n this.vm.clearTabLoadFailure();\n };\n\n render() {\n return (\n <ScrollableContainer\n scrollableContainerRef={this.state.container}\n containerTopOffset={40}\n data-has-error={this.state.errorState !== 'none'}\n >\n {this.state.errorState === 'tabLoadFailure' ? (\n <div>\n <TabLoadFailureView onEnterPress={this.clearTabLoadFailure} />\n <div className=\"bets-bottom-padding\" />\n </div>\n ) : (\n <div\n className=\"bets-view\"\n ref={(e) => (this.container = e)}\n data-style=\"display: flex;\"\n >\n {this.state.betsItems.map(this.renderBetItem)}\n <div className=\"bets-bottom-padding\" />\n </div>\n )}\n </ScrollableContainer>\n );\n }\n}\n\nexport default BetsView;\n","import React from 'react';\nimport { PanelManagerViewModel } from '@/view-models/PanelManagerViewModel';\nimport './PanelManager.styles.css';\nimport PanelNavigation from '@/components/organisms/PanelNavigation';\nimport { MaestroPanelType } from '@/models/IPanel';\nimport KeyPlaysView from '@/modules/key-plays/view/KeyPlaysView';\nimport BetsView from '@/modules/bets/view/BetsView';\n\nconst panelManagerViewModel = new PanelManagerViewModel();\n\nconst PANELS_MAP: Record<MaestroPanelType, React.ReactNode> = {\n keyPlays: <KeyPlaysView />,\n bets: <BetsView />,\n stats: <div className=\"panel-coming-soon T02\" data-style=\"display: flex;\">Stats - Coming Soon</div>,\n fantasy: <div className=\"panel-coming-soon T02\" data-style=\"display: flex;\">Fantasy - Coming Soon</div>,\n};\n\ninterface PanelManagerState {\n activePanel: MaestroPanelType;\n}\n\nclass PanelManager extends React.Component<{}, PanelManagerState> {\n private unsubscribe: (() => void) | null = null;\n\n constructor(props: {}) {\n super(props);\n this.state = {\n activePanel: panelManagerViewModel.currentPanel,\n };\n }\n\n componentDidMount() {\n // Subscribe to changes in the view model\n this.unsubscribe = panelManagerViewModel.currentPanelObservable.subscribe(\n () => {\n this.setState({ activePanel: panelManagerViewModel.currentPanel });\n }\n );\n }\n\n componentWillUnmount() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n }\n }\n\n goToPanel(panel: MaestroPanelType) {\n return () => {\n if (panelManagerViewModel.currentPanel === panel) {\n return;\n }\n panelManagerViewModel.currentPanel = panel;\n };\n }\n\n render() {\n const { activePanel } = this.state;\n\n const PANEL_ITEMS: {\n title: string;\n onEnter: () => void;\n iconName: MaestroPanelType;\n active: boolean;\n }[] = [\n {\n iconName: 'keyPlays',\n onEnter: this.goToPanel('keyPlays'),\n title: 'KEY PLAYS',\n active: activePanel === 'keyPlays',\n },\n {\n iconName: 'bets',\n onEnter: this.goToPanel('bets'),\n title: 'BETS',\n active: activePanel === 'bets',\n },\n {\n iconName: 'stats',\n onEnter: this.goToPanel('stats'),\n title: 'STATS',\n active: activePanel === 'stats',\n },\n {\n iconName: 'fantasy',\n onEnter: this.goToPanel('fantasy'),\n title: 'FANTASY',\n active: activePanel === 'fantasy',\n },\n ];\n\n return (\n <div className=\"sdk--panel-manager\" data-style=\"display: flex;\">\n <PanelNavigation items={PANEL_ITEMS} />\n <div className=\"sdk--panel-wrapper\">{PANELS_MAP[activePanel]}</div>\n </div>\n );\n }\n}\n\nexport default PanelManager;\n","import PanelManager from './PanelManager';\n\nexport default PanelManager;\n","import IModel from './IModel';\n\ntype ObjectValues<T> = T[keyof T];\n\nexport default interface ITheme extends IModel {\n button: IThemeButton;\n channelOfflineThumbnail?: string;\n colors: IThemeColors;\n creator: string;\n desktopBackground?: string;\n icon?: string;\n logo?: string;\n mobileBackground?: string;\n mode?: ThemeModes;\n name: string;\n owner: string;\n siteId?: string;\n type: ThemeTypes;\n typography: IThemeTypography;\n}\n\nexport interface IThemeColors {\n accentPrimary: string;\n accentSecondary: string;\n accentTertiary: string;\n alertConfirmation: string;\n alertError: string;\n alertWarning: string;\n highlightPrimary: string;\n highlightSecondary: string;\n highlightTertiary: string;\n surface1: string;\n surface2: string;\n surface3: string;\n surface4: string;\n surface5: string;\n surface6: string;\n text100: string;\n text200: string;\n text300: string;\n text400: string;\n text500: string;\n}\n\nexport interface IThemeButton {\n borderRadius: BorderRadius;\n textCapitalization: TextCapitalization;\n}\n\nexport interface IThemeTypography {\n body: string;\n headline: string;\n}\n\nexport interface IClassicThemeOptions {\n accentPrimary: string;\n accentSecondary: string;\n}\n\nexport const BORDER_RADIUS = {\n rounded: 'rounded',\n square: 'square',\n pill: 'pill',\n} as const;\nexport type BorderRadius = ObjectValues<typeof BORDER_RADIUS>;\n\nexport const TEXT_CAPITALIZATION = {\n lowercase: 'lowercase',\n original: 'original',\n uppercase: 'uppercase',\n} as const;\nexport type TextCapitalization = ObjectValues<typeof TEXT_CAPITALIZATION>;\n\nexport const THEME_TYPES = {\n ADMIN: 'admin',\n ADVANCED: 'advanced',\n CLASSIC: 'classic',\n CUSTOM: 'custom',\n} as const;\nexport type ThemeTypes = ObjectValues<typeof THEME_TYPES>;\n\nexport const THEME_MODES = {\n DARK: 'dark',\n LIGHT: 'light',\n} as const;\nexport type ThemeModes = ObjectValues<typeof THEME_MODES>;\n","import ITheme, {\n BORDER_RADIUS,\n TEXT_CAPITALIZATION,\n THEME_MODES,\n THEME_TYPES,\n} from '@/models/ITheme';\n\nconst FONT_FAMILY = 'BentonSans-Medium';\n\nexport const DARK_THEME: ITheme = {\n _id: '6274067af74b66a544018dac',\n button: {\n borderRadius: BORDER_RADIUS.rounded,\n textCapitalization: TEXT_CAPITALIZATION.uppercase,\n },\n colors: {\n // Accent colors\n accentPrimary: '#FFFFFF',\n\n // Secondary accent colors\n accentSecondary: '#3C3F47',\n\n // Tertiary accent colors\n accentTertiary: '#0C0C0E',\n\n // Surface Colors\n surface1: '#080A0C',\n surface2: '#12141A',\n surface3: '#1B1E26',\n surface4: '#242833',\n surface5: '#363C4D',\n surface6: '#3E4759',\n\n // Highlight colors\n highlightPrimary: '#FFFFFF',\n highlightSecondary: '#9A9EA9',\n highlightTertiary: '#0A0C0F',\n\n // Alert colors\n alertConfirmation: '#43D48F',\n alertWarning: '#F58B00',\n alertError: '#FF0000',\n\n // Text colors\n text100: '#F8F9FA',\n text200: '#C2C5CB',\n text300: '#8D919D',\n text400: '#5C606B',\n text500: '#0C0C0E',\n },\n creator: '016901e60000000000000000',\n name: 'Dark Mode',\n type: THEME_TYPES.CLASSIC,\n mode: THEME_MODES.DARK,\n owner: '016901e60000000000000000',\n typography: {\n body: FONT_FAMILY,\n headline: FONT_FAMILY,\n },\n};\n","import api from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../../node_modules/css-loader/dist/cjs.js??ref--5-1!./App.styles.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","import React from 'react';\nimport { DARK_THEME } from '@/services/ThemeManager/constants';\nimport './App.styles.css';\n\nconst colors = DARK_THEME.colors;\nconst typography = DARK_THEME.typography;\n\nclass App extends React.Component<{ children?: React.ReactNode }> {\n componentDidMount() {\n Object.keys(colors).forEach((key) => {\n document.documentElement.style.setProperty(\n `--sdk-${key}`,\n colors[key as keyof typeof DARK_THEME.colors]\n );\n });\n\n Object.keys(typography).forEach((key) => {\n document.documentElement.style.setProperty(\n `--sdk-font-${key}`,\n typography[key as keyof typeof DARK_THEME.typography]\n );\n });\n\n const existingScript = document.querySelector(\n 'script[src=\"https://unpkg.com/@rive-app/canvas\"]'\n );\n if (!existingScript) {\n const script = document.createElement('script');\n script.src = 'https://unpkg.com/@rive-app/canvas';\n document.body.appendChild(script);\n }\n }\n\n componentWillUnmount() {\n Object.keys(colors).forEach((key) => {\n document.documentElement.style.removeProperty(`--sdk-${key}`);\n });\n\n Object.keys(typography).forEach((key) => {\n document.documentElement.style.removeProperty(`--sdk-font-${key}`);\n });\n\n const script = document.querySelector(\n 'script[src=\"https://unpkg.com/@rive-app/canvas\"]'\n );\n if (script) {\n script.remove();\n }\n }\n\n render() {\n return <div className=\"sdk-wrapper\">{this.props.children}</div>;\n }\n}\n\nexport default App;\n","import App from './App';\n\nexport default App;\n"],"sourceRoot":""}