UNPKG

442 kBSource Map (JSON)View Raw
1{"version":3,"sources":["webpack:///ReactPlayer.js","webpack:///webpack/bootstrap 374e66cc158b26a8df00","webpack:///external \"React\"","webpack:///./src/utils.js","webpack:///./src/singlePlayer.js","webpack:///./src/props.js","webpack:///./src/players/YouTube.js","webpack:///./src/Player.js","webpack:///./src/players/SoundCloud.js","webpack:///./src/players/Vimeo.js","webpack:///./src/players/DailyMotion.js","webpack:///./src/players/Facebook.js","webpack:///./src/players/Streamable.js","webpack:///./src/players/FaceMask.js","webpack:///./src/players/Wistia.js","webpack:///./src/players/Twitch.js","webpack:///./src/players/UstreamLive.js","webpack:///./src/players/UstreamVideo.js","webpack:///./src/players/Iframe.js","webpack:///./src/players/Mixcloud.js","webpack:///./src/players/FilePlayer.js","webpack:///./src/players/VAST.js","webpack:///./node_modules/@alugha/ima/lib/esm/loadScript.js","webpack:///./src/players/JWPlayer.js","webpack:///./src/players/PhenixPlayer.js","webpack:///./src/ReactPlayer.js","webpack:///./node_modules/load-script/index.js","webpack:///./node_modules/deepmerge/dist/umd.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/prop-types/factoryWithThrowingShims.js","webpack:///./node_modules/fbjs/lib/emptyFunction.js","webpack:///./node_modules/fbjs/lib/invariant.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/@alugha/ima/lib/esm/loadImaSdk.js","webpack:///./src/players/index.js","webpack:///./src/Preview.js","webpack:///./src/preload.js"],"names":["ReactPlayer","modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","React","_interopRequireDefault","obj","default","_defineProperty","key","value","writable","parseTimeParam","url","pattern","match","stamp","MATCH_START_STAMP","parseTimeString","MATCH_NUMERIC","test","parseInt","seconds","array","exec","_array","_array2","_slicedToArray","count","period","parseStartTime","MATCH_START_QUERY","parseEndTime","MATCH_END_QUERY","randomString","Math","random","toString","substr","queryString","keys","map","join","getSDK","sdkGlobal","sdkReady","arguments","length","undefined","isLoaded","fetchScript","_loadScript2","window","Promise","resolve","reject","resolves","push","onLoaded","sdk","forEach","previousOnReady","err","getConfig","props","defaultProps","showWarning","config","_deepmerge2","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_props","DEPRECATED_CONFIG_PROPS","Symbol","iterator","next","done","replace","message","console","warn","omit","_ref","_len","arrays","Array","_key","omitKeys","concat","apply","output","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","indexOf","callPlayer","method","_player","this","player","constructor","displayName","_len2","args","_key2","isObject","val","_typeof","isEqual","a","b","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","isMediaStream","MediaStream","sliceIterator","arr","_arr","_n","_d","_e","_s","_i","isArray","TypeError","_loadScript","_deepmerge","_classCallCheck","instance","Constructor","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","createSinglePlayer","activePlayer","_class","_temp2","_Component","SinglePlayer","_temp","_this","_ret","getPrototypeOf","_utils","_props2","getDuration","getCurrentTime","getSecondsLoaded","getInternalPlayer","seekTo","fraction","type","ref","_createClass","nextProps","_config$file","file","forceVideo","forceAudio","forceHLS","forceDASH","skipCanPlay","canPlay","style","width","height","Wrapper","wrapper","otherProps","SUPPORTED_PROPS","_react2","createElement","_extends","_Player2","_react","Component","propTypes","assign","target","source","defineProperties","descriptor","protoProps","staticProps","_Player","_propTypes","_propTypes2","string","bool","number","oneOfType","shape","func","playing","loop","controls","volume","muted","playbackRate","progressInterval","playsinline","pip","light","render","isRequired","soundcloud","options","preload","youtube","playerVars","embedOptions","facebook","appId","dailymotion","params","vimeo","playerOptions","attributes","tracks","hlsOptions","hlsVersion","dashVersion","wistia","mixcloud","twitch","onReady","onStart","onPlay","onPause","onBuffer","onBufferEnd","onEnded","onError","onDuration","onSeek","onProgress","onVolumeChange","onEnablePIP","onDisablePIP","visual","buying","liking","download","sharing","show_comments","show_playcount","showinfo","rel","iv_load_policy","modestbranding","api","endscreen-enable","autopause","byline","portrait","title","hide_cover","parsePlaylist","MATCH_PLAYLIST","_url$match","listType","list","YouTube","_singlePlayer","_singlePlayer2","SDK_GLOBAL","MATCH_URL","onStateChange","_ref2","data","_this$props","_window$SDK_GLOBAL$Pl","PlayerState","PLAYING","PAUSED","BUFFERING","ENDED","CUED","isPlaylist","play","mute","unmute","container","isReady","_this2","_config$youtube","id","loadPlaylist","cueVideoById","videoId","startSeconds","start","endSeconds","end","YT","loaded","then","Player","autoplay","origin","location","events","event","setLoop","document","body","contains","amount","pause","rate","mounted","isPlaying","isLoading","loadOnReady","startOnPlay","seekOnPlay","onDurationCalled","progress","playedSeconds","loadedSeconds","duration","played","prevPlayed","prevLoaded","progressTimeout","setTimeout","progressFrequency","setVolume","load","onDurationCheck","_this$props2","setPlaybackRate","e","_this$props3","loopOnEnded","clearTimeout","durationCheckTimeout","stop","disablePIP","enablePIP","_this3","SoundCloud","currentTime","fractionLoaded","iframe","SC","_SC$Widget$Events","Widget","Events","PLAY","PLAY_PROGRESS","PAUSE","FINISH","ERROR","bind","currentPosition","loadedProgress","callback","src","encodeURIComponent","frameBorder","allow","Vimeo","MATCH_FILE_URL","secondsLoaded","ready","querySelector","on","refreshDuration","_ref3","overflow","backgroundColor","DailyMotion","onDurationChange","_url$match2","DM","video","apiready","seeked","video_end","durationchange","waiting","error","bufferedTime","Facebook","SDK_URL","PLAYER_ID_PREFIX","playerID","FB","XFBML","parse","init","xfbml","version","Event","subscribe","msg","getElementById","visibility","className","data-href","data-autoplay","data-allowfullscreen","data-controls","Streamable","playerjs","percent","scrolling","allowFullScreen","FaceMask","nfl","playaction","containerId","initialVideo","_nfl$playaction$EVENT","EVENTS","PLAYER_READY","STATUS","TIME_UPDATE","VOLUME","_nfl$playaction$STATU","COMPLETE","status","Infinity","Wistia","_wq","getID","autoPlay","silentAutoPlay","controlsVisibleOnLoad","unbind","Twitch","MATCH_VIDEO_URL","MATCH_CHANNEL_URL","isChannel","setChannel","setVideo","channel","_Twitch$Player","READY","addEventListener","UstreamLive","state","ustreamSrc","prevProps","setState","channelId","parseId","UstreamEmbed","addListener","playTime","Date","now","getProperty","UstreamVideo","currentTimeInterval","clearInterval","setInterval","initInterval","Iframe","alignItems","background","display","justifyContent","borderStyle","borderWidth","color","Mixcloud","PlayerWidget","ended","query","feed","item","AUDIO_EXTENSIONS","VIDEO_EXTENSIONS","HLS_EXTENSIONS","DASH_EXTENSIONS","canEnablePIP","pictureInPictureEnabled","FilePlayer","IOS","navigator","userAgent","MSStream","HLS_SDK_URL","DASH_SDK_URL","MATCH_DROPBOX_URL","renderSourceElement","index","renderTrack","track","addListeners","shouldUseAudio","removeListeners","videoElementId","setAttribute","removeEventListener","poster","_props$config$file","shouldUseHLS","Hls","hls","loadSource","attachMedia","shouldUseDASH","dashjs","dash","MediaPlayer","initialize","getDebug","setLogToBrowserConsole","srcObject","URL","createObjectURL","promise","removeAttribute","destroy","reset","requestPictureInPicture","pictureInPictureElement","exitPictureInPicture","seekable","buffered","useHLS","useDASH","_props3","useAudio","Element","getSource","VAST","_ima","CONTENT_ID_PREFIX","PLAY_BUTTON_ID_PREFIX","adDisplayContainer","autoplayChecksResolved","adObject","adsInitialized","adsLoader","adsManager","adsRequest","adsUrl","autoplayAllowed","autoplayRequiresMuted","ima","preMuteVolume","showPlayButton","contentID","playButtonID","getVolume","videoElement","onMutedAutoplaySuccess","onMutedAutoplayFail","onAutoplayWithSoundSuccess","checkMutedAutoplaySupport","prevState","checkAutoplaySupport","onAutoplayChecksResolved","playAds","_onWindowResize","eventMap","entries","fn","_state","offsetHeight","offsetWidth","resize","ViewMode","NORMAL","adEvent","getAd","adsManagerLoadedEvent","_eventMap","getAdsManager","onWindowResize","AdErrorEvent","Type","AD_ERROR","AdEvent","LOADED","RESUMED","VOLUME_CHANGED","_ref4","_ref5","_state2","AdsRequest","adTagUrl","setAdWillAutoPlay","setAdWillPlayMuted","requestAds","_state3","adError","rawUrl","_this4","ord","loadImaSdk","AdDisplayContainer","AdsLoader","AdsManagerLoadedEvent","ADS_MANAGER_LOADED","onAdsManagerLoaded","slice","resume","remainingTime","getRemainingTime","Number","isFinite","_this5","adsInitalized","_this6","dimensions","contentStyle","top","left","position","zIndex","playButtonStyle","borderColor","cursor","marginLeft","marginTop","onClick","onButtonClick","loadScript","script","async","onload","onerror","appendChild","JWPlayer","setup","jwplayer","getPhenixSdk","PHENIX_SDK_URL","PHENIX_SDK_GLOBAL","PHENIX_URL_REGEX","PhenixPlayer","channelExpress","playerRef","dispose","JSON","backendUri","getPhenixBackendUri","getPhenixChannelId","authenticationData","getPhenixAuthenticationData","joinChannelCallback","response","Error","subscriberCallback","includes","phenix","express","ChannelExpress","joinChannel","_toConsumableArray","arr2","from","_YouTube","_SoundCloud","_Vimeo","_Facebook","_Streamable","_FaceMask","_Wistia","_Twitch","_DailyMotion","_UstreamLive","_UstreamVideo","_Iframe","_Mixcloud","_FilePlayer","_VAST","_JWPlayer","_PhenixPlayer","_players","_players2","_Player4","_Player5","_Preview","_Preview2","_preload","_preload2","customPlayers","showPreview","onClickPreview","wrapperRef","activePlayerRef","nextState","getActivePlayer","renderedActivePlayer","renderActivePlayer","preloadPlayers","players","sort","sortPlayers","preview","addCustomPlayer","removeCustomPlayers","_arr2","_i2","_arr3","_i3","setAttributes","attrs","attr","stdOnEnd","cb","ieOnEnd","onreadystatechange","readyState","opts","head","getElementsByTagName","charset","text","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","global","factory","isNonNullObject","isSpecial","stringValue","isReactElement","$$typeof","REACT_ELEMENT_TYPE","emptyTarget","cloneUnlessOtherwiseSpecified","clone","isMergeableObject","deepmerge","defaultArrayMerge","element","mergeObject","destination","arrayMerge","sourceIsArray","canUseSymbol","all","reduce","prev","emptyFunction","invariant","ReactPropTypesSecret","shim","propName","componentName","propFullName","secret","getShim","ReactPropTypes","symbol","any","arrayOf","instanceOf","node","objectOf","oneOf","exact","checkPropTypes","PropTypes","makeEmptyFunction","arg","thatReturns","thatReturnsFalse","thatReturnsTrue","thatReturnsNull","thatReturnsThis","thatReturnsArgument","condition","format","f","validateFormat","argIndex","framesToPop","_loadImaSdk","pendingPromise","promiseFinished","google","Preview","image","fetchImage","fetch","json","thumbnail_url","flexCenter","styles","backgroundImage","backgroundSize","backgroundPosition","shadow","borderRadius","playIcon","renderPreloadPlayers","PRELOAD_PLAYERS","configKey"],"mappings":"AAAA,GAAIA,aACK,SAAUC,GCGnB,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAI,EAAAJ,EACAK,GAAA,EACAH,WAUA,OANAJ,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,GAGAI,EAAAE,GAAA,EAGAF,EAAAD,QAvBA,GAAAD,KA4DA,OAhCAF,GAAAQ,EAAAT,EAGAC,EAAAS,EAAAP,EAGAF,EAAAU,EAAA,SAAAP,EAAAQ,EAAAC,GACAZ,EAAAa,EAAAV,EAAAQ,IACAG,OAAAC,eAAAZ,EAAAQ,GACAK,cAAA,EACAC,YAAA,EACAC,IAAAN,KAMAZ,EAAAmB,EAAA,SAAAf,GACA,GAAAQ,GAAAR,KAAAgB,WACA,WAA2B,MAAAhB,GAAA,SAC3B,WAAiC,MAAAA,GAEjC,OADAJ,GAAAU,EAAAE,EAAA,IAAAA,GACAA,GAIAZ,EAAAa,EAAA,SAAAQ,EAAAC,GAAsD,MAAAR,QAAAS,UAAAC,eAAAjB,KAAAc,EAAAC,IAGtDtB,EAAAyB,EAAA,GAGAzB,IAAA0B,EAAA,MDOM,SAAUtB,EAAQD,GEpExBC,EAAAD,QAAAwB,OF0EM,SAAUvB,EAAQD,EAASH,GAEjC,YAiCA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASE,GAAgBF,EAAKG,EAAKC,GAAiK,MAApJD,KAAOH,GAAOf,OAAOC,eAAec,EAAKG,GAAOC,MAAOA,EAAOhB,YAAY,EAAMD,cAAc,EAAMkB,UAAU,IAAkBL,EAAIG,GAAOC,EAAgBJ,EGnG3M,QAASM,GAAgBC,EAAKC,GAC5B,GAAMC,GAAQF,EAAIE,MAAMD,EACxB,IAAIC,EAAO,CACT,GAAMC,GAAQD,EAAM,EACpB,IAAIC,EAAMD,MAAME,GACd,MAAOC,GAAgBF,EAEzB,IAAIG,EAAcC,KAAKJ,GACrB,MAAOK,UAASL,IAMtB,QAASE,GAAiBF,GAGxB,IAFA,GAAIM,GAAU,EACVC,EAAQN,EAAkBO,KAAKR,GAClB,OAAVO,GAAgB,IAAAE,GACKF,EADLG,EAAAC,EAAAF,EAAA,GACZG,EADYF,EAAA,GACLG,EADKH,EAAA,EAEN,OAAXG,IAAgBP,GAAiC,GAAtBD,SAASO,EAAO,IAAW,IAC3C,MAAXC,IAAgBP,GAAiC,GAAtBD,SAASO,EAAO,KAChC,MAAXC,IAAgBP,GAAWD,SAASO,EAAO,KAC/CL,EAAQN,EAAkBO,KAAKR,GAEjC,MAAOM,GAGF,QAASQ,GAAgBjB,GAC9B,MAAOD,GAAeC,EAAKkB,GAGtB,QAASC,GAAcnB,GAC5B,MAAOD,GAAeC,EAAKoB,GAItB,QAASC,KACd,MAAOC,MAAKC,SAASC,SAAS,IAAIC,OAAO,EAAG,GAGvC,QAASC,GAAazC,GAC3B,MAAOP,QACJiD,KAAK1C,GACL2C,IAAI,SAAAhC,GAAA,MAAUA,GAAV,IAAiBX,EAAOW,KAC5BiC,KAAK,KAMH,QAASC,GAAQ9B,EAAK+B,GAA6E,GAAlEC,GAAkEC,UAAAC,OAAA,OAAAC,KAAAF,UAAA,GAAAA,UAAA,GAAvD,KAAMG,EAAiDH,UAAAC,OAAA,OAAAC,KAAAF,UAAA,GAAAA,UAAA,GAAtC,kBAAM,GAAMI,EAA0BJ,UAAAC,OAAA,OAAAC,KAAAF,UAAA,GAAAA,UAAA,GAAAK,EAAA,OACxG,OAAIC,QAAOR,IAAcK,EAASG,OAAOR,IAChCS,QAAQC,QAAQF,OAAOR,IAEzB,GAAIS,SAAQ,SAACC,EAASC,GAG3B,GAAIC,EAAS3C,GAEX,WADA2C,GAAS3C,GAAK4C,KAAKH,EAGrBE,GAAS3C,IAAQyC,EACjB,IAAMI,GAAW,SAAAC,GAEfH,EAAS3C,GAAK+C,QAAQ,SAAAN,GAAA,MAAWA,GAAQK,KAE3C,IAAId,EAAU,CACZ,GAAMgB,GAAkBT,OAAOP,EAC/BO,QAAOP,GAAY,WACbgB,GAAiBA,IACrBH,EAASN,OAAOR,KAGpBM,EAAYrC,EAAK,SAAAiD,GACXA,GAAKP,EAAOO,GACXjB,GACHa,EAASN,OAAOR,QAMjB,QAASmB,GAAWC,EAAOC,EAAcC,GAC9C,GAAIC,IAAS,EAAAC,EAAA,SAAMH,EAAaE,OAAQH,EAAMG,QADaE,GAAA,EAAAC,GAAA,EAAAC,MAAAvB,EAAA,KAE3D,OAAAwB,GAAAC,EAAAC,EAAAC,wBAAAC,OAAAC,cAAAR,GAAAG,EAAAC,EAAAK,QAAAC,MAAAV,GAAA,EAAuC,IAA9BnE,GAA8BsE,EAAA9D,KACrC,IAAIsD,EAAM9D,GAAI,CACZ,GAAMO,GAAMP,EAAE8E,QAAQ,UAAW,GAEjC,IADAb,GAAS,EAAAC,EAAA,SAAMD,EAAN3D,KAAiBC,EAAMuD,EAAM9D,KAClCgE,EAAa,CACf,GACMe,qBAA4B/E,EAA5B,6GACNgF,SAAQC,KAAKF,EAAS,oBAAqB,OATU,MAAAnB,GAAAQ,GAAA,EAAAC,EAAAT,EAAA,aAAAO,GAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,KAAAC,IAa3D,MAAOJ,GAGF,QAASiB,GAAMtF,GAAmB,OAAAuF,GAAAC,EAAAxC,UAAAC,OAARwC,EAAQC,MAAAF,EAAA,EAAAA,EAAA,KAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAARF,EAAQE,EAAA,GAAA3C,UAAA2C,EACvC,IAAMC,IAAWL,MAAGM,OAAHC,MAAAP,EAAaE,GACxBM,KACArD,EAAOjD,OAAOiD,KAAK1C,GAHcgG,GAAA,EAAAC,GAAA,EAAAC,MAAAhD,EAAA,KAIvC,OAAAiD,GAAAC,EAAgB1D,EAAhBoC,OAAAC,cAAAiB,GAAAG,EAAAC,EAAApB,QAAAC,MAAAe,GAAA,EAAsB,IAAbrF,GAAawF,EAAAvF,OACW,IAA3BgF,EAASS,QAAQ1F,KACnBoF,EAAOpF,GAAOX,EAAOW,KANc,MAAAqD,GAAAiC,GAAA,EAAAC,EAAAlC,EAAA,aAAAgC,GAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,KAAAC,IASvC,MAAOH,GAGF,QAASO,GAAYC,GAAiB,GAAAC,EAG3C,KAAKC,KAAKC,SAAWD,KAAKC,OAAOH,GAAS,CACxC,GAAIpB,mBAA0BsB,KAAKE,YAAYC,YAA3C,4BAAkFL,EAAlF,OAOJ,OANKE,MAAKC,OAEED,KAAKC,OAAOH,KACtBpB,GAAW,gCAFXA,GAAW,+BAIbC,QAAQC,KAAKF,EAAS,oBAAqB,IACpC,KAXkC,OAAA0B,GAAA7D,UAAAC,OAAN6D,EAAMpB,MAAAmB,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAND,EAAMC,EAAA,GAAA/D,UAAA+D,EAa3C,QAAOP,EAAAC,KAAKC,QAAOH,GAAZT,MAAAU,EAAuBM,GAGzB,QAASE,GAAUC,GACxB,MAAe,QAARA,GAA+B,gBAAf,KAAOA,EAAP,YAAAC,EAAOD,IAKzB,QAASE,GAASC,EAAGC,GAC1B,GAAiB,kBAAND,IAAiC,kBAANC,GACpC,OAAO,CAET,IAAID,YAAa1B,QAAS2B,YAAa3B,OAAO,CAC5C,GAAI0B,EAAEnE,SAAWoE,EAAEpE,OACjB,OAAO,CAET,KAAK,GAAIjE,GAAI,EAAGA,IAAMoI,EAAEnE,OAAQjE,IAC9B,IAAKmI,EAAQC,EAAEpI,GAAIqI,EAAErI,IACnB,OAAO,CAGX,QAAO,EAET,GAAIgI,EAASI,IAAMJ,EAASK,GAAI,CAC9B,GAAI5H,OAAOiD,KAAK0E,GAAGnE,SAAWxD,OAAOiD,KAAK2E,GAAGpE,OAC3C,OAAO,CAFqB,IAAAqE,IAAA,EAAAC,GAAA,EAAAC,MAAAtE,EAAA,KAI9B,OAAAuE,GAAAC,EAAgBjI,OAAOiD,KAAK0E,GAA5BtC,OAAAC,cAAAuC,GAAAG,EAAAC,EAAA1C,QAAAC,MAAAqC,GAAA,EAAgC,IAAvB3G,GAAuB8G,EAAA7G,KAC9B,KAAKuG,EAAQC,EAAEzG,GAAM0G,EAAE1G,IACrB,OAAO,GANmB,MAAAqD,GAAAuD,GAAA,EAAAC,EAAAxD,EAAA,aAAAsD,GAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,KAAAC,IAS9B,OAAO,EAET,MAAOJ,KAAMC,EAGR,QAASM,GAAe5G,GAC7B,MACoB,mBAAXuC,aACuB,KAAvBA,OAAOsE,aACd7G,YAAeuC,QAAOsE,YHlG1BnI,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,GAGT,IAAIsG,GAA4B,kBAAXpC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUvE,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXsE,SAAyBtE,EAAImG,cAAgB7B,QAAUtE,IAAQsE,OAAO5E,UAAY,eAAkBM,IAElQqB,EAAiB,WAAc,QAASgG,GAAcC,EAAK9I,GAAK,GAAI+I,MAAeC,GAAK,EAAUC,GAAK,EAAWC,MAAKhF,EAAW,KAAM,IAAK,GAAiCiF,GAA7BC,EAAKN,EAAIhD,OAAOC,cAAmBiD,GAAMG,EAAKC,EAAGpD,QAAQC,QAAoB8C,EAAKpE,KAAKwE,EAAGvH,QAAY5B,GAAK+I,EAAK9E,SAAWjE,GAA3DgJ,GAAK,IAAoE,MAAOhE,GAAOiE,GAAK,EAAMC,EAAKlE,EAAO,QAAU,KAAWgE,GAAMI,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIH,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUD,EAAK9I,GAAK,GAAI0G,MAAM2C,QAAQP,GAAQ,MAAOA,EAAY,IAAIhD,OAAOC,WAAYtF,QAAOqI,GAAQ,MAAOD,GAAcC,EAAK9I,EAAa,MAAM,IAAIsJ,WAAU,2DAEtlBxJ,GGhDgBkD,iBHiDhBlD,EG7CgBoD,eH8ChBpD,EGzCgBsD,eH0ChBtD,EGtCgB2D,cHuChB3D,EG7BgB+D,SH8BhB/D,EGEgBmF,YHDhBnF,EGiBgBwG,OHhBhBxG,EG4BgBwH,aH3BhBxH,EG2CgBkI,WH1ChBlI,EGgDgBqI,UH/ChBrI,EG4EgB6I,eA7KhB,IAAAY,GAAA5J,EAAA,IHqGI0E,EAAe9C,EAAuBgI,GGpG1CC,EAAA7J,EAAA,IHwGI2F,EAAc/D,EAAuBiI,GGtGzC5D,EAAAjG,EAAA,GAEMsD,EAAoB,+BACpBE,EAAkB,uBAClBhB,EAAoB,gBACpBE,EAAgB,QAqDhBqC,MH4TA,SAAU3E,EAAQD,EAASH,GAEjC,YAyBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GIlZld,QAASI,GAAoBC,GAAc,GAAAC,GAAAC,CACxD,OAAAA,GAAAD,EAAA,SAAAE,GAAA,QAAAC,KAAA,GAAAnE,GAAAoE,EAAAC,EAAAC,CAAApB,GAAAhC,KAAAiD,EAAA,QAAAlE,GAAAxC,UAAAC,OAAA6D,EAAApB,MAAAF,GAAAG,EAAA,EAAAA,EAAAH,EAAAG,IAAAmB,EAAAnB,GAAA3C,UAAA2C,EAAA,OAAAgE,GAAAC,EAAAhB,EAAAnC,MAAAlB,EAAAmE,EAAAN,WAAA3J,OAAAqK,eAAAJ,IAAAxK,KAAA4G,MAAAP,GAAAkB,MAAAZ,OAAAiB,KAAA8C,EAMEvF,QAAS,EAAA0F,EAAA9F,WAAU2F,EAAK1F,MAAf8F,EAAA7F,cAAoC,GAN/CyF,EAaEK,YAAc,WACZ,MAAKL,GAAKlD,OACHkD,EAAKlD,OAAOuD,cADM,MAd7BL,EAiBEM,eAAiB,WACf,MAAKN,GAAKlD,OACHkD,EAAKlD,OAAOwD,iBADM,MAlB7BN,EAqBEO,iBAAmB,WACjB,MAAKP,GAAKlD,OACHkD,EAAKlD,OAAOyD,mBADM,MAtB7BP,EAyBEQ,kBAAoB,WAAoB,GAAnBzJ,GAAmBqC,UAAAC,OAAA,OAAAC,KAAAF,UAAA,GAAAA,UAAA,GAAb,QACzB,OAAK4G,GAAKlD,OACHkD,EAAKlD,OAAO0D,kBAAkBzJ,GADZ,MA1B7BiJ,EA6BES,OAAS,SAACC,EAAUC,GAClB,IAAKX,EAAKlD,OAAQ,MAAO,KACzBkD,GAAKlD,OAAO2D,OAAOC,EAAUC,IA/BjCX,EAiCEY,IAAM,SAAA9D,GACJkD,EAAKlD,OAASA,GAlClBmD,EAAAF,EAAAf,EAAAgB,EAAAC,GAAA,MAAAd,GAAAW,EAAAD,GAAAgB,EAAAf,IAAA/I,IAAA,wBAAAC,MAAA,SAOyB8J,GACrB,QAAQ,EAAAX,EAAA5C,SAAQV,KAAKvC,MAAOwG,MARhC/J,IAAA,sBAAAC,MAAA,SAUuB8J,GACnBjE,KAAKpC,QAAS,EAAA0F,EAAA9F,WAAUyG,EAAVV,EAAA7F,iBAXlBxD,IAAA,SAAAC,MAAA,WAoCY,GAAA+J,GACgDlE,KAAKpC,OAAOuG,KAA5DC,EADAF,EACAE,WAAYC,EADZH,EACYG,WAAYC,EADxBJ,EACwBI,SAAUC,EADlCL,EACkCK,UACpCC,EAAcJ,GAAcC,GAAcC,GAAYC,CAC5D,KAAK1B,EAAa4B,QAAQzE,KAAKvC,MAAMnD,OAASkK,EAC5C,MAAO,KAJD,IAAArG,GAM2C6B,KAAKvC,MAAhDiH,EANAvG,EAMAuG,MAAOC,EANPxG,EAMOwG,MAAOC,EANdzG,EAMcyG,OAAiBC,EAN/B1G,EAMsB2G,QACxBC,GAAa,EAAAzB,EAAAzE,MAAKmB,KAAKvC,MAAOuH,EAAjBzB,EAAAnF,wBACnB,OACE6G,GAAA,QAAAC,cAACL,EAADM,GAAST,MAAAS,KAAYT,GAAOC,QAAOC,YAAcG,GAC/CE,EAAA,QAAAC,cAAAE,EAAA,QAAAD,KACMnF,KAAKvC,OACTsG,IAAK/D,KAAK+D,IACVlB,aAAcA,EACdjF,OAAQoC,KAAKpC,eAlDvBqF,GAAAoC,EAAAC,WAAAxC,EACS3C,YAAiB0C,EAAa1C,YADvC,SAAA2C,EAESyC,UAFThC,EAAAgC,UAAAzC,EAGSpF,aAHT6F,EAAA7F,aAAAoF,EAIS2B,QAAU5B,EAAa4B,QAJhC1B,EJqXF/J,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,GAGT,IAAIgL,GAAWnM,OAAOwM,QAAU,SAAUC,GAAU,IAAK,GAAIlN,GAAI,EAAGA,EAAIgE,UAAUC,OAAQjE,IAAK,CAAE,GAAImN,GAASnJ,UAAUhE,EAAI,KAAK,GAAI2B,KAAOwL,GAAc1M,OAAOS,UAAUC,eAAejB,KAAKiN,EAAQxL,KAAQuL,EAAOvL,GAAOwL,EAAOxL,IAAY,MAAOuL,IAEnPzB,EAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,KAEhiB7J,GAAiB,QI9XOuK,CARxB,IAAAyC,GAAAnN,EAAA,GJ0YI+M,EAAUnL,EAAuBuL,GIxYrC9B,EAAArL,EAAA,GACAoL,EAAApL,EAAA,GACA6N,EAAA7N,EAAA,GJ8YIkN,EAAWtL,EAAuBiM,GI5YhCf,EAAkBhM,OAAOiD,KAAPsH,EAAAgC,YJ+elB,SAAUjN,EAAQD,EAASH,GAEjC,YAGAc,QAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQ+F,wBAA0B/F,EAAQqF,aAAerF,EAAQkN,cAAY9I,EK7f7E,IAAAuJ,GAAA9N,EAAA,ILigBI+N,EAEJ,SAAgClM,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,IAFhDiM,GK/fjCE,ELmgBKD,EAAqB,QKngB1BC,OAAQC,ELogBLF,EAAqB,QKpgBhBE,KAAMC,ELqgBTH,EAAqB,QKrgBZG,OAAQpL,ELsgBlBiL,EAAqB,QKtgBHjL,MAAOqL,ELugBrBJ,EAAqB,QKvgBAI,UAAWC,ELwgBpCL,EAAqB,QKxgBeK,MAAO/M,ELygB1C0M,EAAqB,QKzgBqB1M,OAAQgN,EL0gBpDN,EAAqB,QK1gB+BM,IAElDhB,cACXjL,IAAK+L,GAAYH,EAAQlL,EAAOzB,IAChCiN,QAASL,EACTM,KAAMN,EACNO,SAAUP,EACVQ,OAAQP,EACRQ,MAAOT,EACPU,aAAcT,EACdzB,MAAO0B,GAAYH,EAAQE,IAC3BxB,OAAQyB,GAAYH,EAAQE,IAC5B1B,MAAOnL,EACPuN,iBAAkBV,EAClBW,YAAaZ,EACba,IAAKb,EACLc,MAAOZ,GAAYF,EAAMD,IACzBpB,QAASuB,GACPH,EACAK,EACAD,GAAQY,OAAQX,EAAKY,eAEvBvJ,OAAQ0I,GACNc,WAAYd,GACVe,QAAS9N,EACT+N,QAASnB,IAEXoB,QAASjB,GACPkB,WAAYjO,EACZkO,aAAclO,EACd+N,QAASnB,IAEXuB,SAAUpB,GACRqB,MAAOzB,IAET0B,YAAatB,GACXuB,OAAQtO,EACR+N,QAASnB,IAEX2B,MAAOxB,GACLyB,cAAexO,EACf+N,QAASnB,IAEXhC,KAAMmC,GACJ0B,WAAYzO,EACZ0O,OAAQjN,EACRoJ,WAAY+B,EACZ9B,WAAY8B,EACZ7B,SAAU6B,EACV5B,UAAW4B,EACX+B,WAAY3O,EACZ4O,WAAYjC,EACZkC,YAAalC,IAEfmC,OAAQ/B,GACNe,QAAS9N,IAEX+O,SAAUhC,GACRe,QAAS9N,IAEXgP,OAAQjC,GACNe,QAAS9N,MAGbiP,QAASjC,EACTkC,QAASlC,EACTmC,OAAQnC,EACRoC,QAASpC,EACTqC,SAAUrC,EACVsC,YAAatC,EACbuC,QAASvC,EACTwC,QAASxC,EACTyC,WAAYzC,EACZ0C,OAAQ1C,EACR2C,WAAY3C,EACZ4C,eAAgB5C,EAChB6C,YAAa7C,EACb8C,aAAc9C,GAGH7I,gBACX8I,SAAS,EACTC,MAAM,EACNC,UAAU,EACVC,OAAQ,KACRC,OAAO,EACPC,aAAc,EACdlC,MAAO,QACPC,OAAQ,QACRF,SACAoC,iBAAkB,IAClBC,aAAa,EACbC,KAAK,EACLC,OAAO,EACPnC,QAAS,MACTlH,QACEwJ,YACEC,SACEiC,QAAQ,EACRC,QAAQ,EACRC,QAAQ,EACRC,UAAU,EACVC,SAAS,EACTC,eAAe,EACfC,gBAAgB,IAGpBrC,SACEC,YACET,YAAa,EACb8C,SAAU,EACVC,IAAK,EACLC,eAAgB,EAChBC,eAAgB,GAElBvC,gBACAH,SAAS,GAEXI,UACEC,MAAO,oBAETC,aACEC,QACEoC,IAAK,EACLC,oBAAoB,GAEtB5C,SAAS,GAEXQ,OACEC,eACEoC,WAAW,EACXC,QAAQ,EACRC,UAAU,EACVC,OAAO,GAEThD,SAAS,GAEXnD,MACE6D,cACAC,UACA7D,YAAY,EACZC,YAAY,EACZC,UAAU,EACVC,WAAW,EACX2D,cACAC,WAAY,SACZC,YAAa,SAEfC,QACEhB,YAEFiB,UACEjB,SACEkD,WAAY,IAGhBhC,QACElB,aAGJmB,QAAS,aACTC,QAAS,aACTC,OAAQ,aACRC,QAAS,aACTC,SAAU,aACVC,YAAa,aACbC,QAAS,aACTC,QAAS,aACTC,WAAY,aACZC,OAAQ,aACRE,eAAgB,aAChBD,WAAY,aACZE,YAAa,aACbC,aAAc,cAGHjL,2BACX,mBACA,gBACA,iBACA,oBACA,cACA,aACA,iBLkgBI,SAAU9F,EAAQD,EAASH,GAEjC,YAwBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GMhtBje,QAASgI,GAAelQ,GACtB,GAAImQ,EAAe5P,KAAKP,GAAM,IAAAoQ,GACLpQ,EAAIE,MAAMiQ,EACjC,QACEE,SAAU,WACVC,KAJ0BxP,EAAAsP,EAAA,OAO9B,SN6qBF1R,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQwS,YAAUpO,EAElB,IAAI0I,GAAWnM,OAAOwM,QAAU,SAAUC,GAAU,IAAK,GAAIlN,GAAI,EAAGA,EAAIgE,UAAUC,OAAQjE,IAAK,CAAE,GAAImN,GAASnJ,UAAUhE,EAAI,KAAK,GAAI2B,KAAOwL,GAAc1M,OAAOS,UAAUC,eAAejB,KAAKiN,EAAQxL,KAAQuL,EAAOvL,GAAOwL,EAAOxL,IAAY,MAAOuL,IAEnPzB,EAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MAE5hB9G,EAAiB,WAAc,QAASgG,GAAcC,EAAK9I,GAAK,GAAI+I,MAAeC,GAAK,EAAUC,GAAK,EAAWC,MAAKhF,EAAW,KAAM,IAAK,GAAiCiF,GAA7BC,EAAKN,EAAIhD,OAAOC,cAAmBiD,GAAMG,EAAKC,EAAGpD,QAAQC,QAAoB8C,EAAKpE,KAAKwE,EAAGvH,QAAY5B,GAAK+I,EAAK9E,SAAWjE,GAA3DgJ,GAAK,IAAoE,MAAOhE,GAAOiE,GAAK,EAAMC,EAAKlE,EAAO,QAAU,KAAWgE,GAAMI,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIH,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUD,EAAK9I,GAAK,GAAI0G,MAAM2C,QAAQP,GAAQ,MAAOA,EAAY,IAAIhD,OAAOC,WAAYtF,QAAOqI,GAAQ,MAAOD,GAAcC,EAAK9I,EAAa,MAAM,IAAIsJ,WAAU,4DMzsBtlBwD,EAAAnN,EAAA,GN6sBI+M,EAAUnL,EAAuBuL,GM3sBrC/B,EAAApL,EAAA,GACA4S,EAAA5S,EAAA,GNgtBI6S,EAAiBjR,EAAuBgR,GM7sBtCE,EAAa,KAEbC,EAAY,iHACZR,EAAiB,wBAaVI,EN2tBCxS,EM3tBDwS,QN2tBmB,SAAU7H,GAGxC,QAAS6H,KACP,GAAI/L,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAM6K,EAEtB,KAAK,GAAI9L,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAO+L,EAAQlI,WAAa3J,OAAOqK,eAAewH,IAAUpS,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EMruBhLtD,WNquBmMyD,EAAOzD,WAAYsD,EMvrBtN+H,cAAgB,SAAAC,GAAc,GAAXC,GAAWD,EAAXC,KAAWC,EAC+ClI,EAAK1F,MAAxEiL,EADoB2C,EACpB3C,OAAQC,EADY0C,EACZ1C,QAASC,EADGyC,EACHzC,SAAUC,EADPwC,EACOxC,YAAaC,EADpBuC,EACoBvC,QAASN,EAD7B6C,EAC6B7C,QAAS/B,EADtC4E,EACsC5E,KADtC6E,EAEwBzO,OAAOmO,GAAYO,YAA/DC,EAFoBF,EAEpBE,QAASC,EAFWH,EAEXG,OAAQC,EAFGJ,EAEHI,UAAWC,EAFRL,EAEQK,MAAOC,EAFfN,EAEeM,IAO3C,IANIR,IAASI,IACX9C,IACAG,KAEEuC,IAASK,GAAQ9C,IACjByC,IAASM,GAAW9C,IACpBwC,IAASO,EAAO,CAClB,GAAME,KAAe1I,EAAKtD,WAAW,cACjC4G,KAASoF,GACX1I,EAAK2I,OAEPhD,IAEEsC,IAASQ,GAAMpD,KNssBhBrF,EMjrBL4I,KAAO,WACL5I,EAAKtD,WAAW,SNkrBbsD,EMhrBL6I,OAAS,WACP7I,EAAKtD,WAAW,WNirBbsD,EMhqBLY,IAAM,SAAAkI,GACJ9I,EAAK8I,UAAYA,GN4nBV7I,EAqCJF,EAAQf,EAA2BgB,EAAOC,GAoI/C,MAtLAd,GAAUuI,EAAS7H,GAqDnBgB,EAAa6G,IACX3Q,IAAK,OACLC,MAAO,SM9wBHG,EAAK4R,GAAS,GAAAC,GAAAnM,KAAA7B,EACuD6B,KAAKvC,MAAtE+I,EADUrI,EACVqI,QAASI,EADCzI,EACDyI,MAAOG,EADN5I,EACM4I,YAAaL,EADnBvI,EACmBuI,SAAUD,EAD7BtI,EAC6BsI,KAAM7I,EADnCO,EACmCP,OAAQmL,EAD3C5K,EAC2C4K,QAD3CqD,EAEmBxO,EAAO2J,QAApCC,EAFU4E,EAEV5E,WAAYC,EAFF2E,EAEE3E,aACd4E,EAAK/R,GAAOA,EAAIE,MAAMyQ,GAAW,EACvC,IAAIiB,EACF,MAAIzB,GAAe5P,KAAKP,OACtB0F,MAAKC,OAAOqM,aAAa9B,EAAclQ,QAGzC0F,MAAKC,OAAOsM,cACVC,QAASH,EACTI,cAAc,EAAAnJ,EAAA/H,gBAAejB,IAAQkN,EAAWkF,MAChDC,YAAY,EAAArJ,EAAA7H,cAAanB,IAAQkN,EAAWoF,OAIhD,EAAAtJ,EAAAlH,QAtCY,qCAsCI4O,EApCK,0BAoCyB,SAAA6B,GAAA,MAAMA,GAAGC,SAAQC,KAAK,SAAAF,GAC7DV,EAAKF,YACVE,EAAKlM,OAAS,GAAI4M,GAAGG,OAAOb,EAAKF,UAAnB9G,GACZR,MAAO,OACPC,OAAQ,OACR4H,QAASH,EACT7E,cACEyF,SAAUzG,EAAU,EAAI,EACxBuF,KAAMnF,EAAQ,EAAI,EAClBF,SAAUA,EAAW,EAAI,EACzBgG,OAAO,EAAApJ,EAAA/H,gBAAejB,GACtBsS,KAAK,EAAAtJ,EAAA7H,cAAanB,GAClB4S,OAAQrQ,OAAOsQ,SAASD,OACxBnG,YAAaA,GACVyD,EAAclQ,GACdkN,GAEL4F,QACE5E,QAAS2D,EAAK1O,MAAM+K,QACpB0C,cAAeiB,EAAKjB,cACpBnC,QAAS,SAAAsE,GAAA,MAAStE,GAAQsE,EAAMjC,SAE/B3D,IAEDhB,GACF0F,EAAKlM,OAAOqN,SAAQ,KAErBvE,MN8xBH7O,IAAK,OACLC,MAAO,WM1wBP6F,KAAKH,WAAW,gBN8wBhB3F,IAAK,QACLC,MAAO,WM5wBP6F,KAAKH,WAAW,iBNgxBhB3F,IAAK,OACLC,MAAO,WM9wBFoT,SAASC,KAAKC,SAASzN,KAAKH,WAAW,eAC5CG,KAAKH,WAAW,gBNkxBhB3F,IAAK,SACLC,MAAO,SMjxBDuT,GACN1N,KAAKH,WAAW,SAAU6N,GACrB1N,KAAKvC,MAAM+I,SACdxG,KAAK2N,WNqxBPzT,IAAK,YACLC,MAAO,SMnxBE0J,GACT7D,KAAKH,WAAW,YAAwB,IAAXgE,MNsxB7B3J,IAAK,kBACLC,MAAO,SM/wBQyT,GACf5N,KAAKH,WAAW,kBAAmB+N,MNkxBnC1T,IAAK,UACLC,MAAO,SMjxBAsM,GACPzG,KAAKH,WAAW,UAAW4G,MNoxB3BvM,IAAK,cACLC,MAAO,WMlxBP,MAAO6F,MAAKH,WAAW,kBNsxBvB3F,IAAK,iBACLC,MAAO,WMpxBP,MAAO6F,MAAKH,WAAW,qBNwxBvB3F,IAAK,mBACLC,MAAO,WMtxBP,MAAO6F,MAAKH,WAAW,0BAA4BG,KAAKwD,iBN0xBxDtJ,IAAK,SACLC,MAAO,WMrxBP,GAAMuK,MACJC,MAAO,OACPC,OAAQ,QACL5E,KAAKvC,MAAMiH,MAEhB,OACEO,GAAA,QAAAC,cAAA,OAAKR,MAAOA,GACVO,EAAA,QAAAC,cAAA,OAAKnB,IAAK/D,KAAK+D,WN2xBd8G,GACPxF,EAAOC,UMn5BIuF,GACJ1K,YAAc,UADV0K,EAEJpG,QAAU,SAAAnK,GAAA,MAAO2Q,GAAUpQ,KAAKP,INy5BzCjC,EAAiB,SM9xBF,EAAA0S,EAAA,SAAmBF,INkyB5B,SAAUvS,EAAQD,EAASH,GAEjC,YAqBA,SAAS8J,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAtBjexJ,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,GAGT,IAAIgL,GAAWnM,OAAOwM,QAAU,SAAUC,GAAU,IAAK,GAAIlN,GAAI,EAAGA,EAAIgE,UAAUC,OAAQjE,IAAK,CAAE,GAAImN,GAASnJ,UAAUhE,EAAI,KAAK,GAAI2B,KAAOwL,GAAc1M,OAAOS,UAAUC,eAAejB,KAAKiN,EAAQxL,KAAQuL,EAAOvL,GAAOwL,EAAOxL,IAAY,MAAOuL,IAEnPzB,EAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MOh8BhiBmD,EAAAnN,EAAA,GPo8BI+M,EAMJ,SAAgClL,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,IANpDsL,GOl8BrC9B,EAAArL,EAAA,GACAoL,EAAApL,EAAA,GAIqB8U,EP68BR,SAAUhK,GAGrB,QAASgK,KACP,GAAIlO,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAMgN,EAEtB,KAAK,GAAIjO,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAOkO,EAAOrK,WAAa3J,OAAOqK,eAAe2J,IAASvU,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EOv9B9K0K,SAAU,EPu9B2L1K,EOt9BrM+I,SAAU,EPs9BkN/I,EOr9B5N2K,WAAY,EPq9ByO3K,EOp9BrP4K,WAAY,EPo9BiQ5K,EOn9B7Q6K,YAAc,KPm9ByR7K,EOl9BvS8K,aAAc,EPk9BmT9K,EOj9BjU+K,WAAa,KPi9B6U/K,EOh9B1VgL,kBAAmB,EPg9BuWhL,EOr4B1XQ,kBAAoB,SAACzJ,GACnB,MAAKiJ,GAAKlD,OACHkD,EAAKlD,OAAO/F,GADM,MPu4BtBiJ,EOp4BLiL,SAAW,WACT,GAAIjL,EAAK1F,MAAMnD,KAAO6I,EAAKlD,QAAUkD,EAAK+I,QAAS,CACjD,GAAMmC,GAAgBlL,EAAKM,kBAAoB,EACzC6K,EAAgBnL,EAAKO,mBACrB6K,EAAWpL,EAAKK,aACtB,IAAI+K,EAAU,CACZ,GAAMH,IACJC,gBACAG,OAAQH,EAAgBE,EAEJ,QAAlBD,IACFF,EAASE,cAAgBA,EACzBF,EAAStB,OAASwB,EAAgBC,GAGhCH,EAASI,SAAWrL,EAAKsL,YAAcL,EAAStB,SAAW3J,EAAKuL,YAClEvL,EAAK1F,MAAMyL,WAAWkF,GAExBjL,EAAKsL,WAAaL,EAASI,OAC3BrL,EAAKuL,WAAaN,EAAStB,QAG/B3J,EAAKwL,gBAAkBC,WAAWzL,EAAKiL,SAAUjL,EAAK1F,MAAMoR,mBAAqB1L,EAAK1F,MAAMqJ,mBPq4BzF3D,EO/2BLqF,QAAU,WACR,GAAKrF,EAAK0K,QAAV,CACA1K,EAAK+I,SAAU,EACf/I,EAAK4K,WAAY,CAHH,IAAA1C,GAI8BlI,EAAK1F,MAAzC+K,EAJM6C,EAIN7C,QAAShC,EAJH6E,EAIG7E,QAASG,EAJZ0E,EAIY1E,OAAQC,EAJpByE,EAIoBzE,KAClC4B,KACK5B,GAAoB,OAAXD,GACZxD,EAAKlD,OAAO6O,UAAUnI,GAEpBxD,EAAK6K,aACP7K,EAAKlD,OAAO8O,KAAK5L,EAAK6K,aAAa,GACnC7K,EAAK6K,YAAc,MACVxH,GACTrD,EAAKlD,OAAO6L,OAEd3I,EAAK6L,oBPq3BF7L,EOn3BLuF,OAAS,WACPvF,EAAK2K,WAAY,EACjB3K,EAAK4K,WAAY,CAFJ,IAAAkB,GAG6B9L,EAAK1F,MAAvCgL,EAHKwG,EAGLxG,QAASC,EAHJuG,EAGIvG,OAAQ7B,EAHZoI,EAGYpI,YACrB1D,GAAK8K,cACH9K,EAAKlD,OAAOiP,iBACd/L,EAAKlD,OAAOiP,gBAAgBrI,GAE9B4B,IACAtF,EAAK8K,aAAc,GAErBvF,IACIvF,EAAK+K,aACP/K,EAAKS,OAAOT,EAAK+K,YACjB/K,EAAK+K,WAAa,MAEpB/K,EAAK6L,mBPw3BF7L,EOt3BLwF,QAAU,SAACwG,GACThM,EAAK2K,WAAY,EACZ3K,EAAK4K,WACR5K,EAAK1F,MAAMkL,QAAQwG,IPw3BlBhM,EOr3BL2F,QAAU,WAAM,GAAAsG,GAC0BjM,EAAK1F,MAArCoF,EADMuM,EACNvM,aAAc4D,EADR2I,EACQ3I,KAAMqC,EADdsG,EACctG,OACxBjG,GAAawM,aAAe5I,GAC9BtD,EAAKS,OAAO,GAET6C,IACHtD,EAAK2K,WAAY,EACjBhF,MP23BC3F,EOx3BL4F,QAAU,SAACoG,GACThM,EAAK4K,WAAY,EACjB5K,EAAK1F,MAAMsL,QAAQoG,IPy3BhBhM,EOv3BL6L,gBAAkB,WAChBM,aAAanM,EAAKoM,qBAClB,IAAMhB,GAAWpL,EAAKK,aAClB+K,GACGpL,EAAKgL,mBACRhL,EAAK1F,MAAMuL,WAAWuF,GACtBpL,EAAKgL,kBAAmB,GAG1BhL,EAAKoM,qBAAuBX,WAAWzL,EAAK6L,gBAAiB,MPy3B5D7L,EOt3BLhG,SAAW,WAGTgG,EAAK4K,WAAY,GPu3Bd5K,EOr3BLY,IAAM,SAAA9D,GACAA,IACFkD,EAAKlD,OAASA,IP2wBTmD,EA4GJF,EAAQf,EAA2BgB,EAAOC,GAoJ/C,MA7QAd,GAAU0K,EAAQhK,GA8HlBgB,EAAagJ,IACX9S,IAAK,oBACLC,MAAO,WOjkCP6F,KAAK6N,SAAU,EACf7N,KAAKC,OAAO8O,KAAK/O,KAAKvC,MAAMnD,KAC5B0F,KAAKoO,cPqkCLlU,IAAK,uBACLC,MAAO,WOnkCPmV,aAAatP,KAAK2O,iBAClBW,aAAatP,KAAKuP,sBACdvP,KAAKkM,SACPlM,KAAKC,OAAOuP,OAEVxP,KAAKC,OAAOwP,YACdzP,KAAKC,OAAOwP,aAEdzP,KAAK6N,SAAU,KPukCf3T,IAAK,4BACLC,MAAO,SOtkCkB8J,GAAW,GAAAkI,GAAAnM,KAAA7B,EAE6B6B,KAAKvC,MAA9DnD,EAF4B6D,EAE5B7D,IAAKkM,EAFuBrI,EAEvBqI,QAASG,EAFcxI,EAEdwI,OAAQC,EAFMzI,EAENyI,MAAOC,EAFD1I,EAEC0I,aAAcG,EAFf7I,EAEe6I,IAAKP,EAFpBtI,EAEoBsI,IACxD,MAAK,EAAAnD,EAAA5C,SAAQpG,EAAK2J,EAAU3J,KAAM,CAChC,GAAI0F,KAAK+N,UAGP,MAFApP,SAAQC,KAAR,oCAAiDqF,EAAU3J,IAA3D,uDACA0F,KAAKgO,YAAc/J,EAAU3J,IAG/B0F,MAAK+N,WAAY,EACjB/N,KAAKiO,aAAc,EACnBjO,KAAKmO,kBAAmB,EACxBnO,KAAKC,OAAO8O,KAAK9K,EAAU3J,IAAK0F,KAAKkM,SAElC1F,IAAWvC,EAAUuC,SAAYxG,KAAK8N,WACzC9N,KAAKC,OAAO6L,OAEVtF,IAAYvC,EAAUuC,SAAWxG,KAAK8N,WACxC9N,KAAKC,OAAO0N,SAET3G,GAAO/C,EAAU+C,KAAOhH,KAAKC,OAAOyP,UACvC1P,KAAKC,OAAOyP,YACH1I,IAAQ/C,EAAU+C,KAAOhH,KAAKC,OAAOwP,YAC9CzP,KAAKC,OAAOwP,aAEV9I,IAAW1C,EAAU0C,QAA+B,OAArB1C,EAAU0C,QAC3C3G,KAAKC,OAAO6O,UAAU7K,EAAU0C,QAE9BC,IAAU3C,EAAU2C,QAClB3C,EAAU2C,MACZ5G,KAAKC,OAAO8L,QAEZ/L,KAAKC,OAAO+L,SACa,OAArB/H,EAAU0C,QAEZiI,WAAW,iBAAMzC,GAAKlM,OAAO6O,UAAU7K,EAAU0C,YAInDE,IAAiB5C,EAAU4C,cAAgB7G,KAAKC,OAAOiP,iBACzDlP,KAAKC,OAAOiP,gBAAgBjL,EAAU4C,cAEpCJ,IAASxC,EAAUwC,MAAQzG,KAAKC,OAAOqN,SACzCtN,KAAKC,OAAOqN,QAAQrJ,EAAUwC,SPslChCvM,IAAK,cACLC,MAAO,WOnlCP,MAAK6F,MAAKkM,QACHlM,KAAKC,OAAOuD,cADO,QPwlC1BtJ,IAAK,iBACLC,MAAO,WOrlCP,MAAK6F,MAAKkM,QACHlM,KAAKC,OAAOwD,iBADO,QP0lC1BvJ,IAAK,mBACLC,MAAO,WOvlCP,MAAK6F,MAAKkM,QACHlM,KAAKC,OAAOyD,mBADO,QP4lC1BxJ,IAAK,SACLC,MAAO,SO9jCDuT,EAAQ5J,GAAM,GAAA6L,GAAA3P,IAEpB,KAAKA,KAAKkM,SAAsB,IAAXwB,EAGnB,MAFA1N,MAAKkO,WAAaR,MAClBkB,YAAW,WAAQe,EAAKzB,WAAa,MAxHf,IA4HxB,IADoBpK,EAA6C,aAATA,EAA5B4J,EAAS,GAAKA,EAAS,EACnC,CAEd,GAAMa,GAAWvO,KAAKC,OAAOuD,aAC7B,OAAK+K,OAILvO,MAAKC,OAAO2D,OAAO2K,EAAWb,OAH5B/O,SAAQC,KAAK,2EAMjBoB,KAAKC,OAAO2D,OAAO8J,MPqkCnBxT,IAAK,SACLC,MAAO,WOt/BP,GAAM6S,GAAShN,KAAKvC,MAAMoF,YAC1B,OAAKmK,GAIH/H,EAAA,QAAAC,cAAC8H,EAAD7H,KACMnF,KAAKvC,OACTsG,IAAK/D,KAAK+D,IACVyE,QAASxI,KAAKwI,QACdE,OAAQ1I,KAAK0I,OACbC,QAAS3I,KAAK2I,QACdG,QAAS9I,KAAK8I,QACd3L,SAAU6C,KAAK7C,SACf4L,QAAS/I,KAAK+I,WAXT,SPqgCJiE,GACP3H,EAAOC,UO5tCY0H,GACZ7M,YAAc,SADF6M,EAEZzH,UP6tCUhC,EAAQgC,UO/tCNyH,EAGZtP,aP6tCa6F,EAAQ7F,aAC9BrF,EAAiB,QOjuCI2U,GPquCf,SAAU1U,EAAQD,EAASH,GAEjC,YAsBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAzBjexJ,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQuX,eAAanT,EAErB,IAAI0I,GAAWnM,OAAOwM,QAAU,SAAUC,GAAU,IAAK,GAAIlN,GAAI,EAAGA,EAAIgE,UAAUC,OAAQjE,IAAK,CAAE,GAAImN,GAASnJ,UAAUhE,EAAI,KAAK,GAAI2B,KAAOwL,GAAc1M,OAAOS,UAAUC,eAAejB,KAAKiN,EAAQxL,KAAQuL,EAAOvL,GAAOwL,EAAOxL,IAAY,MAAOuL,IAEnPzB,EAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MQxvChiBmD,EAAAnN,EAAA,GR4vCI+M,EAAUnL,EAAuBuL,GQ1vCrC/B,EAAApL,EAAA,GACA4S,EAAA5S,EAAA,GR+vCI6S,EAAiBjR,EAAuBgR,GQ3vCtCG,EAAY,iCAEL2E,ERuwCIvX,EQvwCJuX,WRuwCyB,SAAU5M,GAG9C,QAAS4M,KACP,GAAI9Q,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAM4P,EAEtB,KAAK,GAAI7Q,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAO8Q,EAAWjN,WAAa3J,OAAOqK,eAAeuM,IAAanX,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EQhxCtLtD,WRgxCyMyD,EAAOzD,WAAYsD,EQ/wC5NoL,SAAW,KR+wCwOpL,EQ9wCnP0M,YAAc,KR8wC+P1M,EQ7wC7Q2M,eAAiB,KR6wCyR3M,EQnuC1S4I,KAAO,WACL5I,EAAK2L,UAAU,IRouCZ3L,EQluCL6I,OAAS,WACmB,OAAtB7I,EAAK1F,MAAMkJ,QACbxD,EAAK2L,UAAU3L,EAAK1F,MAAMkJ,SRouCzBxD,EQxtCLY,IAAM,SAAAgM,GACJ5M,EAAK4M,OAASA,GRitCP3M,EAQJF,EAAQf,EAA2BgB,EAAOC,GAmG/C,MAxHAd,GAAUsN,EAAY5M,GAwBtBgB,EAAa4L,IACX1V,IAAK,OACLC,MAAO,SQzxCHG,EAAK4R,GAAS,GAAAC,GAAAnM,MAClB,EAAAsD,EAAAlH,QAdY,yCACG,MAaa2Q,KAAK,SAAAiD,GAC/B,GAAK7D,EAAK4D,OAAV,CADqC,GAAAE,GAEiBD,EAAGE,OAAOC,OAAxDC,EAF6BH,EAE7BG,KAAMC,EAFuBJ,EAEvBI,cAAeC,EAFQL,EAERK,MAAOC,EAFCN,EAEDM,OAAQC,EAFPP,EAEOO,KACvCtE,KACHC,EAAKlM,OAAS+P,EAAGE,OAAO/D,EAAK4D,QAC7B5D,EAAKlM,OAAOwQ,KAAKL,EAAMjE,EAAK1O,MAAMiL,QAClCyD,EAAKlM,OAAOwQ,KAAKH,EAAOnE,EAAK1O,MAAMkL,SACnCwD,EAAKlM,OAAOwQ,KAAKJ,EAAe,SAAAlB,GAC9BhD,EAAK0D,YAAcV,EAAEuB,gBAAkB,IACvCvE,EAAK2D,eAAiBX,EAAEwB,iBAE1BxE,EAAKlM,OAAOwQ,KAAKF,EAAQ,iBAAMpE,GAAK1O,MAAMqL,YAC1CqD,EAAKlM,OAAOwQ,KAAKD,EAAO,SAAArB,GAAA,MAAKhD,GAAK1O,MAAMsL,QAAQoG,MAElDhD,EAAKlM,OAAO8O,KAAKzU,EAAjB6K,KACKgH,EAAK1O,MAAMG,OAAOwJ,WAAWC,SAChCuJ,SAAU,WACRzE,EAAKlM,OAAOuD,YAAY,SAAA+K,GACtBpC,EAAKoC,SAAWA,EAAW,IAC3BpC,EAAK1O,MAAM+K,sBR2yCnBtO,IAAK,OACLC,MAAO,WQryCP6F,KAAKH,WAAW,WRyyChB3F,IAAK,QACLC,MAAO,WQvyCP6F,KAAKH,WAAW,YR2yChB3F,IAAK,OACLC,MAAO,eAIPD,IAAK,SACLC,MAAO,SQ5yCDY,GACNiF,KAAKH,WAAW,SAAoB,IAAV9E,MR+yC1Bb,IAAK,YACLC,MAAO,SQ9yCE0J,GACT7D,KAAKH,WAAW,YAAwB,IAAXgE,MRizC7B3J,IAAK,cACLC,MAAO,WQvyCP,MAAO6F,MAAKuO,YR2yCZrU,IAAK,iBACLC,MAAO,WQzyCP,MAAO6F,MAAK6P,eR6yCZ3V,IAAK,mBACLC,MAAO,WQ3yCP,MAAO6F,MAAK8P,eAAiB9P,KAAKuO,YR+yClCrU,IAAK,SACLC,MAAO,WQ1yCP,GAAMuK,MACJC,MAAO,OACPC,OAAQ,QACL5E,KAAKvC,MAAMiH,MAEhB,OACEO,GAAA,QAAAC,cAAA,UACEnB,IAAK/D,KAAK+D,IACV8M,IAAA,wCAA6CC,mBAAmB9Q,KAAKvC,MAAMnD,KAC3EoK,MAAOA,EACPqM,YAAa,EACbC,MAAM,iBR8yCLpB,GACPvK,EAAOC,UQj4CIsK,GACJzP,YAAc,aADVyP,EAEJnL,QAAU,SAAAnK,GAAA,MAAO2Q,GAAUpQ,KAAKP,IAF5BsV,EAGJP,aAAc,ERu4CvBhX,EAAiB,SQlzCF,EAAA0S,EAAA,SAAmB6E,IRszC5B,SAAUtX,EAAQD,EAASH,GAEjC,YAsBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAzBjexJ,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQ4Y,UAAQxU,EAEhB,IAAI0I,GAAWnM,OAAOwM,QAAU,SAAUC,GAAU,IAAK,GAAIlN,GAAI,EAAGA,EAAIgE,UAAUC,OAAQjE,IAAK,CAAE,GAAImN,GAASnJ,UAAUhE,EAAI,KAAK,GAAI2B,KAAOwL,GAAc1M,OAAOS,UAAUC,eAAejB,KAAKiN,EAAQxL,KAAQuL,EAAOvL,GAAOwL,EAAOxL,IAAY,MAAOuL,IAEnPzB,EAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MSn6ChiBmD,EAAAnN,EAAA,GTu6CI+M,EAAUnL,EAAuBuL,GSr6CrC/B,EAAApL,EAAA,GACA4S,EAAA5S,EAAA,GT06CI6S,EAAiBjR,EAAuBgR,GSt6CtCG,EAAY,iBACZiG,EAAiB,gCAEVD,ETk7CD5Y,ESl7CC4Y,MTk7Ce,SAAUjO,GAGpC,QAASiO,KACP,GAAInS,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAMiR,EAEtB,KAAK,GAAIlS,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAOmS,EAAMtO,WAAa3J,OAAOqK,eAAe4N,IAAQxY,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,ESv7C5KtD,WTu7C+LyD,EAAOzD,WAAYsD,ESt7ClNoL,SAAW,KTs7C8NpL,ESr7CzO0M,YAAc,KTq7CqP1M,ESp7CnQgO,cAAgB,KTo7C+QhO,ESv3C/R4I,KAAO,WACL5I,EAAK2L,UAAU,ITw3CZ3L,ESt3CL6I,OAAS,WACmB,OAAtB7I,EAAK1F,MAAMkJ,QACbxD,EAAK2L,UAAU3L,EAAK1F,MAAMkJ,STw3CzBxD,ES52CLY,IAAM,SAAAkI,GACJ9I,EAAK8I,UAAYA,GTq2CV7I,EAQJF,EAAQf,EAA2BgB,EAAOC,GAwH/C,MA7IAd,GAAU2O,EAAOjO,GAwBjBgB,EAAaiN,IACX/W,IAAK,OACLC,MAAO,SSh8CHG,GAAK,GAAA6R,GAAAnM,IACTA,MAAKuO,SAAW,MAChB,EAAAjL,EAAAlH,QApBY,yCACG,SAmBa2Q,KAAK,SAAAkE,GAC1B9E,EAAKF,YACVE,EAAKlM,OAAS,GAAIgR,GAAMjE,OAAOb,EAAKF,UAAtB9G,KACTgH,EAAK1O,MAAMG,OAAOkK,MAAMC,eAC3BzN,MACA2S,SAAUd,EAAK1O,MAAM+I,QACrBI,MAAOuF,EAAK1O,MAAMmJ,MAClBH,KAAM0F,EAAK1O,MAAMgJ,KACjBM,YAAaoF,EAAK1O,MAAMsJ,eAE1BoF,EAAKlM,OAAOmR,QAAQrE,KAAK,WACvB,GAAMgD,GAAS5D,EAAKF,UAAUoF,cAAc,SAC5CtB,GAAOrL,MAAMC,MAAQ,OACrBoL,EAAOrL,MAAME,OAAS,SAHxB,MAISuH,EAAK1O,MAAMsL,SACpBoD,EAAKlM,OAAOqR,GAAG,SAAU,WACvBnF,EAAK1O,MAAM+K,UACX2D,EAAKoF,oBAEPpF,EAAKlM,OAAOqR,GAAG,OAAQ,WACrBnF,EAAK1O,MAAMiL,SACXyD,EAAKoF,oBAEPpF,EAAKlM,OAAOqR,GAAG,QAASnF,EAAK1O,MAAMkL,SACnCwD,EAAKlM,OAAOqR,GAAG,SAAU,SAAAnC,GAAA,MAAKhD,GAAK1O,MAAMwL,OAAOkG,EAAEpU,WAClDoR,EAAKlM,OAAOqR,GAAG,QAASnF,EAAK1O,MAAMqL,SACnCqD,EAAKlM,OAAOqR,GAAG,QAASnF,EAAK1O,MAAMsL,SACnCoD,EAAKlM,OAAOqR,GAAG,aAAc,SAAAnG,GAAiB,GAAdpQ,GAAcoQ,EAAdpQ,OAC9BoR,GAAK0D,YAAc9U,IAErBoR,EAAKlM,OAAOqR,GAAG,WAAY,SAAAE,GAAiB,GAAdzW,GAAcyW,EAAdzW,OAC5BoR,GAAKgF,cAAgBpW,MAEtBiF,KAAKvC,MAAMsL,YT08Cd7O,IAAK,kBACLC,MAAO,WSz8CU,GAAAwV,GAAA3P,IACjBA,MAAKC,OAAOuD,cAAcuJ,KAAK,SAAAwB,GAC7BoB,EAAKpB,SAAWA,OT+8ClBrU,IAAK,OACLC,MAAO,WS58CP6F,KAAKH,WAAW,WTg9ChB3F,IAAK,QACLC,MAAO,WS98CP6F,KAAKH,WAAW,YTk9ChB3F,IAAK,OACLC,MAAO,WSh9CP6F,KAAKH,WAAW,aTo9ChB3F,IAAK,SACLC,MAAO,SSn9CDY,GACNiF,KAAKH,WAAW,iBAAkB9E,MTs9ClCb,IAAK,YACLC,MAAO,SSr9CE0J,GACT7D,KAAKH,WAAW,YAAagE,MTw9C7B3J,IAAK,UACLC,MAAO,SSv9CAsM,GACPzG,KAAKH,WAAW,UAAW4G,MT09C3BvM,IAAK,cACLC,MAAO,WSh9CP,MAAO6F,MAAKuO,YTo9CZrU,IAAK,iBACLC,MAAO,WSl9CP,MAAO6F,MAAK6P,eTs9CZ3V,IAAK,mBACLC,MAAO,WSp9CP,MAAO6F,MAAKmR,iBTw9CZjX,IAAK,SACLC,MAAO,WSn9CP,GAAMuK,MACJC,MAAO,OACPC,OAAQ,OACR6M,SAAU,SACVC,gBAAiB,SACd1R,KAAKvC,MAAMiH,MAEhB,OACEO,GAAA,QAAAC,cAAA,OACEhL,IAAK8F,KAAKvC,MAAMnD,IAChByJ,IAAK/D,KAAK+D,IACVW,MAAOA,QTu9CNuM,GACP5L,EAAOC,USjkDI2L,GACJ9Q,YAAc,QADV8Q,EAEJxM,QAAU,SAAAnK,GACf,OAAI4W,EAAerW,KAAKP,IAGjB2Q,EAAUpQ,KAAKP,ITskD1BjC,EAAiB,SS79CF,EAAA0S,EAAA,SAAmBkG,ITi+C5B,SAAU3Y,EAAQD,EAASH,GAEjC,YAwBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GA3BjexJ,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQsZ,gBAAclV,EAEtB,IAAI0I,GAAWnM,OAAOwM,QAAU,SAAUC,GAAU,IAAK,GAAIlN,GAAI,EAAGA,EAAIgE,UAAUC,OAAQjE,IAAK,CAAE,GAAImN,GAASnJ,UAAUhE,EAAI,KAAK,GAAI2B,KAAOwL,GAAc1M,OAAOS,UAAUC,eAAejB,KAAKiN,EAAQxL,KAAQuL,EAAOvL,GAAOwL,EAAOxL,IAAY,MAAOuL,IAEnPrK,EAAiB,WAAc,QAASgG,GAAcC,EAAK9I,GAAK,GAAI+I,MAAeC,GAAK,EAAUC,GAAK,EAAWC,MAAKhF,EAAW,KAAM,IAAK,GAAiCiF,GAA7BC,EAAKN,EAAIhD,OAAOC,cAAmBiD,GAAMG,EAAKC,EAAGpD,QAAQC,QAAoB8C,EAAKpE,KAAKwE,EAAGvH,QAAY5B,GAAK+I,EAAK9E,SAAWjE,GAA3DgJ,GAAK,IAAoE,MAAOhE,GAAOiE,GAAK,EAAMC,EAAKlE,EAAO,QAAU,KAAWgE,GAAMI,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIH,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUD,EAAK9I,GAAK,GAAI0G,MAAM2C,QAAQP,GAAQ,MAAOA,EAAY,IAAIhD,OAAOC,WAAYtF,QAAOqI,GAAQ,MAAOD,GAAcC,EAAK9I,EAAa,MAAM,IAAIsJ,WAAU,4DAEllBmC,EAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MUxmDhiBmD,EAAAnN,EAAA,GV4mDI+M,EAAUnL,EAAuBuL,GU1mDrC/B,EAAApL,EAAA,GACA4S,EAAA5S,EAAA,GV+mDI6S,EAAiBjR,EAAuBgR,GU1mDtCG,EAAY,wHAEL0G,EVunDKtZ,EUvnDLsZ,YVunD2B,SAAU3O,GAGhD,QAAS2O,KACP,GAAI7S,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAM2R,EAEtB,KAAK,GAAI5S,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAO6S,EAAYhP,WAAa3J,OAAOqK,eAAesO,IAAclZ,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EUhoDxLtD,WVgoD2MyD,EAAOzD,WAAYsD,EUzlD9NyO,iBAAmB,WACjB,GAAMrD,GAAWpL,EAAKK,aACtBL,GAAK1F,MAAMuL,WAAWuF,IV0lDnBpL,EUzkDL4I,KAAO,WACL5I,EAAKtD,WAAW,YAAY,IV0kDzBsD,EUxkDL6I,OAAS,WACP7I,EAAKtD,WAAW,YAAY,IVykDzBsD,EU9jDLY,IAAM,SAAAkI,GACJ9I,EAAK8I,UAAYA,GVsjDV7I,EASJF,EAAQf,EAA2BgB,EAAOC,GAkH/C,MAxIAd,GAAUqP,EAAa3O,GAyBvBgB,EAAa2N,IACXzX,IAAK,OACLC,MAAO,SU7oDHG,GAAK,GAAA6R,GAAAnM,KAAA7B,EACsC6B,KAAKvC,MAA5CiJ,EADCvI,EACDuI,SAAU9I,EADTO,EACSP,OAAQmL,EADjB5K,EACiB4K,QAASvC,EAD1BrI,EAC0BqI,QAD1BkE,EAEMpQ,EAAIE,MAAMyQ,GAFhB4G,EAAAzW,EAAAsP,EAAA,GAEA2B,EAFAwF,EAAA,EAGT,IAAI7R,KAAKC,OAKP,WAJAD,MAAKC,OAAO8O,KAAK1C,GACfK,OAAO,EAAApJ,EAAA/H,gBAAejB,GACtB2S,SAAUzG,KAId,EAAAlD,EAAAlH,QArBY,+BACG,KACM,cAmByB,SAAA0V,GAAA,MAAMA,GAAG7R,SAAQ8M,KAAK,SAAA+E,GAClE,GAAK3F,EAAKF,UAAV,CACA,GAAMe,GAAS8E,EAAG7R,MAClBkM,GAAKlM,OAAS,GAAI+M,GAAOb,EAAKF,WAC5BtH,MAAO,OACPC,OAAQ,OACRmN,MAAO1F,EACPxE,UACEnB,SAAUA,EACVuG,SAAUd,EAAK1O,MAAM+I,QACrBuF,KAAMI,EAAK1O,MAAMmJ,MACjB8F,OAAO,EAAApJ,EAAA/H,gBAAejB,GACtB4S,OAAQrQ,OAAOsQ,SAASD,QACrBtP,EAAOgK,YAAYC,QAExBuF,QACE4E,SAAU7F,EAAK1O,MAAM+K,QACrByJ,OAAQ,iBAAM9F,GAAK1O,MAAMwL,OAAOkD,EAAKlM,OAAO4P,cAC5CqC,UAAW/F,EAAK1O,MAAMqL,QACtBqJ,eAAgBhG,EAAKyF,iBACrBjE,MAAOxB,EAAK1O,MAAMkL,QAClBnC,QAAS2F,EAAK1O,MAAMiL,OACpB0J,QAASjG,EAAK1O,MAAMmL,SACpByJ,MAAO,SAAAhF,GAAA,MAAStE,GAAQsE,SAG3BtE,MV+pDH7O,IAAK,OACLC,MAAO,WUzpDP6F,KAAKH,WAAW,WV6pDhB3F,IAAK,QACLC,MAAO,WU3pDP6F,KAAKH,WAAW,YV+pDhB3F,IAAK,OACLC,MAAO,eAIPD,IAAK,SACLC,MAAO,SUhqDDY,GACNiF,KAAKH,WAAW,OAAQ9E,MVmqDxBb,IAAK,YACLC,MAAO,SUlqDE0J,GACT7D,KAAKH,WAAW,YAAagE,MVqqD7B3J,IAAK,cACLC,MAAO,WU7pDP,MAAO6F,MAAKC,OAAOsO,UAAY,QViqD/BrU,IAAK,iBACLC,MAAO,WU/pDP,MAAO6F,MAAKC,OAAO4P,eVmqDnB3V,IAAK,mBACLC,MAAO,WUjqDP,MAAO6F,MAAKC,OAAOqS,gBVqqDnBpY,IAAK,SACLC,MAAO,WUhqDP,GAAMuK,MACJC,MAAO,OACPC,OAAQ,OACR8M,gBAAiB,SACd1R,KAAKvC,MAAMiH,MAEhB,OACEO,GAAA,QAAAC,cAAA,OAAKR,MAAOA,GACVO,EAAA,QAAAC,cAAA,OAAKnB,IAAK/D,KAAK+D,WVsqDd4N,GACPtM,EAAOC,UUjwDIqM,GACJxR,YAAc,cADVwR,EAEJlN,QAAU,SAAAnK,GAAA,MAAO2Q,GAAUpQ,KAAKP,IAF5BqX,EAGJtC,aAAc,EVuwDvBhX,EAAiB,SU1qDF,EAAA0S,EAAA,SAAmB4G,IV8qD5B,SAAUrZ,EAAQD,EAASH,GAEjC,YAoBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAvBjexJ,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQka,aAAW9V,EAEnB,IAAIuH,GAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MWlyDhiBmD,EAAAnN,EAAA,GXsyDI+M,EAAUnL,EAAuBuL,GWpyDrC/B,EAAApL,EAAA,GACA4S,EAAA5S,EAAA,GXyyDI6S,EAAiBjR,EAAuBgR,GWvyDtC0H,EAAU,sCAGVvH,EAAY,qDACZwH,EAAmB,mBAEZF,EXizDEla,EWjzDFka,SXizDqB,SAAUvP,GAG1C,QAASuP,KACP,GAAIzT,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAMuS,EAEtB,KAAK,GAAIxT,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAOyT,EAAS5P,WAAa3J,OAAOqK,eAAekP,IAAW9Z,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EW1zDlLtD,WX0zDqMyD,EAAOzD,WAAYsD,EWzzDxNuP,SAAWD,GAAmB,EAAAnP,EAAA3H,gBXyzD0PwH,EWnwDxR4I,KAAO,WACL5I,EAAKtD,WAAW,SXowDbsD,EWlwDL6I,OAAS,WACP7I,EAAKtD,WAAW,WX+vDTuD,EAIJF,EAAQf,EAA2BgB,EAAOC,GA2G/C,MA5HAd,GAAUiQ,EAAUvP,GAoBpBgB,EAAauO,IACXrY,IAAK,OACLC,MAAO,SWj0DHG,EAAK4R,GAAS,GAAAC,GAAAnM,IAClB,IAAIkM,EAEF,YADA,EAAA5I,EAAAlH,QAAOoW,EAdM,KACM,eAa2BzF,KAAK,SAAA4F,GAAA,MAAMA,GAAGC,MAAMC,WAGpE,EAAAvP,EAAAlH,QAAOoW,EAjBQ,KACM,eAgByBzF,KAAK,SAAA4F,GACjDA,EAAGG,MACDnL,MAAOwE,EAAK1O,MAAMG,OAAO8J,SAASC,MAClCoL,OAAO,EACPC,QAAS,SAEXL,EAAGM,MAAMC,UAAU,eAAgB,SAAAC,GAGjChH,EAAK1O,MAAMN,aAEbwV,EAAGM,MAAMC,UAAU,cAAe,SAAAC,GACf,UAAbA,EAAIrP,MAAoBqP,EAAI9G,KAAOF,EAAKuG,WAC1CvG,EAAKlM,OAASkT,EAAIlR,SAClBkK,EAAKlM,OAAOiT,UAAU,iBAAkB/G,EAAK1O,MAAMiL,QACnDyD,EAAKlM,OAAOiT,UAAU,SAAU/G,EAAK1O,MAAMkL,SAC3CwD,EAAKlM,OAAOiT,UAAU,kBAAmB/G,EAAK1O,MAAMqL,SACpDqD,EAAKlM,OAAOiT,UAAU,mBAAoB/G,EAAK1O,MAAMmL,UACrDuD,EAAKlM,OAAOiT,UAAU,oBAAqB/G,EAAK1O,MAAMoL,aACtDsD,EAAKlM,OAAOiT,UAAU,QAAS/G,EAAK1O,MAAMsL,SACrCoD,EAAK1O,MAAMmJ,OAEduF,EAAKtM,WAAW,UAElBsM,EAAK1O,MAAM+K,UAIX+E,SAAS6F,eAAejH,EAAKuG,UAAUrB,cAAc,UAAU3M,MAAM2O,WAAa,kBX20DxFnZ,IAAK,OACLC,MAAO,WWt0DP6F,KAAKH,WAAW,WX00DhB3F,IAAK,QACLC,MAAO,WWx0DP6F,KAAKH,WAAW,YX40DhB3F,IAAK,OACLC,MAAO,eAIPD,IAAK,SACLC,MAAO,SW70DDY,GACNiF,KAAKH,WAAW,OAAQ9E,MXg1DxBb,IAAK,YACLC,MAAO,SW/0DE0J,GACT7D,KAAKH,WAAW,YAAagE,MXk1D7B3J,IAAK,cACLC,MAAO,WW10DP,MAAO6F,MAAKH,WAAW,kBX80DvB3F,IAAK,iBACLC,MAAO,WW50DP,MAAO6F,MAAKH,WAAW,yBXg1DvB3F,IAAK,mBACLC,MAAO,WW90DP,MAAO,SXk1DPD,IAAK,SACLC,MAAO,WWh1DP,GAAMuK,IACJC,MAAO,OACPC,OAAQ,OACR8M,gBAAiB,QAEnB,OACEzM,GAAA,QAAAC,cAAA,OACER,MAAOA,EACP2H,GAAIrM,KAAK0S,SACTY,UAAU,WACVC,YAAWvT,KAAKvC,MAAMnD,IACtBkZ,gBAAexT,KAAKvC,MAAM+I,QAAU,OAAS,QAC7CiN,uBAAqB,OACrBC,gBAAe1T,KAAKvC,MAAMiJ,SAAW,OAAS,cXq1D7C6L,GACPlN,EAAOC,UW/6DIiN,GACJpS,YAAc,WADVoS,EAEJ9N,QAAU,SAAAnK,GAAA,MAAO2Q,GAAUpQ,KAAKP,IAF5BiY,EAGJlD,aAAc,EXq7DvBhX,EAAiB,SWz1DF,EAAA0S,EAAA,SAAmBwH,IX61D5B,SAAUja,EAAQD,EAASH,GAEjC,YAoBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAvBjexJ,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQsb,eAAalX,EAErB,IAAIuH,GAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MYj9DhiBmD,EAAAnN,EAAA,GZq9DI+M,EAAUnL,EAAuBuL,GYn9DrC/B,EAAApL,EAAA,GACA4S,EAAA5S,EAAA,GZw9DI6S,EAAiBjR,EAAuBgR,GYp9DtCG,EAAY,gCAEL0I,EZg+DItb,EYh+DJsb,WZg+DyB,SAAU3Q,GAG9C,QAAS2Q,KACP,GAAI7U,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAM2T,EAEtB,KAAK,GAAI5U,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAO6U,EAAWhR,WAAa3J,OAAOqK,eAAesQ,IAAalb,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EY1+DtLtD,WZ0+DyMyD,EAAOzD,WAAYsD,EYz+D5NoL,SAAW,KZy+DwOpL,EYx+DnP0M,YAAc,KZw+D+P1M,EYv+D7QgO,cAAgB,KZu+DyRhO,EY37DzS4I,KAAO,WACL5I,EAAKtD,WAAW,SZ47DbsD,EY17DL6I,OAAS,WACP7I,EAAKtD,WAAW,WZ27DbsD,EYh7DLY,IAAM,SAAAgM,GACJ5M,EAAK4M,OAASA,GZ26DP3M,EAMJF,EAAQf,EAA2BgB,EAAOC,GAqG/C,MAxHAd,GAAUqR,EAAY3Q,GAsBtBgB,EAAa2P,IACXzZ,IAAK,OACLC,MAAO,SYj/DHG,GAAK,GAAA6R,GAAAnM,MACT,EAAAsD,EAAAlH,QAbY,qCACG,YAYa2Q,KAAK,SAAA6G,GAC1BzH,EAAK4D,SACV5D,EAAKlM,OAAS,GAAI2T,GAAS5G,OAAOb,EAAK4D,QACvC5D,EAAKlM,OAAOqN,QAAQnB,EAAK1O,MAAMgJ,MAC/B0F,EAAKlM,OAAOqR,GAAG,QAASnF,EAAK1O,MAAM+K,SACnC2D,EAAKlM,OAAOqR,GAAG,OAAQnF,EAAK1O,MAAMiL,QAClCyD,EAAKlM,OAAOqR,GAAG,QAASnF,EAAK1O,MAAMkL,SACnCwD,EAAKlM,OAAOqR,GAAG,SAAUnF,EAAK1O,MAAMwL,QACpCkD,EAAKlM,OAAOqR,GAAG,QAASnF,EAAK1O,MAAMqL,SACnCqD,EAAKlM,OAAOqR,GAAG,QAASnF,EAAK1O,MAAMsL,SACnCoD,EAAKlM,OAAOqR,GAAG,aAAc,SAAAnG,GAA2B,GAAxBoD,GAAwBpD,EAAxBoD,SAAUxT,EAAcoQ,EAAdpQ,OACxCoR,GAAKoC,SAAWA,EAChBpC,EAAK0D,YAAc9U,IAErBoR,EAAKlM,OAAOqR,GAAG,WAAY,SAAAE,GAAiB,GAAdqC,GAAcrC,EAAdqC,OACxB1H,GAAKoC,WACPpC,EAAKgF,cAAgBhF,EAAKoC,SAAWsF,KAGrC1H,EAAK1O,MAAMmJ,OACbuF,EAAKlM,OAAO8L,SAEb/L,KAAKvC,MAAMsL,YZ2/Dd7O,IAAK,OACLC,MAAO,WYz/DP6F,KAAKH,WAAW,WZ6/DhB3F,IAAK,QACLC,MAAO,WY3/DP6F,KAAKH,WAAW,YZ+/DhB3F,IAAK,OACLC,MAAO,eAIPD,IAAK,SACLC,MAAO,SYhgEDY,GACNiF,KAAKH,WAAW,iBAAkB9E,MZmgElCb,IAAK,YACLC,MAAO,SYlgEE0J,GACT7D,KAAKH,WAAW,YAAwB,IAAXgE,MZqgE7B3J,IAAK,UACLC,MAAO,SYpgEAsM,GACPzG,KAAKH,WAAW,UAAW4G,MZugE3BvM,IAAK,cACLC,MAAO,WY//DP,MAAO6F,MAAKuO,YZmgEZrU,IAAK,iBACLC,MAAO,WYjgEP,MAAO6F,MAAK6P,eZqgEZ3V,IAAK,mBACLC,MAAO,WYngEP,MAAO6F,MAAKmR,iBZugEZjX,IAAK,SACLC,MAAO,WYlgEP,GAAMkS,GAAKrM,KAAKvC,MAAMnD,IAAIE,MAAMyQ,GAAW,GACrCvG,GACJC,MAAO,OACPC,OAAQ,OAEV,OACEK,GAAA,QAAAC,cAAA,UACEnB,IAAK/D,KAAK+D,IACV8M,IAAA,4BAAiCxE,EACjC0E,YAAY,IACZ+C,UAAU,KACVpP,MAAOA,EACPqP,iBAAA,QZugECJ,GACPtO,EAAOC,UY1lEIqO,GACJxT,YAAc,aADVwT,EAEJlP,QAAU,SAAAnK,GAAA,MAAO2Q,GAAUpQ,KAAKP,IZgmEzCjC,EAAiB,SY1gEF,EAAA0S,EAAA,SAAmB4I,IZ8gE5B,SAAUrb,EAAQD,EAASH,GAEjC,YAoBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAvBjexJ,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQ2b,aAAWvX,EAEnB,IAAIuH,GAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MaznEhiBmD,EAAAnN,EAAA,Gb6nEI+M,EAAUnL,EAAuBuL,Ga3nErC/B,EAAApL,EAAA,GACA4S,EAAA5S,EAAA,GbgoEI6S,EAAiBjR,EAAuBgR,Ga5nEtCoG,EAAiB,qCACjBuB,EAAmB,mBAEZuB,EbwoEE3b,EaxoEF2b,SbwoEqB,SAAUhR,GAG1C,QAASgR,KACP,GAAIlV,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAMgU,EAEtB,KAAK,GAAIjV,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAOkV,EAASrR,WAAa3J,OAAOqK,eAAe2Q,IAAWvb,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EanpElLtD,WbmpEqMyD,EAAOzD,WAAYsD,EalpExNoL,SAAW,KbkpEoOpL,EajpE/OwD,OAAS,KbipE2PxD,EahpEpQ0M,YAAc,KbgpEgR1M,Ea/oE9RgO,cAAgB,Kb+oE0ShO,Ea9oE1TuP,SAAWD,GAAmB,EAAAnP,EAAA3H,gBb8oE4VwH,EatkE1XY,IAAM,SAACkI,GACL9I,EAAK8I,UAAYA,GbqkEV7I,EAEJF,EAAQf,EAA2BgB,EAAOC,GAiI/C,MAhJAd,GAAU0R,EAAUhR,GAkBpBgB,EAAagQ,IACX9Z,IAAK,OACLC,MAAO,SappEHG,GAAK,GAAA6R,GAAAnM,IACTA,MAAKuO,SAAW,MAChB,EAAAjL,EAAAlH,QAhBY,6CACG,OAea2Q,KAAK,SAAAkH,GAC/B,GAAK9H,EAAKF,UAAV,CAEAE,EAAKlM,OAAS,GAAIgU,GAAIC,YACpBC,YAAahI,EAAKuG,SAClB0B,cAAgB9Z,OAChBsK,OAAQ,OACRD,MAAO,QAP6B,IAAA0P,GASgBJ,EAAIC,WAAWI,OAA7DC,EAT8BF,EAS9BE,aAAcC,EATgBH,EAShBG,OAAQC,EATQJ,EASRI,YAAaC,EATLL,EASKK,OATLC,EAUOV,EAAIC,WAAWM,OAApDI,EAV8BD,EAU9BC,SAAUpE,EAVoBmE,EAUpBnE,MAAO/E,EAVakJ,EAUblJ,OAAQD,EAVKmJ,EAULnJ,OACjCW,GAAKlM,OAAOqR,GAAGiD,EAAcpI,EAAK1O,MAAM+K,SACxC2D,EAAKlM,OAAOqR,GAAGoD,EAAQvI,EAAK1O,MAAM0L,gBAClCgD,EAAKlM,OAAOqR,GAAGkD,EAAQ,SAACrF,GACtB,OAAQA,EAAE0F,QACR,IAAKD,GACHzI,EAAK1O,MAAMqL,SACX,MAEF,KAAK0H,GACHrE,EAAK1O,MAAMsL,QAAQoG,EACnB,MAEF,KAAK1D,GACHU,EAAK1O,MAAMkL,SACX,MAEF,KAAK6C,GACHW,EAAK1O,MAAMiL,YAKjByD,EAAKlM,OAAOqR,GAAGmD,EAAa,SAAAtJ,GAA6B,GAA3B0E,GAA2B1E,EAA3B0E,YAAatB,EAAcpD,EAAdoD,QACzCpC,GAAK0D,YAAcA,EACnB1D,EAAKoC,SAAWA,GAAYuG,QAE7B9U,KAAKvC,MAAMsL,YbyqEd7O,IAAK,OACLC,MAAO,WavqEP6F,KAAKH,WAAW,Wb2qEhB3F,IAAK,QACLC,MAAO,WazqEP6F,KAAKH,WAAW,Yb6qEhB3F,IAAK,OACLC,MAAO,Wa3qEP6F,KAAKH,WAAW,cb+qEhB3F,IAAK,SACLC,MAAO,Sa9qEDY,GACNiF,KAAKH,WAAW,OAAQ9E,MbirExBb,IAAK,YACLC,MAAO,SahrEE0J,OborET3J,IAAK,OACLC,MAAO,WajrEP6F,KAAKH,WAAW,WbqrEhB3F,IAAK,SACLC,MAAO,WanrEP6F,KAAKH,WAAW,aburEhB3F,IAAK,cACLC,MAAO,WarrEP,MAAO6F,MAAKuO,YbyrEZrU,IAAK,iBACLC,MAAO,WavrEP,MAAO6F,MAAK6P,eb2rEZ3V,IAAK,mBACLC,MAAO,WazrEP,MAAO6F,MAAKmR,iBb6rEZjX,IAAK,SACLC,MAAO,WaxrEP,GAAMuK,IACJC,MAAO,OACPC,OAAQ,OAEV,OACEK,GAAA,QAAAC,cAAA,OACEmH,GAAIrM,KAAK0S,SACT3O,IAAK/D,KAAK+D,IACVW,MAAOA,Qb6rENsP,GACP3O,EAAOC,Ua1xEI0O,GACJ7T,YAAc,WADV6T,EAEJvP,QAAU,SAAAnK,GAAA,MAAO4W,GAAerW,KAAKP,IbgyE9CjC,EAAiB,SahsEF,EAAA0S,EAAA,SAAmBiJ,IbosE5B,SAAU1b,EAAQD,EAASH,GAEjC,YAsBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAzBjexJ,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQ0c,WAAStY,EAEjB,IAAI0I,GAAWnM,OAAOwM,QAAU,SAAUC,GAAU,IAAK,GAAIlN,GAAI,EAAGA,EAAIgE,UAAUC,OAAQjE,IAAK,CAAE,GAAImN,GAASnJ,UAAUhE,EAAI,KAAK,GAAI2B,KAAOwL,GAAc1M,OAAOS,UAAUC,eAAejB,KAAKiN,EAAQxL,KAAQuL,EAAOvL,GAAOwL,EAAOxL,IAAY,MAAOuL,IAEnPzB,EAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,Mc5zEhiBmD,EAAAnN,EAAA,Gdg0EI+M,EAAUnL,EAAuBuL,Gc9zErC/B,EAAApL,EAAA,GACA4S,EAAA5S,EAAA,Gdm0EI6S,EAAiBjR,EAAuBgR,Gc/zEtCG,EAAY,kDAEL8J,Ed20EA1c,Ec30EA0c,Od20EiB,SAAU/R,GAGtC,QAAS+R,KACP,GAAIjW,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAM+U,EAEtB,KAAK,GAAIhW,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAOiW,EAAOpS,WAAa3J,OAAOqK,eAAe0R,IAAStc,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,Ecp1E9KtD,Wdo1EiMyD,EAAOzD,WAAYsD,EchyEpN4I,KAAO,WACL5I,EAAKtD,WAAW,SdiyEbsD,Ec/xEL6I,OAAS,WACP7I,EAAKtD,WAAW,Wd4xETuD,EAIJF,EAAQf,EAA2BgB,EAAOC,GAwH/C,MAzIAd,GAAUyS,EAAQ/R,GAoBlBgB,EAAa+Q,IACX7a,IAAK,QACLC,MAAO,Sc51EFG,GACL,MAAOA,IAAOA,EAAIE,MAAMyQ,GAAW,Md+1EnC/Q,IAAK,OACLC,MAAO,Sc91EHG,GAAK,GAAA6R,GAAAnM,KAAA7B,EACwF6B,KAAKvC,MAA9F+I,EADCrI,EACDqI,QAASI,EADRzI,EACQyI,MAAOF,EADfvI,EACeuI,SAAU8B,EADzBrK,EACyBqK,QAASE,EADlCvK,EACkCuK,OAAQC,EAD1CxK,EAC0CwK,QAASM,EADnD9K,EACmD8K,OAAQH,EAD3D3K,EAC2D2K,QAASlL,EADpEO,EACoEP,OAAQmL,EAD5E5K,EAC4E4K,SACrF,EAAAzF,EAAAlH,QAfY,4CACG,UAca2Q,KAAK,WAC/BlQ,OAAOmY,IAAMnY,OAAOmY,QACpBnY,OAAOmY,IAAI9X,MACTmP,GAAIF,EAAK8I,MAAM3a,GACf+M,WACE6N,SAAU1O,EACV2O,eAAgB,QAChBvO,MAAOA,EACPwO,sBAAuB1O,GACpB9I,EAAOyK,OAAOhB,SAEnBmB,QAAS,SAAAvI,GACPkM,EAAKlM,OAASA,EACdkM,EAAKkJ,SACLlJ,EAAKlM,OAAOwQ,KAAK,OAAQ/H,GACzByD,EAAKlM,OAAOwQ,KAAK,QAAS9H,GAC1BwD,EAAKlM,OAAOwQ,KAAK,OAAQxH,GACzBkD,EAAKlM,OAAOwQ,KAAK,MAAO3H,GACxBN,QAGHO,Md62EH7O,IAAK,OACLC,MAAO,Wc32EP6F,KAAKH,WAAW,Wd+2EhB3F,IAAK,QACLC,MAAO,Wc72EP6F,KAAKH,WAAW,Ydi3EhB3F,IAAK,SACLC,MAAO,Wch3EC,GAAAoJ,GACqCvD,KAAKvC,MAA1CiL,EADAnF,EACAmF,OAAQC,EADRpF,EACQoF,QAASM,EADjB1F,EACiB0F,OAAQH,EADzBvF,EACyBuF,OACjC9I,MAAKC,OAAOoV,OAAO,OAAQ3M,GAC3B1I,KAAKC,OAAOoV,OAAO,QAAS1M,GAC5B3I,KAAKC,OAAOoV,OAAO,OAAQpM,GAC3BjJ,KAAKC,OAAOoV,OAAO,MAAOvM,Mdw3E1B5O,IAAK,OACLC,MAAO,Wct3EP6F,KAAKqV,SACLrV,KAAKH,WAAW,ad03EhB3F,IAAK,SACLC,MAAO,Scz3EDY,GACNiF,KAAKH,WAAW,OAAQ9E,Md43ExBb,IAAK,YACLC,MAAO,Sc33EE0J,GACT7D,KAAKH,WAAW,SAAUgE,Md83E1B3J,IAAK,kBACLC,MAAO,Scv3EQyT,GACf5N,KAAKH,WAAW,eAAgB+N,Md03EhC1T,IAAK,cACLC,MAAO,Wcx3EP,MAAO6F,MAAKH,WAAW,ed43EvB3F,IAAK,iBACLC,MAAO,Wc13EP,MAAO6F,MAAKH,WAAW,Wd83EvB3F,IAAK,mBACLC,MAAO,Wc53EP,MAAO,Sdg4EPD,IAAK,SACLC,MAAO,Wc93EP,GAAMkS,GAAKrM,KAAKiV,MAAMjV,KAAKvC,MAAMnD,KAC3BgZ,+BAAyCjH,EACzC3H,GACJC,MAAO,OACPC,OAAQ,OAEV,OACEK,GAAA,QAAAC,cAAA,OAAKhL,IAAKmS,EAAIiH,UAAWA,EAAW5O,MAAOA,Qdk4ExCqQ,GACP1P,EAAOC,Uct9EIyP,GACJ5U,YAAc,SADV4U,EAEJtQ,QAAU,SAAAnK,GAAA,MAAO2Q,GAAUpQ,KAAKP,IAF5Bya,EAGJ1F,aAAc,Ed49EvBhX,EAAiB,Scv4EF,EAAA0S,EAAA,SAAmBgK,Id24E5B,SAAUzc,EAAQD,EAASH,GAEjC,YAsBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAzBjexJ,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQid,WAAS7Y,EAEjB,IAAI0I,GAAWnM,OAAOwM,QAAU,SAAUC,GAAU,IAAK,GAAIlN,GAAI,EAAGA,EAAIgE,UAAUC,OAAQjE,IAAK,CAAE,GAAImN,GAASnJ,UAAUhE,EAAI,KAAK,GAAI2B,KAAOwL,GAAc1M,OAAOS,UAAUC,eAAejB,KAAKiN,EAAQxL,KAAQuL,EAAOvL,GAAOwL,EAAOxL,IAAY,MAAOuL,IAEnPzB,EAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,Mex/EhiBmD,EAAAnN,EAAA,Gf4/EI+M,EAAUnL,EAAuBuL,Ge1/ErC/B,EAAApL,EAAA,GACA4S,EAAA5S,EAAA,Gf+/EI6S,EAAiBjR,EAAuBgR,Ge3/EtCyK,EAAkB,iDAClBC,EAAoB,gDACpB/C,EAAmB,iBAEZ6C,EfugFAjd,EevgFAid,OfugFiB,SAAUtS,GAGtC,QAASsS,KACP,GAAIxW,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAMsV,EAEtB,KAAK,GAAIvW,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAOwW,EAAO3S,WAAa3J,OAAOqK,eAAeiS,IAAS7c,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EehhF9KtD,WfghFiMyD,EAAOzD,WAAYsD,Ee/gFpNuP,SAAWD,GAAmB,EAAAnP,EAAA3H,gBf+gFsPwH,Ee39EpR4I,KAAO,WACL5I,EAAKtD,WAAW,YAAY,If49EzBsD,Ee19EL6I,OAAS,WACP7I,EAAKtD,WAAW,YAAY,Ifu9ErBuD,EAIJF,EAAQf,EAA2BgB,EAAOC,GA0G/C,MA3HAd,GAAUgT,EAAQtS,GAoBlBgB,EAAasR,IACXpb,IAAK,OACLC,MAAO,SevhFHG,EAAK4R,GAAS,GAAAC,GAAAnM,KAAA7B,EACuB6B,KAAKvC,MAAtCsJ,EADU5I,EACV4I,YAAagC,EADH5K,EACG4K,QAASnL,EADZO,EACYP,OACxB6X,EAAYD,EAAkB3a,KAAKP,GACnC+R,EAAKoJ,EAAYnb,EAAIE,MAAMgb,GAAmB,GAAKlb,EAAIE,MAAM+a,GAAiB,EACpF,IAAIrJ,EAMF,YALIuJ,EACFzV,KAAKC,OAAOyV,WAAWrJ,GAEvBrM,KAAKC,OAAO0V,SAAS,IAAMtJ,KAI/B,EAAA/I,EAAAlH,QAzBY,0CACG,UAwBa2Q,KAAK,SAAAuI,GAC/BnJ,EAAKlM,OAAS,GAAIqV,GAAOtI,OAAOb,EAAKuG,SAAvBvN,GACZ4M,MAAO0D,EAAY,GAAKpJ,EACxBuJ,QAASH,EAAYpJ,EAAK,GAC1BzH,OAAQ,OACRD,MAAO,OACPoC,YAAaA,EACbkG,SAAUd,EAAK1O,MAAM+I,QACrBI,MAAOuF,EAAK1O,MAAMmJ,OACfhJ,EAAO2K,OAAOlB,SATsB,IAAAwO,GAWAP,EAAOtI,OAAxC8I,EAXiCD,EAWjCC,MAAOtK,EAX0BqK,EAW1BrK,QAAS8E,EAXiBuF,EAWjBvF,MAAO3E,EAXUkK,EAWVlK,KAC/BQ,GAAKlM,OAAO8V,iBAAiBD,EAAO3J,EAAK1O,MAAM+K,SAC/C2D,EAAKlM,OAAO8V,iBAAiBvK,EAASW,EAAK1O,MAAMiL,QACjDyD,EAAKlM,OAAO8V,iBAAiBzF,EAAOnE,EAAK1O,MAAMkL,SAC/CwD,EAAKlM,OAAO8V,iBAAiBpK,EAAOQ,EAAK1O,MAAMqL,UAC9CC,MfoiFH7O,IAAK,OACLC,MAAO,WeliFP6F,KAAKH,WAAW,WfsiFhB3F,IAAK,QACLC,MAAO,WepiFP6F,KAAKH,WAAW,YfwiFhB3F,IAAK,OACLC,MAAO,WetiFP6F,KAAKH,WAAW,Yf0iFhB3F,IAAK,SACLC,MAAO,SeziFDY,GACNiF,KAAKH,WAAW,OAAQ9E,Mf4iFxBb,IAAK,YACLC,MAAO,We1iFP,MAAO6F,MAAKH,WAAW,gBf8iFvB3F,IAAK,WACLC,MAAO,We5iFP,MAAO6F,MAAKH,WAAW,efgjFvB3F,IAAK,YACLC,MAAO,Se/iFE0J,GACT7D,KAAKH,WAAW,YAAagE,MfkjF7B3J,IAAK,cACLC,MAAO,We1iFP,MAAO6F,MAAKH,WAAW,kBf8iFvB3F,IAAK,iBACLC,MAAO,We5iFP,MAAO6F,MAAKH,WAAW,qBfgjFvB3F,IAAK,mBACLC,MAAO,We9iFP,MAAO,SfkjFPD,IAAK,SACLC,MAAO,WehjFP,GAAMuK,IACJC,MAAO,OACPC,OAAQ,OAEV,OACEK,GAAA,QAAAC,cAAA,OAAKR,MAAOA,EAAO2H,GAAIrM,KAAK0S,efojFzB4C,GACPjQ,EAAOC,UepoFIgQ,GACJnV,YAAc,SADVmV,EAEJ7Q,QAAU,SAAAnK,GAAA,MAAOib,GAAgB1a,KAAKP,IAAQkb,EAAkB3a,KAAKP,IAFjEgb,EAGJjG,aAAc,Ef0oFvBhX,EAAiB,SezjFF,EAAA0S,EAAA,SAAmBuK,If6jF5B,SAAUhd,EAAQD,EAASH,GAEjC,YAoBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAvBjexJ,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQ2d,gBAAcvZ,EAEtB,IAAIuH,GAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MgBtqFhiBmD,EAAAnN,EAAA,GhB0qFI+M,EAAUnL,EAAuBuL,GgBxqFrC/B,EAAApL,EAAA,GACA4S,EAAA5S,EAAA,GhB6qFI6S,EAAiBjR,EAAuBgR,GgBzqFtCG,EAAY,qCACZwH,EAAmB,sBACZuD,EhBsrFK3d,EgBtrFL2d,YhBsrF2B,SAAUhT,GAGhD,QAASgT,KACP,GAAIlX,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAMgW,EAEtB,KAAK,GAAIjX,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAOkX,EAAYrT,WAAa3J,OAAOqK,eAAe2S,IAAcvd,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EgB/rFxL8S,OACEC,WAAY,MhBgsFT/S,EgB7rFLuP,SAAWD,GAAmB,EAAAnP,EAAA3H,gBhB6rFuCwH,EgB3rFrEtD,WhB2rFwFyD,EAAOzD,WAAYsD,EgBhpF3G4I,KAAO,ahBgpFiI5I,EgB9oFxI6I,OAAS,ahB8oF8J7I,EgBjnFvKY,IAAM,SAAAkI,GACJ9I,EAAK8I,UAAYA,GhB8mFV7I,EAIJF,EAAQf,EAA2BgB,EAAOC,GAiI/C,MAlJAd,GAAU0T,EAAahT,GAoBvBgB,EAAagS,IACX9b,IAAK,UACLC,MAAO,SgBjsFAG,GAEP,MADUA,GAAIE,MAAMyQ,GACX,MhBosFT/Q,IAAK,qBACLC,MAAO,SgBnsFWgc,GAEdA,EAAU7b,KAAQ6b,EAAU7b,MAAQ0F,KAAKvC,MAAMnD,KACjD0F,KAAKoW,UACHF,WAAY,UhBwsFhBhc,IAAK,OACLC,MAAO,WgBpsFD,GAAAgS,GAAAnM,KAAA7B,EAC6D6B,KAAKvC,MAAjEqL,EADD3K,EACC2K,QAASC,EADV5K,EACU4K,QAASJ,EADnBxK,EACmBwK,QAASD,EAD5BvK,EAC4BuK,OAAQF,EADpCrK,EACoCqK,QAAShC,EAD7CrI,EAC6CqI,QAASlM,EADtD6D,EACsD7D,IACtD+b,EAAYrW,KAAKsW,QAAQhc,EAC/B0F,MAAKoW,UACHF,2CAA4CG,EAA5C,uBAA4E7P,EAA5E,qCAEF,EAAAlD,EAAAlH,QAnCY,2DACG,gBAkCa2Q,KAAK,SAAAwJ,GAC1BpK,EAAKF,YACVE,EAAK0D,YAAc,EACnB1D,EAAKlM,OAASsW,EAAapK,EAAKuG,UAChCvG,EAAKlM,OAAOuW,YAAY,UAAW,SAAC1S,EAAM0C,GACpCA,GACF2F,EAAKsK,SAAWC,KAAKC,MACrBjO,MAEAyD,EAAK0D,YAAc1D,EAAK1I,iBACxB0I,EAAKsK,SAAW,KAChB9N,OAGJwD,EAAKlM,OAAOuW,YAAY,OAAQhO,GAChC2D,EAAKlM,OAAOuW,YAAY,UAAWhO,GACnC2D,EAAKlM,OAAOuW,YAAY,WAAY1N,GACpCqD,EAAKlM,OAAO2W,YAAY,WAAY,SAACrI,GACnCpC,EAAKlM,OAAOsO,SAAWA,GAAYuG,QAEpC/L,MhBqtFH7O,IAAK,OACLC,MAAO,WgB/sFP6F,KAAKH,WAAW,aAAc,WhBmtF9B3F,IAAK,QACLC,MAAO,WgBjtFP6F,KAAKH,WAAW,aAAc,YhBqtF9B3F,IAAK,OACLC,MAAO,WgBntFP6F,KAAKH,WAAW,aAAc,WhButF9B3F,IAAK,SACLC,MAAO,SgBttFDY,GACNiF,KAAKH,WAAW,aAAc,OAAQ9E,MhBytFtCb,IAAK,YACLC,MAAO,SgBxtFE0J,GACT7D,KAAKH,WAAW,aAAc,SAAqB,IAAXgE,MhB2tFxC3J,IAAK,cACLC,MAAO,WgBztFP,MAAO2a,QhB6tFP5a,IAAK,iBACLC,MAAO,WgB3tFP,GAAIqM,GAAU,CAId,OAHIxG,MAAKyW,WACPjQ,GAAWkQ,KAAKC,MAAQ3W,KAAKyW,UAAY,KAEpCzW,KAAK6P,YAAcrJ,KhB+tF1BtM,IAAK,mBACLC,MAAO,WgB7tFP,MAAO,ShBiuFPD,IAAK,SACLC,MAAO,WgB5tFP,GAAMuK,IACJC,MAAO,OACPC,OAAQ,QAGHsR,EAAclW,KAAKiW,MAAnBC,UACP,OACEA,IAAcjR,EAAA,QAAAC,cAAA,UACZmH,GAAIrM,KAAK0S,SACT3O,IAAK/D,KAAK+D,IACV8M,IAAKqF,EACLnF,YAAY,IACZ+C,UAAU,KACVpP,MAAOA,EACPqP,iBAAA,QhBkuFCiC,GACP3Q,EAAOC,UgB10FI0Q,GACJ7V,YAAc,cADV6V,EAEJvR,QAAU,SAAAnK,GAAA,MAAO2Q,GAAUpQ,KAAKP,IAF5B0b,EAGJ3G,aAAc,EhBg1FvBhX,EAAiB,SgBtuFF,EAAA0S,EAAA,SAAmBiL,IhB0uF5B,SAAU1d,EAAQD,EAASH,GAEjC,YAoBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAvBjexJ,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQwe,iBAAepa,EAEvB,IAAIuH,GAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MiB12FhiBmD,EAAAnN,EAAA,GjB82FI+M,EAAUnL,EAAuBuL,GiB52FrC/B,EAAApL,EAAA,GACA4S,EAAA5S,EAAA,GjBi3FI6S,EAAiBjR,EAAuBgR,GiB72FtCG,EAAY,sCACZwH,EAAmB,uBACZoE,EjB03FMxe,EiB13FNwe,ajB03F6B,SAAU7T,GAGlD,QAAS6T,KACP,GAAI/X,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAM6W,EAEtB,KAAK,GAAI9X,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAO+X,EAAalU,WAAa3J,OAAOqK,eAAewT,IAAepe,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EiBn4F1L8S,OACEC,WAAY,MjBo4FT/S,EiBj4FLuP,SAAWD,GAAmB,EAAAnP,EAAA3H,gBjBi4FuCwH,EiB/3FrEtD,WjB+3FwFyD,EAAOzD,WAAYsD,EiBl0F3G4I,KAAO,ajBk0FiI5I,EiBh0FxI6I,OAAS,ajBg0F8J7I,EiBvyFvKY,IAAM,SAAAkI,GACJ9I,EAAK8I,UAAYA,GjBoyFV7I,EAIJF,EAAQf,EAA2BgB,EAAOC,GAqJ/C,MAtKAd,GAAUuU,EAAc7T,GAoBxBgB,EAAa6S,IACX3c,IAAK,UACLC,MAAO,SiBr4FAG,GAEP,MADUA,GAAIE,MAAMyQ,GACX,MjBw4FT/Q,IAAK,qBACLC,MAAO,SiBv4FWgc,GAEdA,EAAU7b,KAAQ6b,EAAU7b,MAAQ0F,KAAKvC,MAAMnD,KACjD0F,KAAKoW,UACHF,WAAY,UjB44FhBhc,IAAK,uBACLC,MAAO,WiBt4FH6F,KAAK8W,qBACPC,cAAc/W,KAAK8W,wBjBk5FrB5c,IAAK,eACLC,MAAO,WiB34FO,GAAAgS,GAAAnM,IACVA,MAAK8W,sBAGT9W,KAAK8W,oBAAsBE,YAAY,WACjC7K,EAAKlM,SACPkM,EAAKlM,OAAO2W,YAAY,WAAY,SAACxI,GACnCjC,EAAKlM,OAAO4P,YAAczB,IAE5BjC,EAAKlM,OAAO2W,YAAY,WAAY,SAACrI,GACnCpC,EAAKlM,OAAOsO,SAAWA,MAG1B,SjBg5FHrU,IAAK,OACLC,MAAO,WiB94FD,GAAAwV,GAAA3P,KAAA7B,EAC6D6B,KAAKvC,MAAjEqL,EADD3K,EACC2K,QAASC,EADV5K,EACU4K,QAASJ,EADnBxK,EACmBwK,QAASD,EAD5BvK,EAC4BuK,OAAQF,EADpCrK,EACoCqK,QAAShC,EAD7CrI,EAC6CqI,QAASlM,EADtD6D,EACsD7D,IACtDkS,EAAUxM,KAAKsW,QAAQhc,EAC7B0F,MAAKoW,UACHF,oDAAqD1J,EAArD,uBAAmFhG,EAAnF,qCAEF,EAAAlD,EAAAlH,QA9DY,2DACG,gBA6Da2Q,KAAK,SAAAwJ,GAC1B5G,EAAK1D,YACV0D,EAAK1P,OAASsW,EAAa5G,EAAK+C,UAChC/C,EAAK1P,OAAOuW,YAAY,UAAW,SAAC1S,EAAM0C,GACxCA,EAAUkC,IAAWC,MAEvBgH,EAAK1P,OAAOuW,YAAY,QAAS,WAC/B7G,EAAKsH,eACLzO,MAEFmH,EAAK1P,OAAOuW,YAAY,WAAY1N,KACnCC,MjB+5FH7O,IAAK,OACLC,MAAO,WiBz5FP6F,KAAKH,WAAW,aAAc,WjB65F9B3F,IAAK,QACLC,MAAO,WiB35FP6F,KAAKH,WAAW,aAAc,YjB+5F9B3F,IAAK,OACLC,MAAO,WiB75FP6F,KAAKH,WAAW,aAAc,WjBi6F9B3F,IAAK,SACLC,MAAO,SiBh6FDY,GACNiF,KAAKH,WAAW,aAAc,OAAQ9E,MjBm6FtCb,IAAK,YACLC,MAAO,SiBl6FE0J,GACT7D,KAAKH,WAAW,aAAc,SAAqB,IAAXgE,MjBq6FxC3J,IAAK,cACLC,MAAO,WiBn6FP,MAAO6F,MAAKC,OAAOsO,YjBu6FnBrU,IAAK,iBACLC,MAAO,WiBr6FP,MAAO6F,MAAKC,OAAO4P,ejBy6FnB3V,IAAK,mBACLC,MAAO,WiBv6FP,MAAO,SjB26FPD,IAAK,SACLC,MAAO,WiBt6FP,GAAMuK,IACJC,MAAO,OACPC,OAAQ,QAGHsR,EAAclW,KAAKiW,MAAnBC,UACP,OACEA,IAAcjR,EAAA,QAAAC,cAAA,UACZmH,GAAIrM,KAAK0S,SACT3O,IAAK/D,KAAK+D,IACV8M,IAAKqF,EACLnF,YAAY,IACZ+C,UAAU,KACVpP,MAAOA,EACPqP,iBAAA,QjB46FC8C,GACPxR,EAAOC,UiBliGIuR,GACJ1W,YAAc,eADV0W,EAEJpS,QAAU,SAAAnK,GAAA,MAAO2Q,GAAUpQ,KAAKP,IAF5Buc,EAGJxH,aAAc,EjBwiGvBhX,EAAiB,SiBh7FF,EAAA0S,EAAA,SAAmB8L,IjBo7F5B,SAAUve,EAAQD,EAASH,GAEjC,YAoBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAvBjexJ,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQ6e,WAASza,EAEjB,IAAIuH,GAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MkBlkGhiBmD,EAAAnN,EAAA,GlBskGI+M,EAAUnL,EAAuBuL,GkBpkGrC/B,EAAApL,EAAA,GACA4S,EAAA5S,EAAA,GlBykGI6S,EAAiBjR,EAAuBgR,GkBvkGtC2H,EAAmB,iBACZyE,ElBklGA7e,EkBllGA6e,OlBklGiB,SAAUlU,GAGtC,QAASkU,KACP,GAAIpY,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAMkX,EAEtB,KAAK,GAAInY,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAOoY,EAAOvU,WAAa3J,OAAOqK,eAAe6T,IAASze,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EkB7lG9KuP,SAAWD,GAAmB,EAAAnP,EAAA3H,gBlB6lGgNwH,EkB5lG9OlD,QACE4P,YAAa,GlB6lGV1M,EkBhkGL4I,KAAO,alBkkGF5I,EkB/jGL6I,OAAS,alBikGJ7I,EkBjjGLY,IAAM,SAAAkI,GACJ9I,EAAK8I,UAAYA,GlB0iGV7I,EAQJF,EAAQf,EAA2BgB,EAAOC,GAiH/C,MAtIAd,GAAU4U,EAAQlU,GAwBlBgB,EAAakT,IACXhd,IAAK,OACLC,MAAO,SkBtmGHG,GAAK,GAAA6R,GAAAnM,IACJA,MAAKiM,UAGR2C,WAAW,iBAAMzC,GAAK1O,MAAM+K,WAAW,KAFvCxI,KAAKvC,MAAM+K,alBgnGbtO,IAAK,OACLC,MAAO,WkB3mGP6F,KAAKyW,SAAWC,KAAKC,MACrB3W,KAAKvC,MAAMiL,YlB+mGXxO,IAAK,QACLC,MAAO,WkB7mGP6F,KAAKC,OAAO4P,YAAc7P,KAAKyD,iBAC/BzD,KAAKyW,SAAW,KAChBzW,KAAKvC,MAAMkL,alBinGXzO,IAAK,OACLC,MAAO,WkB/mGP6F,KAAKC,OAAO4P,YAAc7P,KAAKyD,iBAC/BzD,KAAKyW,SAAW,KAChBzW,KAAKvC,MAAMkL,alBmnGXzO,IAAK,SACLC,MAAO,SkBlnGDY,OlBsnGNb,IAAK,YACLC,MAAO,SkBpnGE0J,OlBwnGT3J,IAAK,cACLC,MAAO,WkB/mGP,MAAO2a,QlBmnGP5a,IAAK,iBACLC,MAAO,WkBjnGP,GAAIqM,GAAU,CAId,OAHIxG,MAAKyW,WACPjQ,GAAWkQ,KAAKC,MAAQ3W,KAAKyW,UAAY,KAEpCzW,KAAKC,OAAO4P,YAAcrJ,KlBqnGjCtM,IAAK,mBACLC,MAAO,WkBnnGP,MAAO,SlBunGPD,IAAK,SACLC,MAAO,WkBlnGP,GAAMuK,IACJC,MAAO,OACPC,OAAQ,QAHFzG,EAKe6B,KAAKvC,MAArBnD,EALC6D,EAKD7D,IAAKkM,EALJrI,EAKIqI,OACZ,OAAIA,GAEAvB,EAAA,QAAAC,cAAA,UACEmH,GAAIrM,KAAK0S,SACT3O,IAAK/D,KAAK+D,IACV8M,IAAKrK,GAAWlM,EAChByW,YAAY,IACZ+C,UAAU,KACVpP,MAAOA,EACPqP,iBAAA,IAMF9O,EAAA,QAAAC,cAAA,OAAKR,MAAOA,GACVO,EAAA,QAAAC,cAAA,OAAKR,OACHyS,WAAY,SACZC,WAAY,wBACZC,QAAS,OACTzS,OAAQ,OACR0S,eAAgB,SAChB3S,MAAO,SAEPM,EAAA,QAAAC,cAAA,OAAKoO,UAAU,QAAQ5O,OACrB6S,YAAa,SACbC,YAAa,mBACbC,MAAO,OACP7S,OAAQ,gBlB+nGbsS,GACP7R,EAAOC,UkB1tGI4R,GACJ/W,YAAc,SADV+W,EAEJzS,QAAU,SAAAnK,GAAA,OAAO,GlBguG1BjC,EAAiB,SkB/nGF,EAAA0S,EAAA,SAAmBmM,IlBmoG5B,SAAU5e,EAAQD,EAASH,GAEjC,YAsBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAzBjexJ,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQqf,aAAWjb,EAEnB,IAAI0I,GAAWnM,OAAOwM,QAAU,SAAUC,GAAU,IAAK,GAAIlN,GAAI,EAAGA,EAAIgE,UAAUC,OAAQjE,IAAK,CAAE,GAAImN,GAASnJ,UAAUhE,EAAI,KAAK,GAAI2B,KAAOwL,GAAc1M,OAAOS,UAAUC,eAAejB,KAAKiN,EAAQxL,KAAQuL,EAAOvL,GAAOwL,EAAOxL,IAAY,MAAOuL,IAEnPzB,EAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MmBxvGhiBmD,EAAAnN,EAAA,GnB4vGI+M,EAAUnL,EAAuBuL,GmB1vGrC/B,EAAApL,EAAA,GACA4S,EAAA5S,EAAA,GnB+vGI6S,EAAiBjR,EAAuBgR,GmB3vGtCG,EAAY,kCAELyM,EnBuwGErf,EmBvwGFqf,SnBuwGqB,SAAU1U,GAG1C,QAAS0U,KACP,GAAI5Y,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAM0X,EAEtB,KAAK,GAAI3Y,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAO4Y,EAAS/U,WAAa3J,OAAOqK,eAAeqU,IAAWjf,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EmBhxGlLtD,WnBgxGqMyD,EAAOzD,WAAYsD,EmB/wGxNoL,SAAW,KnB+wGoOpL,EmB9wG/O0M,YAAc,KnB8wG2P1M,EmB7wGzQgO,cAAgB,KnB6wGqRhO,EmB7uGrS4I,KAAO,anB+uGF5I,EmB5uGL6I,OAAS,anB8uGJ7I,EmBluGLY,IAAM,SAAAgM,GACJ5M,EAAK4M,OAASA,GnB6tGP3M,EAMJF,EAAQf,EAA2BgB,EAAOC,GA0F/C,MA7GAd,GAAUoV,EAAU1U,GAsBpBgB,EAAa0T,IACXxd,IAAK,OACLC,MAAO,SmBvxGHG,GAAK,GAAA6R,GAAAnM,MACT,EAAAsD,EAAAlH,QAdY,8CACG,YAaa2Q,KAAK,SAAA2K,GAC/BvL,EAAKlM,OAASyX,EAASC,aAAaxL,EAAK4D,QACzC5D,EAAKlM,OAAOmR,MAAMrE,KAAK,WACrBZ,EAAKlM,OAAOmN,OAAOtB,KAAKwF,GAAGnF,EAAK1O,MAAMiL,QACtCyD,EAAKlM,OAAOmN,OAAOO,MAAM2D,GAAGnF,EAAK1O,MAAMkL,SACvCwD,EAAKlM,OAAOmN,OAAOwK,MAAMtG,GAAGnF,EAAK1O,MAAMqL,SACvCqD,EAAKlM,OAAOmN,OAAOiF,MAAMf,GAAGnF,EAAK1O,MAAM4U,OACvClG,EAAKlM,OAAOmN,OAAOgB,SAASkD,GAAG,SAACvW,EAASwT,GACvCpC,EAAK0D,YAAc9U,EACnBoR,EAAKoC,SAAWA,IAElBpC,EAAK1O,MAAM+K,aAEZxI,KAAKvC,MAAMsL,YnB4xGd7O,IAAK,OACLC,MAAO,WmB1xGP6F,KAAKH,WAAW,WnB8xGhB3F,IAAK,QACLC,MAAO,WmB5xGP6F,KAAKH,WAAW,YnBgyGhB3F,IAAK,OACLC,MAAO,eAIPD,IAAK,SACLC,MAAO,SmBjyGDY,GACNiF,KAAKH,WAAW,OAAQ9E,MnBoyGxBb,IAAK,YACLC,MAAO,SmBnyGE0J,OnBuyGT3J,IAAK,cACLC,MAAO,WmB9xGP,MAAO6F,MAAKuO,YnBkyGZrU,IAAK,iBACLC,MAAO,WmBhyGP,MAAO6F,MAAK6P,enBoyGZ3V,IAAK,mBACLC,MAAO,WmBlyGP,MAAO,SnBsyGPD,IAAK,SACLC,MAAO,WmBlyGC,GAAAgE,GACgB6B,KAAKvC,MAArBnD,EADA6D,EACA7D,IAAKsD,EADLO,EACKP,OACPyO,EAAK/R,EAAIE,MAAMyQ,GAAW,GAC1BvG,GACJC,MAAO,OACPC,OAAQ,QAEJiT,GAAQ,EAAAvU,EAAAtH,aAAAmJ,KACTvH,EAAO0K,SAASjB,SACnByQ,SAAUzL,EAAV,MAIF,OACEpH,GAAA,QAAAC,cAAA,UACEhL,IAAKmS,EACLtI,IAAK/D,KAAK+D,IACVW,MAAOA,EACPmM,IAAA,2CAAgDgH,EAChD9G,YAAY,UnBwyGX2G,GACPrS,EAAOC,UmBt3GIoS,GACJvX,YAAc,WADVuX,EAEJjT,QAAU,SAAAnK,GAAA,MAAO2Q,GAAUpQ,KAAKP,IAF5Bod,EAGJrI,aAAc,EnB43GvBhX,EAAiB,SmB5yGF,EAAA0S,EAAA,SAAmB2M,InBgzG5B,SAAUpf,EAAQD,EAASH,GAEjC,YAsBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GoB15Gje,QAASiC,GAASnK,GAChB,GAAIA,YAAe2E,OAAO,IAAAnB,IAAA,EAAAC,GAAA,EAAAC,MAAAvB,EAAA,KACxB,OAAAwB,GAAAC,EAAiB5D,EAAjB+D,OAAAC,cAAAR,GAAAG,EAAAC,EAAAK,QAAAC,MAAAV,GAAA,EAAsB,IAAbia,GAAa9Z,EAAA9D,KACpB,IAAoB,gBAAT4d,IAAqBtT,EAAQsT,GACtC,OAAO,CAET,IAAItT,EAAQsT,EAAKlH,KACf,OAAO,GANa,MAAAtT,GAAAQ,GAAA,EAAAC,EAAAT,EAAA,aAAAO,GAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,KAAAC,IASxB,OAAO,EAET,SAAI,EAAAsF,EAAApC,eAAc5G,KAIhB0d,EAAiBnd,KAAKP,IACtB2d,EAAiBpd,KAAKP,IACtB4d,EAAerd,KAAKP,IACpB6d,EAAgBtd,KAAKP,IAIzB,QAAS8d,GAAc9d,GACrB,MAAOmK,GAAQnK,MAAUiT,SAAS8K,0BAA4BL,EAAiBnd,KAAKP,GpBy2GtFtB,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQigB,eAAa7b,EAErB,IAAI0I,GAAWnM,OAAOwM,QAAU,SAAUC,GAAU,IAAK,GAAIlN,GAAI,EAAGA,EAAIgE,UAAUC,OAAQjE,IAAK,CAAE,GAAImN,GAASnJ,UAAUhE,EAAI,KAAK,GAAI2B,KAAOwL,GAAc1M,OAAOS,UAAUC,eAAejB,KAAKiN,EAAQxL,KAAQuL,EAAOvL,GAAOwL,EAAOxL,IAAY,MAAOuL,IAEnPzB,EAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MoBx5GhiBmD,EAAAnN,EAAA,GpB45GI+M,EAAUnL,EAAuBuL,GoB15GrC/B,EAAApL,EAAA,GACA4S,EAAA5S,EAAA,GpB+5GI6S,EAAiBjR,EAAuBgR,GoB75GtCyN,EAA2B,mBAAdC,YAA6B,mBAAmB3d,KAAK2d,UAAUC,aAAe5b,OAAO6b,SAClGV,EAAmB,qEACnBC,EAAmB,qCACnBC,EAAiB,kBACjBS,EAAc,mEAEdR,EAAkB,iBAClBS,EAAe,wEAEfC,EAAoB,wBA6BbP,EpBw7GIjgB,EoBx7GJigB,WpBw7GyB,SAAUtV,GAG9C,QAASsV,KACP,GAAIxZ,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAMsY,EAEtB,KAAK,GAAIvZ,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAOwZ,EAAW3V,WAAa3J,OAAOqK,eAAeiV,IAAa7f,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EoBp4GtLkG,aAAe,SAAA8F,GAAK,GAAA9D,GACgBlI,EAAK1F,MAA/B4L,EADUgC,EACVhC,aAAc7C,EADJ6E,EACI7E,OACtB6C,GAAa8F,GACT3I,GACFrD,EAAK2I,QpBy4GJ3I,EoBt4GL8F,OAAS,SAAAkG,GACPhM,EAAK1F,MAAMwL,OAAOkG,EAAE1J,OAAOoK,cpBu4GxB1M,EoB5zGL4I,KAAO,WACL5I,EAAKlD,OAAO2G,OAAQ,GpB6zGjBzD,EoB3zGL6I,OAAS,WACP7I,EAAKlD,OAAO2G,OAAQ,GpB4zGjBzD,EoBvwGL2V,oBAAsB,SAACpT,EAAQqT,GAC7B,MAAsB,gBAAXrT,GACFT,EAAA,QAAAC,cAAA,UAAQhL,IAAK6e,EAAOlI,IAAKnL,IAE3BT,EAAA,QAAAC,cAAA,SAAAC,GAAQjL,IAAK6e,GAAWrT,KpBwwG5BvC,EoBtwGL6V,YAAc,SAACC,EAAOF,GACpB,MAAO9T,GAAA,QAAAC,cAAA,QAAAC,GAAOjL,IAAK6e,GAAWE,KpBuwG3B9V,EoBrwGLY,IAAM,SAAA9D,GACJkD,EAAKlD,OAASA,GpB8uGPmD,EAwBJF,EAAQf,EAA2BgB,EAAOC,GAoS/C,MAzUAd,GAAUgW,EAAYtV,GAwCtBgB,EAAasU,IACXpe,IAAK,oBACLC,MAAO,WoB79GP6F,KAAKkZ,eACDX,GACFvY,KAAKC,OAAO8O,UpBk+Gd7U,IAAK,4BACLC,MAAO,SoBh+GkB8J,GACrBjE,KAAKmZ,eAAenZ,KAAKvC,SAAWuC,KAAKmZ,eAAelV,IAC1DjE,KAAKoZ,qBpBo+GPlf,IAAK,qBACLC,MAAO,SoBl+GWgc,GACdnW,KAAKmZ,eAAenZ,KAAKvC,SAAWuC,KAAKmZ,eAAehD,IAC1DnW,KAAKkZ,kBpBs+GPhf,IAAK,uBACLC,MAAO,WoBn+GP6F,KAAKoZ,qBpBu+GLlf,IAAK,eACLC,MAAO,WoBt+GO,GAAAgE,GAKV6B,KAAKvC,MAHP+K,EAFYrK,EAEZqK,QAASE,EAFGvK,EAEHuK,OAAQE,EAFLzK,EAEKyK,SAAUC,EAFf1K,EAEe0K,YAC3BF,EAHYxK,EAGZwK,QAASG,EAHG3K,EAGH2K,QAASC,EAHN5K,EAGM4K,QAAShC,EAHf5I,EAGe4I,YAAaqC,EAH5BjL,EAG4BiL,YACxCD,EAJYhL,EAIZgL,eAAgBkQ,EAJJlb,EAIIkb,cAElBrZ,MAAKC,OAAO8V,iBAAiB,UAAWvN,GACxCxI,KAAKC,OAAO8V,iBAAiB,OAAQrN,GACrC1I,KAAKC,OAAO8V,iBAAiB,UAAWnN,GACxC5I,KAAKC,OAAO8V,iBAAiB,UAAWlN,GACxC7I,KAAKC,OAAO8V,iBAAiB,QAASpN,GACtC3I,KAAKC,OAAO8V,iBAAiB,SAAU/V,KAAKiJ,QAC5CjJ,KAAKC,OAAO8V,iBAAiB,QAASjN,GACtC9I,KAAKC,OAAO8V,iBAAiB,QAAShN,GACtC/I,KAAKC,OAAO8V,iBAAiB,eAAgB5M,GAC7CnJ,KAAKC,OAAOqZ,aAAa,KAAMD,GAC/BrZ,KAAKC,OAAO8V,iBAAiB,wBAAyB3M,GACtDpJ,KAAKC,OAAO8V,iBAAiB,wBAAyB/V,KAAKqJ,cACvDtC,IACF/G,KAAKC,OAAOqZ,aAAa,cAAe,IACxCtZ,KAAKC,OAAOqZ,aAAa,qBAAsB,IAC/CtZ,KAAKC,OAAOqZ,aAAa,iBAAkB,QpBk/G7Cpf,IAAK,kBACLC,MAAO,WoBh/GU,GAAAoJ,GAKbvD,KAAKvC,MAHP+K,EAFejF,EAEfiF,QAASE,EAFMnF,EAENmF,OAAQE,EAFFrF,EAEEqF,SAAUC,EAFZtF,EAEYsF,YAC3BF,EAHepF,EAGfoF,QAASG,EAHMvF,EAGNuF,QAASC,EAHHxF,EAGGwF,QAASK,EAHZ7F,EAGY6F,YAC3BD,EAJe5F,EAIf4F,cAEFnJ,MAAKC,OAAOsZ,oBAAoB,UAAW/Q,GAC3CxI,KAAKC,OAAOsZ,oBAAoB,OAAQ7Q,GACxC1I,KAAKC,OAAOsZ,oBAAoB,UAAW3Q,GAC3C5I,KAAKC,OAAOsZ,oBAAoB,UAAW1Q,GAC3C7I,KAAKC,OAAOsZ,oBAAoB,QAAS5Q,GACzC3I,KAAKC,OAAOsZ,oBAAoB,SAAUvZ,KAAKiJ,QAC/CjJ,KAAKC,OAAOsZ,oBAAoB,QAASzQ,GACzC9I,KAAKC,OAAOsZ,oBAAoB,QAASxQ,GACzC/I,KAAKC,OAAOsZ,oBAAoB,eAAgBpQ,GAChDnJ,KAAKC,OAAOsZ,oBAAoB,wBAAyBnQ,GACzDpJ,KAAKC,OAAOsZ,oBAAoB,wBAAyBvZ,KAAKqJ,iBpBy/G9DnP,IAAK,iBACLC,MAAO,SoB9+GOsD,GACd,OAAIA,EAAMG,OAAOuG,KAAKC,cAGlB3G,EAAMG,OAAOuG,KAAK6D,WAAWwR,SAG1BxB,EAAiBnd,KAAK4C,EAAMnD,MAAQmD,EAAMG,OAAOuG,KAAKE,gBpBi/G7DnK,IAAK,eACLC,MAAO,SoBh/GKG,GACZ,MAAQ4d,GAAerd,KAAKP,KAASie,GAAQvY,KAAKvC,MAAMG,OAAOuG,KAAKG,YpBm/GpEpK,IAAK,gBACLC,MAAO,SoBl/GMG,GACb,MAAO6d,GAAgBtd,KAAKP,IAAQ0F,KAAKvC,MAAMG,OAAOuG,KAAKI,apBq/G3DrK,IAAK,OACLC,MAAO,SoBp/GHG,GAAK,GAAA6R,GAAAnM,KAAAyZ,EAC2BzZ,KAAKvC,MAAMG,OAAOuG,KAA9CgE,EADCsR,EACDtR,WAAYC,EADXqR,EACWrR,WAmBpB,IAlBIpI,KAAK0Z,aAAapf,KACpB,EAAAgJ,EAAAlH,QAAOuc,EAAYla,QAAQ,UAAW0J,GA/HzB,OA+HkD4E,KAAK,SAAA4M,GAClExN,EAAKyN,IAAM,GAAID,GAAIxN,EAAK1O,MAAMG,OAAOuG,KAAK+D,YAC1CiE,EAAKyN,IAAItI,GAAGqI,EAAIxJ,OAAOK,MAAO,SAACrB,EAAG/D,GAChCe,EAAK1O,MAAMsL,QAAQoG,EAAG/D,EAAMe,EAAKyN,IAAKD,KAExCxN,EAAKyN,IAAIC,WAAWvf,GACpB6R,EAAKyN,IAAIE,YAAY3N,EAAKlM,UAG1BD,KAAK+Z,cAAczf,KACrB,EAAAgJ,EAAAlH,QAAOwc,EAAana,QAAQ,UAAW2J,GAtIzB,UAsIoD2E,KAAK,SAAAiN,GACrE7N,EAAK8N,KAAOD,EAAOE,cAAczX,SACjC0J,EAAK8N,KAAKE,WAAWhO,EAAKlM,OAAQ3F,EAAK6R,EAAK1O,MAAM+I,SAClD2F,EAAK8N,KAAKG,WAAWC,wBAAuB,KAI5C/f,YAAe2E,OAKjBe,KAAKC,OAAO8O,WACP,KAAI,EAAAzL,EAAApC,eAAc5G,GACvB,IACE0F,KAAKC,OAAOqa,UAAYhgB,EACxB,MAAO6U,GACPnP,KAAKC,OAAO4Q,IAAMhU,OAAO0d,IAAIC,gBAAgBlgB,OpB8/GjDJ,IAAK,OACLC,MAAO,WoB1/GP,GAAMsgB,GAAUza,KAAKC,OAAO6L,MACxB2O,IACFA,QAAcza,KAAKvC,MAAMsL,YpB+/G3B7O,IAAK,QACLC,MAAO,WoB5/GP6F,KAAKC,OAAO0N,WpBggHZzT,IAAK,OACLC,MAAO,WoB9/GP6F,KAAKC,OAAOya,gBAAgB,OACxB1a,KAAK4Z,KACP5Z,KAAK4Z,IAAIe,UAEP3a,KAAKia,MACPja,KAAKia,KAAKW,WpBmgHZ1gB,IAAK,SACLC,MAAO,SoBjgHDY,GACNiF,KAAKC,OAAO4P,YAAc9U,KpBogH1Bb,IAAK,YACLC,MAAO,SoBngHE0J,GACT7D,KAAKC,OAAO0G,OAAS9C,KpBsgHrB3J,IAAK,YACLC,MAAO,WoB9/GH6F,KAAKC,OAAO4a,yBAA2BtN,SAASuN,0BAA4B9a,KAAKC,QACnFD,KAAKC,OAAO4a,6BpBmgHd3gB,IAAK,aACLC,MAAO,WoBhgHHoT,SAASwN,sBAAwBxN,SAASuN,0BAA4B9a,KAAKC,QAC7EsN,SAASwN,0BpBqgHX7gB,IAAK,kBACLC,MAAO,SoBngHQyT,GACf5N,KAAKC,OAAO4G,aAAe+G,KpBsgH3B1T,IAAK,cACLC,MAAO,WoBpgHP,IAAK6F,KAAKC,OAAQ,MAAO,KADZ,IAAAF,GAEkBC,KAAKC,OAA5BsO,EAFKxO,EAELwO,SAAUyM,EAFLjb,EAEKib,QAGlB,OAAIzM,KAAauG,KAAYkG,EAASxe,OAAS,EACtCwe,EAASpO,IAAIoO,EAASxe,OAAS,GAEjC+R,KpB2gHPrU,IAAK,iBACLC,MAAO,WoBzgHP,MAAK6F,MAAKC,OACHD,KAAKC,OAAO4P,YADM,QpB8gHzB3V,IAAK,mBACLC,MAAO,WoB3gHP,IAAK6F,KAAKC,OAAQ,MAAO,KADP,IAEVgb,GAAajb,KAAKC,OAAlBgb,QACR,IAAwB,IAApBA,EAASze,OACX,MAAO,EAET,IAAMoQ,GAAMqO,EAASrO,IAAIqO,EAASze,OAAS,GACrC+R,EAAWvO,KAAKwD,aACtB,OAAIoJ,GAAM2B,EACDA,EAEF3B,KpBghHP1S,IAAK,YACLC,MAAO,SoB/gHEG,GACT,GAAM4gB,GAASlb,KAAK0Z,aAAapf,GAC3B6gB,EAAUnb,KAAK+Z,cAAczf,EACnC,MAAIA,YAAe2E,SAAS,EAAAqE,EAAApC,eAAc5G,IAAQ4gB,GAAUC,GAG5D,MAAItC,GAAkBhe,KAAKP,GAClBA,EAAImE,QAAQ,kBAAmB,6BAEjCnE,KpBkhHPJ,IAAK,SACLC,MAAO,WoBrgHC,GAAAihB,GAC+Dpb,KAAKvC,MAApEnD,EADA8gB,EACA9gB,IAAKkM,EADL4U,EACK5U,QAASC,EADd2U,EACc3U,KAAMC,EADpB0U,EACoB1U,SAAUE,EAD9BwU,EAC8BxU,MAAOhJ,EADrCwd,EACqCxd,OAAQ+G,EAD7CyW,EAC6CzW,MAAOC,EADpDwW,EACoDxW,OACtDyW,EAAWrb,KAAKmZ,eAAenZ,KAAKvC,OACpC6d,EAAUD,EAAW,QAAU,QAC/B3W,GACJC,MAAiB,SAAVA,EAAmBA,EAAQ,OAClCC,OAAmB,SAAXA,EAAoBA,EAAS,OAEvC,OACEK,GAAA,QAAAC,cAACoW,EAADnW,GACEpB,IAAK/D,KAAK+D,IACV8M,IAAK7Q,KAAKub,UAAUjhB,GACpBoK,MAAOA,EACP4C,QAAQ,OACR4N,SAAU1O,OAAW/J,GACrBiK,SAAUA,EACVE,MAAOA,EACPH,KAAMA,GACF7I,EAAOuG,KAAK6D,YACf1N,YAAe2E,QAChB3E,EAAI4B,IAAI8D,KAAK8Y,qBAEZlb,EAAOuG,KAAK8D,OAAO/L,IAAI8D,KAAKgZ,kBpBkhH5BV,GACPjT,EAAOC,UoBnwHIgT,GACJnY,YAAc,aADVmY,EAEJ7T,QAAUA,EAFN6T,EAGJF,aAAeA,EpBqwHxB/f,EAAiB,SoBlhHF,EAAA0S,EAAA,SAAmBuN,IpBshH5B,SAAUhgB,EAAQD,EAASH,GAEjC,YA0BA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASE,GAAgBF,EAAKG,EAAKC,GAAiK,MAApJD,KAAOH,GAAOf,OAAOC,eAAec,EAAKG,GAAOC,MAAOA,EAAOhB,YAAY,EAAMD,cAAc,EAAMkB,UAAU,IAAkBL,EAAIG,GAAOC,EAAgBJ,EAE3M,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GA/BjexJ,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQmjB,SAAO/e,EAEf,IAAI0I,GAAWnM,OAAOwM,QAAU,SAAUC,GAAU,IAAK,GAAIlN,GAAI,EAAGA,EAAIgE,UAAUC,OAAQjE,IAAK,CAAE,GAAImN,GAASnJ,UAAUhE,EAAI,KAAK,GAAI2B,KAAOwL,GAAc1M,OAAOS,UAAUC,eAAejB,KAAKiN,EAAQxL,KAAQuL,EAAOvL,GAAOwL,EAAOxL,IAAY,MAAOuL,IAEnPrK,EAAiB,WAAc,QAASgG,GAAcC,EAAK9I,GAAK,GAAI+I,MAAeC,GAAK,EAAUC,GAAK,EAAWC,MAAKhF,EAAW,KAAM,IAAK,GAAiCiF,GAA7BC,EAAKN,EAAIhD,OAAOC,cAAmBiD,GAAMG,EAAKC,EAAGpD,QAAQC,QAAoB8C,EAAKpE,KAAKwE,EAAGvH,QAAY5B,GAAK+I,EAAK9E,SAAWjE,GAA3DgJ,GAAK,IAAoE,MAAOhE,GAAOiE,GAAK,EAAMC,EAAKlE,EAAO,QAAU,KAAWgE,GAAMI,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIH,EAAI,KAAMC,IAAQ,MAAOH,GAAQ,MAAO,UAAUD,EAAK9I,GAAK,GAAI0G,MAAM2C,QAAQP,GAAQ,MAAOA,EAAY,IAAIhD,OAAOC,WAAYtF,QAAOqI,GAAQ,MAAOD,GAAcC,EAAK9I,EAAa,MAAM,IAAIsJ,WAAU,4DAEllBmC,EAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MqBr0HhiBmD,EAAAnN,EAAA,GrBy0HI+M,EAAUnL,EAAuBuL,GqBx0HrC/B,EAAApL,EAAA,GACA4S,EAAA5S,EAAA,GrB60HI6S,EAAiBjR,EAAuBgR,GqB50H5C2Q,EAAAvjB,EAAA,IAEMua,EAAmB,eACnBiJ,EAAoB,gBACpBC,EAAwB,aACxB1Q,EAAY,oBAGLuQ,ErBy1HFnjB,EqBz1HEmjB,KrBy1Ha,SAAUxY,GAGlC,QAASwY,KACP,GAAI1c,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAMwb,EAEtB,KAAK,GAAIzc,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAO0c,EAAK7Y,WAAa3J,OAAOqK,eAAemY,IAAO/iB,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EqBn2H1K8S,OACE2F,mBAAoB,KACpBC,wBAAwB,EACxBC,SAAU,KACVC,gBAAgB,EAChBC,UAAW,KACXC,WAAY,KACZC,WAAY,KACZC,OAAQ,KACRC,gBAAiB,KACjBC,sBAAuB,KACvBC,IAAK,KACLC,cAAe,EACfC,gBAAgB,GrBo2HbrZ,EqBj2HLuP,SAAWD,GAAmB,EAAAnP,EAAA3H,gBrBi2HuCwH,EqBh2HrEsZ,UAAYf,GAAoB,EAAApY,EAAA3H,gBrBg2HuGwH,EqB/1HvIuZ,aAAef,GAAwB,EAAArY,EAAA3H,gBrB+1HyKwH,EqB91HhNtD,WrB81HmOyD,EAAOzD,WAAYsD,EqB5lHtP4I,KAAO,WAAM,GACJkQ,GAAc9Y,EAAK8S,MAAnBgG,UACP,KAAKA,EAAY,MAAO,KACxB9Y,GAAKiT,UAAUmG,cAAeN,EAAWU,cACzCxZ,EAAK2L,UAAU,IrB8lHZ3L,EqB3lHL6I,OAAS,WAAM,GACNuQ,GAAiBpZ,EAAK8S,MAAtBsG,aACPpZ,GAAK2L,UAAUyN,IrB6lHZpZ,EqBpkHLY,IAAM,SAACkI,GACL9I,EAAK8I,UAAYA,GrB2iHV7I,EA0BJF,EAAQf,EAA2BgB,EAAOC,GAqb/C,MA5dAd,GAAUkZ,EAAMxY,GA0ChBgB,EAAawX,IACXthB,IAAK,6BACLC,MAAO,WqB32HcoT,SAAS6F,eAAepT,KAAK0S,UACrC/E,QACb3N,KAAKoW,UACHgG,iBAAiB,EACjBC,uBAAuB,EACvBR,wBAAwB,OrBi3H1B3hB,IAAK,yBACLC,MAAO,WqB52HcoT,SAAS6F,eAAepT,KAAK0S,UACrC/E,QACb3N,KAAKoW,UACHgG,iBAAiB,EACjBC,uBAAuB,EACvBR,wBAAwB,OrBk3H1B3hB,IAAK,sBACLC,MAAO,WqB72HP,GAAMyiB,GAAerP,SAAS6F,eAAepT,KAAK0S,SAClDkK,GAAajW,OAAS,EACtBiW,EAAahW,OAAQ,EACrB5G,KAAKoW,UACHgG,iBAAiB,EACjBC,uBAAuB,EACvBR,wBAAwB,OrBm3H1B3hB,IAAK,4BACLC,MAAO,WqBh3HoB,GAAAgS,GAAAnM,KACrB4c,EAAerP,SAAS6F,eAAepT,KAAK0S,SAClDkK,GAAajW,OAAS,EACtBiW,EAAahW,OAAQ,CACrB,IAAM6T,GAAUmC,EAAa9Q,WACbrP,KAAZge,GACFA,EAAQ1N,KAAK,WACXZ,EAAK0Q,2BADP,MAES,WACP1Q,EAAK2Q,2BrBu3HT5iB,IAAK,uBACLC,MAAO,WqBn3He,GAAAwV,GAAA3P,KAChB4c,EAAerP,SAAS6F,eAAepT,KAAK0S,UAC5C+H,EAAUmC,EAAa9Q,WACbrP,KAAZge,GACFA,EACG1N,KAAK,WACJ4C,EAAKoN,+BAFT,MAIS,WACLpN,EAAKqN,iCrBw3HX9iB,IAAK,qBACLC,MAAO,SqBp3HWgc,EAAW8G,GAE7B,GAAyB,OAArBA,EAAUd,QAAmBnc,KAAKiW,MAAMkG,OAC1C,MAAOnc,MAAKkd,sBAId,KACuC,IAArCD,EAAUpB,yBAC4B,IAAtC7b,KAAKiW,MAAM4F,uBAEX,MAAO7b,MAAKmd,0BAId,IAA6B,OAAzBF,EAAUhB,YAAuBjc,KAAKiW,MAAMgG,WAAY,CAC9Bjc,KAAKiW,MAAzBmG,gBAENpc,KAAKod,UAELpd,KAAKoW,UAAUoG,gBAAgB,QrBu3HnCtiB,IAAK,uBACLC,MAAO,WqBl3HP6F,KAAKoZ,qBrBs3HLlf,IAAK,kBACLC,MAAO,WqBp3HU,GACT8hB,GAAejc,KAAKiW,MAApBgG,UAGR,IAFApf,OAAO0c,oBAAoB,SAAUvZ,KAAKqd,iBAEtCpB,GAAcjc,KAAKsd,SAAU,IAAAxf,IAAA,EAAAC,GAAA,EAAAC,MAAAvB,EAAA,KAC/B,OAAAwB,GAAAC,EAA0BlF,OAAOukB,QAAQvd,KAAKsd,UAA9Cjf,OAAAC,cAAAR,GAAAG,EAAAC,EAAAK,QAAAC,MAAAV,GAAA,EAAyD,IAAAqN,GAAAlN,EAAA9D,MAAAqX,EAAApW,EAAA+P,EAAA,GAA7CkC,EAA6CmE,EAAA,GAAtCgM,EAAsChM,EAAA,EACvDyK,GAAW1C,oBAAoBlM,EAAOmQ,IAFT,MAAAjgB,GAAAQ,GAAA,EAAAC,EAAAT,EAAA,aAAAO,GAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,KAAAC,SrBs5HjC9D,IAAK,iBACLC,MAAO,WqBh5HS,GAAAsjB,GACYzd,KAAKiW,MAAzBgG,EADQwB,EACRxB,WAAYK,EADJmB,EACInB,IACdM,EAAerP,SAAS6F,eAAepT,KAAK0S,UAC7B9N,EAA8BgY,EAA5Cc,aAAmC/Y,EAASiY,EAAtBe,WAC7B,KAAK1B,EAAY,MAAO,KACxBA,GAAW2B,OAAOjZ,EAAOC,EAAQ0X,EAAIuB,SAASC,WrBw5H9C5jB,IAAK,WACLC,MAAO,SqBt5HC4jB,GAAS,GACTrV,GAAW1I,KAAKvC,MAAhBiL,OACFoT,EAAWiC,EAAQC,OACzBtV,KACA1I,KAAKoW,UAAU0F,gBrB05Hf5hB,IAAK,qBACLC,MAAO,SqBx5HW8jB,GAAuB,GAAAC,GAAA/f,EAMrC6B,KAAKvC,MAJPqL,EAFuC3K,EAEvC2K,QACAH,EAHuCxK,EAGvCwK,QACAD,EAJuCvK,EAIvCuK,OACAS,EALuChL,EAKvCgL,eAEMmT,EAAQtc,KAAKiW,MAAbqG,IACFL,EAAagC,EAAsBE,cACvC5Q,SAAS6F,eAAepT,KAAK0S,UAI/B1S,MAAKqd,gBAAkBrd,KAAKoe,eAAe3N,KAAKzQ,MAChDnD,OAAOkZ,iBAAiB,SAAU/V,KAAKqd,iBAEvCrd,KAAKsd,UAALY,KAAAjkB,EAAAikB,EACG5B,EAAI+B,aAAaC,KAAKC,SAAWve,KAAK+I,QAAQ0H,KAAKzQ,OADtD/F,EAAAikB,EAEG5B,EAAIkC,QAAQF,KAAK1J,SAAW9L,EAAQ2H,KAAKzQ,OAF5C/F,EAAAikB,EAGG5B,EAAIkC,QAAQF,KAAKG,OAASze,KAAK7C,SAASsT,KAAKzQ,OAHhD/F,EAAAikB,EAIG5B,EAAIkC,QAAQF,KAAKI,QAAUhW,EAAO+H,KAAKzQ,OAJ1C/F,EAAAikB,EAKG5B,EAAIkC,QAAQF,KAAK7S,OAAS9C,EAAQ8H,KAAKzQ,OAL1C/F,EAAAikB,EAMG5B,EAAIkC,QAAQF,KAAKK,eAAiBxV,EAAesH,KAAKzQ,OANzDke,EAhByC,IAAA3e,IAAA,EAAAC,GAAA,EAAAC,MAAAhD,EAAA,KAyBzC,OAAAiD,GAAAC,EAA0B3G,OAAOukB,QAAQvd,KAAKsd,UAA9Cjf,OAAAC,cAAAiB,GAAAG,EAAAC,EAAApB,QAAAC,MAAAe,GAAA,EAAyD,IAAAqf,GAAAlf,EAAAvF,MAAA0kB,EAAAzjB,EAAAwjB,EAAA,GAA7CvR,EAA6CwR,EAAA,GAAtCrB,EAAsCqB,EAAA,EACvD5C,GAAWlG,iBAAiB1I,EAAOmQ,IA1BI,MAAAjgB,GAAAiC,GAAA,EAAAC,EAAAlC,EAAA,aAAAgC,GAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,KAAAC,IA6BzCO,KAAKoW,UAAU6F,kBrB86Hf/hB,IAAK,2BACLC,MAAO,WqB56HmB,GAAA2kB,GACiD9e,KAAKiW,MAAxEkG,EADkB2C,EAClB3C,OAAQH,EADU8C,EACV9C,UAAWI,EADD0C,EACC1C,gBAAiBC,EADlByC,EACkBzC,sBAAuBC,EADzCwC,EACyCxC,IAE7DJ,EAAa,GAAII,GAAIyC,UAC3B7C,GAAW8C,SAAW7C,EACtBD,EAAW+C,kBAAkB7C,GAC7BF,EAAWgD,mBAAmB7C,GAC9BL,EAAUmD,WAAWjD,MrBq7HrBhiB,IAAK,UACLC,MAAO,WqBn7HE,GAAAilB,GACuDpf,KAAKiW,MAA7D2F,EADCwD,EACDxD,mBAAoBK,EADnBmD,EACmBnD,WAAYF,EAD/BqD,EAC+BrD,eAAgBO,EAD/C8C,EAC+C9C,IAChD9T,EAAYxI,KAAKvC,MAAjB+K,OACR,KACOuT,IACHH,EAAmBzB,aACnBna,KAAKoW,UAAU2F,gBAAgB,KAGjCE,EAAWnJ,KAAK,IAAK,IAAKwJ,EAAIuB,SAASC,QAGvC9d,KAAKoe,iBAILnC,EAAWvP,QAGXlE,IACA,MAAO6W,GAEPrf,KAAKvC,MAAMqL,crB47Hb5O,IAAK,OACLC,MAAO,SqBz7HHmlB,GAAQ,GAAAC,GAAAvf,KAENwf,EAAsB,KAAhB5jB,KAAKC,SACXvB,EAAMglB,EAAO7gB,QAAQ,cAAe+gB,IAE1C,EAAA/D,EAAAgE,cAAa1S,KAAK,SAAAuP,GAEhB,GAAMV,GAAqB,GAAIU,GAAIoD,mBACjCnS,SAAS6F,eAAemM,EAAK9C,WAC7BlP,SAAS6F,eAAemM,EAAK7M,WAIzBsJ,EAAY,GAAIM,GAAIqD,UAAU/D,EAGpCI,GAAUjG,iBACRuG,EAAIsD,sBAAsBtB,KAAKuB,mBAC/BN,EAAKO,mBAAmBrP,KAAxB8O,IACA,GACFvD,EAAUjG,iBACRuG,EAAI+B,aAAaC,KAAKC,SACtBgB,EAAKxW,QAAQ0H,KAAb8O,IACA,GAEFA,EAAKnJ,UACHkG,MACAV,qBACAI,YACAG,OAAQ7hB,EAAIylB,MAAM,QAAQvjB,YAxB9B,MA0BS,WAEP+iB,EAAK9hB,MAAMqL,erBs7Hb5O,IAAK,UACLC,MAAO,SqBn7HAkY,GAAO,GACNtJ,GAAY/I,KAAKvC,MAAjBsL,QACAkT,EAAejc,KAAKiW,MAApBgG,UACJA,IACFA,EAAWtB,UAEb5R,EAAQsJ,MrBu7HRnY,IAAK,OACLC,MAAO,WqBr7HD,GACE8hB,GAAejc,KAAKiW,MAApBgG,UACR,KAAKA,EAAY,MAAO,KACxBA,GAAW+D,YrBy7HX9lB,IAAK,QACLC,MAAO,WqBt7Hc6F,KAAKiW,MAAnBgG,WACItO,WrB27HXzT,IAAK,SACLC,MAAO,eAEPD,IAAK,OACLC,MAAO,WqB17HD,GACC8hB,GAAcjc,KAAKiW,MAAnBgG,UACP,KAAKA,EAAY,MAAO,KACxBA,GAAWtB,arB87HXzgB,IAAK,YACLC,MAAO,SqB57HE0J,GAAU,GACZoY,GAAcjc,KAAKiW,MAAnBgG,UACP,KAAKA,EAAY,MAAO,KACxBA,GAAWnN,UAAUjL,MrBg8HrB3J,IAAK,cACLC,MAAO,WqBl7HM,GACL2hB,GAAa9b,KAAKiW,MAAlB6F,QACR,KAAKA,EAAU,MAAO,KACtB,IAAMvN,GAAWuN,EAAStY,aAC1B,OAAO+K,GAAW,EAAIA,EAAW,QrBs7HjCrU,IAAK,iBACLC,MAAO,WqBp7HS,GACT8hB,GAAcjc,KAAKiW,MAAnBgG,UACP,KAAKA,EAAY,MAAO,KACxB,IAAM1N,GAAWvO,KAAKwD,cAChByc,EAAgBhE,EAAWiE,kBACjC,OAAIC,QAAOC,SAAS7R,IAAa4R,OAAOC,SAASH,GACxC1R,EAAW0R,EAEb,QrBw7HP/lB,IAAK,mBACLC,MAAO,WqBr7HP,MAAO,SrBy7HPD,IAAK,gBACLC,MAAO,WqBn7HQ,GAAAkmB,GAAArgB,IAGgBA,MAAKiW,MAA5B2F,mBACWzB,YACnB,IAAMyC,GAAerP,SAAS6F,eAAepT,KAAK0S,SAClD1S,MAAKoW,UACHkK,eAAe,EACf9D,gBAAgB,GACf,WACDI,EAAa7N,OACbsR,EAAKjD,erB07HPljB,IAAK,SACLC,MAAO,WqBv7HC,GAAAomB,GAAAvgB,KAAAuD,EACkBvD,KAAKvC,MAAvBkH,EADApB,EACAoB,MAAOC,EADPrB,EACOqB,OACP4X,EAAmBxc,KAAKiW,MAAxBuG,eACFgE,GACJ7b,MAAiB,SAAVA,EAAmBA,EAAQ,OAClCC,OAAmB,SAAXA,EAAoBA,EAAS,QAEjC6b,OACDD,GACHE,IAAK,EACLC,KAAM,EACNC,SAAU,WACVC,OAAQ,IAEJC,GACJvJ,YAAa,QACbC,YAAa,mBACbuJ,YAAa,4CACbC,OAAQ,UACRL,KAAM,MACNM,WAAY,OACZC,UAAW,OACXN,SAAU,WACVF,IAAK,MACLG,OAAQ,EAEV,OACE5b,GAAA,QAAAC,cAAA,OAAKR,MAAAS,KAAWqb,GAAYI,SAAU,cAClCpE,GACAvX,EAAA,QAAAC,cAAA,OAAKR,MAAOoc,EAAiBzU,GAAIrM,KAAK0c,aAAcyE,QAAS,iBAAMZ,GAAKa,mBAC1Enc,EAAA,QAAAC,cAAA,SACEnB,IAAK/D,KAAK+D,IACV2C,UAAU,EACVmK,IAAK,2DACLnM,MAAO8b,EACPlZ,QAAQ,OACR+E,GAAIrM,KAAK0S,WAEXzN,EAAA,QAAAC,cAAA,OAAKmH,GAAIrM,KAAKyc,UAAW/X,MAAO+b,SrBk8H/BjF,GACPnW,EAAOC,UqBvzIIkW,GACJrb,YAAc,OADVqb,EAEJ/W,QAAU,SAAAnK,GAAA,MAAO2Q,GAAUpQ,KAAKP,IrB6zIzCjC,EAAiB,SqBr8HF,EAAA0S,EAAA,SAAmByQ,IrBy8H5B,SAAUljB,EAAQD,EAASH,GAEjC,YAGAc,QAAOC,eAAeZ,EAAS,cAC3B8B,OAAO,GsBn1IX,IAAIknB,GAAa,SAAUxQ,GACvB,MAAO,IAAI/T,SAAQ,SAAUC,EAASC,GAClC,GAAIskB,GAAS/T,SAASrI,cAAc,SACpCoc,GAAOC,OAAQ,EACfD,EAAOzQ,IAAMA,EACbyQ,EAAOE,OAASzkB,EAChBukB,EAAOG,QAAUzkB,EACjBuQ,SAASC,KAAKkU,YAAYJ,KtBy1IlCjpB,GAAiB,QsBt1IFgpB,GtB01IT,SAAU/oB,EAAQD,EAASH,GAEjC,YAoBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAvBjexJ,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQspB,aAAWllB,EAEnB,IAAIuH,GAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MuB/2IhiBmD,EAAAnN,EAAA,GvBm3II+M,EAAUnL,EAAuBuL,GuBj3IrC/B,EAAApL,EAAA,GACA4S,EAAA5S,EAAA,GvBs3II6S,EAAiBjR,EAAuBgR,GuBj3ItCyK,EAAkB,WAClB9C,EAAmB,aAEZkP,EvB83IEtpB,EuB93IFspB,SvB83IqB,SAAU3e,GAG1C,QAAS2e,KACP,GAAI7iB,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAM2hB,EAEtB,KAAK,GAAI5iB,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAO6iB,EAAShf,WAAa3J,OAAOqK,eAAese,IAAWlpB,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EuBv4IlLtD,WvBu4IqMyD,EAAOzD,WAAYsD,EuBt4IxNuP,SAAWD,GAAmB,EAAAnP,EAAA3H,gBvBs4I0PwH,EuB31IxR4I,KAAO,WACL5I,EAAKtD,WAAW,WAAW,IvB41IxBsD,EuB11IL6I,OAAS,WACP7I,EAAKtD,WAAW,WAAW,IvBu1IpBuD,EAIJF,EAAQf,EAA2BgB,EAAOC,GA4F/C,MA7GAd,GAAUqf,EAAU3e,GAoBpBgB,EAAa2d,IACXznB,IAAK,OACLC,MAAO,SuB94IHG,EAAK4R,GAAS,GAAAC,GAAAnM,KACV+I,EAAY/I,KAAKvC,MAAjBsL,OACJmD,GACFlM,KAAKC,OAAO2hB,OACVzd,KAAM7J,KAGR,EAAAgJ,EAAAlH,QApBU,2CACG,YAmBe2Q,KAAK,SAAA8U,GAC/B1V,EAAKlM,OAAS4hB,EAAS1V,EAAKuG,UAAUkP,OACpCzd,KAAM7J,IAER6R,EAAKlM,OAAOqR,GAAG,QAASnF,EAAK1O,MAAM+K,SACnC2D,EAAKlM,OAAOqR,GAAG,OAAQnF,EAAK1O,MAAMiL,QAClCyD,EAAKlM,OAAOqR,GAAG,QAASnF,EAAK1O,MAAMkL,SACnCwD,EAAKlM,OAAOqR,GAAG,QAASvI,IACvBA,MvBq5IL7O,IAAK,gBACLC,MAAO,WuBl5IP6F,KAAKH,WAAW,avBs5IhB3F,IAAK,OACLC,MAAO,WuBp5IP6F,KAAKH,WAAW,WvBw5IhB3F,IAAK,QACLC,MAAO,WuBt5IP6F,KAAKH,WAAW,YvB05IhB3F,IAAK,OACLC,MAAO,WuBx5IP6F,KAAKH,WAAW,WvB45IhB3F,IAAK,SACLC,MAAO,SuB35IDY,GACNiF,KAAKH,WAAW,OAAQ9E,MvB85IxBb,IAAK,YACLC,MAAO,WuB55IP,MAAO6F,MAAKH,WAAW,aAAe,OvBg6ItC3F,IAAK,WACLC,MAAO,WuB95IP,MAAO6F,MAAKH,WAAW,cvBk6IvB3F,IAAK,YACLC,MAAO,SuBj6IE0J,GACT7D,KAAKH,WAAW,YAAwB,IAAXgE,MvBo6I7B3J,IAAK,cACLC,MAAO,WuB55IP,MAAO6F,MAAKH,WAAW,kBvBg6IvB3F,IAAK,iBACLC,MAAO,WuB95IP,MAAO6F,MAAKH,WAAW,yBvBk6IvB3F,IAAK,mBACLC,MAAO,WuBh6IP,MAAO,SvBo6IPD,IAAK,SACLC,MAAO,WuBl6IP,GAAMuK,IACJC,MAAO,OACPC,OAAQ,OAEV,OACEK,GAAA,QAAAC,cAAA,OAAKR,MAAOA,EAAO2H,GAAIrM,KAAK0S,evBs6IzBiP,GACPtc,EAAOC,UuB7+IIqc,GACJxhB,YAAc,WADVwhB,EAEJld,QAAU,SAAAnK,GAAA,MAAOib,GAAgB1a,KAAKP,IAFlCqnB,EAGJtS,aAAc,EvBm/IvBhX,EAAiB,SuB36IF,EAAA0S,EAAA,SAAmB4W,IvB+6I5B,SAAUrpB,EAAQD,EAASH,GAEjC,YAoBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASiI,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GwBphJje,QAASsf,KACP,OAAO,EAAAxe,EAAAlH,QAAO2lB,EAAgBC,GAGhC,QAASvd,GAASnK,GAChB,MAAO2nB,GAAiBpnB,KAAKP,GxBw/I/BtB,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQ6pB,iBAAezlB,EAEvB,IAAIuH,GAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MwB7gJhiBmD,EAAAnN,EAAA,GxBihJI+M,EAAUnL,EAAuBuL,GwB/gJrC/B,EAAApL,EAAA,GACA4S,EAAA5S,EAAA,GxBohJI6S,EAAiBjR,EAAuBgR,GwBlhJtCiX,EAAiB,uEACjBC,EAAoB,iBAGpBC,EAAmB,qCAUZC,ExB8hJM7pB,EwB9hJN6pB,axB8hJ6B,SAAUlf,GAGlD,QAASkf,KACP,GAAIpjB,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAMkiB,EAEtB,KAAK,GAAInjB,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAOojB,EAAavf,WAAa3J,OAAOqK,eAAe6e,IAAezpB,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EwBziJ1LlD,OAAS,KxByiJsMkD,EwBxiJ/Mgf,eAAiB,KxBwiJ2Nhf,EwBtiJ5Oif,UAAY,SAACniB,GACPA,IAAWkD,EAAKlD,SAGhBkD,EAAKlD,QACPkD,EAAKiW,kBAEPjW,EAAKlD,OAASA,EACVkD,EAAKlD,QACPkD,EAAK+V,iBxBwiJJ/V,EwB7/IL8F,OAAS,SAAAkG,GACPhM,EAAK1F,MAAMwL,OAAOkG,EAAE1J,OAAOoK,cxB8/IxB1M,EwBx6IL4I,KAAO,WACL5I,EAAKlD,OAAO2G,OAAQ,GxBy6IjBzD,EwBv6IL6I,OAAS,WACP7I,EAAKlD,OAAO2G,OAAQ,GxBu5IbxD,EAiBJF,EAAQf,EAA2BgB,EAAOC,GA4N/C,MA1PAd,GAAU4f,EAAclf,GAiCxBgB,EAAake,IACXhoB,IAAK,uBACLC,MAAO,WwB7iJH6F,KAAKC,SACPD,KAAKoZ,kBACLpZ,KAAKC,OAAS,MAEZD,KAAKmiB,iBACPniB,KAAKmiB,eAAeE,UACpBriB,KAAKmiB,eAAiB,SxBmjJxBjoB,IAAK,eACLC,MAAO,WwBhjJO,GAAAgE,GACsF6B,KAAKvC,MAAjG+K,EADMrK,EACNqK,QAASE,EADHvK,EACGuK,OAAQC,EADXxK,EACWwK,QAASG,EADpB3K,EACoB2K,QAASK,EAD7BhL,EAC6BgL,eAAgBJ,EAD7C5K,EAC6C4K,QAAShC,EADtD5I,EACsD4I,YAAasS,EADnElb,EACmEkb,cACjFrZ,MAAKC,OAAO8V,iBAAiB,UAAWvN,GACxCxI,KAAKC,OAAO8V,iBAAiB,OAAQrN,GACrC1I,KAAKC,OAAO8V,iBAAiB,QAASpN,GACtC3I,KAAKC,OAAO8V,iBAAiB,SAAU/V,KAAKiJ,QAC5CjJ,KAAKC,OAAO8V,iBAAiB,QAASjN,GACtC9I,KAAKC,OAAO8V,iBAAiB,QAAShN,GACtC/I,KAAKC,OAAO8V,iBAAiB,eAAgB5M,GAE7CnJ,KAAKC,OAAOqZ,aAAa,KAAMD,GAC3BtS,IACF/G,KAAKC,OAAOqZ,aAAa,cAAe,IACxCtZ,KAAKC,OAAOqZ,aAAa,qBAAsB,QxB6jJjDpf,IAAK,kBACLC,MAAO,WwB3jJU,GAAAoJ,GACsDvD,KAAKvC,MAApE+K,EADSjF,EACTiF,QAASE,EADAnF,EACAmF,OAAQC,EADRpF,EACQoF,QAASG,EADjBvF,EACiBuF,QAASK,EAD1B5F,EAC0B4F,eAAgBJ,EAD1CxF,EAC0CwF,OAC3D/I,MAAKC,OAAOsZ,oBAAoB,UAAW/Q,GAC3CxI,KAAKC,OAAOsZ,oBAAoB,OAAQ7Q,GACxC1I,KAAKC,OAAOsZ,oBAAoB,QAAS5Q,GACzC3I,KAAKC,OAAOsZ,oBAAoB,SAAUvZ,KAAKiJ,QAC/CjJ,KAAKC,OAAOsZ,oBAAoB,QAASzQ,GACzC9I,KAAKC,OAAOsZ,oBAAoB,QAASxQ,GACzC/I,KAAKC,OAAOsZ,oBAAoB,eAAgBpQ,MxBqkJhDjP,IAAK,sBACLC,MAAO,WwB/jJkC,GAAtBG,GAAsBiC,UAAAC,OAAA,OAAAC,KAAAF,UAAA,GAAAA,UAAA,GAAhByD,KAAKvC,MAAMnD,GACpC,OAAO2nB,GAAiBhnB,KAAKX,GAAK,MxBokJlCJ,IAAK,qBACLC,MAAO,WwBlkJiC,GAAtBG,GAAsBiC,UAAAC,OAAA,OAAAC,KAAAF,UAAA,GAAAA,UAAA,GAAhByD,KAAKvC,MAAMnD,GACnC,OAAO2nB,GAAiBhnB,KAAKX,GAAK,MxBukJlCJ,IAAK,8BACLC,MAAO,WwBrkJ0C,GAAtBG,GAAsBiC,UAAAC,OAAA,OAAAC,KAAAF,UAAA,GAAAA,UAAA,GAAhByD,KAAKvC,MAAMnD,IACtCE,EAAQynB,EAAiBhnB,KAAKX,GAAK,EACzC,OAAOE,GAAQ8nB,KAAKzP,MAAMrY,SxB0kJ1BN,IAAK,OACLC,MAAO,SwBxkJHG,GAAK,GAAA6R,GAAAnM,KACHuiB,EAAaviB,KAAKwiB,oBAAoBloB,GACtC+b,EAAYrW,KAAKyiB,mBAAmBnoB,GACpCooB,EAAqB1iB,KAAK2iB,4BAA4BroB,GAEtDsoB,EAAsB,SAACrlB,EAAKslB,GAEhC,GADiBtlB,GAA2B,OAApBslB,EAAShO,OACnB,CACZ,GAAMxC,GAAQ9U,GAAO,GAAIulB,OAAJ,oBAA8BD,EAAShO,OAC5D1I,GAAK1O,MAAMsL,QAAQsJ,KAIjB0Q,EAAqB,SAACxlB,EAAKslB,GAE/B,GADiBtlB,KAAQ,KAAM,qBAAqBylB,SAASH,EAAShO,QACxD,CACZ,GAAMxC,GAAQ9U,GAAO,GAAIulB,OAAJ,oBAA8BD,EAAShO,OAC5D1I,GAAK1O,MAAMsL,QAAQsJ,IAKvByP,KAAe/U,KAAK,SAACkW,GAEf3oB,IAAQ6R,EAAK1O,MAAMnD,MAGnB6R,EAAKgW,iBACPhW,EAAKgW,eAAeE,UACpBlW,EAAKgW,eAAiB,MAExBhW,EAAKgW,eAAiB,GAAIc,GAAOC,QAAQC,gBACvCT,qBACAH,eAEFpW,EAAKgW,eAAeiB,aAEhB/M,YACAuG,aAAczQ,EAAKlM,QAErB2iB,EACAG,SxB2kJJ7oB,IAAK,OACLC,MAAO,WwBtkJP,GAAMsgB,GAAUza,KAAKC,OAAO6L,MACxB2O,IACFA,QAAcza,KAAKvC,MAAMsL,YxB2kJ3B7O,IAAK,QACLC,MAAO,WwBxkJP6F,KAAKC,OAAO0N,WxB4kJZzT,IAAK,OACLC,MAAO,WwB1kJH6F,KAAKmiB,iBACPniB,KAAKmiB,eAAeE,UACpBriB,KAAKmiB,eAAiB,SxB+kJxBjoB,IAAK,SACLC,MAAO,SwB7kJDY,GACFA,IAAY+Z,KAAY9U,KAAKwD,gBAAkBsR,MAGnD9U,KAAKC,OAAO4P,YAAc9U,MxBglJ1Bb,IAAK,YACLC,MAAO,SwB/kJE0J,GACT7D,KAAKC,OAAO0G,OAAS9C,KxBklJrB3J,IAAK,kBACLC,MAAO,SwB3kJQyT,GACf5N,KAAKC,OAAO4G,aAAe+G,KxB8kJ3B1T,IAAK,cACLC,MAAO,WwB5kJP,MAAO6F,MAAKC,OAAOsO,YxBglJnBrU,IAAK,iBACLC,MAAO,WwB9kJP,MAAO6F,MAAKC,OAAO4P,exBklJnB3V,IAAK,mBACLC,MAAO,WwBjlJW,GACV8gB,GAAajb,KAAKC,OAAlBgb,QACR,IAAwB,IAApBA,EAASze,OACX,MAAO,EAET,IAAMoQ,GAAMqO,EAASrO,IAAIqO,EAASze,OAAS,GACrC+R,EAAWvO,KAAKwD,aACtB,OAAIoJ,GAAM2B,EACDA,EAEF3B,KxBqlJP1S,IAAK,SACLC,MAAO,WwBnlJC,GAAAihB,GACkDpb,KAAKvC,MAAvD+I,EADA4U,EACA5U,QAASC,EADT2U,EACS3U,KAAMC,EADf0U,EACe1U,SAAUE,EADzBwU,EACyBxU,MAAOjC,EADhCyW,EACgCzW,MAAOC,EADvCwW,EACuCxW,OACzCF,GACJC,MAAiB,SAAVA,EAAmBA,EAAQ,OAClCC,OAAmB,SAAXA,EAAoBA,EAAS,OAEvC,OACEK,GAAA,QAAAC,cAAA,SACEnB,IAAK/D,KAAKoiB,UACV1d,MAAOA,EACP4C,QAAQ,OACR4N,SAAU1O,EACVE,SAAUA,EACVE,MAAOA,EACPH,KAAMA,QxB8lJLyb,GACP7c,EAAOC,UwB1xJI4c,GACJ/hB,YAAc,eADV+hB,EAEJzd,QAAUA,ExB4xJnBpM,EAAiB,SwB7lJF,EAAA0S,EAAA,SAAmBmX,IxBimJ5B,SAAU5pB,EAAQD,EAASH,GAEjC,YA6LA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAEzF,QAASspB,GAAmBhiB,GAAO,GAAIpC,MAAM2C,QAAQP,GAAM,CAAE,IAAK,GAAI9I,GAAI,EAAG+qB,EAAOrkB,MAAMoC,EAAI7E,QAASjE,EAAI8I,EAAI7E,OAAQjE,IAAO+qB,EAAK/qB,GAAK8I,EAAI9I,EAAM,OAAO+qB,GAAe,MAAOrkB,OAAMskB,KAAKliB,GAE1L,QAASW,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAlMjexJ,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAQ6pB,aAAe7pB,EAAQspB,SAAWtpB,EAAQmjB,KAAOnjB,EAAQigB,WAAajgB,EAAQqf,SAAWrf,EAAQ6e,OAAS7e,EAAQwe,aAAexe,EAAQ2d,YAAc3d,EAAQsZ,YAActZ,EAAQid,OAASjd,EAAQ0c,OAAS1c,EAAQ2b,SAAW3b,EAAQsb,WAAatb,EAAQka,SAAWla,EAAQ4Y,MAAQ5Y,EAAQuX,WAAavX,EAAQwS,YAAUpO,EAEzU,IAAI0I,GAAWnM,OAAOwM,QAAU,SAAUC,GAAU,IAAK,GAAIlN,GAAI,EAAGA,EAAIgE,UAAUC,OAAQjE,IAAK,CAAE,GAAImN,GAASnJ,UAAUhE,EAAI,KAAK,GAAI2B,KAAOwL,GAAc1M,OAAOS,UAAUC,eAAejB,KAAKiN,EAAQxL,KAAQuL,EAAOvL,GAAOwL,EAAOxL,IAAY,MAAOuL,IAEnPzB,EAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MAE5hBshB,EAAWtrB,EAAoB,EAEnCc,QAAOC,eAAeZ,EAAS,WAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuB0pB,GAAmB,UAIrD,IAAIC,GAAcvrB,EAAoB,EAEtCc,QAAOC,eAAeZ,EAAS,cAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuB2pB,GAAsB,UAIxD,IAAIC,GAASxrB,EAAoB,EAEjCc,QAAOC,eAAeZ,EAAS,SAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuB4pB,GAAiB,UAInD,IAAIC,GAAYzrB,EAAoB,EAEpCc,QAAOC,eAAeZ,EAAS,YAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuB6pB,GAAoB,UAItD,IAAIC,GAAc1rB,EAAoB,GAEtCc,QAAOC,eAAeZ,EAAS,cAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuB8pB,GAAsB,UAIxD,IAAIC,GAAY3rB,EAAoB,GAEpCc,QAAOC,eAAeZ,EAAS,YAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuB+pB,GAAoB,UAItD,IAAIC,GAAU5rB,EAAoB,GAElCc,QAAOC,eAAeZ,EAAS,UAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuBgqB,GAAkB,UAIpD,IAAIC,GAAU7rB,EAAoB,GAElCc,QAAOC,eAAeZ,EAAS,UAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuBiqB,GAAkB,UAIpD,IAAIC,GAAe9rB,EAAoB,EAEvCc,QAAOC,eAAeZ,EAAS,eAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuBkqB,GAAuB,UAIzD,IAAIC,GAAe/rB,EAAoB,GAEvCc,QAAOC,eAAeZ,EAAS,eAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuBmqB,GAAuB,UAIzD,IAAIC,GAAgBhsB,EAAoB,GAExCc,QAAOC,eAAeZ,EAAS,gBAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuBoqB,GAAwB,UyB75J1D,IAAAC,GAAAjsB,EAAA,GzBm6JAc,QAAOC,eAAeZ,EAAS,UAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuBqqB,GAAkB,UAIpD,IAAIC,GAAYlsB,EAAoB,GAEpCc,QAAOC,eAAeZ,EAAS,YAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuBsqB,GAAoB,UAItD,IAAIC,GAAcnsB,EAAoB,GAEtCc,QAAOC,eAAeZ,EAAS,cAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuBuqB,GAAsB,UAIxD,IAAIC,GAAQpsB,EAAoB,GAEhCc,QAAOC,eAAeZ,EAAS,QAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuBwqB,GAAgB,UAIlD,IAAIC,GAAYrsB,EAAoB,GAEpCc,QAAOC,eAAeZ,EAAS,YAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuByqB,GAAoB,UAItD,IAAIC,GAAgBtsB,EAAoB,GAExCc,QAAOC,eAAeZ,EAAS,gBAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuB0qB,GAAwB,UyB19J1D,IAAAnf,GAAAnN,EAAA,GzBg+JI+M,EAAUnL,EAAuBuL,GyB99JrC9B,EAAArL,EAAA,GACAoL,EAAApL,EAAA,GACAusB,EAAAvsB,EAAA,IzBo+JIwsB,EAAY5qB,EAAuB2qB,GyBn+JvCE,EAAAzsB,EAAA,GzBu+JI0sB,EAAW9qB,EAAuB6qB,GyBt+JtCE,EAAA3sB,EAAA,IzB0+JI4sB,EAAYhrB,EAAuB+qB,GyBx+JvCE,EAAA7sB,EAAA,IzB4+JI8sB,EAAYlrB,EAAuBirB,GyB1+JjC/f,EAAkBhM,OAAOiD,KAAPsH,EAAAgC,WAEpB0f,KAEiBjtB,YzBs/JH,SAAUgL,GAG1B,QAAShL,eACP,GAAI8G,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAMhI,YAEtB,KAAK,GAAI+G,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAO9G,YAAY2K,WAAa3J,OAAOqK,eAAerL,cAAcS,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EyB1+JxLvF,QAAS,EAAA0F,EAAA9F,WAAU2F,EAAK1F,MAAf8F,EAAA7F,cAAoC,GzB0+J0NyF,EyBz+JvQ8S,OACEiP,cAAe/hB,EAAK1F,MAAMwJ,OzB0+JvB9D,EyBz9JLgiB,eAAiB,WACfhiB,EAAKiT,UAAW8O,aAAa,KzB09J1B/hB,EyBx9JLK,YAAc,WACZ,MAAKL,GAAKlD,OACHkD,EAAKlD,OAAOuD,cADM,MzB09JtBL,EyBv9JLM,eAAiB,WACf,MAAKN,GAAKlD,OACHkD,EAAKlD,OAAOwD,iBADM,MzBy9JtBN,EyBt9JLO,iBAAmB,WACjB,MAAKP,GAAKlD,OACHkD,EAAKlD,OAAOyD,mBADM,MzBw9JtBP,EyBr9JLQ,kBAAoB,WAAoB,GAAnBzJ,GAAmBqC,UAAAC,OAAA,OAAAC,KAAAF,UAAA,GAAAA,UAAA,GAAb,QACzB,OAAK4G,GAAKlD,OACHkD,EAAKlD,OAAO0D,kBAAkBzJ,GADZ,MzBy9JtBiJ,EyBt9JLS,OAAS,SAACC,EAAUC,GAClB,IAAKX,EAAKlD,OAAQ,MAAO,KACzBkD,GAAKlD,OAAO2D,OAAOC,EAAUC,IzBu9J1BX,EyBr9JLqF,QAAU,WACRrF,EAAK1F,MAAM+K,QAAXrF,IzBs9JGA,EyB38JLiiB,WAAa,SAAAtgB,GACX3B,EAAK2B,QAAUA,GzB48JZ3B,EyB18JLkiB,gBAAkB,SAAAplB,GAChBkD,EAAKlD,OAASA,GzBg7JPmD,EA2BJF,EAAQf,EAA2BgB,EAAOC,GAsF/C,MA9HAd,GAAUtK,YAAagL,GA2CvBgB,EAAahM,cACXkC,IAAK,oBACLC,MAAO,WyBrgKP,GAAI6F,KAAKvC,MAAMoR,kBAAmB,CAEhClQ,QAAQC,KADQ,4FACM,oBAAqB,GAAI,oBAAqB,QzB0gKtE1E,IAAK,wBACLC,MAAO,SyBxgKc8J,EAAWqhB,GAChC,QAAQ,EAAAhiB,EAAA5C,SAAQV,KAAKvC,MAAOwG,MAAe,EAAAX,EAAA5C,SAAQV,KAAKiW,MAAOqP,MzB2gK/DprB,IAAK,sBACLC,MAAO,SyB1gKY8J,GACnBjE,KAAKpC,QAAS,EAAA0F,EAAA9F,WAAUyG,EAAVV,EAAA7F,eACTsC,KAAKvC,MAAMwJ,OAAShD,EAAUgD,OACjCjH,KAAKoW,UAAW8O,aAAa,OzB8gK/BhrB,IAAK,kBACLC,MAAO,SyBl/JQG,GACf,OADoBgH,MAAAlC,OAAAikB,EACI4B,GADJ5B,EAAAqB,EAAA,UACpB/iB,EAAA,EAAAA,EAAAL,EAAA9E,OAAAmF,IAAqD,CAAhD,GAAIqL,OACP,IAAIA,EAAOvI,QAAQnK,GACjB,MAAO0S,GAIX,MAAAmX,GAAAjN,UzBw/JAhd,IAAK,qBACLC,MAAO,SyBj/JWG,EAAKuI,GACvB,MAAKvI,GAEH2K,EAAA,QAAAC,cAAA0f,EAAA,QAAAzf,KACMnF,KAAKvC,OACTvD,IAAK2I,EAAa1C,YAClB4D,IAAK/D,KAAKqlB,gBACVznB,OAAQoC,KAAKpC,OACbiF,aAAcA,EACd2F,QAASxI,KAAKwI,WARD,QzB2/JjBtO,IAAK,cACLC,MAAO,SyBh/JIwG,EAAGC,GAEd,MAAID,IAAKC,EACAD,EAAEzG,IAAM0G,EAAE1G,KAAO,EAAI,EAEvB,KzBm/JPA,IAAK,SACLC,MAAO,WyBl/JC,GAAAgE,GACiE6B,KAAKvC,MAAtEnD,EADA6D,EACA7D,IAAKoM,EADLvI,EACKuI,SAAUhC,EADfvG,EACeuG,MAAOC,EADtBxG,EACsBwG,MAAOC,EAD7BzG,EAC6ByG,OAAQqC,EADrC9I,EACqC8I,MAAgBpC,EADrD1G,EAC4C2G,QAC9CogB,EAAcllB,KAAKiW,MAAMiP,aAAe5qB,EACxCyK,GAAa,EAAAzB,EAAAzE,MAAKmB,KAAKvC,MAAOuH,EAAjBzB,EAAAnF,yBACbyE,EAAe7C,KAAKulB,gBAAgBjrB,GACpCkrB,EAAuBxlB,KAAKylB,mBAAmBnrB,EAAKuI,GACpD6iB,GAAiB,EAAAV,EAAA,SAAqB1qB,EAAKoM,EAAU1G,KAAKpC,QAC1D+nB,GAAYH,GAAFpmB,OAAAikB,EAA2BqC,IAAiBE,KAAK5lB,KAAK6lB,aAChEC,EAAU7gB,EAAA,QAAAC,cAAA4f,EAAA,SAASxqB,IAAKA,EAAK2M,MAAOA,EAAOka,QAASnhB,KAAKmlB,gBAC/D,OACElgB,GAAA,QAAAC,cAACL,EAADM,GAASpB,IAAK/D,KAAKolB,WAAY1gB,MAAAS,KAAYT,GAAOC,QAAOC,YAAcG,GACpEmgB,EAAcY,EAAUH,OzBggKxB3tB,aACPqN,EAAOC,UyBtnKYtN,aACZ+tB,gBAAkB,SAAA9lB,GACvBglB,EAAc/nB,KAAK+C,IAFFjI,YAIZguB,oBAAsB,WAC3Bf,MALiBjtB,YAOZmI,YAAc,cAPFnI,YAQZuN,UzBynKehC,EAAQgC,UyBjoKXvN,YASZ0F,azBynKkB6F,EAAQ7F,ayBloKd1F,YAUZyM,QAAU,SAAAnK,GACf,OADsB2rB,MAAA7mB,OAAAikB,EACE4B,GADF5B,EAAAqB,EAAA,UACtBwB,EAAA,EAAAA,EAAAD,EAAAzpB,OAAA0pB,IAAqD,CACnD,GADOlZ,KACIvI,QAAQnK,GACjB,OAAO,EAGX,OAAO,GAhBUtC,YAkBZogB,aAAe,SAAA9d,GACpB,OAD2B6rB,MAAA/mB,OAAAikB,EACH4B,GADG5B,EAAAqB,EAAA,UAC3B0B,EAAA,EAAAA,EAAAD,EAAA3pB,OAAA4pB,IAAqD,CAAhD,GAAIpZ,OACP,IAAIA,EAAOoL,cAAgBpL,EAAOoL,aAAa9d,GAC7C,OAAO,EAGX,OAAO,GzBooKXjC,EAAiB,QyB5pKIL,azBgqKf,SAAUM,EAAQD,EAASH,GAEjC,Y0BzoKA,SAASmuB,GAAc/E,EAAQgF,GAC7B,IAAK,GAAIC,KAAQD,GACfhF,EAAOhI,aAAaiN,EAAMD,EAAMC,IAIpC,QAASC,GAAUlF,EAAQmF,GACzBnF,EAAOE,OAAS,WACdxhB,KAAKyhB,QAAUzhB,KAAKwhB,OAAS,KAC7BiF,EAAG,KAAMnF,IAEXA,EAAOG,QAAU,WAGfzhB,KAAKyhB,QAAUzhB,KAAKwhB,OAAS,KAC7BiF,EAAG,GAAI3D,OAAM,kBAAoB9iB,KAAK6Q,KAAMyQ,IAIhD,QAASoF,GAASpF,EAAQmF,GACxBnF,EAAOqF,mBAAqB,WACH,YAAnB3mB,KAAK4mB,YAA+C,UAAnB5mB,KAAK4mB,aAC1C5mB,KAAK2mB,mBAAqB,KAC1BF,EAAG,KAAMnF,KA7DbhpB,EAAOD,QAAU,SAAewY,EAAKgW,EAAMJ,GACzC,GAAIK,GAAOvZ,SAASuZ,MAAQvZ,SAASwZ,qBAAqB,QAAQ,GAC9DzF,EAAS/T,SAASrI,cAAc,SAEhB,mBAAT2hB,KACTJ,EAAKI,EACLA,MAGFA,EAAOA,MACPJ,EAAKA,GAAM,aAEXnF,EAAOxd,KAAO+iB,EAAK/iB,MAAQ,kBAC3Bwd,EAAO0F,QAAUH,EAAKG,SAAW,OACjC1F,EAAOC,QAAQ,SAAWsF,OAASA,EAAKtF,MACxCD,EAAOzQ,IAAMA,EAETgW,EAAKP,OACPD,EAAc/E,EAAQuF,EAAKP,OAGzBO,EAAKI,OACP3F,EAAO2F,KAAO,GAAKJ,EAAKI,OAGd,UAAY3F,GAASkF,EAAWE,GACtCpF,EAAQmF,GAKTnF,EAAOE,QACVgF,EAASlF,EAAQmF,GAGnBK,EAAKpF,YAAYJ,K1BktKb,SAAUhpB,EAAQD,EAASH,GAEjC,YACA,IAAIgvB,GAAgCC,EAEhC1mB,EAA4B,kBAAXpC,SAAoD,gBAApBA,QAAOC,SAAwB,SAAUvE,GAAO,aAAcA,IAAS,SAAUA,GAAO,MAAOA,IAAyB,kBAAXsE,SAAyBtE,EAAImG,cAAgB7B,QAAUtE,IAAQsE,OAAO5E,UAAY,eAAkBM,K2B3vKrQ,SAAUqtB,EAAQC,GACC,WAAnB5mB,EAAOpI,QAA0C,KAAXC,EAAyBA,EAAOD,QAAUgvB,KACnCH,EAAA,MAAAzqB,MAAA0qB,EAAA,kBAAAD,KAAAzuB,KAAAJ,EAAAH,EAAAG,EAAAC,GAAA4uB,KAAA5uB,EAAAD,QAAA8uB,KAF7C1qB,EAIQ,WAOT,QAAS6qB,GAAgBntB,GACxB,QAASA,GAA0B,gBAAjB,KAAOA,EAAP,YAAAsG,EAAOtG,IAG1B,QAASotB,GAAUptB,GAClB,GAAIqtB,GAAcxuB,OAAOS,UAAUqC,SAASrD,KAAK0B,EAEjD,OAAuB,oBAAhBqtB,GACa,kBAAhBA,GACAC,EAAettB,GAOpB,QAASstB,GAAettB,GACvB,MAAOA,GAAMutB,WAAaC,EAG3B,QAASC,GAAYpnB,GACpB,MAAOvB,OAAM2C,QAAQpB,SAGtB,QAASqnB,GAA8B1tB,EAAOkN,GAC7C,OAA0B,IAAlBA,EAAQygB,OAAmBzgB,EAAQ0gB,kBAAkB5tB,GAC1D6tB,EAAUJ,EAAYztB,GAAQA,EAAOkN,GACrClN,EAGJ,QAAS8tB,GAAkBxiB,EAAQC,EAAQ2B,GAC1C,MAAO5B,GAAOrG,OAAOsG,GAAQxJ,IAAI,SAASgsB,GACzC,MAAOL,GAA8BK,EAAS7gB,KAIhD,QAAS8gB,GAAY1iB,EAAQC,EAAQ2B,GACpC,GAAI+gB,KAaJ,OAZI/gB,GAAQ0gB,kBAAkBtiB,IAC7BzM,OAAOiD,KAAKwJ,GAAQpI,QAAQ,SAASnD,GACpCkuB,EAAYluB,GAAO2tB,EAA8BpiB,EAAOvL,GAAMmN,KAGhErO,OAAOiD,KAAKyJ,GAAQrI,QAAQ,SAASnD,GAC/BmN,EAAQ0gB,kBAAkBriB,EAAOxL,KAAUuL,EAAOvL,GAGtDkuB,EAAYluB,GAAO8tB,EAAUviB,EAAOvL,GAAMwL,EAAOxL,GAAMmN,GAFvD+gB,EAAYluB,GAAO2tB,EAA8BniB,EAAOxL,GAAMmN,KAKzD+gB,EAGR,QAASJ,GAAUviB,EAAQC,EAAQ2B,GAClCA,EAAUA,MACVA,EAAQghB,WAAahhB,EAAQghB,YAAcJ,EAC3C5gB,EAAQ0gB,kBAAoB1gB,EAAQ0gB,mBAAqBA,CAEzD,IAAIO,GAAgBrpB,MAAM2C,QAAQ8D,EAIlC,OAFgC4iB,KADZrpB,MAAM2C,QAAQ6D,GAKvB6iB,EACHjhB,EAAQghB,WAAW5iB,EAAQC,EAAQ2B,GAEnC8gB,EAAY1iB,EAAQC,EAAQ2B,GAJ5BwgB,EAA8BniB,EAAQ2B,GApE/C,GAAI0gB,GAAoB,SAA2B5tB,GAClD,MAAOmtB,GAAgBntB,KAClBotB,EAAUptB,IAgBZouB,EAAiC,kBAAXlqB,SAAyBA,WAC/CspB,EAAqBY,EAAelqB,WAAW,iBAAmB,KAqEtE,OAZA2pB,GAAUQ,IAAM,SAAsBxtB,EAAOqM,GAC5C,IAAKpI,MAAM2C,QAAQ5G,GAClB,KAAM,IAAI8nB,OAAM,oCAGjB,OAAO9nB,GAAMytB,OAAO,SAASC,EAAMnqB,GAClC,MAAOypB,GAAUU,EAAMnqB,EAAM8I,SAIb2gB,K3BkwKZ,SAAU1vB,EAAQD,EAASH,GAEjC,YAGgC,mBAAXmG,SAAgCA,OAAOC,Q4Bz0K1DhG,GAAOD,QAAUH,EAAQ,O5Bq2KrB,SAAUI,EAAQD,EAASH,GAEjC,Y6Bx3KA,IAAIywB,GAAgBzwB,EAAQ,IACxB0wB,EAAY1wB,EAAQ,IACpB2wB,EAAuB3wB,EAAQ,GAEnCI,GAAOD,QAAU,WACf,QAASywB,GAAKrrB,EAAOsrB,EAAUC,EAAe7b,EAAU8b,EAAcC,GAChEA,IAAWL,GAIfD,GACE,EACA,mLAMJ,QAASO,KACP,MAAOL,GAFTA,EAAK3hB,WAAa2hB,CAMlB,IAAIM,IACFpuB,MAAO8tB,EACP3iB,KAAM2iB,EACNviB,KAAMuiB,EACN1iB,OAAQ0iB,EACRvvB,OAAQuvB,EACR5iB,OAAQ4iB,EACRO,OAAQP,EAERQ,IAAKR,EACLS,QAASJ,EACTjB,QAASY,EACTU,WAAYL,EACZM,KAAMX,EACNY,SAAUP,EACVQ,MAAOR,EACP9iB,UAAW8iB,EACX7iB,MAAO6iB,EACPS,MAAOT,EAMT,OAHAC,GAAeS,eAAiBlB,EAChCS,EAAeU,UAAYV,EAEpBA,I7Bk4KH,SAAU9wB,EAAQD,EAASH,GAEjC,Y8Bj7KA,SAAS6xB,GAAkBC,GACzB,MAAO,YACL,MAAOA,IASX,GAAIrB,GAAgB,YAEpBA,GAAcsB,YAAcF,EAC5BpB,EAAcuB,iBAAmBH,GAAkB,GACnDpB,EAAcwB,gBAAkBJ,GAAkB,GAClDpB,EAAcyB,gBAAkBL,EAAkB,MAClDpB,EAAc0B,gBAAkB,WAC9B,MAAOrqB,OAET2oB,EAAc2B,oBAAsB,SAAUN,GAC5C,MAAOA,IAGT1xB,EAAOD,QAAUswB,G9Bi8KX,SAAUrwB,EAAQD,EAASH,GAEjC,Y+Bv8KA,SAAS0wB,GAAU2B,EAAWC,EAAQ7pB,EAAGC,EAAGjI,EAAGC,EAAGuW,EAAGsb,GAGnD,GAFAC,EAAeF,IAEVD,EAAW,CACd,GAAIlY,EACJ,QAAe5V,KAAX+tB,EACFnY,EAAQ,GAAIyQ,OAAM,qIACb,CACL,GAAIziB,IAAQM,EAAGC,EAAGjI,EAAGC,EAAGuW,EAAGsb,GACvBE,EAAW,CACftY,GAAQ,GAAIyQ,OAAM0H,EAAO/rB,QAAQ,MAAO,WACtC,MAAO4B,GAAKsqB,QAEdtY,EAAMxZ,KAAO,sBAIf,KADAwZ,GAAMuY,YAAc,EACdvY,GA3BV,GAAIqY,GAAiB,SAAwBF,IA+B7ClyB,GAAOD,QAAUuwB,G/B2+KX,SAAUtwB,EAAQD,EAASH,GAEjC,YgCthLAI,GAAOD,QAFoB,gDhCwiLrB,SAAUC,EAAQD,EAASH,GAEjC,YAyBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GAtBzFf,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,GAGT,IAAI0wB,GAAc3yB,EAAoB,GAEtCc,QAAOC,eAAeZ,EAAS,cAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuB+wB,GAAsB,UAIxD,IAAI/oB,GAAc5J,EAAoB,GAEtCc,QAAOC,eAAeZ,EAAS,cAC7Bc,YAAY,EACZC,IAAK,WACH,MAAOU,GAAuBgI,GAAsB,YAQlD,SAAUxJ,EAAQD,EAASH,GAEjC,YAGAc,QAAOC,eAAeZ,EAAS,cAC3B8B,OAAO,GiCrlLX,IAAA2H,GAAA5J,EAAA,IjC0lLI0E,EAEJ,SAAgC7C,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,IAF/C+H,GiCxlLtCgpB,EAAiB,KACjBC,EAAkB,WAClBD,EAAiB,MAEjBrL,EAAa,WACb,MAAI5iB,QAAOmuB,QAAUnuB,OAAOmuB,OAAO1O,IACxBxf,QAAQC,QAAQF,OAAOmuB,OAAO1O,KAErCwO,IAGJA,GAAiB,EAAAluB,EAAA,SAZL,gDAY2BmQ,KAAK,WAAc,MAAOlQ,QAAOmuB,OAAO1O,MAC/EwO,EAAe/d,KAAKge,GAApB,MAA2CA,GACpCD,GjCkmLXzyB,GAAiB,QiChmLFonB,GjComLT,SAAUnnB,EAAQD,EAASH,GAEjC,YAGAc,QAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,GkC5nLT,IAAAqpB,GAAAtrB,EAAA,GACAurB,EAAAvrB,EAAA,GACAwrB,EAAAxrB,EAAA,GACAyrB,EAAAzrB,EAAA,GACA0rB,EAAA1rB,EAAA,IACA2rB,EAAA3rB,EAAA,IACA4rB,EAAA5rB,EAAA,IACA6rB,EAAA7rB,EAAA,IACA8rB,EAAA9rB,EAAA,GACA+rB,EAAA/rB,EAAA,IACAgsB,EAAAhsB,EAAA,IACAisB,EAAAjsB,EAAA,IACAksB,EAAAlsB,EAAA,IACAmsB,EAAAnsB,EAAA,IACAosB,EAAApsB,EAAA,IACAqsB,EAAArsB,EAAA,IACAssB,EAAAtsB,EAAA,GlCipLAG,GAAiB,SkC/oLFmsB,EAAAtC,aAAAsB,EAAA3Y,QAAA4Y,EAAA7T,WAAA8T,EAAAzS,MAAA0S,EAAApR,SAAAqR,EAAAjQ,WAAAkQ,EAAA7P,SAAA8P,EAAA/O,OAAAgP,EAAAzO,OAAA0O,EAAArS,YAAAyS,EAAA1M,SAAAuM,EAAAjO,YAAAkO,EAAArN,aAAA0N,EAAA5C,SAAA2C,EAAA9I,KAAA6I,EAAA/L,WAAA6L,EAAAjN,SlCmpLT,SAAU5e,EAAQD,EAASH,GAEjC,YAiBA,SAAS8J,GAAgBC,EAAUC,GAAe,KAAMD,YAAoBC,IAAgB,KAAM,IAAIL,WAAU,qCAEhH,QAASM,GAA2BC,EAAM3J,GAAQ,IAAK2J,EAAQ,KAAM,IAAIC,gBAAe,4DAAgE,QAAO5J,GAAyB,gBAATA,IAAqC,kBAATA,GAA8B2J,EAAP3J,EAElO,QAAS6J,GAAUC,EAAUC,GAAc,GAA0B,kBAAfA,IAA4C,OAAfA,EAAuB,KAAM,IAAIX,WAAU,iEAAoEW,GAAeD,GAAS9I,UAAYT,OAAOyJ,OAAOD,GAAcA,EAAW/I,WAAayG,aAAe/F,MAAOoI,EAAUpJ,YAAY,EAAOiB,UAAU,EAAMlB,cAAc,KAAesJ,IAAYxJ,OAAO0J,eAAiB1J,OAAO0J,eAAeH,EAAUC,GAAcD,EAASI,UAAYH,GAlBjexJ,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,GAGT,IAAIgL,GAAWnM,OAAOwM,QAAU,SAAUC,GAAU,IAAK,GAAIlN,GAAI,EAAGA,EAAIgE,UAAUC,OAAQjE,IAAK,CAAE,GAAImN,GAASnJ,UAAUhE,EAAI,KAAK,GAAI2B,KAAOwL,GAAc1M,OAAOS,UAAUC,eAAejB,KAAKiN,EAAQxL,KAAQuL,EAAOvL,GAAOwL,EAAOxL,IAAY,MAAOuL,IAEnPzB,EAAe,WAAc,QAAS2B,GAAiBF,EAAQhI,GAAS,IAAK,GAAIlF,GAAI,EAAGA,EAAIkF,EAAMjB,OAAQjE,IAAK,CAAE,GAAIqN,GAAanI,EAAMlF,EAAIqN,GAAWzM,WAAayM,EAAWzM,aAAc,EAAOyM,EAAW1M,cAAe,EAAU,SAAW0M,KAAYA,EAAWxL,UAAW,GAAMpB,OAAOC,eAAewM,EAAQG,EAAW1L,IAAK0L,IAAiB,MAAO,UAAU1D,EAAa2D,EAAYC,GAAiJ,MAA9HD,IAAYF,EAAiBzD,EAAYzI,UAAWoM,GAAiBC,GAAaH,EAAiBzD,EAAa4D,GAAqB5D,MmChrLhiBmD,EAAAnN,EAAA,GnCorLI+M,EAEJ,SAAgClL,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,IAFpDsL,GmChrLhB4lB,EnC4rLP,SAAUjoB,GAGtB,QAASioB,KACP,GAAInsB,GAEAoE,EAAOC,EAAOC,CAElBpB,GAAgBhC,KAAMirB,EAEtB,KAAK,GAAIlsB,GAAOxC,UAAUC,OAAQ6D,EAAOpB,MAAMF,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC3EmB,EAAKnB,GAAQ3C,UAAU2C,EAGzB,OAAegE,GAASC,EAAQhB,EAA2BnC,MAAOlB,EAAOmsB,EAAQtoB,WAAa3J,OAAOqK,eAAe4nB,IAAUxyB,KAAK4G,MAAMP,GAAOkB,MAAMZ,OAAOiB,KAAiB8C,EmCzsLhL8S,OACEiV,MAAO,MnCwsLA9nB,EAEJF,EAAQf,EAA2BgB,EAAOC,GAkF/C,MAjGAd,GAAU2oB,EAASjoB,GAkBnBgB,EAAainB,IACX/wB,IAAK,oBACLC,MAAO,WmC5sLP6F,KAAKmrB,WAAWnrB,KAAKvC,UnCgtLrBvD,IAAK,4BACLC,MAAO,SmC/sLkB8J,GACrBjE,KAAKvC,MAAMnD,MAAQ2J,EAAU3J,KAC/B0F,KAAKmrB,WAAWlnB,MnCmtLlB/J,IAAK,aACLC,MAAO,SAAoBgR,GmCjtLD,GAAAgB,GAAAnM,KAAd1F,EAAc6Q,EAAd7Q,IAAK2M,EAASkE,EAATlE,KACjB,OAAqB,gBAAVA,OACTjH,MAAKoW,UAAW8U,MAAOjkB,KAGzBjH,KAAKoW,UAAW8U,MAAO,OAChBruB,OAAOuuB,MAAP,iCAA8C9wB,GAClDyS,KAAK,SAAA8V,GAAA,MAAYA,GAASwI,SAC1Bte,KAAK,SAAA3B,GACJ,GAAIA,EAAKkgB,cAAe,CACtB,GAAMJ,GAAQ9f,EAAKkgB,cAAc7sB,QAAQ,aAAc,aACvD0N,GAAKiK,UAAW8U,iBnC2tLtBhxB,IAAK,SACLC,MAAO,WmCxtLC,GACAgnB,GAAYnhB,KAAKvC,MAAjB0jB,QACA+J,EAAUlrB,KAAKiW,MAAfiV,MACFK,GACJlU,QAAS,OACTF,WAAY,SACZG,eAAgB,UAEZkU,GACJ1F,WACEnhB,MAAO,OACPC,OAAQ,OACR6mB,gBAAiBP,SAAeA,EAAf,QAA0BzuB,GAC3CivB,eAAgB,QAChBC,mBAAoB,SACpB3K,OAAQ,WACLuK,GAELK,UACExU,WAAY,2DACZyU,aAjDU,OAkDVlnB,MAlDU,OAmDVC,OAnDU,QAoDP2mB,GAELO,UACEvU,YAAa,QACbC,YAAa,mBACbuJ,YAAa,4CACbE,WAAY,OAGhB,OACEhc,GAAA,QAAAC,cAAA,OAAKR,MAAO8mB,EAAO1F,QAASxS,UAAU,wBAAwB6N,QAASA,GACrElc,EAAA,QAAAC,cAAA,OAAKR,MAAO8mB,EAAOI,OAAQtY,UAAU,wBACnCrO,EAAA,QAAAC,cAAA,OAAKR,MAAO8mB,EAAOM,SAAUxY,UAAU,kCnCguLxC2X,GACP5lB,EAAOC,UAETjN,GAAiB,QmCjyLI4yB,GnCqyLf,SAAU3yB,EAAQD,EAASH,GAEjC,YAwBA,SAAS4B,GAAuBC,GAAO,MAAOA,IAAOA,EAAIT,WAAaS,GAAQC,QAAWD,GoCpyL1E,QAASgyB,GAAsBzxB,EAAKoM,EAAU9I,GAC3D,GAAM+nB,MAD6D7nB,GAAA,EAAAC,GAAA,EAAAC,MAAAvB,EAAA,KAGnE,OAAAwB,GAAAC,EAAmB8tB,EAAnB3tB,OAAAC,cAAAR,GAAAG,EAAAC,EAAAK,QAAAC,MAAAV,GAAA,EAAoC,IAA3BmC,GAA2BhC,EAAA9D,OAC7B8F,EAAO+M,OAAOvI,QAAQnK,IAAQsD,EAAOqC,EAAOgsB,WAAW3kB,SAC1Dqe,EAAQzoB,KACN+H,EAAA,QAAAC,cAAAE,EAAA,SACElL,IAAK+F,EAAO+M,OAAO7M,YACnB0C,aAAc5C,EAAO+M,OACrB1S,IAAK2F,EAAO3F,IACZoM,SAAUA,EACVF,SAAA,EACAI,OAAA,EACAlC,OAAS2S,QAAS,YAbyC,MAAA9Z,GAAAQ,GAAA,EAAAC,EAAAT,EAAA,aAAAO,GAAAI,EAAA,QAAAA,EAAA,oBAAAH,EAAA,KAAAC,IAmBnE,MAAO2nB,GpC4vLT3sB,OAAOC,eAAeZ,EAAS,cAC7B8B,OAAO,IAET9B,EAAiB,QoClxLO0zB,CA/BxB,IAAA1mB,GAAAnN,EAAA,GpCqzLI+M,EAAUnL,EAAuBuL,GoCnzLrCU,EAAA7N,EAAA,GpCuzLIkN,EAAWtL,EAAuBiM,GoCtzLtCyd,EAAAtrB,EAAA,GACAurB,EAAAvrB,EAAA,GACAwrB,EAAAxrB,EAAA,GACA8rB,EAAA9rB,EAAA,GAEM8zB,IAEFhf,iBACAif,UAAW,UACX3xB,IAAK,gDAGL0S,oBACAif,UAAW,aACX3xB,IAAK,+DAGL0S,eACAif,UAAW,QACX3xB,IAAK,gCAGL0S,qBACAif,UAAW,cACX3xB,IAAK,+CpCs2LY","file":"ReactPlayer.js","sourcesContent":["var ReactPlayer =\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\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, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 23);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\nmodule.exports = React;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nexports.parseStartTime = parseStartTime;\nexports.parseEndTime = parseEndTime;\nexports.randomString = randomString;\nexports.queryString = queryString;\nexports.getSDK = getSDK;\nexports.getConfig = getConfig;\nexports.omit = omit;\nexports.callPlayer = callPlayer;\nexports.isObject = isObject;\nexports.isEqual = isEqual;\nexports.isMediaStream = isMediaStream;\n\nvar _loadScript = __webpack_require__(24);\n\nvar _loadScript2 = _interopRequireDefault(_loadScript);\n\nvar _deepmerge = __webpack_require__(25);\n\nvar _deepmerge2 = _interopRequireDefault(_deepmerge);\n\nvar _props = __webpack_require__(3);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar MATCH_START_QUERY = /[?&#](?:start|t)=([0-9hms]+)/;\nvar MATCH_END_QUERY = /[?&#]end=([0-9hms]+)/;\nvar MATCH_START_STAMP = /(\\d+)(h|m|s)/g;\nvar MATCH_NUMERIC = /^\\d+$/;\n\n// Parse YouTube URL for a start time param, ie ?t=1h14m30s\n// and return the start time in seconds\nfunction parseTimeParam(url, pattern) {\n var match = url.match(pattern);\n if (match) {\n var stamp = match[1];\n if (stamp.match(MATCH_START_STAMP)) {\n return parseTimeString(stamp);\n }\n if (MATCH_NUMERIC.test(stamp)) {\n return parseInt(stamp);\n }\n }\n return undefined;\n}\n\nfunction parseTimeString(stamp) {\n var seconds = 0;\n var array = MATCH_START_STAMP.exec(stamp);\n while (array !== null) {\n var _array = array,\n _array2 = _slicedToArray(_array, 3),\n count = _array2[1],\n period = _array2[2];\n\n if (period === 'h') seconds += parseInt(count, 10) * 60 * 60;\n if (period === 'm') seconds += parseInt(count, 10) * 60;\n if (period === 's') seconds += parseInt(count, 10);\n array = MATCH_START_STAMP.exec(stamp);\n }\n return seconds;\n}\n\nfunction parseStartTime(url) {\n return parseTimeParam(url, MATCH_START_QUERY);\n}\n\nfunction parseEndTime(url) {\n return parseTimeParam(url, MATCH_END_QUERY);\n}\n\n// http://stackoverflow.com/a/38622545\nfunction randomString() {\n return Math.random().toString(36).substr(2, 5);\n}\n\nfunction queryString(object) {\n return Object.keys(object).map(function (key) {\n return key + '=' + object[key];\n }).join('&');\n}\n\n// Util function to load an external SDK\n// or return the SDK if it is already loaded\nvar resolves = {};\nfunction getSDK(url, sdkGlobal) {\n var sdkReady = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var isLoaded = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : function () {\n return true;\n };\n var fetchScript = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : _loadScript2['default'];\n\n if (window[sdkGlobal] && isLoaded(window[sdkGlobal])) {\n return Promise.resolve(window[sdkGlobal]);\n }\n return new Promise(function (resolve, reject) {\n // If we are already loading the SDK, add the resolve\n // function to the existing array of resolve functions\n if (resolves[url]) {\n resolves[url].push(resolve);\n return;\n }\n resolves[url] = [resolve];\n var onLoaded = function onLoaded(sdk) {\n // When loaded, resolve all pending promises\n resolves[url].forEach(function (resolve) {\n return resolve(sdk);\n });\n };\n if (sdkReady) {\n var previousOnReady = window[sdkReady];\n window[sdkReady] = function () {\n if (previousOnReady) previousOnReady();\n onLoaded(window[sdkGlobal]);\n };\n }\n fetchScript(url, function (err) {\n if (err) reject(err);\n if (!sdkReady) {\n onLoaded(window[sdkGlobal]);\n }\n });\n });\n}\n\nfunction getConfig(props, defaultProps, showWarning) {\n var config = (0, _deepmerge2['default'])(defaultProps.config, props.config);\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = _props.DEPRECATED_CONFIG_PROPS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var p = _step.value;\n\n if (props[p]) {\n var key = p.replace(/Config$/, '');\n config = (0, _deepmerge2['default'])(config, _defineProperty({}, key, props[p]));\n if (showWarning) {\n var link = 'https://github.com/CookPete/react-player#config-prop';\n var message = 'ReactPlayer: %c' + p + ' %cis deprecated, please use the config prop instead \\u2013 ' + link;\n console.warn(message, 'font-weight: bold', '');\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator['return']) {\n _iterator['return']();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return config;\n}\n\nfunction omit(object) {\n var _ref;\n\n for (var _len = arguments.length, arrays = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n arrays[_key - 1] = arguments[_key];\n }\n\n var omitKeys = (_ref = []).concat.apply(_ref, arrays);\n var output = {};\n var keys = Object.keys(object);\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = keys[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var key = _step2.value;\n\n if (omitKeys.indexOf(key) === -1) {\n output[key] = object[key];\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2['return']) {\n _iterator2['return']();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return output;\n}\n\nfunction callPlayer(method) {\n var _player;\n\n // Util method for calling a method on this.player\n // but guard against errors and console.warn instead\n if (!this.player || !this.player[method]) {\n var message = 'ReactPlayer: ' + this.constructor.displayName + ' player could not call %c' + method + '%c \\u2013 ';\n if (!this.player) {\n message += 'The player was not available';\n } else if (!this.player[method]) {\n message += 'The method was not available';\n }\n console.warn(message, 'font-weight: bold', '');\n return null;\n }\n\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n return (_player = this.player)[method].apply(_player, args);\n}\n\nfunction isObject(val) {\n return val !== null && (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object';\n}\n\n// Deep comparison of two objects but ignoring\n// functions, for use in shouldComponentUpdate\nfunction isEqual(a, b) {\n if (typeof a === 'function' && typeof b === 'function') {\n return true;\n }\n if (a instanceof Array && b instanceof Array) {\n if (a.length !== b.length) {\n return false;\n }\n for (var i = 0; i !== a.length; i++) {\n if (!isEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (isObject(a) && isObject(b)) {\n if (Object.keys(a).length !== Object.keys(b).length) {\n return false;\n }\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = Object.keys(a)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var key = _step3.value;\n\n if (!isEqual(a[key], b[key])) {\n return false;\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3['return']) {\n _iterator3['return']();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return true;\n }\n return a === b;\n}\n\nfunction isMediaStream(url) {\n return typeof window !== 'undefined' && typeof window.MediaStream !== 'undefined' && url instanceof window.MediaStream;\n}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nexports['default'] = createSinglePlayer;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _props2 = __webpack_require__(3);\n\nvar _utils = __webpack_require__(1);\n\nvar _Player = __webpack_require__(5);\n\nvar _Player2 = _interopRequireDefault(_Player);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SUPPORTED_PROPS = Object.keys(_props2.propTypes);\n\nfunction createSinglePlayer(activePlayer) {\n var _class, _temp2;\n\n return _temp2 = _class = function (_Component) {\n _inherits(SinglePlayer, _Component);\n\n function SinglePlayer() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, SinglePlayer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = SinglePlayer.__proto__ || Object.getPrototypeOf(SinglePlayer)).call.apply(_ref, [this].concat(args))), _this), _this.config = (0, _utils.getConfig)(_this.props, _props2.defaultProps, true), _this.getDuration = function () {\n if (!_this.player) return null;\n return _this.player.getDuration();\n }, _this.getCurrentTime = function () {\n if (!_this.player) return null;\n return _this.player.getCurrentTime();\n }, _this.getSecondsLoaded = function () {\n if (!_this.player) return null;\n return _this.player.getSecondsLoaded();\n }, _this.getInternalPlayer = function () {\n var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'player';\n\n if (!_this.player) return null;\n return _this.player.getInternalPlayer(key);\n }, _this.seekTo = function (fraction, type) {\n if (!_this.player) return null;\n _this.player.seekTo(fraction, type);\n }, _this.ref = function (player) {\n _this.player = player;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(SinglePlayer, [{\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps) {\n return !(0, _utils.isEqual)(this.props, nextProps);\n }\n }, {\n key: 'componentWillUpdate',\n value: function componentWillUpdate(nextProps) {\n this.config = (0, _utils.getConfig)(nextProps, _props2.defaultProps);\n }\n }, {\n key: 'render',\n value: function render() {\n var _config$file = this.config.file,\n forceVideo = _config$file.forceVideo,\n forceAudio = _config$file.forceAudio,\n forceHLS = _config$file.forceHLS,\n forceDASH = _config$file.forceDASH;\n\n var skipCanPlay = forceVideo || forceAudio || forceHLS || forceDASH;\n if (!activePlayer.canPlay(this.props.url) && !skipCanPlay) {\n return null;\n }\n var _props = this.props,\n style = _props.style,\n width = _props.width,\n height = _props.height,\n Wrapper = _props.wrapper;\n\n var otherProps = (0, _utils.omit)(this.props, SUPPORTED_PROPS, _props2.DEPRECATED_CONFIG_PROPS);\n return _react2['default'].createElement(\n Wrapper,\n _extends({ style: _extends({}, style, { width: width, height: height }) }, otherProps),\n _react2['default'].createElement(_Player2['default'], _extends({}, this.props, {\n ref: this.ref,\n activePlayer: activePlayer,\n config: this.config\n }))\n );\n }\n }]);\n\n return SinglePlayer;\n }(_react.Component), _class.displayName = activePlayer.displayName + 'Player', _class.propTypes = _props2.propTypes, _class.defaultProps = _props2.defaultProps, _class.canPlay = activePlayer.canPlay, _temp2;\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DEPRECATED_CONFIG_PROPS = exports.defaultProps = exports.propTypes = undefined;\n\nvar _propTypes = __webpack_require__(26);\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar string = _propTypes2['default'].string,\n bool = _propTypes2['default'].bool,\n number = _propTypes2['default'].number,\n array = _propTypes2['default'].array,\n oneOfType = _propTypes2['default'].oneOfType,\n shape = _propTypes2['default'].shape,\n object = _propTypes2['default'].object,\n func = _propTypes2['default'].func;\nvar propTypes = exports.propTypes = {\n url: oneOfType([string, array, object]),\n playing: bool,\n loop: bool,\n controls: bool,\n volume: number,\n muted: bool,\n playbackRate: number,\n width: oneOfType([string, number]),\n height: oneOfType([string, number]),\n style: object,\n progressInterval: number,\n playsinline: bool,\n pip: bool,\n light: oneOfType([bool, string]),\n wrapper: oneOfType([string, func, shape({ render: func.isRequired })]),\n config: shape({\n soundcloud: shape({\n options: object,\n preload: bool\n }),\n youtube: shape({\n playerVars: object,\n embedOptions: object,\n preload: bool\n }),\n facebook: shape({\n appId: string\n }),\n dailymotion: shape({\n params: object,\n preload: bool\n }),\n vimeo: shape({\n playerOptions: object,\n preload: bool\n }),\n file: shape({\n attributes: object,\n tracks: array,\n forceVideo: bool,\n forceAudio: bool,\n forceHLS: bool,\n forceDASH: bool,\n hlsOptions: object,\n hlsVersion: string,\n dashVersion: string\n }),\n wistia: shape({\n options: object\n }),\n mixcloud: shape({\n options: object\n }),\n twitch: shape({\n options: object\n })\n }),\n onReady: func,\n onStart: func,\n onPlay: func,\n onPause: func,\n onBuffer: func,\n onBufferEnd: func,\n onEnded: func,\n onError: func,\n onDuration: func,\n onSeek: func,\n onProgress: func,\n onVolumeChange: func,\n onEnablePIP: func,\n onDisablePIP: func\n};\n\nvar defaultProps = exports.defaultProps = {\n playing: false,\n loop: false,\n controls: false,\n volume: null,\n muted: false,\n playbackRate: 1,\n width: '640px',\n height: '360px',\n style: {},\n progressInterval: 1000,\n playsinline: false,\n pip: false,\n light: false,\n wrapper: 'div',\n config: {\n soundcloud: {\n options: {\n visual: true, // Undocumented, but makes player fill container and look better\n buying: false,\n liking: false,\n download: false,\n sharing: false,\n show_comments: false,\n show_playcount: false\n }\n },\n youtube: {\n playerVars: {\n playsinline: 1,\n showinfo: 0,\n rel: 0,\n iv_load_policy: 3,\n modestbranding: 1\n },\n embedOptions: {},\n preload: false\n },\n facebook: {\n appId: '1309697205772819'\n },\n dailymotion: {\n params: {\n api: 1,\n 'endscreen-enable': false\n },\n preload: false\n },\n vimeo: {\n playerOptions: {\n autopause: false,\n byline: false,\n portrait: false,\n title: false\n },\n preload: false\n },\n file: {\n attributes: {},\n tracks: [],\n forceVideo: false,\n forceAudio: false,\n forceHLS: false,\n forceDASH: false,\n hlsOptions: {},\n hlsVersion: '0.10.1',\n dashVersion: '2.9.2'\n },\n wistia: {\n options: {}\n },\n mixcloud: {\n options: {\n hide_cover: 1\n }\n },\n twitch: {\n options: {}\n }\n },\n onReady: function onReady() {},\n onStart: function onStart() {},\n onPlay: function onPlay() {},\n onPause: function onPause() {},\n onBuffer: function onBuffer() {},\n onBufferEnd: function onBufferEnd() {},\n onEnded: function onEnded() {},\n onError: function onError() {},\n onDuration: function onDuration() {},\n onSeek: function onSeek() {},\n onVolumeChange: function onVolumeChange() {},\n onProgress: function onProgress() {},\n onEnablePIP: function onEnablePIP() {},\n onDisablePIP: function onDisablePIP() {}\n};\n\nvar DEPRECATED_CONFIG_PROPS = exports.DEPRECATED_CONFIG_PROPS = ['soundcloudConfig', 'youtubeConfig', 'facebookConfig', 'dailymotionConfig', 'vimeoConfig', 'fileConfig', 'wistiaConfig'];\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.YouTube = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _singlePlayer = __webpack_require__(2);\n\nvar _singlePlayer2 = _interopRequireDefault(_singlePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SDK_URL = 'https://www.youtube.com/iframe_api';\nvar SDK_GLOBAL = 'YT';\nvar SDK_GLOBAL_READY = 'onYouTubeIframeAPIReady';\nvar MATCH_URL = /(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))((\\w|-){11})|youtube\\.com\\/playlist\\?list=/;\nvar MATCH_PLAYLIST = /list=([a-zA-Z0-9_-]+)/;\n\nfunction parsePlaylist(url) {\n if (MATCH_PLAYLIST.test(url)) {\n var _url$match = url.match(MATCH_PLAYLIST),\n _url$match2 = _slicedToArray(_url$match, 2),\n playlistId = _url$match2[1];\n\n return {\n listType: 'playlist',\n list: playlistId\n };\n }\n return {};\n}\n\nvar YouTube = exports.YouTube = function (_Component) {\n _inherits(YouTube, _Component);\n\n function YouTube() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, YouTube);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = YouTube.__proto__ || Object.getPrototypeOf(YouTube)).call.apply(_ref, [this].concat(args))), _this), _this.callPlayer = _utils.callPlayer, _this.onStateChange = function (_ref2) {\n var data = _ref2.data;\n var _this$props = _this.props,\n onPlay = _this$props.onPlay,\n onPause = _this$props.onPause,\n onBuffer = _this$props.onBuffer,\n onBufferEnd = _this$props.onBufferEnd,\n onEnded = _this$props.onEnded,\n onReady = _this$props.onReady,\n loop = _this$props.loop;\n var _window$SDK_GLOBAL$Pl = window[SDK_GLOBAL].PlayerState,\n PLAYING = _window$SDK_GLOBAL$Pl.PLAYING,\n PAUSED = _window$SDK_GLOBAL$Pl.PAUSED,\n BUFFERING = _window$SDK_GLOBAL$Pl.BUFFERING,\n ENDED = _window$SDK_GLOBAL$Pl.ENDED,\n CUED = _window$SDK_GLOBAL$Pl.CUED;\n\n if (data === PLAYING) {\n onPlay();\n onBufferEnd();\n }\n if (data === PAUSED) onPause();\n if (data === BUFFERING) onBuffer();\n if (data === ENDED) {\n var isPlaylist = !!_this.callPlayer('getPlaylist');\n if (loop && !isPlaylist) {\n _this.play(); // Only loop manually if not playing a playlist\n }\n onEnded();\n }\n if (data === CUED) onReady();\n }, _this.mute = function () {\n _this.callPlayer('mute');\n }, _this.unmute = function () {\n _this.callPlayer('unMute');\n }, _this.ref = function (container) {\n _this.container = container;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(YouTube, [{\n key: 'load',\n value: function load(url, isReady) {\n var _this2 = this;\n\n var _props = this.props,\n playing = _props.playing,\n muted = _props.muted,\n playsinline = _props.playsinline,\n controls = _props.controls,\n loop = _props.loop,\n config = _props.config,\n _onError = _props.onError;\n var _config$youtube = config.youtube,\n playerVars = _config$youtube.playerVars,\n embedOptions = _config$youtube.embedOptions;\n\n var id = url && url.match(MATCH_URL)[1];\n if (isReady) {\n if (MATCH_PLAYLIST.test(url)) {\n this.player.loadPlaylist(parsePlaylist(url));\n return;\n }\n this.player.cueVideoById({\n videoId: id,\n startSeconds: (0, _utils.parseStartTime)(url) || playerVars.start,\n endSeconds: (0, _utils.parseEndTime)(url) || playerVars.end\n });\n return;\n }\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY, function (YT) {\n return YT.loaded;\n }).then(function (YT) {\n if (!_this2.container) return;\n _this2.player = new YT.Player(_this2.container, _extends({\n width: '100%',\n height: '100%',\n videoId: id,\n playerVars: _extends({\n autoplay: playing ? 1 : 0,\n mute: muted ? 1 : 0,\n controls: controls ? 1 : 0,\n start: (0, _utils.parseStartTime)(url),\n end: (0, _utils.parseEndTime)(url),\n origin: window.location.origin,\n playsinline: playsinline\n }, parsePlaylist(url), playerVars),\n events: {\n onReady: _this2.props.onReady,\n onStateChange: _this2.onStateChange,\n onError: function onError(event) {\n return _onError(event.data);\n }\n }\n }, embedOptions));\n if (loop) {\n _this2.player.setLoop(true); // Enable playlist looping\n }\n }, _onError);\n }\n }, {\n key: 'play',\n value: function play() {\n this.callPlayer('playVideo');\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.callPlayer('pauseVideo');\n }\n }, {\n key: 'stop',\n value: function stop() {\n if (!document.body.contains(this.callPlayer('getIframe'))) return;\n this.callPlayer('stopVideo');\n }\n }, {\n key: 'seekTo',\n value: function seekTo(amount) {\n this.callPlayer('seekTo', amount);\n if (!this.props.playing) {\n this.pause();\n }\n }\n }, {\n key: 'setVolume',\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction * 100);\n }\n }, {\n key: 'setPlaybackRate',\n value: function setPlaybackRate(rate) {\n this.callPlayer('setPlaybackRate', rate);\n }\n }, {\n key: 'setLoop',\n value: function setLoop(loop) {\n this.callPlayer('setLoop', loop);\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n return this.callPlayer('getDuration');\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n return this.callPlayer('getCurrentTime');\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n return this.callPlayer('getVideoLoadedFraction') * this.getDuration();\n }\n }, {\n key: 'render',\n value: function render() {\n var style = _extends({\n width: '100%',\n height: '100%'\n }, this.props.style);\n return _react2['default'].createElement(\n 'div',\n { style: style },\n _react2['default'].createElement('div', { ref: this.ref })\n );\n }\n }]);\n\n return YouTube;\n}(_react.Component);\n\nYouTube.displayName = 'YouTube';\n\nYouTube.canPlay = function (url) {\n return MATCH_URL.test(url);\n};\n\nexports['default'] = (0, _singlePlayer2['default'])(YouTube);\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _props2 = __webpack_require__(3);\n\nvar _utils = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SEEK_ON_PLAY_EXPIRY = 5000;\n\nvar Player = function (_Component) {\n _inherits(Player, _Component);\n\n function Player() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Player);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Player.__proto__ || Object.getPrototypeOf(Player)).call.apply(_ref, [this].concat(args))), _this), _this.mounted = false, _this.isReady = false, _this.isPlaying = false, _this.isLoading = true, _this.loadOnReady = null, _this.startOnPlay = true, _this.seekOnPlay = null, _this.onDurationCalled = false, _this.getInternalPlayer = function (key) {\n if (!_this.player) return null;\n return _this.player[key];\n }, _this.progress = function () {\n if (_this.props.url && _this.player && _this.isReady) {\n var playedSeconds = _this.getCurrentTime() || 0;\n var loadedSeconds = _this.getSecondsLoaded();\n var duration = _this.getDuration();\n if (duration) {\n var progress = {\n playedSeconds: playedSeconds,\n played: playedSeconds / duration\n };\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds;\n progress.loaded = loadedSeconds / duration;\n }\n // Only call onProgress if values have changed\n if (progress.played !== _this.prevPlayed || progress.loaded !== _this.prevLoaded) {\n _this.props.onProgress(progress);\n }\n _this.prevPlayed = progress.played;\n _this.prevLoaded = progress.loaded;\n }\n }\n _this.progressTimeout = setTimeout(_this.progress, _this.props.progressFrequency || _this.props.progressInterval);\n }, _this.onReady = function () {\n if (!_this.mounted) return;\n _this.isReady = true;\n _this.isLoading = false;\n var _this$props = _this.props,\n onReady = _this$props.onReady,\n playing = _this$props.playing,\n volume = _this$props.volume,\n muted = _this$props.muted;\n\n onReady();\n if (!muted && volume !== null) {\n _this.player.setVolume(volume);\n }\n if (_this.loadOnReady) {\n _this.player.load(_this.loadOnReady, true);\n _this.loadOnReady = null;\n } else if (playing) {\n _this.player.play();\n }\n _this.onDurationCheck();\n }, _this.onPlay = function () {\n _this.isPlaying = true;\n _this.isLoading = false;\n var _this$props2 = _this.props,\n onStart = _this$props2.onStart,\n onPlay = _this$props2.onPlay,\n playbackRate = _this$props2.playbackRate;\n\n if (_this.startOnPlay) {\n if (_this.player.setPlaybackRate) {\n _this.player.setPlaybackRate(playbackRate);\n }\n onStart();\n _this.startOnPlay = false;\n }\n onPlay();\n if (_this.seekOnPlay) {\n _this.seekTo(_this.seekOnPlay);\n _this.seekOnPlay = null;\n }\n _this.onDurationCheck();\n }, _this.onPause = function (e) {\n _this.isPlaying = false;\n if (!_this.isLoading) {\n _this.props.onPause(e);\n }\n }, _this.onEnded = function () {\n var _this$props3 = _this.props,\n activePlayer = _this$props3.activePlayer,\n loop = _this$props3.loop,\n onEnded = _this$props3.onEnded;\n\n if (activePlayer.loopOnEnded && loop) {\n _this.seekTo(0);\n }\n if (!loop) {\n _this.isPlaying = false;\n onEnded();\n }\n }, _this.onError = function (e) {\n _this.isLoading = false;\n _this.props.onError(e);\n }, _this.onDurationCheck = function () {\n clearTimeout(_this.durationCheckTimeout);\n var duration = _this.getDuration();\n if (duration) {\n if (!_this.onDurationCalled) {\n _this.props.onDuration(duration);\n _this.onDurationCalled = true;\n }\n } else {\n _this.durationCheckTimeout = setTimeout(_this.onDurationCheck, 100);\n }\n }, _this.onLoaded = function () {\n // Sometimes we know loading has stopped but onReady/onPlay are never called\n // so this provides a way for players to avoid getting stuck\n _this.isLoading = false;\n }, _this.ref = function (player) {\n if (player) {\n _this.player = player;\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n } // Track playing state internally to prevent bugs\n // Use isLoading to prevent onPause when switching URL\n\n\n _createClass(Player, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.mounted = true;\n this.player.load(this.props.url);\n this.progress();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n clearTimeout(this.progressTimeout);\n clearTimeout(this.durationCheckTimeout);\n if (this.isReady) {\n this.player.stop();\n }\n if (this.player.disablePIP) {\n this.player.disablePIP();\n }\n this.mounted = false;\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n var _this2 = this;\n\n // Invoke player methods based on incoming props\n var _props = this.props,\n url = _props.url,\n playing = _props.playing,\n volume = _props.volume,\n muted = _props.muted,\n playbackRate = _props.playbackRate,\n pip = _props.pip,\n loop = _props.loop;\n\n if (!(0, _utils.isEqual)(url, nextProps.url)) {\n if (this.isLoading) {\n console.warn('ReactPlayer: the attempt to load ' + nextProps.url + ' is being deferred until the player has loaded');\n this.loadOnReady = nextProps.url;\n return;\n }\n this.isLoading = true;\n this.startOnPlay = true;\n this.onDurationCalled = false;\n this.player.load(nextProps.url, this.isReady);\n }\n if (!playing && nextProps.playing && !this.isPlaying) {\n this.player.play();\n }\n if (playing && !nextProps.playing && this.isPlaying) {\n this.player.pause();\n }\n if (!pip && nextProps.pip && this.player.enablePIP) {\n this.player.enablePIP();\n } else if (pip && !nextProps.pip && this.player.disablePIP) {\n this.player.disablePIP();\n }\n if (volume !== nextProps.volume && nextProps.volume !== null) {\n this.player.setVolume(nextProps.volume);\n }\n if (muted !== nextProps.muted) {\n if (nextProps.muted) {\n this.player.mute();\n } else {\n this.player.unmute();\n if (nextProps.volume !== null) {\n // Set volume next tick to fix a bug with DailyMotion\n setTimeout(function () {\n return _this2.player.setVolume(nextProps.volume);\n });\n }\n }\n }\n if (playbackRate !== nextProps.playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(nextProps.playbackRate);\n }\n if (loop !== nextProps.loop && this.player.setLoop) {\n this.player.setLoop(nextProps.loop);\n }\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n if (!this.isReady) return null;\n return this.player.getDuration();\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n if (!this.isReady) return null;\n return this.player.getCurrentTime();\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n if (!this.isReady) return null;\n return this.player.getSecondsLoaded();\n }\n }, {\n key: 'seekTo',\n value: function seekTo(amount, type) {\n var _this3 = this;\n\n // When seeking before player is ready, store value and seek later\n if (!this.isReady && amount !== 0) {\n this.seekOnPlay = amount;\n setTimeout(function () {\n _this3.seekOnPlay = null;\n }, SEEK_ON_PLAY_EXPIRY);\n return;\n }\n var isFraction = !type ? amount > 0 && amount < 1 : type === 'fraction';\n if (isFraction) {\n // Convert fraction to seconds based on duration\n var duration = this.player.getDuration();\n if (!duration) {\n console.warn('ReactPlayer: could not seek using fraction – duration not yet available');\n return;\n }\n this.player.seekTo(duration * amount);\n return;\n }\n this.player.seekTo(amount);\n }\n }, {\n key: 'render',\n value: function render() {\n var Player = this.props.activePlayer;\n if (!Player) {\n return null;\n }\n return _react2['default'].createElement(Player, _extends({}, this.props, {\n ref: this.ref,\n onReady: this.onReady,\n onPlay: this.onPlay,\n onPause: this.onPause,\n onEnded: this.onEnded,\n onLoaded: this.onLoaded,\n onError: this.onError\n }));\n }\n }]);\n\n return Player;\n}(_react.Component);\n\nPlayer.displayName = 'Player';\nPlayer.propTypes = _props2.propTypes;\nPlayer.defaultProps = _props2.defaultProps;\nexports['default'] = Player;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SoundCloud = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _singlePlayer = __webpack_require__(2);\n\nvar _singlePlayer2 = _interopRequireDefault(_singlePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SDK_URL = 'https://w.soundcloud.com/player/api.js';\nvar SDK_GLOBAL = 'SC';\nvar MATCH_URL = /(soundcloud\\.com|snd\\.sc)\\/.+$/;\n\nvar SoundCloud = exports.SoundCloud = function (_Component) {\n _inherits(SoundCloud, _Component);\n\n function SoundCloud() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, SoundCloud);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = SoundCloud.__proto__ || Object.getPrototypeOf(SoundCloud)).call.apply(_ref, [this].concat(args))), _this), _this.callPlayer = _utils.callPlayer, _this.duration = null, _this.currentTime = null, _this.fractionLoaded = null, _this.mute = function () {\n _this.setVolume(0);\n }, _this.unmute = function () {\n if (_this.props.volume !== null) {\n _this.setVolume(_this.props.volume);\n }\n }, _this.ref = function (iframe) {\n _this.iframe = iframe;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(SoundCloud, [{\n key: 'load',\n value: function load(url, isReady) {\n var _this2 = this;\n\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (SC) {\n if (!_this2.iframe) return;\n var _SC$Widget$Events = SC.Widget.Events,\n PLAY = _SC$Widget$Events.PLAY,\n PLAY_PROGRESS = _SC$Widget$Events.PLAY_PROGRESS,\n PAUSE = _SC$Widget$Events.PAUSE,\n FINISH = _SC$Widget$Events.FINISH,\n ERROR = _SC$Widget$Events.ERROR;\n\n if (!isReady) {\n _this2.player = SC.Widget(_this2.iframe);\n _this2.player.bind(PLAY, _this2.props.onPlay);\n _this2.player.bind(PAUSE, _this2.props.onPause);\n _this2.player.bind(PLAY_PROGRESS, function (e) {\n _this2.currentTime = e.currentPosition / 1000;\n _this2.fractionLoaded = e.loadedProgress;\n });\n _this2.player.bind(FINISH, function () {\n return _this2.props.onEnded();\n });\n _this2.player.bind(ERROR, function (e) {\n return _this2.props.onError(e);\n });\n }\n _this2.player.load(url, _extends({}, _this2.props.config.soundcloud.options, {\n callback: function callback() {\n _this2.player.getDuration(function (duration) {\n _this2.duration = duration / 1000;\n _this2.props.onReady();\n });\n }\n }));\n });\n }\n }, {\n key: 'play',\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: 'stop',\n value: function stop() {\n // Nothing to do\n }\n }, {\n key: 'seekTo',\n value: function seekTo(seconds) {\n this.callPlayer('seekTo', seconds * 1000);\n }\n }, {\n key: 'setVolume',\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction * 100);\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n return this.duration;\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n return this.currentTime;\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n return this.fractionLoaded * this.duration;\n }\n }, {\n key: 'render',\n value: function render() {\n var style = _extends({\n width: '100%',\n height: '100%'\n }, this.props.style);\n return _react2['default'].createElement('iframe', {\n ref: this.ref,\n src: 'https://w.soundcloud.com/player/?url=' + encodeURIComponent(this.props.url),\n style: style,\n frameBorder: 0,\n allow: 'autoplay'\n });\n }\n }]);\n\n return SoundCloud;\n}(_react.Component);\n\nSoundCloud.displayName = 'SoundCloud';\n\nSoundCloud.canPlay = function (url) {\n return MATCH_URL.test(url);\n};\n\nSoundCloud.loopOnEnded = true;\nexports['default'] = (0, _singlePlayer2['default'])(SoundCloud);\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Vimeo = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _singlePlayer = __webpack_require__(2);\n\nvar _singlePlayer2 = _interopRequireDefault(_singlePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SDK_URL = 'https://player.vimeo.com/api/player.js';\nvar SDK_GLOBAL = 'Vimeo';\nvar MATCH_URL = /vimeo\\.com\\/.+/;\nvar MATCH_FILE_URL = /vimeo\\.com\\/external\\/.+\\.mp4/;\n\nvar Vimeo = exports.Vimeo = function (_Component) {\n _inherits(Vimeo, _Component);\n\n function Vimeo() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Vimeo);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Vimeo.__proto__ || Object.getPrototypeOf(Vimeo)).call.apply(_ref, [this].concat(args))), _this), _this.callPlayer = _utils.callPlayer, _this.duration = null, _this.currentTime = null, _this.secondsLoaded = null, _this.mute = function () {\n _this.setVolume(0);\n }, _this.unmute = function () {\n if (_this.props.volume !== null) {\n _this.setVolume(_this.props.volume);\n }\n }, _this.ref = function (container) {\n _this.container = container;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Vimeo, [{\n key: 'load',\n value: function load(url) {\n var _this2 = this;\n\n this.duration = null;\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (Vimeo) {\n if (!_this2.container) return;\n _this2.player = new Vimeo.Player(_this2.container, _extends({}, _this2.props.config.vimeo.playerOptions, {\n url: url,\n autoplay: _this2.props.playing,\n muted: _this2.props.muted,\n loop: _this2.props.loop,\n playsinline: _this2.props.playsinline\n }));\n _this2.player.ready().then(function () {\n var iframe = _this2.container.querySelector('iframe');\n iframe.style.width = '100%';\n iframe.style.height = '100%';\n })['catch'](_this2.props.onError);\n _this2.player.on('loaded', function () {\n _this2.props.onReady();\n _this2.refreshDuration();\n });\n _this2.player.on('play', function () {\n _this2.props.onPlay();\n _this2.refreshDuration();\n });\n _this2.player.on('pause', _this2.props.onPause);\n _this2.player.on('seeked', function (e) {\n return _this2.props.onSeek(e.seconds);\n });\n _this2.player.on('ended', _this2.props.onEnded);\n _this2.player.on('error', _this2.props.onError);\n _this2.player.on('timeupdate', function (_ref2) {\n var seconds = _ref2.seconds;\n\n _this2.currentTime = seconds;\n });\n _this2.player.on('progress', function (_ref3) {\n var seconds = _ref3.seconds;\n\n _this2.secondsLoaded = seconds;\n });\n }, this.props.onError);\n }\n }, {\n key: 'refreshDuration',\n value: function refreshDuration() {\n var _this3 = this;\n\n this.player.getDuration().then(function (duration) {\n _this3.duration = duration;\n });\n }\n }, {\n key: 'play',\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.callPlayer('unload');\n }\n }, {\n key: 'seekTo',\n value: function seekTo(seconds) {\n this.callPlayer('setCurrentTime', seconds);\n }\n }, {\n key: 'setVolume',\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction);\n }\n }, {\n key: 'setLoop',\n value: function setLoop(loop) {\n this.callPlayer('setLoop', loop);\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n return this.duration;\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n return this.currentTime;\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n return this.secondsLoaded;\n }\n }, {\n key: 'render',\n value: function render() {\n var style = _extends({\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n backgroundColor: 'black'\n }, this.props.style);\n return _react2['default'].createElement('div', {\n key: this.props.url,\n ref: this.ref,\n style: style\n });\n }\n }]);\n\n return Vimeo;\n}(_react.Component);\n\nVimeo.displayName = 'Vimeo';\n\nVimeo.canPlay = function (url) {\n if (MATCH_FILE_URL.test(url)) {\n return false;\n }\n return MATCH_URL.test(url);\n};\n\nexports['default'] = (0, _singlePlayer2['default'])(Vimeo);\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DailyMotion = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _singlePlayer = __webpack_require__(2);\n\nvar _singlePlayer2 = _interopRequireDefault(_singlePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SDK_URL = 'https://api.dmcdn.net/all.js';\nvar SDK_GLOBAL = 'DM';\nvar SDK_GLOBAL_READY = 'dmAsyncInit';\nvar MATCH_URL = /^(?:(?:https?):)?(?:\\/\\/)?(?:www\\.)?(?:(?:dailymotion\\.com(?:\\/embed)?\\/video)|dai\\.ly)\\/([a-zA-Z0-9]+)(?:_[\\w_-]+)?$/;\n\nvar DailyMotion = exports.DailyMotion = function (_Component) {\n _inherits(DailyMotion, _Component);\n\n function DailyMotion() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, DailyMotion);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = DailyMotion.__proto__ || Object.getPrototypeOf(DailyMotion)).call.apply(_ref, [this].concat(args))), _this), _this.callPlayer = _utils.callPlayer, _this.onDurationChange = function () {\n var duration = _this.getDuration();\n _this.props.onDuration(duration);\n }, _this.mute = function () {\n _this.callPlayer('setMuted', true);\n }, _this.unmute = function () {\n _this.callPlayer('setMuted', false);\n }, _this.ref = function (container) {\n _this.container = container;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(DailyMotion, [{\n key: 'load',\n value: function load(url) {\n var _this2 = this;\n\n var _props = this.props,\n controls = _props.controls,\n config = _props.config,\n onError = _props.onError,\n playing = _props.playing;\n\n var _url$match = url.match(MATCH_URL),\n _url$match2 = _slicedToArray(_url$match, 2),\n id = _url$match2[1];\n\n if (this.player) {\n this.player.load(id, {\n start: (0, _utils.parseStartTime)(url),\n autoplay: playing\n });\n return;\n }\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY, function (DM) {\n return DM.player;\n }).then(function (DM) {\n if (!_this2.container) return;\n var Player = DM.player;\n _this2.player = new Player(_this2.container, {\n width: '100%',\n height: '100%',\n video: id,\n params: _extends({\n controls: controls,\n autoplay: _this2.props.playing,\n mute: _this2.props.muted,\n start: (0, _utils.parseStartTime)(url),\n origin: window.location.origin\n }, config.dailymotion.params),\n events: {\n apiready: _this2.props.onReady,\n seeked: function seeked() {\n return _this2.props.onSeek(_this2.player.currentTime);\n },\n video_end: _this2.props.onEnded,\n durationchange: _this2.onDurationChange,\n pause: _this2.props.onPause,\n playing: _this2.props.onPlay,\n waiting: _this2.props.onBuffer,\n error: function error(event) {\n return onError(event);\n }\n }\n });\n }, onError);\n }\n }, {\n key: 'play',\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: 'stop',\n value: function stop() {\n // Nothing to do\n }\n }, {\n key: 'seekTo',\n value: function seekTo(seconds) {\n this.callPlayer('seek', seconds);\n }\n }, {\n key: 'setVolume',\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction);\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n return this.player.duration || null;\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n return this.player.currentTime;\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n return this.player.bufferedTime;\n }\n }, {\n key: 'render',\n value: function render() {\n var style = _extends({\n width: '100%',\n height: '100%',\n backgroundColor: 'black'\n }, this.props.style);\n return _react2['default'].createElement(\n 'div',\n { style: style },\n _react2['default'].createElement('div', { ref: this.ref })\n );\n }\n }]);\n\n return DailyMotion;\n}(_react.Component);\n\nDailyMotion.displayName = 'DailyMotion';\n\nDailyMotion.canPlay = function (url) {\n return MATCH_URL.test(url);\n};\n\nDailyMotion.loopOnEnded = true;\nexports['default'] = (0, _singlePlayer2['default'])(DailyMotion);\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Facebook = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _singlePlayer = __webpack_require__(2);\n\nvar _singlePlayer2 = _interopRequireDefault(_singlePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SDK_URL = '//connect.facebook.net/en_US/sdk.js';\nvar SDK_GLOBAL = 'FB';\nvar SDK_GLOBAL_READY = 'fbAsyncInit';\nvar MATCH_URL = /facebook\\.com\\/([^/?].+\\/)?video(s|\\.php)[/?].*$/;\nvar PLAYER_ID_PREFIX = 'facebook-player-';\n\nvar Facebook = exports.Facebook = function (_Component) {\n _inherits(Facebook, _Component);\n\n function Facebook() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Facebook);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Facebook.__proto__ || Object.getPrototypeOf(Facebook)).call.apply(_ref, [this].concat(args))), _this), _this.callPlayer = _utils.callPlayer, _this.playerID = PLAYER_ID_PREFIX + (0, _utils.randomString)(), _this.mute = function () {\n _this.callPlayer('mute');\n }, _this.unmute = function () {\n _this.callPlayer('unmute');\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Facebook, [{\n key: 'load',\n value: function load(url, isReady) {\n var _this2 = this;\n\n if (isReady) {\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then(function (FB) {\n return FB.XFBML.parse();\n });\n return;\n }\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then(function (FB) {\n FB.init({\n appId: _this2.props.config.facebook.appId,\n xfbml: true,\n version: 'v2.5'\n });\n FB.Event.subscribe('xfbml.render', function (msg) {\n // Here we know the SDK has loaded, even if onReady/onPlay\n // is not called due to a video that cannot be embedded\n _this2.props.onLoaded();\n });\n FB.Event.subscribe('xfbml.ready', function (msg) {\n if (msg.type === 'video' && msg.id === _this2.playerID) {\n _this2.player = msg.instance;\n _this2.player.subscribe('startedPlaying', _this2.props.onPlay);\n _this2.player.subscribe('paused', _this2.props.onPause);\n _this2.player.subscribe('finishedPlaying', _this2.props.onEnded);\n _this2.player.subscribe('startedBuffering', _this2.props.onBuffer);\n _this2.player.subscribe('finishedBuffering', _this2.props.onBufferEnd);\n _this2.player.subscribe('error', _this2.props.onError);\n if (!_this2.props.muted) {\n // Player is muted by default\n _this2.callPlayer('unmute');\n }\n _this2.props.onReady();\n\n // For some reason Facebook have added `visibility: hidden`\n // to the iframe when autoplay fails, so here we set it back\n document.getElementById(_this2.playerID).querySelector('iframe').style.visibility = 'visible';\n }\n });\n });\n }\n }, {\n key: 'play',\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: 'stop',\n value: function stop() {\n // Nothing to do\n }\n }, {\n key: 'seekTo',\n value: function seekTo(seconds) {\n this.callPlayer('seek', seconds);\n }\n }, {\n key: 'setVolume',\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction);\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n return this.callPlayer('getDuration');\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n return this.callPlayer('getCurrentPosition');\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n return null;\n }\n }, {\n key: 'render',\n value: function render() {\n var style = {\n width: '100%',\n height: '100%',\n backgroundColor: 'black'\n };\n return _react2['default'].createElement('div', {\n style: style,\n id: this.playerID,\n className: 'fb-video',\n 'data-href': this.props.url,\n 'data-autoplay': this.props.playing ? 'true' : 'false',\n 'data-allowfullscreen': 'true',\n 'data-controls': this.props.controls ? 'true' : 'false'\n });\n }\n }]);\n\n return Facebook;\n}(_react.Component);\n\nFacebook.displayName = 'Facebook';\n\nFacebook.canPlay = function (url) {\n return MATCH_URL.test(url);\n};\n\nFacebook.loopOnEnded = true;\nexports['default'] = (0, _singlePlayer2['default'])(Facebook);\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Streamable = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _singlePlayer = __webpack_require__(2);\n\nvar _singlePlayer2 = _interopRequireDefault(_singlePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SDK_URL = '//cdn.embed.ly/player-0.1.0.min.js';\nvar SDK_GLOBAL = 'playerjs';\nvar MATCH_URL = /streamable\\.com\\/([a-z0-9]+)$/;\n\nvar Streamable = exports.Streamable = function (_Component) {\n _inherits(Streamable, _Component);\n\n function Streamable() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Streamable);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Streamable.__proto__ || Object.getPrototypeOf(Streamable)).call.apply(_ref, [this].concat(args))), _this), _this.callPlayer = _utils.callPlayer, _this.duration = null, _this.currentTime = null, _this.secondsLoaded = null, _this.mute = function () {\n _this.callPlayer('mute');\n }, _this.unmute = function () {\n _this.callPlayer('unmute');\n }, _this.ref = function (iframe) {\n _this.iframe = iframe;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Streamable, [{\n key: 'load',\n value: function load(url) {\n var _this2 = this;\n\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (playerjs) {\n if (!_this2.iframe) return;\n _this2.player = new playerjs.Player(_this2.iframe);\n _this2.player.setLoop(_this2.props.loop);\n _this2.player.on('ready', _this2.props.onReady);\n _this2.player.on('play', _this2.props.onPlay);\n _this2.player.on('pause', _this2.props.onPause);\n _this2.player.on('seeked', _this2.props.onSeek);\n _this2.player.on('ended', _this2.props.onEnded);\n _this2.player.on('error', _this2.props.onError);\n _this2.player.on('timeupdate', function (_ref2) {\n var duration = _ref2.duration,\n seconds = _ref2.seconds;\n\n _this2.duration = duration;\n _this2.currentTime = seconds;\n });\n _this2.player.on('buffered', function (_ref3) {\n var percent = _ref3.percent;\n\n if (_this2.duration) {\n _this2.secondsLoaded = _this2.duration * percent;\n }\n });\n if (_this2.props.muted) {\n _this2.player.mute();\n }\n }, this.props.onError);\n }\n }, {\n key: 'play',\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: 'stop',\n value: function stop() {\n // Nothing to do\n }\n }, {\n key: 'seekTo',\n value: function seekTo(seconds) {\n this.callPlayer('setCurrentTime', seconds);\n }\n }, {\n key: 'setVolume',\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction * 100);\n }\n }, {\n key: 'setLoop',\n value: function setLoop(loop) {\n this.callPlayer('setLoop', loop);\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n return this.duration;\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n return this.currentTime;\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n return this.secondsLoaded;\n }\n }, {\n key: 'render',\n value: function render() {\n var id = this.props.url.match(MATCH_URL)[1];\n var style = {\n width: '100%',\n height: '100%'\n };\n return _react2['default'].createElement('iframe', {\n ref: this.ref,\n src: 'https://streamable.com/o/' + id,\n frameBorder: '0',\n scrolling: 'no',\n style: style,\n allowFullScreen: true\n });\n }\n }]);\n\n return Streamable;\n}(_react.Component);\n\nStreamable.displayName = 'Streamable';\n\nStreamable.canPlay = function (url) {\n return MATCH_URL.test(url);\n};\n\nexports['default'] = (0, _singlePlayer2['default'])(Streamable);\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FaceMask = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _singlePlayer = __webpack_require__(2);\n\nvar _singlePlayer2 = _interopRequireDefault(_singlePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SDK_URL = 'https://www.nfl.com/libs/playaction/api.js';\nvar SDK_GLOBAL = 'nfl';\nvar MATCH_FILE_URL = /nflent-vh\\.akamaihd\\.net\\/.+\\.m3u8/;\nvar PLAYER_ID_PREFIX = 'facemask-player-';\n\nvar FaceMask = exports.FaceMask = function (_Component) {\n _inherits(FaceMask, _Component);\n\n function FaceMask() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, FaceMask);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = FaceMask.__proto__ || Object.getPrototypeOf(FaceMask)).call.apply(_ref, [this].concat(args))), _this), _this.callPlayer = _utils.callPlayer, _this.duration = null, _this.volume = null, _this.currentTime = null, _this.secondsLoaded = null, _this.playerID = PLAYER_ID_PREFIX + (0, _utils.randomString)(), _this.ref = function (container) {\n _this.container = container;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(FaceMask, [{\n key: 'load',\n value: function load(url) {\n var _this2 = this;\n\n this.duration = null;\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (nfl) {\n if (!_this2.container) return;\n // eslint-disable-next-line new-cap\n _this2.player = new nfl.playaction({\n containerId: _this2.playerID,\n initialVideo: { url: url },\n height: '100%',\n width: '100%'\n });\n var _nfl$playaction$EVENT = nfl.playaction.EVENTS,\n PLAYER_READY = _nfl$playaction$EVENT.PLAYER_READY,\n STATUS = _nfl$playaction$EVENT.STATUS,\n TIME_UPDATE = _nfl$playaction$EVENT.TIME_UPDATE,\n VOLUME = _nfl$playaction$EVENT.VOLUME;\n var _nfl$playaction$STATU = nfl.playaction.STATUS,\n COMPLETE = _nfl$playaction$STATU.COMPLETE,\n ERROR = _nfl$playaction$STATU.ERROR,\n PAUSED = _nfl$playaction$STATU.PAUSED,\n PLAYING = _nfl$playaction$STATU.PLAYING;\n\n _this2.player.on(PLAYER_READY, _this2.props.onReady);\n _this2.player.on(VOLUME, _this2.props.onVolumeChange);\n _this2.player.on(STATUS, function (e) {\n switch (e.status) {\n case COMPLETE:\n {\n _this2.props.onEnded();\n break;\n }\n case ERROR:\n {\n _this2.props.onError(e);\n break;\n }\n case PAUSED:\n {\n _this2.props.onPause();\n break;\n }\n case PLAYING:\n {\n _this2.props.onPlay();\n break;\n }\n }\n });\n _this2.player.on(TIME_UPDATE, function (_ref2) {\n var currentTime = _ref2.currentTime,\n duration = _ref2.duration;\n\n _this2.currentTime = currentTime;\n _this2.duration = duration || Infinity;\n });\n }, this.props.onError);\n }\n }, {\n key: 'play',\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.callPlayer('destroy');\n }\n }, {\n key: 'seekTo',\n value: function seekTo(seconds) {\n this.callPlayer('seek', seconds);\n }\n }, {\n key: 'setVolume',\n value: function setVolume(fraction) {\n // not supported\n }\n }, {\n key: 'mute',\n value: function mute() {\n this.callPlayer('mute');\n }\n }, {\n key: 'unmute',\n value: function unmute() {\n this.callPlayer('unmute');\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n return this.duration;\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n return this.currentTime;\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n return this.secondsLoaded;\n }\n }, {\n key: 'render',\n value: function render() {\n var style = {\n width: '100%',\n height: '100%'\n };\n return _react2['default'].createElement('div', {\n id: this.playerID,\n ref: this.ref,\n style: style\n });\n }\n }]);\n\n return FaceMask;\n}(_react.Component);\n\nFaceMask.displayName = 'FaceMask';\n\nFaceMask.canPlay = function (url) {\n return MATCH_FILE_URL.test(url);\n};\n\nexports['default'] = (0, _singlePlayer2['default'])(FaceMask);\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Wistia = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _singlePlayer = __webpack_require__(2);\n\nvar _singlePlayer2 = _interopRequireDefault(_singlePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SDK_URL = '//fast.wistia.com/assets/external/E-v1.js';\nvar SDK_GLOBAL = 'Wistia';\nvar MATCH_URL = /(?:wistia\\.com|wi\\.st)\\/(?:medias|embed)\\/(.*)$/;\n\nvar Wistia = exports.Wistia = function (_Component) {\n _inherits(Wistia, _Component);\n\n function Wistia() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Wistia);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Wistia.__proto__ || Object.getPrototypeOf(Wistia)).call.apply(_ref, [this].concat(args))), _this), _this.callPlayer = _utils.callPlayer, _this.mute = function () {\n _this.callPlayer('mute');\n }, _this.unmute = function () {\n _this.callPlayer('unmute');\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Wistia, [{\n key: 'getID',\n value: function getID(url) {\n return url && url.match(MATCH_URL)[1];\n }\n }, {\n key: 'load',\n value: function load(url) {\n var _this2 = this;\n\n var _props = this.props,\n playing = _props.playing,\n muted = _props.muted,\n controls = _props.controls,\n _onReady = _props.onReady,\n onPlay = _props.onPlay,\n onPause = _props.onPause,\n onSeek = _props.onSeek,\n onEnded = _props.onEnded,\n config = _props.config,\n onError = _props.onError;\n\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function () {\n window._wq = window._wq || [];\n window._wq.push({\n id: _this2.getID(url),\n options: _extends({\n autoPlay: playing,\n silentAutoPlay: 'allow',\n muted: muted,\n controlsVisibleOnLoad: controls\n }, config.wistia.options),\n onReady: function onReady(player) {\n _this2.player = player;\n _this2.unbind();\n _this2.player.bind('play', onPlay);\n _this2.player.bind('pause', onPause);\n _this2.player.bind('seek', onSeek);\n _this2.player.bind('end', onEnded);\n _onReady();\n }\n });\n }, onError);\n }\n }, {\n key: 'play',\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: 'unbind',\n value: function unbind() {\n var _props2 = this.props,\n onPlay = _props2.onPlay,\n onPause = _props2.onPause,\n onSeek = _props2.onSeek,\n onEnded = _props2.onEnded;\n\n this.player.unbind('play', onPlay);\n this.player.unbind('pause', onPause);\n this.player.unbind('seek', onSeek);\n this.player.unbind('end', onEnded);\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.unbind();\n this.callPlayer('remove');\n }\n }, {\n key: 'seekTo',\n value: function seekTo(seconds) {\n this.callPlayer('time', seconds);\n }\n }, {\n key: 'setVolume',\n value: function setVolume(fraction) {\n this.callPlayer('volume', fraction);\n }\n }, {\n key: 'setPlaybackRate',\n value: function setPlaybackRate(rate) {\n this.callPlayer('playbackRate', rate);\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n return this.callPlayer('duration');\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n return this.callPlayer('time');\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n return null;\n }\n }, {\n key: 'render',\n value: function render() {\n var id = this.getID(this.props.url);\n var className = 'wistia_embed wistia_async_' + id;\n var style = {\n width: '100%',\n height: '100%'\n };\n return _react2['default'].createElement('div', { key: id, className: className, style: style });\n }\n }]);\n\n return Wistia;\n}(_react.Component);\n\nWistia.displayName = 'Wistia';\n\nWistia.canPlay = function (url) {\n return MATCH_URL.test(url);\n};\n\nWistia.loopOnEnded = true;\nexports['default'] = (0, _singlePlayer2['default'])(Wistia);\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Twitch = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _singlePlayer = __webpack_require__(2);\n\nvar _singlePlayer2 = _interopRequireDefault(_singlePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SDK_URL = 'https://player.twitch.tv/js/embed/v1.js';\nvar SDK_GLOBAL = 'Twitch';\nvar MATCH_VIDEO_URL = /(?:www\\.|go\\.)?twitch\\.tv\\/videos\\/(\\d+)($|\\?)/;\nvar MATCH_CHANNEL_URL = /(?:www\\.|go\\.)?twitch\\.tv\\/([a-z0-9_]+)($|\\?)/;\nvar PLAYER_ID_PREFIX = 'twitch-player-';\n\nvar Twitch = exports.Twitch = function (_Component) {\n _inherits(Twitch, _Component);\n\n function Twitch() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Twitch);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Twitch.__proto__ || Object.getPrototypeOf(Twitch)).call.apply(_ref, [this].concat(args))), _this), _this.callPlayer = _utils.callPlayer, _this.playerID = PLAYER_ID_PREFIX + (0, _utils.randomString)(), _this.mute = function () {\n _this.callPlayer('setMuted', true);\n }, _this.unmute = function () {\n _this.callPlayer('setMuted', false);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Twitch, [{\n key: 'load',\n value: function load(url, isReady) {\n var _this2 = this;\n\n var _props = this.props,\n playsinline = _props.playsinline,\n onError = _props.onError,\n config = _props.config;\n\n var isChannel = MATCH_CHANNEL_URL.test(url);\n var id = isChannel ? url.match(MATCH_CHANNEL_URL)[1] : url.match(MATCH_VIDEO_URL)[1];\n if (isReady) {\n if (isChannel) {\n this.player.setChannel(id);\n } else {\n this.player.setVideo('v' + id);\n }\n return;\n }\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (Twitch) {\n _this2.player = new Twitch.Player(_this2.playerID, _extends({\n video: isChannel ? '' : id,\n channel: isChannel ? id : '',\n height: '100%',\n width: '100%',\n playsinline: playsinline,\n autoplay: _this2.props.playing,\n muted: _this2.props.muted\n }, config.twitch.options));\n var _Twitch$Player = Twitch.Player,\n READY = _Twitch$Player.READY,\n PLAYING = _Twitch$Player.PLAYING,\n PAUSE = _Twitch$Player.PAUSE,\n ENDED = _Twitch$Player.ENDED;\n\n _this2.player.addEventListener(READY, _this2.props.onReady);\n _this2.player.addEventListener(PLAYING, _this2.props.onPlay);\n _this2.player.addEventListener(PAUSE, _this2.props.onPause);\n _this2.player.addEventListener(ENDED, _this2.props.onEnded);\n }, onError);\n }\n }, {\n key: 'play',\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.callPlayer('pause');\n }\n }, {\n key: 'seekTo',\n value: function seekTo(seconds) {\n this.callPlayer('seek', seconds);\n }\n }, {\n key: 'getVolume',\n value: function getVolume() {\n return this.callPlayer('getVolume');\n }\n }, {\n key: 'getMuted',\n value: function getMuted() {\n return this.callPlayer('getMuted');\n }\n }, {\n key: 'setVolume',\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction);\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n return this.callPlayer('getDuration');\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n return this.callPlayer('getCurrentTime');\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n return null;\n }\n }, {\n key: 'render',\n value: function render() {\n var style = {\n width: '100%',\n height: '100%'\n };\n return _react2['default'].createElement('div', { style: style, id: this.playerID });\n }\n }]);\n\n return Twitch;\n}(_react.Component);\n\nTwitch.displayName = 'Twitch';\n\nTwitch.canPlay = function (url) {\n return MATCH_VIDEO_URL.test(url) || MATCH_CHANNEL_URL.test(url);\n};\n\nTwitch.loopOnEnded = true;\nexports['default'] = (0, _singlePlayer2['default'])(Twitch);\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UstreamLive = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _singlePlayer = __webpack_require__(2);\n\nvar _singlePlayer2 = _interopRequireDefault(_singlePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SDK_URL = 'https://developers.ustream.tv/js/ustream-embedapi.min.js';\nvar SDK_GLOBAL = 'UstreamEmbed';\nvar MATCH_URL = /(ustream.tv\\/channel\\/)([^#&?/]*)/;\nvar PLAYER_ID_PREFIX = 'UstreamLive-player-';\n\nvar UstreamLive = exports.UstreamLive = function (_Component) {\n _inherits(UstreamLive, _Component);\n\n function UstreamLive() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, UstreamLive);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = UstreamLive.__proto__ || Object.getPrototypeOf(UstreamLive)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n ustreamSrc: null\n }, _this.playerID = PLAYER_ID_PREFIX + (0, _utils.randomString)(), _this.callPlayer = _utils.callPlayer, _this.mute = function () {}, _this.unmute = function () {}, _this.ref = function (container) {\n _this.container = container;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(UstreamLive, [{\n key: 'parseId',\n value: function parseId(url) {\n var m = url.match(MATCH_URL);\n return m[2];\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n // reset ustreamSrc on reload\n if (prevProps.url && prevProps.url !== this.props.url) {\n this.setState({\n ustreamSrc: null\n });\n }\n }\n }, {\n key: 'load',\n value: function load() {\n var _this2 = this;\n\n var _props = this.props,\n onEnded = _props.onEnded,\n onError = _props.onError,\n onPause = _props.onPause,\n onPlay = _props.onPlay,\n onReady = _props.onReady,\n playing = _props.playing,\n url = _props.url;\n\n var channelId = this.parseId(url);\n this.setState({\n ustreamSrc: 'https://www.ustream.tv/embed/' + channelId + '?html5ui=1&autoplay=' + playing + '&controls=false&showtitle=false'\n });\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (UstreamEmbed) {\n if (!_this2.container) return;\n _this2.currentTime = 0;\n _this2.player = UstreamEmbed(_this2.playerID);\n _this2.player.addListener('playing', function (type, playing) {\n if (playing) {\n _this2.playTime = Date.now();\n onPlay();\n } else {\n _this2.currentTime = _this2.getCurrentTime();\n _this2.playTime = null;\n onPause();\n }\n });\n _this2.player.addListener('live', onReady);\n _this2.player.addListener('offline', onReady);\n _this2.player.addListener('finished', onEnded);\n _this2.player.getProperty('duration', function (duration) {\n _this2.player.duration = duration || Infinity;\n });\n }, onError);\n }\n // todo\n\n // todo\n\n }, {\n key: 'play',\n value: function play() {\n this.callPlayer('callMethod', 'play');\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.callPlayer('callMethod', 'pause');\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.callPlayer('callMethod', 'stop');\n }\n }, {\n key: 'seekTo',\n value: function seekTo(seconds) {\n this.callPlayer('callMethod', 'seek', seconds);\n }\n }, {\n key: 'setVolume',\n value: function setVolume(fraction) {\n this.callPlayer('callMethod', 'volume', fraction * 100);\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n return Infinity;\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n var playing = 0;\n if (this.playTime) {\n playing = (Date.now() - this.playTime) / 1000;\n }\n return this.currentTime + playing;\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n return null;\n }\n }, {\n key: 'render',\n value: function render() {\n var style = {\n width: '100%',\n height: '100%'\n };\n\n var ustreamSrc = this.state.ustreamSrc;\n\n return ustreamSrc && _react2['default'].createElement('iframe', {\n id: this.playerID,\n ref: this.ref,\n src: ustreamSrc,\n frameBorder: '0',\n scrolling: 'no',\n style: style,\n allowFullScreen: true\n });\n }\n }]);\n\n return UstreamLive;\n}(_react.Component);\n\nUstreamLive.displayName = 'UstreamLive';\n\nUstreamLive.canPlay = function (url) {\n return MATCH_URL.test(url);\n};\n\nUstreamLive.loopOnEnded = false;\nexports['default'] = (0, _singlePlayer2['default'])(UstreamLive);\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UstreamVideo = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _singlePlayer = __webpack_require__(2);\n\nvar _singlePlayer2 = _interopRequireDefault(_singlePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SDK_URL = 'https://developers.ustream.tv/js/ustream-embedapi.min.js';\nvar SDK_GLOBAL = 'UstreamEmbed';\nvar MATCH_URL = /(ustream.tv\\/recorded\\/)([^#&?/]*)/;\nvar PLAYER_ID_PREFIX = 'UstreamVideo-player-';\n\nvar UstreamVideo = exports.UstreamVideo = function (_Component) {\n _inherits(UstreamVideo, _Component);\n\n function UstreamVideo() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, UstreamVideo);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = UstreamVideo.__proto__ || Object.getPrototypeOf(UstreamVideo)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n ustreamSrc: null\n }, _this.playerID = PLAYER_ID_PREFIX + (0, _utils.randomString)(), _this.callPlayer = _utils.callPlayer, _this.mute = function () {}, _this.unmute = function () {}, _this.ref = function (container) {\n _this.container = container;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(UstreamVideo, [{\n key: 'parseId',\n value: function parseId(url) {\n var m = url.match(MATCH_URL);\n return m[2];\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n // reset ustreamSrc on reload\n if (prevProps.url && prevProps.url !== this.props.url) {\n this.setState({\n ustreamSrc: null\n });\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n // clear the interval below\n if (this.currentTimeInterval) {\n clearInterval(this.currentTimeInterval);\n }\n }\n\n // there's no events to update progress and duration,\n // so we're going to set an interval here. Also, duration\n // is zero or null for the first few seconds. Couldn't find\n // a deterministic event to let us know when we should grab the duration.\n\n }, {\n key: 'initInterval',\n value: function initInterval() {\n var _this2 = this;\n\n if (this.currentTimeInterval) {\n return;\n }\n this.currentTimeInterval = setInterval(function () {\n if (_this2.player) {\n _this2.player.getProperty('progress', function (progress) {\n _this2.player.currentTime = progress;\n });\n _this2.player.getProperty('duration', function (duration) {\n _this2.player.duration = duration;\n });\n }\n }, 500);\n }\n }, {\n key: 'load',\n value: function load() {\n var _this3 = this;\n\n var _props = this.props,\n onEnded = _props.onEnded,\n onError = _props.onError,\n onPause = _props.onPause,\n onPlay = _props.onPlay,\n onReady = _props.onReady,\n playing = _props.playing,\n url = _props.url;\n\n var videoId = this.parseId(url);\n this.setState({\n ustreamSrc: 'https://www.ustream.tv/embed/recorded/' + videoId + '?html5ui=1&autoplay=' + playing + '&controls=false&showtitle=false'\n });\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (UstreamEmbed) {\n if (!_this3.container) return;\n _this3.player = UstreamEmbed(_this3.playerID);\n _this3.player.addListener('playing', function (type, playing) {\n playing ? onPlay() : onPause();\n });\n _this3.player.addListener('ready', function () {\n _this3.initInterval();\n onReady();\n });\n _this3.player.addListener('finished', onEnded);\n }, onError);\n }\n // todo\n\n // todo\n\n }, {\n key: 'play',\n value: function play() {\n this.callPlayer('callMethod', 'play');\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.callPlayer('callMethod', 'pause');\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.callPlayer('callMethod', 'stop');\n }\n }, {\n key: 'seekTo',\n value: function seekTo(seconds) {\n this.callPlayer('callMethod', 'seek', seconds);\n }\n }, {\n key: 'setVolume',\n value: function setVolume(fraction) {\n this.callPlayer('callMethod', 'volume', fraction * 100);\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n return this.player.duration;\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n return this.player.currentTime;\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n return null;\n }\n }, {\n key: 'render',\n value: function render() {\n var style = {\n width: '100%',\n height: '100%'\n };\n\n var ustreamSrc = this.state.ustreamSrc;\n\n return ustreamSrc && _react2['default'].createElement('iframe', {\n id: this.playerID,\n ref: this.ref,\n src: ustreamSrc,\n frameBorder: '0',\n scrolling: 'no',\n style: style,\n allowFullScreen: true\n });\n }\n }]);\n\n return UstreamVideo;\n}(_react.Component);\n\nUstreamVideo.displayName = 'UstreamVideo';\n\nUstreamVideo.canPlay = function (url) {\n return MATCH_URL.test(url);\n};\n\nUstreamVideo.loopOnEnded = false;\nexports['default'] = (0, _singlePlayer2['default'])(UstreamVideo);\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Iframe = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _singlePlayer = __webpack_require__(2);\n\nvar _singlePlayer2 = _interopRequireDefault(_singlePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar PLAYER_ID_PREFIX = 'Iframe-player-';\n\nvar Iframe = exports.Iframe = function (_Component) {\n _inherits(Iframe, _Component);\n\n function Iframe() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Iframe);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Iframe.__proto__ || Object.getPrototypeOf(Iframe)).call.apply(_ref, [this].concat(args))), _this), _this.playerID = PLAYER_ID_PREFIX + (0, _utils.randomString)(), _this.player = {\n currentTime: 0\n }, _this.mute = function () {\n // no support\n }, _this.unmute = function () {\n // no support\n }, _this.ref = function (container) {\n _this.container = container;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Iframe, [{\n key: 'load',\n value: function load(url) {\n var _this2 = this;\n\n if (!this.container) {\n this.props.onReady();\n } else {\n setTimeout(function () {\n return _this2.props.onReady();\n }, 3000);\n }\n }\n }, {\n key: 'play',\n value: function play() {\n this.playTime = Date.now();\n this.props.onPlay();\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.player.currentTime = this.getCurrentTime();\n this.playTime = null;\n this.props.onPause();\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.player.currentTime = this.getCurrentTime();\n this.playTime = null;\n this.props.onPause();\n }\n }, {\n key: 'seekTo',\n value: function seekTo(seconds) {\n // no support\n }\n }, {\n key: 'setVolume',\n value: function setVolume(fraction) {\n // no support\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n return Infinity;\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n var playing = 0;\n if (this.playTime) {\n playing = (Date.now() - this.playTime) / 1000;\n }\n return this.player.currentTime + playing;\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n return null;\n }\n }, {\n key: 'render',\n value: function render() {\n var style = {\n width: '100%',\n height: '100%'\n };\n var _props = this.props,\n url = _props.url,\n playing = _props.playing;\n\n if (playing) {\n return _react2['default'].createElement('iframe', {\n id: this.playerID,\n ref: this.ref,\n src: playing && url,\n frameBorder: '0',\n scrolling: 'no',\n style: style,\n allowFullScreen: true\n });\n } else {\n // pause flow for iframe\n return _react2['default'].createElement(\n 'div',\n { style: style },\n _react2['default'].createElement(\n 'div',\n { style: {\n alignItems: 'center',\n background: 'rgba(255,255,255,0.3)',\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n width: '100%'\n } },\n _react2['default'].createElement('div', { className: 'pause', style: {\n borderStyle: 'double',\n borderWidth: '0px 0px 0px 50px',\n color: 'gray',\n height: '60px'\n } })\n )\n );\n }\n }\n }]);\n\n return Iframe;\n}(_react.Component);\n\nIframe.displayName = 'Iframe';\n\nIframe.canPlay = function (url) {\n return true;\n};\n\nexports['default'] = (0, _singlePlayer2['default'])(Iframe);\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Mixcloud = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _singlePlayer = __webpack_require__(2);\n\nvar _singlePlayer2 = _interopRequireDefault(_singlePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SDK_URL = '//widget.mixcloud.com/media/js/widgetApi.js';\nvar SDK_GLOBAL = 'Mixcloud';\nvar MATCH_URL = /mixcloud\\.com\\/([^/]+\\/[^/]+)/;\n\nvar Mixcloud = exports.Mixcloud = function (_Component) {\n _inherits(Mixcloud, _Component);\n\n function Mixcloud() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Mixcloud);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Mixcloud.__proto__ || Object.getPrototypeOf(Mixcloud)).call.apply(_ref, [this].concat(args))), _this), _this.callPlayer = _utils.callPlayer, _this.duration = null, _this.currentTime = null, _this.secondsLoaded = null, _this.mute = function () {\n // No volume support\n }, _this.unmute = function () {\n // No volume support\n }, _this.ref = function (iframe) {\n _this.iframe = iframe;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Mixcloud, [{\n key: 'load',\n value: function load(url) {\n var _this2 = this;\n\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (Mixcloud) {\n _this2.player = Mixcloud.PlayerWidget(_this2.iframe);\n _this2.player.ready.then(function () {\n _this2.player.events.play.on(_this2.props.onPlay);\n _this2.player.events.pause.on(_this2.props.onPause);\n _this2.player.events.ended.on(_this2.props.onEnded);\n _this2.player.events.error.on(_this2.props.error);\n _this2.player.events.progress.on(function (seconds, duration) {\n _this2.currentTime = seconds;\n _this2.duration = duration;\n });\n _this2.props.onReady();\n });\n }, this.props.onError);\n }\n }, {\n key: 'play',\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: 'stop',\n value: function stop() {\n // Nothing to do\n }\n }, {\n key: 'seekTo',\n value: function seekTo(seconds) {\n this.callPlayer('seek', seconds);\n }\n }, {\n key: 'setVolume',\n value: function setVolume(fraction) {\n // No volume support\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n return this.duration;\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n return this.currentTime;\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n return null;\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n url = _props.url,\n config = _props.config;\n\n var id = url.match(MATCH_URL)[1];\n var style = {\n width: '100%',\n height: '100%'\n };\n var query = (0, _utils.queryString)(_extends({}, config.mixcloud.options, {\n feed: '/' + id + '/'\n }));\n // We have to give the iframe a key here to prevent a\n // weird dialog appearing when loading a new track\n return _react2['default'].createElement('iframe', {\n key: id,\n ref: this.ref,\n style: style,\n src: 'https://www.mixcloud.com/widget/iframe/?' + query,\n frameBorder: '0'\n });\n }\n }]);\n\n return Mixcloud;\n}(_react.Component);\n\nMixcloud.displayName = 'Mixcloud';\n\nMixcloud.canPlay = function (url) {\n return MATCH_URL.test(url);\n};\n\nMixcloud.loopOnEnded = true;\nexports['default'] = (0, _singlePlayer2['default'])(Mixcloud);\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FilePlayer = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _singlePlayer = __webpack_require__(2);\n\nvar _singlePlayer2 = _interopRequireDefault(_singlePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar IOS = typeof navigator !== 'undefined' && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nvar AUDIO_EXTENSIONS = /\\.(m4a|mp4a|mpga|mp2|mp2a|mp3|m2a|m3a|wav|weba|aac|oga|spx)($|\\?)/i;\nvar VIDEO_EXTENSIONS = /\\.(mp4|og[gv]|webm|mov|m4v)($|\\?)/i;\nvar HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i;\nvar HLS_SDK_URL = 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/VERSION/hls.min.js';\nvar HLS_GLOBAL = 'Hls';\nvar DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i;\nvar DASH_SDK_URL = 'https://cdnjs.cloudflare.com/ajax/libs/dashjs/VERSION/dash.all.min.js';\nvar DASH_GLOBAL = 'dashjs';\nvar MATCH_DROPBOX_URL = /www\\.dropbox\\.com\\/.+/;\n\nfunction canPlay(url) {\n if (url instanceof Array) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = url[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var item = _step.value;\n\n if (typeof item === 'string' && canPlay(item)) {\n return true;\n }\n if (canPlay(item.src)) {\n return true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator['return']) {\n _iterator['return']();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return false;\n }\n if ((0, _utils.isMediaStream)(url)) {\n return true;\n }\n return AUDIO_EXTENSIONS.test(url) || VIDEO_EXTENSIONS.test(url) || HLS_EXTENSIONS.test(url) || DASH_EXTENSIONS.test(url);\n}\n\nfunction canEnablePIP(url) {\n return canPlay(url) && !!document.pictureInPictureEnabled && !AUDIO_EXTENSIONS.test(url);\n}\n\nvar FilePlayer = exports.FilePlayer = function (_Component) {\n _inherits(FilePlayer, _Component);\n\n function FilePlayer() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, FilePlayer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = FilePlayer.__proto__ || Object.getPrototypeOf(FilePlayer)).call.apply(_ref, [this].concat(args))), _this), _this.onDisablePIP = function (e) {\n var _this$props = _this.props,\n onDisablePIP = _this$props.onDisablePIP,\n playing = _this$props.playing;\n\n onDisablePIP(e);\n if (playing) {\n _this.play();\n }\n }, _this.onSeek = function (e) {\n _this.props.onSeek(e.target.currentTime);\n }, _this.mute = function () {\n _this.player.muted = true;\n }, _this.unmute = function () {\n _this.player.muted = false;\n }, _this.renderSourceElement = function (source, index) {\n if (typeof source === 'string') {\n return _react2['default'].createElement('source', { key: index, src: source });\n }\n return _react2['default'].createElement('source', _extends({ key: index }, source));\n }, _this.renderTrack = function (track, index) {\n return _react2['default'].createElement('track', _extends({ key: index }, track));\n }, _this.ref = function (player) {\n _this.player = player;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(FilePlayer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.addListeners();\n if (IOS) {\n this.player.load();\n }\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (this.shouldUseAudio(this.props) !== this.shouldUseAudio(nextProps)) {\n this.removeListeners();\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n if (this.shouldUseAudio(this.props) !== this.shouldUseAudio(prevProps)) {\n this.addListeners();\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.removeListeners();\n }\n }, {\n key: 'addListeners',\n value: function addListeners() {\n var _props = this.props,\n onReady = _props.onReady,\n onPlay = _props.onPlay,\n onBuffer = _props.onBuffer,\n onBufferEnd = _props.onBufferEnd,\n onPause = _props.onPause,\n onEnded = _props.onEnded,\n onError = _props.onError,\n playsinline = _props.playsinline,\n onEnablePIP = _props.onEnablePIP,\n onVolumeChange = _props.onVolumeChange,\n videoElementId = _props.videoElementId;\n\n this.player.addEventListener('canplay', onReady);\n this.player.addEventListener('play', onPlay);\n this.player.addEventListener('waiting', onBuffer);\n this.player.addEventListener('playing', onBufferEnd);\n this.player.addEventListener('pause', onPause);\n this.player.addEventListener('seeked', this.onSeek);\n this.player.addEventListener('ended', onEnded);\n this.player.addEventListener('error', onError);\n this.player.addEventListener('volumeChange', onVolumeChange);\n this.player.setAttribute('id', videoElementId);\n this.player.addEventListener('enterpictureinpicture', onEnablePIP);\n this.player.addEventListener('leavepictureinpicture', this.onDisablePIP);\n if (playsinline) {\n this.player.setAttribute('playsinline', '');\n this.player.setAttribute('webkit-playsinline', '');\n this.player.setAttribute('x5-playsinline', '');\n }\n }\n }, {\n key: 'removeListeners',\n value: function removeListeners() {\n var _props2 = this.props,\n onReady = _props2.onReady,\n onPlay = _props2.onPlay,\n onBuffer = _props2.onBuffer,\n onBufferEnd = _props2.onBufferEnd,\n onPause = _props2.onPause,\n onEnded = _props2.onEnded,\n onError = _props2.onError,\n onEnablePIP = _props2.onEnablePIP,\n onVolumeChange = _props2.onVolumeChange;\n\n this.player.removeEventListener('canplay', onReady);\n this.player.removeEventListener('play', onPlay);\n this.player.removeEventListener('waiting', onBuffer);\n this.player.removeEventListener('playing', onBufferEnd);\n this.player.removeEventListener('pause', onPause);\n this.player.removeEventListener('seeked', this.onSeek);\n this.player.removeEventListener('ended', onEnded);\n this.player.removeEventListener('error', onError);\n this.player.removeEventListener('volumeChange', onVolumeChange);\n this.player.removeEventListener('enterpictureinpicture', onEnablePIP);\n this.player.removeEventListener('leavepictureinpicture', this.onDisablePIP);\n }\n }, {\n key: 'shouldUseAudio',\n value: function shouldUseAudio(props) {\n if (props.config.file.forceVideo) {\n return false;\n }\n if (props.config.file.attributes.poster) {\n return false; // Use <video> so that poster is shown\n }\n return AUDIO_EXTENSIONS.test(props.url) || props.config.file.forceAudio;\n }\n }, {\n key: 'shouldUseHLS',\n value: function shouldUseHLS(url) {\n return HLS_EXTENSIONS.test(url) && !IOS || this.props.config.file.forceHLS;\n }\n }, {\n key: 'shouldUseDASH',\n value: function shouldUseDASH(url) {\n return DASH_EXTENSIONS.test(url) || this.props.config.file.forceDASH;\n }\n }, {\n key: 'load',\n value: function load(url) {\n var _this2 = this;\n\n var _props$config$file = this.props.config.file,\n hlsVersion = _props$config$file.hlsVersion,\n dashVersion = _props$config$file.dashVersion;\n\n if (this.shouldUseHLS(url)) {\n (0, _utils.getSDK)(HLS_SDK_URL.replace('VERSION', hlsVersion), HLS_GLOBAL).then(function (Hls) {\n _this2.hls = new Hls(_this2.props.config.file.hlsOptions);\n _this2.hls.on(Hls.Events.ERROR, function (e, data) {\n _this2.props.onError(e, data, _this2.hls, Hls);\n });\n _this2.hls.loadSource(url);\n _this2.hls.attachMedia(_this2.player);\n });\n }\n if (this.shouldUseDASH(url)) {\n (0, _utils.getSDK)(DASH_SDK_URL.replace('VERSION', dashVersion), DASH_GLOBAL).then(function (dashjs) {\n _this2.dash = dashjs.MediaPlayer().create();\n _this2.dash.initialize(_this2.player, url, _this2.props.playing);\n _this2.dash.getDebug().setLogToBrowserConsole(false);\n });\n }\n\n if (url instanceof Array) {\n // When setting new urls (<source>) on an already loaded video,\n // HTMLMediaElement.load() is needed to reset the media element\n // and restart the media resource. Just replacing children source\n // dom nodes is not enough\n this.player.load();\n } else if ((0, _utils.isMediaStream)(url)) {\n try {\n this.player.srcObject = url;\n } catch (e) {\n this.player.src = window.URL.createObjectURL(url);\n }\n }\n }\n }, {\n key: 'play',\n value: function play() {\n var promise = this.player.play();\n if (promise) {\n promise['catch'](this.props.onError);\n }\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.player.pause();\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.player.removeAttribute('src');\n if (this.hls) {\n this.hls.destroy();\n }\n if (this.dash) {\n this.dash.reset();\n }\n }\n }, {\n key: 'seekTo',\n value: function seekTo(seconds) {\n this.player.currentTime = seconds;\n }\n }, {\n key: 'setVolume',\n value: function setVolume(fraction) {\n this.player.volume = fraction;\n }\n }, {\n key: 'enablePIP',\n value: function enablePIP() {\n if (this.player.requestPictureInPicture && document.pictureInPictureElement !== this.player) {\n this.player.requestPictureInPicture();\n }\n }\n }, {\n key: 'disablePIP',\n value: function disablePIP() {\n if (document.exitPictureInPicture && document.pictureInPictureElement === this.player) {\n document.exitPictureInPicture();\n }\n }\n }, {\n key: 'setPlaybackRate',\n value: function setPlaybackRate(rate) {\n this.player.playbackRate = rate;\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n if (!this.player) return null;\n var _player = this.player,\n duration = _player.duration,\n seekable = _player.seekable;\n // on iOS, live streams return Infinity for the duration\n // so instead we use the end of the seekable timerange\n\n if (duration === Infinity && seekable.length > 0) {\n return seekable.end(seekable.length - 1);\n }\n return duration;\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n if (!this.player) return null;\n return this.player.currentTime;\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n if (!this.player) return null;\n var buffered = this.player.buffered;\n\n if (buffered.length === 0) {\n return 0;\n }\n var end = buffered.end(buffered.length - 1);\n var duration = this.getDuration();\n if (end > duration) {\n return duration;\n }\n return end;\n }\n }, {\n key: 'getSource',\n value: function getSource(url) {\n var useHLS = this.shouldUseHLS(url);\n var useDASH = this.shouldUseDASH(url);\n if (url instanceof Array || (0, _utils.isMediaStream)(url) || useHLS || useDASH) {\n return undefined;\n }\n if (MATCH_DROPBOX_URL.test(url)) {\n return url.replace('www.dropbox.com', 'dl.dropboxusercontent.com');\n }\n return url;\n }\n }, {\n key: 'render',\n value: function render() {\n var _props3 = this.props,\n url = _props3.url,\n playing = _props3.playing,\n loop = _props3.loop,\n controls = _props3.controls,\n muted = _props3.muted,\n config = _props3.config,\n width = _props3.width,\n height = _props3.height;\n\n var useAudio = this.shouldUseAudio(this.props);\n var Element = useAudio ? 'audio' : 'video';\n var style = {\n width: width === 'auto' ? width : '100%',\n height: height === 'auto' ? height : '100%'\n };\n return _react2['default'].createElement(\n Element,\n _extends({\n ref: this.ref,\n src: this.getSource(url),\n style: style,\n preload: 'auto',\n autoPlay: playing || undefined,\n controls: controls,\n muted: muted,\n loop: loop\n }, config.file.attributes),\n url instanceof Array && url.map(this.renderSourceElement),\n config.file.tracks.map(this.renderTrack)\n );\n }\n }]);\n\n return FilePlayer;\n}(_react.Component);\n\nFilePlayer.displayName = 'FilePlayer';\nFilePlayer.canPlay = canPlay;\nFilePlayer.canEnablePIP = canEnablePIP;\nexports['default'] = (0, _singlePlayer2['default'])(FilePlayer);\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VAST = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _singlePlayer = __webpack_require__(2);\n\nvar _singlePlayer2 = _interopRequireDefault(_singlePlayer);\n\nvar _ima = __webpack_require__(31);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar PLAYER_ID_PREFIX = 'vast-player-';\nvar CONTENT_ID_PREFIX = 'vast-content-';\nvar PLAY_BUTTON_ID_PREFIX = 'vast-play-';\nvar MATCH_URL = /^VAST:https:\\/\\//i;\n\n// Example: https://github.com/googleads/googleads-ima-html5/blob/master/attempt_to_autoplay/ads.js\n\nvar VAST = exports.VAST = function (_Component) {\n _inherits(VAST, _Component);\n\n function VAST() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, VAST);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = VAST.__proto__ || Object.getPrototypeOf(VAST)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n adDisplayContainer: null,\n autoplayChecksResolved: false,\n adObject: null,\n adsInitialized: false,\n adsLoader: null,\n adsManager: null,\n adsRequest: null,\n adsUrl: null,\n autoplayAllowed: null,\n autoplayRequiresMuted: null,\n ima: null,\n preMuteVolume: 0,\n showPlayButton: false\n }, _this.playerID = PLAYER_ID_PREFIX + (0, _utils.randomString)(), _this.contentID = CONTENT_ID_PREFIX + (0, _utils.randomString)(), _this.playButtonID = PLAY_BUTTON_ID_PREFIX + (0, _utils.randomString)(), _this.callPlayer = _utils.callPlayer, _this.mute = function () {\n var adsManager = _this.state.adsManager;\n\n if (!adsManager) return null;\n _this.setState({ preMuteVolume: adsManager.getVolume() });\n _this.setVolume(0.0);\n }, _this.unmute = function () {\n var preMuteVolume = _this.state.preMuteVolume;\n\n _this.setVolume(preMuteVolume);\n }, _this.ref = function (container) {\n _this.container = container;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(VAST, [{\n key: 'onAutoplayWithSoundSuccess',\n value: function onAutoplayWithSoundSuccess() {\n // If we make it here, unmuted autoplay works.\n var videoElement = document.getElementById(this.playerID);\n videoElement.pause();\n this.setState({\n autoplayAllowed: true,\n autoplayRequiresMuted: false,\n autoplayChecksResolved: true\n });\n }\n }, {\n key: 'onMutedAutoplaySuccess',\n value: function onMutedAutoplaySuccess() {\n // If we make it here, muted autoplay works but unmuted autoplay does not.\n var videoElement = document.getElementById(this.playerID);\n videoElement.pause();\n this.setState({\n autoplayAllowed: true,\n autoplayRequiresMuted: true,\n autoplayChecksResolved: true\n });\n }\n }, {\n key: 'onMutedAutoplayFail',\n value: function onMutedAutoplayFail() {\n // Both muted and unmuted autoplay failed. Fall back to click to play.\n var videoElement = document.getElementById(this.playerID);\n videoElement.volume = 1;\n videoElement.muted = false;\n this.setState({\n autoplayAllowed: false,\n autoplayRequiresMuted: false,\n autoplayChecksResolved: true\n });\n }\n }, {\n key: 'checkMutedAutoplaySupport',\n value: function checkMutedAutoplaySupport() {\n var _this2 = this;\n\n var videoElement = document.getElementById(this.playerID);\n videoElement.volume = 0;\n videoElement.muted = true;\n var promise = videoElement.play();\n if (promise !== undefined) {\n promise.then(function () {\n _this2.onMutedAutoplaySuccess();\n })['catch'](function () {\n _this2.onMutedAutoplayFail();\n });\n }\n }\n }, {\n key: 'checkAutoplaySupport',\n value: function checkAutoplaySupport() {\n var _this3 = this;\n\n var videoElement = document.getElementById(this.playerID);\n var promise = videoElement.play();\n if (promise !== undefined) {\n promise.then(function () {\n _this3.onAutoplayWithSoundSuccess();\n })['catch'](function () {\n _this3.checkMutedAutoplaySupport();\n });\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n // sdk is loaded\n if (prevState.adsUrl === null && this.state.adsUrl) {\n return this.checkAutoplaySupport();\n }\n\n // autoplay settings determined\n if (prevState.autoplayChecksResolved === false && this.state.autoplayChecksResolved === true) {\n return this.onAutoplayChecksResolved();\n }\n\n // adsManager events listening\n if (prevState.adsManager === null && this.state.adsManager) {\n var autoplayAllowed = this.state.autoplayAllowed;\n\n if (autoplayAllowed) {\n this.playAds();\n } else {\n this.setState({ showPlayButton: true });\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.removeListeners();\n }\n }, {\n key: 'removeListeners',\n value: function removeListeners() {\n var adsManager = this.state.adsManager;\n\n window.removeEventListener('resize', this._onWindowResize);\n\n if (adsManager && this.eventMap) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = Object.entries(this.eventMap)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ref2 = _step.value;\n\n var _ref3 = _slicedToArray(_ref2, 2);\n\n var event = _ref3[0];\n var fn = _ref3[1];\n\n adsManager.removeEventListener(event, fn);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator['return']) {\n _iterator['return']();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n }\n }, {\n key: 'onWindowResize',\n value: function onWindowResize() {\n var _state = this.state,\n adsManager = _state.adsManager,\n ima = _state.ima;\n\n var videoElement = document.getElementById(this.playerID);\n var height = videoElement.offsetHeight,\n width = videoElement.offsetWidth;\n\n if (!adsManager) return null;\n adsManager.resize(width, height, ima.ViewMode.NORMAL);\n }\n }, {\n key: 'onLoaded',\n value: function onLoaded(adEvent) {\n var onPlay = this.props.onPlay;\n\n var adObject = adEvent.getAd();\n onPlay();\n this.setState({ adObject: adObject });\n }\n }, {\n key: 'onAdsManagerLoaded',\n value: function onAdsManagerLoaded(adsManagerLoadedEvent) {\n var _eventMap;\n\n var _props = this.props,\n onEnded = _props.onEnded,\n onPause = _props.onPause,\n onPlay = _props.onPlay,\n onVolumeChange = _props.onVolumeChange;\n var ima = this.state.ima;\n\n var adsManager = adsManagerLoadedEvent.getAdsManager(document.getElementById(this.playerID));\n\n // bind resize event\n this._onWindowResize = this.onWindowResize.bind(this);\n window.addEventListener('resize', this._onWindowResize);\n\n this.eventMap = (_eventMap = {}, _defineProperty(_eventMap, ima.AdErrorEvent.Type.AD_ERROR, this.onError.bind(this)), _defineProperty(_eventMap, ima.AdEvent.Type.COMPLETE, onEnded.bind(this)), _defineProperty(_eventMap, ima.AdEvent.Type.LOADED, this.onLoaded.bind(this)), _defineProperty(_eventMap, ima.AdEvent.Type.RESUMED, onPlay.bind(this)), _defineProperty(_eventMap, ima.AdEvent.Type.PAUSED, onPause.bind(this)), _defineProperty(_eventMap, ima.AdEvent.Type.VOLUME_CHANGED, onVolumeChange.bind(this)), _eventMap);\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = Object.entries(this.eventMap)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _ref4 = _step2.value;\n\n var _ref5 = _slicedToArray(_ref4, 2);\n\n var event = _ref5[0];\n var fn = _ref5[1];\n\n adsManager.addEventListener(event, fn);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2['return']) {\n _iterator2['return']();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n this.setState({ adsManager: adsManager });\n }\n }, {\n key: 'onAutoplayChecksResolved',\n value: function onAutoplayChecksResolved() {\n var _state2 = this.state,\n adsUrl = _state2.adsUrl,\n adsLoader = _state2.adsLoader,\n autoplayAllowed = _state2.autoplayAllowed,\n autoplayRequiresMuted = _state2.autoplayRequiresMuted,\n ima = _state2.ima;\n // setup ads request\n\n var adsRequest = new ima.AdsRequest();\n adsRequest.adTagUrl = adsUrl;\n adsRequest.setAdWillAutoPlay(autoplayAllowed);\n adsRequest.setAdWillPlayMuted(autoplayRequiresMuted);\n adsLoader.requestAds(adsRequest);\n }\n }, {\n key: 'playAds',\n value: function playAds() {\n var _state3 = this.state,\n adDisplayContainer = _state3.adDisplayContainer,\n adsManager = _state3.adsManager,\n adsInitialized = _state3.adsInitialized,\n ima = _state3.ima;\n var onReady = this.props.onReady;\n\n try {\n if (!adsInitialized) {\n adDisplayContainer.initialize();\n this.setState({ adsInitialized: true });\n }\n // Initialize the ads manager. Ad rules playlist will start at this time.\n adsManager.init(640, 360, ima.ViewMode.NORMAL);\n\n // trigger window resize\n this.onWindowResize();\n\n // Call play to start showing the ad. Single video and overlay ads will\n // start at this time; the call will be ignored for ad rules.\n adsManager.start();\n\n // fire ready\n onReady();\n } catch (adError) {\n // An error may be thrown if there was a problem with the VAST response.\n this.props.onEnded();\n }\n }\n }, {\n key: 'load',\n value: function load(rawUrl) {\n var _this4 = this;\n\n // replace [RANDOM] or [random] with a randomly generated cache value\n var ord = Math.random() * 10000000000000000;\n var url = rawUrl.replace(/\\[random]/ig, ord);\n\n (0, _ima.loadImaSdk)().then(function (ima) {\n // Create the ad display container.\n var adDisplayContainer = new ima.AdDisplayContainer(document.getElementById(_this4.contentID), document.getElementById(_this4.playerID));\n\n // Create the ads loader.\n var adsLoader = new ima.AdsLoader(adDisplayContainer);\n\n // Listen and respond to ads loaded and error events\n adsLoader.addEventListener(ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, _this4.onAdsManagerLoaded.bind(_this4), false);\n adsLoader.addEventListener(ima.AdErrorEvent.Type.AD_ERROR, _this4.onError.bind(_this4), false);\n\n _this4.setState({\n ima: ima,\n adDisplayContainer: adDisplayContainer,\n adsLoader: adsLoader,\n adsUrl: url.slice('VAST:'.length)\n });\n })['catch'](function () {\n // error loading ima, probably because of adblock. just fire onended\n _this4.props.onEnded();\n });\n }\n }, {\n key: 'onError',\n value: function onError(error) {\n var onError = this.props.onError;\n var adsManager = this.state.adsManager;\n\n if (adsManager) {\n adsManager.destroy();\n }\n onError(error);\n }\n }, {\n key: 'play',\n value: function play() {\n var adsManager = this.state.adsManager;\n\n if (!adsManager) return null;\n adsManager.resume();\n }\n }, {\n key: 'pause',\n value: function pause() {\n var adsManager = this.state.adsManager;\n\n adsManager.pause();\n }\n }, {\n key: 'seekTo',\n value: function seekTo() {}\n }, {\n key: 'stop',\n value: function stop() {\n var adsManager = this.state.adsManager;\n\n if (!adsManager) return null;\n adsManager.destroy();\n }\n }, {\n key: 'setVolume',\n value: function setVolume(fraction) {\n var adsManager = this.state.adsManager;\n\n if (!adsManager) return null;\n adsManager.setVolume(fraction);\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n var adObject = this.state.adObject;\n\n if (!adObject) return null;\n var duration = adObject.getDuration();\n return duration > 0 ? duration : null;\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n var adsManager = this.state.adsManager;\n\n if (!adsManager) return null;\n var duration = this.getDuration();\n var remainingTime = adsManager.getRemainingTime();\n if (Number.isFinite(duration) && Number.isFinite(remainingTime)) {\n return duration - remainingTime;\n }\n return null;\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n return null;\n }\n }, {\n key: 'onButtonClick',\n value: function onButtonClick() {\n var _this5 = this;\n\n // Initialize the container. Must be done via a user action where autoplay\n // is not allowed.\n var adDisplayContainer = this.state.adDisplayContainer;\n\n adDisplayContainer.initialize();\n var videoElement = document.getElementById(this.playerID);\n this.setState({\n adsInitalized: true,\n showPlayButton: false\n }, function () {\n videoElement.load();\n _this5.playAds();\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this6 = this;\n\n var _props2 = this.props,\n width = _props2.width,\n height = _props2.height;\n var showPlayButton = this.state.showPlayButton;\n\n var dimensions = {\n width: width === 'auto' ? width : '100%',\n height: height === 'auto' ? height : '100%'\n };\n var contentStyle = _extends({}, dimensions, {\n top: 0,\n left: 0,\n position: 'absolute',\n zIndex: 1\n });\n var playButtonStyle = {\n borderStyle: 'solid',\n borderWidth: '16px 0 16px 26px',\n borderColor: 'transparent transparent transparent white',\n cursor: 'pointer',\n left: '50%',\n marginLeft: '-8px',\n marginTop: '-8px',\n position: 'absolute',\n top: '50%',\n zIndex: 2\n };\n return _react2['default'].createElement(\n 'div',\n { style: _extends({}, dimensions, { position: 'relative' }) },\n showPlayButton && _react2['default'].createElement('div', { style: playButtonStyle, id: this.playButtonID, onClick: function onClick() {\n return _this6.onButtonClick();\n } }),\n _react2['default'].createElement('video', {\n ref: this.ref,\n controls: false,\n src: 'https://www.maestro.io/pkg/dobi-api/4.0/public/blank.mp4',\n style: dimensions,\n preload: 'auto',\n id: this.playerID\n }),\n _react2['default'].createElement('div', { id: this.contentID, style: contentStyle })\n );\n }\n }]);\n\n return VAST;\n}(_react.Component);\n\nVAST.displayName = 'VAST';\n\nVAST.canPlay = function (url) {\n return MATCH_URL.test(url);\n};\n\nexports['default'] = (0, _singlePlayer2['default'])(VAST);\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n// Asynchronous loader for external scripts\nvar loadScript = function loadScript(src) {\n return new Promise(function (resolve, reject) {\n var script = document.createElement('script');\n script.async = true;\n script.src = src;\n script.onload = resolve;\n script.onerror = reject;\n document.body.appendChild(script);\n });\n};\nexports['default'] = loadScript;\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.JWPlayer = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _singlePlayer = __webpack_require__(2);\n\nvar _singlePlayer2 = _interopRequireDefault(_singlePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SDK_URL = '//cdn.jwplayer.com/libraries/8DNY8ff0.js';\nvar SDK_GLOBAL = 'jwplayer';\n// TODO: figure out all cases\nvar MATCH_VIDEO_URL = /jwplayer/;\nvar PLAYER_ID_PREFIX = 'jw-player-';\n\nvar JWPlayer = exports.JWPlayer = function (_Component) {\n _inherits(JWPlayer, _Component);\n\n function JWPlayer() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, JWPlayer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = JWPlayer.__proto__ || Object.getPrototypeOf(JWPlayer)).call.apply(_ref, [this].concat(args))), _this), _this.callPlayer = _utils.callPlayer, _this.playerID = PLAYER_ID_PREFIX + (0, _utils.randomString)(), _this.mute = function () {\n _this.callPlayer('setMute', true);\n }, _this.unmute = function () {\n _this.callPlayer('setMute', false);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(JWPlayer, [{\n key: 'load',\n value: function load(url, isReady) {\n var _this2 = this;\n\n var onError = this.props.onError;\n\n if (isReady) {\n this.player.setup({\n file: url\n });\n } else {\n (0, _utils.getSDK)(SDK_URL, SDK_GLOBAL).then(function (jwplayer) {\n _this2.player = jwplayer(_this2.playerID).setup({\n file: url\n });\n _this2.player.on('ready', _this2.props.onReady);\n _this2.player.on('play', _this2.props.onPlay);\n _this2.player.on('pause', _this2.props.onPause);\n _this2.player.on('error', onError);\n }, onError);\n }\n }\n }, {\n key: 'handleUnmount',\n value: function handleUnmount() {\n this.callPlayer('remove');\n }\n }, {\n key: 'play',\n value: function play() {\n this.callPlayer('play');\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.callPlayer('pause');\n }\n }, {\n key: 'stop',\n value: function stop() {\n this.callPlayer('stop');\n }\n }, {\n key: 'seekTo',\n value: function seekTo(seconds) {\n this.callPlayer('seek', seconds);\n }\n }, {\n key: 'getVolume',\n value: function getVolume() {\n return this.callPlayer('getVolume') / 100;\n }\n }, {\n key: 'getMuted',\n value: function getMuted() {\n return this.callPlayer('getMute');\n }\n }, {\n key: 'setVolume',\n value: function setVolume(fraction) {\n this.callPlayer('setVolume', fraction * 100);\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n return this.callPlayer('getDuration');\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n return this.callPlayer('getCurrentPosition');\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n return null;\n }\n }, {\n key: 'render',\n value: function render() {\n var style = {\n width: '100%',\n height: '100%'\n };\n return _react2['default'].createElement('div', { style: style, id: this.playerID });\n }\n }]);\n\n return JWPlayer;\n}(_react.Component);\n\nJWPlayer.displayName = 'JWPlayer';\n\nJWPlayer.canPlay = function (url) {\n return MATCH_VIDEO_URL.test(url);\n};\n\nJWPlayer.loopOnEnded = true;\nexports['default'] = (0, _singlePlayer2['default'])(JWPlayer);\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PhenixPlayer = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _utils = __webpack_require__(1);\n\nvar _singlePlayer = __webpack_require__(2);\n\nvar _singlePlayer2 = _interopRequireDefault(_singlePlayer);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // TODO: ReactPlayer's listener logic is very shaky because if you change the function identity\n// it won't get cleaned up. This is an existing problem so we're not gonna fix it here.\n\n\nvar PHENIX_SDK_URL = 'https://unpkg.com/phenix-web-sdk@2019.2.3/dist/phenix-web-sdk.min.js';\nvar PHENIX_SDK_GLOBAL = 'phenix-web-sdk';\n\n// TODO: Add optional auth data parameter at the end\nvar PHENIX_URL_REGEX = /^phenix:(.+?)\\|(.+?)(?:\\|(.+?))?$/i; // i hate this so much\n\nfunction getPhenixSdk() {\n return (0, _utils.getSDK)(PHENIX_SDK_URL, PHENIX_SDK_GLOBAL);\n}\n\nfunction canPlay(url) {\n return PHENIX_URL_REGEX.test(url);\n}\n\nvar PhenixPlayer = exports.PhenixPlayer = function (_Component) {\n _inherits(PhenixPlayer, _Component);\n\n function PhenixPlayer() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, PhenixPlayer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = PhenixPlayer.__proto__ || Object.getPrototypeOf(PhenixPlayer)).call.apply(_ref, [this].concat(args))), _this), _this.player = null, _this.channelExpress = null, _this.playerRef = function (player) {\n if (player === _this.player) {\n return;\n }\n if (_this.player) {\n _this.removeListeners();\n }\n _this.player = player;\n if (_this.player) {\n _this.addListeners();\n }\n }, _this.onSeek = function (e) {\n _this.props.onSeek(e.target.currentTime);\n }, _this.mute = function () {\n _this.player.muted = true;\n }, _this.unmute = function () {\n _this.player.muted = false;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(PhenixPlayer, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n // TODO: If refs get called with null on unmount, no reason to do this\n if (this.player) {\n this.removeListeners();\n this.player = null;\n }\n if (this.channelExpress) {\n this.channelExpress.dispose();\n this.channelExpress = null;\n }\n }\n }, {\n key: 'addListeners',\n value: function addListeners() {\n var _props = this.props,\n onReady = _props.onReady,\n onPlay = _props.onPlay,\n onPause = _props.onPause,\n onEnded = _props.onEnded,\n onVolumeChange = _props.onVolumeChange,\n onError = _props.onError,\n playsinline = _props.playsinline,\n videoElementId = _props.videoElementId;\n\n this.player.addEventListener('canplay', onReady);\n this.player.addEventListener('play', onPlay);\n this.player.addEventListener('pause', onPause);\n this.player.addEventListener('seeked', this.onSeek);\n this.player.addEventListener('ended', onEnded);\n this.player.addEventListener('error', onError);\n this.player.addEventListener('volumechange', onVolumeChange);\n // wow\n this.player.setAttribute('id', videoElementId);\n if (playsinline) {\n this.player.setAttribute('playsinline', '');\n this.player.setAttribute('webkit-playsinline', '');\n }\n }\n }, {\n key: 'removeListeners',\n value: function removeListeners() {\n var _props2 = this.props,\n onReady = _props2.onReady,\n onPlay = _props2.onPlay,\n onPause = _props2.onPause,\n onEnded = _props2.onEnded,\n onVolumeChange = _props2.onVolumeChange,\n onError = _props2.onError;\n\n this.player.removeEventListener('canplay', onReady);\n this.player.removeEventListener('play', onPlay);\n this.player.removeEventListener('pause', onPause);\n this.player.removeEventListener('seeked', this.onSeek);\n this.player.removeEventListener('ended', onEnded);\n this.player.removeEventListener('error', onError);\n this.player.removeEventListener('volumechange', onVolumeChange);\n }\n }, {\n key: 'getPhenixBackendUri',\n value: function getPhenixBackendUri() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.url;\n\n return PHENIX_URL_REGEX.exec(url)[1];\n }\n }, {\n key: 'getPhenixChannelId',\n value: function getPhenixChannelId() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.url;\n\n return PHENIX_URL_REGEX.exec(url)[2];\n }\n }, {\n key: 'getPhenixAuthenticationData',\n value: function getPhenixAuthenticationData() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props.url;\n\n var match = PHENIX_URL_REGEX.exec(url)[3];\n return match ? JSON.parse(match) : {};\n }\n }, {\n key: 'load',\n value: function load(url) {\n var _this2 = this;\n\n var backendUri = this.getPhenixBackendUri(url);\n var channelId = this.getPhenixChannelId(url);\n var authenticationData = this.getPhenixAuthenticationData(url);\n\n var joinChannelCallback = function joinChannelCallback(err, response) {\n var success = !err && response.status === 'ok';\n if (!success) {\n var error = err || new Error('Response status: ' + response.status);\n _this2.props.onError(error);\n }\n };\n\n var subscriberCallback = function subscriberCallback(err, response) {\n var success = !err && ['ok', 'no-stream-playing'].includes(response.status);\n if (!success) {\n var error = err || new Error('Response status: ' + response.status);\n _this2.props.onError(error);\n }\n // otherwise, response.mediaStream.getStreamId() will be a thing\n };\n\n getPhenixSdk().then(function (phenix) {\n // TODO: Does this check do anything?\n if (url !== _this2.props.url) {\n return;\n }\n if (_this2.channelExpress) {\n _this2.channelExpress.dispose();\n _this2.channelExpress = null;\n }\n _this2.channelExpress = new phenix.express.ChannelExpress({\n authenticationData: authenticationData,\n backendUri: backendUri\n });\n _this2.channelExpress.joinChannel({\n channelId: channelId,\n videoElement: _this2.player\n }, joinChannelCallback, subscriberCallback);\n });\n }\n }, {\n key: 'play',\n value: function play() {\n var promise = this.player.play();\n if (promise) {\n promise['catch'](this.props.onError);\n }\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.player.pause();\n }\n }, {\n key: 'stop',\n value: function stop() {\n if (this.channelExpress) {\n this.channelExpress.dispose();\n this.channelExpress = null;\n }\n }\n }, {\n key: 'seekTo',\n value: function seekTo(seconds) {\n if (seconds === Infinity || this.getDuration() === Infinity) {\n return;\n }\n this.player.currentTime = seconds;\n }\n }, {\n key: 'setVolume',\n value: function setVolume(fraction) {\n this.player.volume = fraction;\n }\n }, {\n key: 'setPlaybackRate',\n value: function setPlaybackRate(rate) {\n this.player.playbackRate = rate;\n }\n }, {\n key: 'getDuration',\n value: function getDuration() {\n return this.player.duration;\n }\n }, {\n key: 'getCurrentTime',\n value: function getCurrentTime() {\n return this.player.currentTime;\n }\n }, {\n key: 'getSecondsLoaded',\n value: function getSecondsLoaded() {\n var buffered = this.player.buffered;\n\n if (buffered.length === 0) {\n return 0;\n }\n var end = buffered.end(buffered.length - 1);\n var duration = this.getDuration();\n if (end > duration) {\n return duration;\n }\n return end;\n }\n }, {\n key: 'render',\n value: function render() {\n var _props3 = this.props,\n playing = _props3.playing,\n loop = _props3.loop,\n controls = _props3.controls,\n muted = _props3.muted,\n width = _props3.width,\n height = _props3.height;\n\n var style = {\n width: width === 'auto' ? width : '100%',\n height: height === 'auto' ? height : '100%'\n };\n return _react2['default'].createElement('video', {\n ref: this.playerRef,\n style: style,\n preload: 'auto' // TODO\n , autoPlay: playing // TODO\n , controls: controls // TODO\n , muted: muted,\n loop: loop\n });\n }\n }]);\n\n return PhenixPlayer;\n}(_react.Component);\n\nPhenixPlayer.displayName = 'PhenixPlayer';\nPhenixPlayer.canPlay = canPlay;\nexports['default'] = (0, _singlePlayer2['default'])(PhenixPlayer); // TODO: WTF does this even do?\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PhenixPlayer = exports.JWPlayer = exports.VAST = exports.FilePlayer = exports.Mixcloud = exports.Iframe = exports.UstreamVideo = exports.UstreamLive = exports.DailyMotion = exports.Twitch = exports.Wistia = exports.FaceMask = exports.Streamable = exports.Facebook = exports.Vimeo = exports.SoundCloud = exports.YouTube = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _YouTube = __webpack_require__(4);\n\nObject.defineProperty(exports, 'YouTube', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_YouTube)['default'];\n }\n});\n\nvar _SoundCloud = __webpack_require__(6);\n\nObject.defineProperty(exports, 'SoundCloud', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_SoundCloud)['default'];\n }\n});\n\nvar _Vimeo = __webpack_require__(7);\n\nObject.defineProperty(exports, 'Vimeo', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Vimeo)['default'];\n }\n});\n\nvar _Facebook = __webpack_require__(9);\n\nObject.defineProperty(exports, 'Facebook', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Facebook)['default'];\n }\n});\n\nvar _Streamable = __webpack_require__(10);\n\nObject.defineProperty(exports, 'Streamable', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Streamable)['default'];\n }\n});\n\nvar _FaceMask = __webpack_require__(11);\n\nObject.defineProperty(exports, 'FaceMask', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_FaceMask)['default'];\n }\n});\n\nvar _Wistia = __webpack_require__(12);\n\nObject.defineProperty(exports, 'Wistia', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Wistia)['default'];\n }\n});\n\nvar _Twitch = __webpack_require__(13);\n\nObject.defineProperty(exports, 'Twitch', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Twitch)['default'];\n }\n});\n\nvar _DailyMotion = __webpack_require__(8);\n\nObject.defineProperty(exports, 'DailyMotion', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_DailyMotion)['default'];\n }\n});\n\nvar _UstreamLive = __webpack_require__(14);\n\nObject.defineProperty(exports, 'UstreamLive', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_UstreamLive)['default'];\n }\n});\n\nvar _UstreamVideo = __webpack_require__(15);\n\nObject.defineProperty(exports, 'UstreamVideo', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_UstreamVideo)['default'];\n }\n});\n\nvar _Iframe = __webpack_require__(16);\n\nObject.defineProperty(exports, 'Iframe', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Iframe)['default'];\n }\n});\n\nvar _Mixcloud = __webpack_require__(17);\n\nObject.defineProperty(exports, 'Mixcloud', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_Mixcloud)['default'];\n }\n});\n\nvar _FilePlayer = __webpack_require__(18);\n\nObject.defineProperty(exports, 'FilePlayer', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_FilePlayer)['default'];\n }\n});\n\nvar _VAST = __webpack_require__(19);\n\nObject.defineProperty(exports, 'VAST', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_VAST)['default'];\n }\n});\n\nvar _JWPlayer = __webpack_require__(21);\n\nObject.defineProperty(exports, 'JWPlayer', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_JWPlayer)['default'];\n }\n});\n\nvar _PhenixPlayer = __webpack_require__(22);\n\nObject.defineProperty(exports, 'PhenixPlayer', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_PhenixPlayer)['default'];\n }\n});\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _props2 = __webpack_require__(3);\n\nvar _utils = __webpack_require__(1);\n\nvar _players = __webpack_require__(33);\n\nvar _players2 = _interopRequireDefault(_players);\n\nvar _Player4 = __webpack_require__(5);\n\nvar _Player5 = _interopRequireDefault(_Player4);\n\nvar _Preview = __webpack_require__(34);\n\nvar _Preview2 = _interopRequireDefault(_Preview);\n\nvar _preload = __webpack_require__(35);\n\nvar _preload2 = _interopRequireDefault(_preload);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SUPPORTED_PROPS = Object.keys(_props2.propTypes);\n\nvar customPlayers = [];\n\nvar ReactPlayer = function (_Component) {\n _inherits(ReactPlayer, _Component);\n\n function ReactPlayer() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, ReactPlayer);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = ReactPlayer.__proto__ || Object.getPrototypeOf(ReactPlayer)).call.apply(_ref, [this].concat(args))), _this), _this.config = (0, _utils.getConfig)(_this.props, _props2.defaultProps, true), _this.state = {\n showPreview: !!_this.props.light\n }, _this.onClickPreview = function () {\n _this.setState({ showPreview: false });\n }, _this.getDuration = function () {\n if (!_this.player) return null;\n return _this.player.getDuration();\n }, _this.getCurrentTime = function () {\n if (!_this.player) return null;\n return _this.player.getCurrentTime();\n }, _this.getSecondsLoaded = function () {\n if (!_this.player) return null;\n return _this.player.getSecondsLoaded();\n }, _this.getInternalPlayer = function () {\n var key = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'player';\n\n if (!_this.player) return null;\n return _this.player.getInternalPlayer(key);\n }, _this.seekTo = function (fraction, type) {\n if (!_this.player) return null;\n _this.player.seekTo(fraction, type);\n }, _this.onReady = function () {\n _this.props.onReady(_this);\n }, _this.wrapperRef = function (wrapper) {\n _this.wrapper = wrapper;\n }, _this.activePlayerRef = function (player) {\n _this.player = player;\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(ReactPlayer, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.progressFrequency) {\n var message = 'ReactPlayer: %cprogressFrequency%c is deprecated, please use %cprogressInterval%c instead';\n console.warn(message, 'font-weight: bold', '', 'font-weight: bold', '');\n }\n }\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps, nextState) {\n return !(0, _utils.isEqual)(this.props, nextProps) || !(0, _utils.isEqual)(this.state, nextState);\n }\n }, {\n key: 'componentWillUpdate',\n value: function componentWillUpdate(nextProps) {\n this.config = (0, _utils.getConfig)(nextProps, _props2.defaultProps);\n if (!this.props.light && nextProps.light) {\n this.setState({ showPreview: true });\n }\n }\n }, {\n key: 'getActivePlayer',\n value: function getActivePlayer(url) {\n var _arr = [].concat(_toConsumableArray(customPlayers), _toConsumableArray(_players2['default']));\n\n for (var _i = 0; _i < _arr.length; _i++) {\n var _Player = _arr[_i];\n if (_Player.canPlay(url)) {\n return _Player;\n }\n }\n // Fall back to FilePlayer if nothing else can play the URL\n return _Iframe.Iframe;\n }\n }, {\n key: 'renderActivePlayer',\n value: function renderActivePlayer(url, activePlayer) {\n if (!url) return null;\n return _react2['default'].createElement(_Player5['default'], _extends({}, this.props, {\n key: activePlayer.displayName,\n ref: this.activePlayerRef,\n config: this.config,\n activePlayer: activePlayer,\n onReady: this.onReady\n }));\n }\n }, {\n key: 'sortPlayers',\n value: function sortPlayers(a, b) {\n // Retain player order to prevent weird iframe behaviour when switching players\n if (a && b) {\n return a.key < b.key ? -1 : 1;\n }\n return 0;\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n url = _props.url,\n controls = _props.controls,\n style = _props.style,\n width = _props.width,\n height = _props.height,\n light = _props.light,\n Wrapper = _props.wrapper;\n\n var showPreview = this.state.showPreview && url;\n var otherProps = (0, _utils.omit)(this.props, SUPPORTED_PROPS, _props2.DEPRECATED_CONFIG_PROPS);\n var activePlayer = this.getActivePlayer(url);\n var renderedActivePlayer = this.renderActivePlayer(url, activePlayer);\n var preloadPlayers = (0, _preload2['default'])(url, controls, this.config);\n var players = [renderedActivePlayer].concat(_toConsumableArray(preloadPlayers)).sort(this.sortPlayers);\n var preview = _react2['default'].createElement(_Preview2['default'], { url: url, light: light, onClick: this.onClickPreview });\n return _react2['default'].createElement(\n Wrapper,\n _extends({ ref: this.wrapperRef, style: _extends({}, style, { width: width, height: height }) }, otherProps),\n showPreview ? preview : players\n );\n }\n }]);\n\n return ReactPlayer;\n}(_react.Component);\n\nReactPlayer.addCustomPlayer = function (player) {\n customPlayers.push(player);\n};\n\nReactPlayer.removeCustomPlayers = function () {\n customPlayers = [];\n};\n\nReactPlayer.displayName = 'ReactPlayer';\nReactPlayer.propTypes = _props2.propTypes;\nReactPlayer.defaultProps = _props2.defaultProps;\n\nReactPlayer.canPlay = function (url) {\n var _arr2 = [].concat(_toConsumableArray(customPlayers), _toConsumableArray(_players2['default']));\n\n for (var _i2 = 0; _i2 < _arr2.length; _i2++) {\n var _Player2 = _arr2[_i2];\n if (_Player2.canPlay(url)) {\n return true;\n }\n }\n return false;\n};\n\nReactPlayer.canEnablePIP = function (url) {\n var _arr3 = [].concat(_toConsumableArray(customPlayers), _toConsumableArray(_players2['default']));\n\n for (var _i3 = 0; _i3 < _arr3.length; _i3++) {\n var _Player3 = _arr3[_i3];\n if (_Player3.canEnablePIP && _Player3.canEnablePIP(url)) {\n return true;\n }\n }\n return false;\n};\n\nexports['default'] = ReactPlayer;\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function load(src, opts, cb) {\n var head = document.head || document.getElementsByTagName('head')[0];\n var script = document.createElement('script');\n\n if (typeof opts === 'function') {\n cb = opts;\n opts = {};\n }\n\n opts = opts || {};\n cb = cb || function () {};\n\n script.type = opts.type || 'text/javascript';\n script.charset = opts.charset || 'utf8';\n script.async = 'async' in opts ? !!opts.async : true;\n script.src = src;\n\n if (opts.attrs) {\n setAttributes(script, opts.attrs);\n }\n\n if (opts.text) {\n script.text = '' + opts.text;\n }\n\n var onend = 'onload' in script ? stdOnEnd : ieOnEnd;\n onend(script, cb);\n\n // some good legacy browsers (firefox) fail the 'in' detection above\n // so as a fallback we always set onload\n // old IE will ignore this and new IE will set onload\n if (!script.onload) {\n stdOnEnd(script, cb);\n }\n\n head.appendChild(script);\n};\n\nfunction setAttributes(script, attrs) {\n for (var attr in attrs) {\n script.setAttribute(attr, attrs[attr]);\n }\n}\n\nfunction stdOnEnd(script, cb) {\n script.onload = function () {\n this.onerror = this.onload = null;\n cb(null, script);\n };\n script.onerror = function () {\n // this.onload = null here is necessary\n // because even IE9 works not like others\n this.onerror = this.onload = null;\n cb(new Error('Failed to load ' + this.src), script);\n };\n}\n\nfunction ieOnEnd(script, cb) {\n script.onreadystatechange = function () {\n if (this.readyState != 'complete' && this.readyState != 'loaded') return;\n this.onreadystatechange = null;\n cb(null, script); // there is no way to catch loading errors in IE8\n };\n}\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n(function (global, factory) {\n\t( false ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : true ? !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : global.deepmerge = factory();\n})(undefined, function () {\n\t'use strict';\n\n\tvar isMergeableObject = function isMergeableObject(value) {\n\t\treturn isNonNullObject(value) && !isSpecial(value);\n\t};\n\n\tfunction isNonNullObject(value) {\n\t\treturn !!value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object';\n\t}\n\n\tfunction isSpecial(value) {\n\t\tvar stringValue = Object.prototype.toString.call(value);\n\n\t\treturn stringValue === '[object RegExp]' || stringValue === '[object Date]' || isReactElement(value);\n\t}\n\n\t// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\n\tvar canUseSymbol = typeof Symbol === 'function' && Symbol['for'];\n\tvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol['for']('react.element') : 0xeac7;\n\n\tfunction isReactElement(value) {\n\t\treturn value.$$typeof === REACT_ELEMENT_TYPE;\n\t}\n\n\tfunction emptyTarget(val) {\n\t\treturn Array.isArray(val) ? [] : {};\n\t}\n\n\tfunction cloneUnlessOtherwiseSpecified(value, options) {\n\t\treturn options.clone !== false && options.isMergeableObject(value) ? deepmerge(emptyTarget(value), value, options) : value;\n\t}\n\n\tfunction defaultArrayMerge(target, source, options) {\n\t\treturn target.concat(source).map(function (element) {\n\t\t\treturn cloneUnlessOtherwiseSpecified(element, options);\n\t\t});\n\t}\n\n\tfunction mergeObject(target, source, options) {\n\t\tvar destination = {};\n\t\tif (options.isMergeableObject(target)) {\n\t\t\tObject.keys(target).forEach(function (key) {\n\t\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t\t});\n\t\t}\n\t\tObject.keys(source).forEach(function (key) {\n\t\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t\t} else {\n\t\t\t\tdestination[key] = deepmerge(target[key], source[key], options);\n\t\t\t}\n\t\t});\n\t\treturn destination;\n\t}\n\n\tfunction deepmerge(target, source, options) {\n\t\toptions = options || {};\n\t\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\t\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\t\tvar sourceIsArray = Array.isArray(source);\n\t\tvar targetIsArray = Array.isArray(target);\n\t\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\t\tif (!sourceAndTargetTypesMatch) {\n\t\t\treturn cloneUnlessOtherwiseSpecified(source, options);\n\t\t} else if (sourceIsArray) {\n\t\t\treturn options.arrayMerge(target, source, options);\n\t\t} else {\n\t\t\treturn mergeObject(target, source, options);\n\t\t}\n\t}\n\n\tdeepmerge.all = function deepmergeAll(array, options) {\n\t\tif (!Array.isArray(array)) {\n\t\t\tthrow new Error('first argument should be an array');\n\t\t}\n\n\t\treturn array.reduce(function (prev, next) {\n\t\t\treturn deepmerge(prev, next, options);\n\t\t}, {});\n\t};\n\n\tvar deepmerge_1 = deepmerge;\n\n\treturn deepmerge_1;\n});\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (false) {\n var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;\n\n var isValidElement = function isValidElement(object) {\n return (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n };\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')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = __webpack_require__(27)();\n}\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar emptyFunction = __webpack_require__(28);\nvar invariant = __webpack_require__(29);\nvar ReactPropTypesSecret = __webpack_require__(30);\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 invariant(false, 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (false) {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _loadImaSdk = __webpack_require__(32);\n\nObject.defineProperty(exports, 'loadImaSdk', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_loadImaSdk)['default'];\n }\n});\n\nvar _loadScript = __webpack_require__(20);\n\nObject.defineProperty(exports, 'loadScript', {\n enumerable: true,\n get: function get() {\n return _interopRequireDefault(_loadScript)['default'];\n }\n});\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _loadScript = __webpack_require__(20);\n\nvar _loadScript2 = _interopRequireDefault(_loadScript);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar imaSdkSrc = '//imasdk.googleapis.com/js/sdkloader/ima3.js'; /// <reference path=\"../typings/ima.d.ts\" />\n\nvar pendingPromise = null;\nvar promiseFinished = function promiseFinished() {\n pendingPromise = null;\n};\nvar loadImaSdk = function loadImaSdk() {\n if (window.google && window.google.ima) {\n return Promise.resolve(window.google.ima);\n }\n if (pendingPromise) {\n return pendingPromise;\n }\n pendingPromise = (0, _loadScript2['default'])(imaSdkSrc).then(function () {\n return window.google.ima;\n });\n pendingPromise.then(promiseFinished)['catch'](promiseFinished);\n return pendingPromise;\n};\nexports['default'] = loadImaSdk;\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _YouTube = __webpack_require__(4);\n\nvar _SoundCloud = __webpack_require__(6);\n\nvar _Vimeo = __webpack_require__(7);\n\nvar _Facebook = __webpack_require__(9);\n\nvar _Streamable = __webpack_require__(10);\n\nvar _FaceMask = __webpack_require__(11);\n\nvar _Wistia = __webpack_require__(12);\n\nvar _Twitch = __webpack_require__(13);\n\nvar _DailyMotion = __webpack_require__(8);\n\nvar _UstreamLive = __webpack_require__(14);\n\nvar _UstreamVideo = __webpack_require__(15);\n\nvar _Iframe = __webpack_require__(16);\n\nvar _Mixcloud = __webpack_require__(17);\n\nvar _FilePlayer = __webpack_require__(18);\n\nvar _VAST = __webpack_require__(19);\n\nvar _JWPlayer = __webpack_require__(21);\n\nvar _PhenixPlayer = __webpack_require__(22);\n\nexports['default'] = [_PhenixPlayer.PhenixPlayer, _YouTube.YouTube, _SoundCloud.SoundCloud, _Vimeo.Vimeo, _Facebook.Facebook, _Streamable.Streamable, _FaceMask.FaceMask, _Wistia.Wistia, _Twitch.Twitch, _DailyMotion.DailyMotion, _Mixcloud.Mixcloud, _UstreamLive.UstreamLive, _UstreamVideo.UstreamVideo, _JWPlayer.JWPlayer, _VAST.VAST, _FilePlayer.FilePlayer, _Iframe.Iframe];\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ICON_SIZE = '64px';\n\nvar Preview = function (_Component) {\n _inherits(Preview, _Component);\n\n function Preview() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Preview);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Preview.__proto__ || Object.getPrototypeOf(Preview)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n image: null\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Preview, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.fetchImage(this.props);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n if (this.props.url !== nextProps.url) {\n this.fetchImage(nextProps);\n }\n }\n }, {\n key: 'fetchImage',\n value: function fetchImage(_ref2) {\n var _this2 = this;\n\n var url = _ref2.url,\n light = _ref2.light;\n\n if (typeof light === 'string') {\n this.setState({ image: light });\n return;\n }\n this.setState({ image: null });\n return window.fetch('https://noembed.com/embed?url=' + url).then(function (response) {\n return response.json();\n }).then(function (data) {\n if (data.thumbnail_url) {\n var image = data.thumbnail_url.replace('height=100', 'height=480');\n _this2.setState({ image: image });\n }\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var onClick = this.props.onClick;\n var image = this.state.image;\n\n var flexCenter = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n };\n var styles = {\n preview: _extends({\n width: '100%',\n height: '100%',\n backgroundImage: image ? 'url(' + image + ')' : undefined,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n cursor: 'pointer'\n }, flexCenter),\n shadow: _extends({\n background: 'radial-gradient(rgb(0, 0, 0, 0.3), rgba(0, 0, 0, 0) 60%)',\n borderRadius: ICON_SIZE,\n width: ICON_SIZE,\n height: ICON_SIZE\n }, flexCenter),\n playIcon: {\n borderStyle: 'solid',\n borderWidth: '16px 0 16px 26px',\n borderColor: 'transparent transparent transparent white',\n marginLeft: '7px'\n }\n };\n return _react2['default'].createElement(\n 'div',\n { style: styles.preview, className: 'react-player__preview', onClick: onClick },\n _react2['default'].createElement(\n 'div',\n { style: styles.shadow, className: 'react-player__shadow' },\n _react2['default'].createElement('div', { style: styles.playIcon, className: 'react-player__play-icon' })\n )\n );\n }\n }]);\n\n return Preview;\n}(_react.Component);\n\nexports['default'] = Preview;\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports['default'] = renderPreloadPlayers;\n\nvar _react = __webpack_require__(0);\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _Player = __webpack_require__(5);\n\nvar _Player2 = _interopRequireDefault(_Player);\n\nvar _YouTube = __webpack_require__(4);\n\nvar _SoundCloud = __webpack_require__(6);\n\nvar _Vimeo = __webpack_require__(7);\n\nvar _DailyMotion = __webpack_require__(8);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar PRELOAD_PLAYERS = [{\n Player: _YouTube.YouTube,\n configKey: 'youtube',\n url: 'https://www.youtube.com/watch?v=GlCmAC4MHek'\n}, {\n Player: _SoundCloud.SoundCloud,\n configKey: 'soundcloud',\n url: 'https://soundcloud.com/seucheu/john-cage-433-8-bit-version'\n}, {\n Player: _Vimeo.Vimeo,\n configKey: 'vimeo',\n url: 'https://vimeo.com/300970506'\n}, {\n Player: _DailyMotion.DailyMotion,\n configKey: 'dailymotion',\n url: 'http://www.dailymotion.com/video/xqdpyk'\n}];\n\nfunction renderPreloadPlayers(url, controls, config) {\n var players = [];\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = PRELOAD_PLAYERS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var player = _step.value;\n\n if (!player.Player.canPlay(url) && config[player.configKey].preload) {\n players.push(_react2['default'].createElement(_Player2['default'], {\n key: player.Player.displayName,\n activePlayer: player.Player,\n url: player.url,\n controls: controls,\n playing: true,\n muted: true,\n style: { display: 'none' }\n }));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator['return']) {\n _iterator['return']();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return players;\n}\n\n/***/ })\n/******/ ])[\"default\"];\n\n\n// WEBPACK FOOTER //\n// ReactPlayer.js"," \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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 23);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 374e66cc158b26a8df00","module.exports = React;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"React\"\n// module id = 0\n// module chunks = 0","import loadScript from 'load-script'\nimport merge from 'deepmerge'\n\nimport { DEPRECATED_CONFIG_PROPS } from './props'\n\nconst MATCH_START_QUERY = /[?&#](?:start|t)=([0-9hms]+)/\nconst MATCH_END_QUERY = /[?&#]end=([0-9hms]+)/\nconst MATCH_START_STAMP = /(\\d+)(h|m|s)/g\nconst MATCH_NUMERIC = /^\\d+$/\n\n// Parse YouTube URL for a start time param, ie ?t=1h14m30s\n// and return the start time in seconds\nfunction parseTimeParam (url, pattern) {\n const match = url.match(pattern)\n if (match) {\n const stamp = match[1]\n if (stamp.match(MATCH_START_STAMP)) {\n return parseTimeString(stamp)\n }\n if (MATCH_NUMERIC.test(stamp)) {\n return parseInt(stamp)\n }\n }\n return undefined\n}\n\nfunction parseTimeString (stamp) {\n let seconds = 0\n let array = MATCH_START_STAMP.exec(stamp)\n while (array !== null) {\n const [, count, period] = array\n if (period === 'h') seconds += parseInt(count, 10) * 60 * 60\n if (period === 'm') seconds += parseInt(count, 10) * 60\n if (period === 's') seconds += parseInt(count, 10)\n array = MATCH_START_STAMP.exec(stamp)\n }\n return seconds\n}\n\nexport function parseStartTime (url) {\n return parseTimeParam(url, MATCH_START_QUERY)\n}\n\nexport function parseEndTime (url) {\n return parseTimeParam(url, MATCH_END_QUERY)\n}\n\n// http://stackoverflow.com/a/38622545\nexport function randomString () {\n return Math.random().toString(36).substr(2, 5)\n}\n\nexport function queryString (object) {\n return Object\n .keys(object)\n .map(key => `${key}=${object[key]}`)\n .join('&')\n}\n\n// Util function to load an external SDK\n// or return the SDK if it is already loaded\nconst resolves = {}\nexport function getSDK (url, sdkGlobal, sdkReady = null, isLoaded = () => true, fetchScript = loadScript) {\n if (window[sdkGlobal] && isLoaded(window[sdkGlobal])) {\n return Promise.resolve(window[sdkGlobal])\n }\n return new Promise((resolve, reject) => {\n // If we are already loading the SDK, add the resolve\n // function to the existing array of resolve functions\n if (resolves[url]) {\n resolves[url].push(resolve)\n return\n }\n resolves[url] = [resolve]\n const onLoaded = sdk => {\n // When loaded, resolve all pending promises\n resolves[url].forEach(resolve => resolve(sdk))\n }\n if (sdkReady) {\n const previousOnReady = window[sdkReady]\n window[sdkReady] = function () {\n if (previousOnReady) previousOnReady()\n onLoaded(window[sdkGlobal])\n }\n }\n fetchScript(url, err => {\n if (err) reject(err)\n if (!sdkReady) {\n onLoaded(window[sdkGlobal])\n }\n })\n })\n}\n\nexport function getConfig (props, defaultProps, showWarning) {\n let config = merge(defaultProps.config, props.config)\n for (let p of DEPRECATED_CONFIG_PROPS) {\n if (props[p]) {\n const key = p.replace(/Config$/, '')\n config = merge(config, { [key]: props[p] })\n if (showWarning) {\n const link = 'https://github.com/CookPete/react-player#config-prop'\n const message = `ReactPlayer: %c${p} %cis deprecated, please use the config prop instead – ${link}`\n console.warn(message, 'font-weight: bold', '')\n }\n }\n }\n return config\n}\n\nexport function omit (object, ...arrays) {\n const omitKeys = [].concat(...arrays)\n const output = {}\n const keys = Object.keys(object)\n for (let key of keys) {\n if (omitKeys.indexOf(key) === -1) {\n output[key] = object[key]\n }\n }\n return output\n}\n\nexport function callPlayer (method, ...args) {\n // Util method for calling a method on this.player\n // but guard against errors and console.warn instead\n if (!this.player || !this.player[method]) {\n let message = `ReactPlayer: ${this.constructor.displayName} player could not call %c${method}%c – `\n if (!this.player) {\n message += 'The player was not available'\n } else if (!this.player[method]) {\n message += 'The method was not available'\n }\n console.warn(message, 'font-weight: bold', '')\n return null\n }\n return this.player[method](...args)\n}\n\nexport function isObject (val) {\n return val !== null && typeof val === 'object'\n}\n\n// Deep comparison of two objects but ignoring\n// functions, for use in shouldComponentUpdate\nexport function isEqual (a, b) {\n if (typeof a === 'function' && typeof b === 'function') {\n return true\n }\n if (a instanceof Array && b instanceof Array) {\n if (a.length !== b.length) {\n return false\n }\n for (let i = 0; i !== a.length; i++) {\n if (!isEqual(a[i], b[i])) {\n return false\n }\n }\n return true\n }\n if (isObject(a) && isObject(b)) {\n if (Object.keys(a).length !== Object.keys(b).length) {\n return false\n }\n for (let key of Object.keys(a)) {\n if (!isEqual(a[key], b[key])) {\n return false\n }\n }\n return true\n }\n return a === b\n}\n\nexport function isMediaStream (url) {\n return (\n typeof window !== 'undefined' &&\n typeof window.MediaStream !== 'undefined' &&\n url instanceof window.MediaStream\n )\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js","import React, { Component } from 'react'\n\nimport { propTypes, defaultProps, DEPRECATED_CONFIG_PROPS } from './props'\nimport { getConfig, omit, isEqual } from './utils'\nimport Player from './Player'\n\nconst SUPPORTED_PROPS = Object.keys(propTypes)\n\nexport default function createSinglePlayer (activePlayer) {\n return class SinglePlayer extends Component {\n static displayName = `${activePlayer.displayName}Player`\n static propTypes = propTypes\n static defaultProps = defaultProps\n static canPlay = activePlayer.canPlay\n\n config = getConfig(this.props, defaultProps, true)\n shouldComponentUpdate (nextProps) {\n return !isEqual(this.props, nextProps)\n }\n componentWillUpdate (nextProps) {\n this.config = getConfig(nextProps, defaultProps)\n }\n getDuration = () => {\n if (!this.player) return null\n return this.player.getDuration()\n }\n getCurrentTime = () => {\n if (!this.player) return null\n return this.player.getCurrentTime()\n }\n getSecondsLoaded = () => {\n if (!this.player) return null\n return this.player.getSecondsLoaded()\n }\n getInternalPlayer = (key = 'player') => {\n if (!this.player) return null\n return this.player.getInternalPlayer(key)\n }\n seekTo = (fraction, type) => {\n if (!this.player) return null\n this.player.seekTo(fraction, type)\n }\n ref = player => {\n this.player = player\n }\n render () {\n const { forceVideo, forceAudio, forceHLS, forceDASH } = this.config.file\n const skipCanPlay = forceVideo || forceAudio || forceHLS || forceDASH\n if (!activePlayer.canPlay(this.props.url) && !skipCanPlay) {\n return null\n }\n const { style, width, height, wrapper: Wrapper } = this.props\n const otherProps = omit(this.props, SUPPORTED_PROPS, DEPRECATED_CONFIG_PROPS)\n return (\n <Wrapper style={{ ...style, width, height }} {...otherProps}>\n <Player\n {...this.props}\n ref={this.ref}\n activePlayer={activePlayer}\n config={this.config}\n />\n </Wrapper>\n )\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/singlePlayer.js","import PropTypes from 'prop-types'\n\nconst { string, bool, number, array, oneOfType, shape, object, func } = PropTypes\n\nexport const propTypes = {\n url: oneOfType([ string, array, object ]),\n playing: bool,\n loop: bool,\n controls: bool,\n volume: number,\n muted: bool,\n playbackRate: number,\n width: oneOfType([ string, number ]),\n height: oneOfType([ string, number ]),\n style: object,\n progressInterval: number,\n playsinline: bool,\n pip: bool,\n light: oneOfType([ bool, string ]),\n wrapper: oneOfType([\n string,\n func,\n shape({ render: func.isRequired })\n ]),\n config: shape({\n soundcloud: shape({\n options: object,\n preload: bool\n }),\n youtube: shape({\n playerVars: object,\n embedOptions: object,\n preload: bool\n }),\n facebook: shape({\n appId: string\n }),\n dailymotion: shape({\n params: object,\n preload: bool\n }),\n vimeo: shape({\n playerOptions: object,\n preload: bool\n }),\n file: shape({\n attributes: object,\n tracks: array,\n forceVideo: bool,\n forceAudio: bool,\n forceHLS: bool,\n forceDASH: bool,\n hlsOptions: object,\n hlsVersion: string,\n dashVersion: string\n }),\n wistia: shape({\n options: object\n }),\n mixcloud: shape({\n options: object\n }),\n twitch: shape({\n options: object\n })\n }),\n onReady: func,\n onStart: func,\n onPlay: func,\n onPause: func,\n onBuffer: func,\n onBufferEnd: func,\n onEnded: func,\n onError: func,\n onDuration: func,\n onSeek: func,\n onProgress: func,\n onVolumeChange: func,\n onEnablePIP: func,\n onDisablePIP: func\n}\n\nexport const defaultProps = {\n playing: false,\n loop: false,\n controls: false,\n volume: null,\n muted: false,\n playbackRate: 1,\n width: '640px',\n height: '360px',\n style: {},\n progressInterval: 1000,\n playsinline: false,\n pip: false,\n light: false,\n wrapper: 'div',\n config: {\n soundcloud: {\n options: {\n visual: true, // Undocumented, but makes player fill container and look better\n buying: false,\n liking: false,\n download: false,\n sharing: false,\n show_comments: false,\n show_playcount: false\n }\n },\n youtube: {\n playerVars: {\n playsinline: 1,\n showinfo: 0,\n rel: 0,\n iv_load_policy: 3,\n modestbranding: 1\n },\n embedOptions: {},\n preload: false\n },\n facebook: {\n appId: '1309697205772819'\n },\n dailymotion: {\n params: {\n api: 1,\n 'endscreen-enable': false\n },\n preload: false\n },\n vimeo: {\n playerOptions: {\n autopause: false,\n byline: false,\n portrait: false,\n title: false\n },\n preload: false\n },\n file: {\n attributes: {},\n tracks: [],\n forceVideo: false,\n forceAudio: false,\n forceHLS: false,\n forceDASH: false,\n hlsOptions: {},\n hlsVersion: '0.10.1',\n dashVersion: '2.9.2'\n },\n wistia: {\n options: {}\n },\n mixcloud: {\n options: {\n hide_cover: 1\n }\n },\n twitch: {\n options: {}\n }\n },\n onReady: function () {},\n onStart: function () {},\n onPlay: function () {},\n onPause: function () {},\n onBuffer: function () {},\n onBufferEnd: function () {},\n onEnded: function () {},\n onError: function () {},\n onDuration: function () {},\n onSeek: function () {},\n onVolumeChange: function () {},\n onProgress: function () {},\n onEnablePIP: function () {},\n onDisablePIP: function () {}\n}\n\nexport const DEPRECATED_CONFIG_PROPS = [\n 'soundcloudConfig',\n 'youtubeConfig',\n 'facebookConfig',\n 'dailymotionConfig',\n 'vimeoConfig',\n 'fileConfig',\n 'wistiaConfig'\n]\n\n\n\n// WEBPACK FOOTER //\n// ./src/props.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, parseStartTime, parseEndTime } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = 'https://www.youtube.com/iframe_api'\nconst SDK_GLOBAL = 'YT'\nconst SDK_GLOBAL_READY = 'onYouTubeIframeAPIReady'\nconst MATCH_URL = /(?:youtu\\.be\\/|youtube\\.com\\/(?:embed\\/|v\\/|watch\\?v=|watch\\?.+&v=))((\\w|-){11})|youtube\\.com\\/playlist\\?list=/\nconst MATCH_PLAYLIST = /list=([a-zA-Z0-9_-]+)/\n\nfunction parsePlaylist (url) {\n if (MATCH_PLAYLIST.test(url)) {\n const [, playlistId] = url.match(MATCH_PLAYLIST)\n return {\n listType: 'playlist',\n list: playlistId\n }\n }\n return {}\n}\n\nexport class YouTube extends Component {\n static displayName = 'YouTube'\n static canPlay = url => MATCH_URL.test(url)\n\n callPlayer = callPlayer\n load (url, isReady) {\n const { playing, muted, playsinline, controls, loop, config, onError } = this.props\n const { playerVars, embedOptions } = config.youtube\n const id = url && url.match(MATCH_URL)[1]\n if (isReady) {\n if (MATCH_PLAYLIST.test(url)) {\n this.player.loadPlaylist(parsePlaylist(url))\n return\n }\n this.player.cueVideoById({\n videoId: id,\n startSeconds: parseStartTime(url) || playerVars.start,\n endSeconds: parseEndTime(url) || playerVars.end\n })\n return\n }\n getSDK(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY, YT => YT.loaded).then(YT => {\n if (!this.container) return\n this.player = new YT.Player(this.container, {\n width: '100%',\n height: '100%',\n videoId: id,\n playerVars: {\n autoplay: playing ? 1 : 0,\n mute: muted ? 1 : 0,\n controls: controls ? 1 : 0,\n start: parseStartTime(url),\n end: parseEndTime(url),\n origin: window.location.origin,\n playsinline: playsinline,\n ...parsePlaylist(url),\n ...playerVars\n },\n events: {\n onReady: this.props.onReady,\n onStateChange: this.onStateChange,\n onError: event => onError(event.data)\n },\n ...embedOptions\n })\n if (loop) {\n this.player.setLoop(true) // Enable playlist looping\n }\n }, onError)\n }\n onStateChange = ({ data }) => {\n const { onPlay, onPause, onBuffer, onBufferEnd, onEnded, onReady, loop } = this.props\n const { PLAYING, PAUSED, BUFFERING, ENDED, CUED } = window[SDK_GLOBAL].PlayerState\n if (data === PLAYING) {\n onPlay()\n onBufferEnd()\n }\n if (data === PAUSED) onPause()\n if (data === BUFFERING) onBuffer()\n if (data === ENDED) {\n const isPlaylist = !!this.callPlayer('getPlaylist')\n if (loop && !isPlaylist) {\n this.play() // Only loop manually if not playing a playlist\n }\n onEnded()\n }\n if (data === CUED) onReady()\n }\n play () {\n this.callPlayer('playVideo')\n }\n pause () {\n this.callPlayer('pauseVideo')\n }\n stop () {\n if (!document.body.contains(this.callPlayer('getIframe'))) return\n this.callPlayer('stopVideo')\n }\n seekTo (amount) {\n this.callPlayer('seekTo', amount)\n if (!this.props.playing) {\n this.pause()\n }\n }\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction * 100)\n }\n mute = () => {\n this.callPlayer('mute')\n }\n unmute = () => {\n this.callPlayer('unMute')\n }\n setPlaybackRate (rate) {\n this.callPlayer('setPlaybackRate', rate)\n }\n setLoop (loop) {\n this.callPlayer('setLoop', loop)\n }\n getDuration () {\n return this.callPlayer('getDuration')\n }\n getCurrentTime () {\n return this.callPlayer('getCurrentTime')\n }\n getSecondsLoaded () {\n return this.callPlayer('getVideoLoadedFraction') * this.getDuration()\n }\n ref = container => {\n this.container = container\n }\n render () {\n const style = {\n width: '100%',\n height: '100%',\n ...this.props.style\n }\n return (\n <div style={style}>\n <div ref={this.ref} />\n </div>\n )\n }\n}\n\nexport default createSinglePlayer(YouTube)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/YouTube.js","import React, { Component } from 'react'\n\nimport { propTypes, defaultProps } from './props'\nimport { isEqual } from './utils'\n\nconst SEEK_ON_PLAY_EXPIRY = 5000\n\nexport default class Player extends Component {\n static displayName = 'Player'\n static propTypes = propTypes\n static defaultProps = defaultProps\n mounted = false\n isReady = false\n isPlaying = false // Track playing state internally to prevent bugs\n isLoading = true // Use isLoading to prevent onPause when switching URL\n loadOnReady = null\n startOnPlay = true\n seekOnPlay = null\n onDurationCalled = false\n componentDidMount () {\n this.mounted = true\n this.player.load(this.props.url)\n this.progress()\n }\n componentWillUnmount () {\n clearTimeout(this.progressTimeout)\n clearTimeout(this.durationCheckTimeout)\n if (this.isReady) {\n this.player.stop()\n }\n if (this.player.disablePIP) {\n this.player.disablePIP()\n }\n this.mounted = false\n }\n componentWillReceiveProps (nextProps) {\n // Invoke player methods based on incoming props\n const { url, playing, volume, muted, playbackRate, pip, loop } = this.props\n if (!isEqual(url, nextProps.url)) {\n if (this.isLoading) {\n console.warn(`ReactPlayer: the attempt to load ${nextProps.url} is being deferred until the player has loaded`)\n this.loadOnReady = nextProps.url\n return\n }\n this.isLoading = true\n this.startOnPlay = true\n this.onDurationCalled = false\n this.player.load(nextProps.url, this.isReady)\n }\n if (!playing && nextProps.playing && !this.isPlaying) {\n this.player.play()\n }\n if (playing && !nextProps.playing && this.isPlaying) {\n this.player.pause()\n }\n if (!pip && nextProps.pip && this.player.enablePIP) {\n this.player.enablePIP()\n } else if (pip && !nextProps.pip && this.player.disablePIP) {\n this.player.disablePIP()\n }\n if (volume !== nextProps.volume && nextProps.volume !== null) {\n this.player.setVolume(nextProps.volume)\n }\n if (muted !== nextProps.muted) {\n if (nextProps.muted) {\n this.player.mute()\n } else {\n this.player.unmute()\n if (nextProps.volume !== null) {\n // Set volume next tick to fix a bug with DailyMotion\n setTimeout(() => this.player.setVolume(nextProps.volume))\n }\n }\n }\n if (playbackRate !== nextProps.playbackRate && this.player.setPlaybackRate) {\n this.player.setPlaybackRate(nextProps.playbackRate)\n }\n if (loop !== nextProps.loop && this.player.setLoop) {\n this.player.setLoop(nextProps.loop)\n }\n }\n getDuration () {\n if (!this.isReady) return null\n return this.player.getDuration()\n }\n getCurrentTime () {\n if (!this.isReady) return null\n return this.player.getCurrentTime()\n }\n getSecondsLoaded () {\n if (!this.isReady) return null\n return this.player.getSecondsLoaded()\n }\n getInternalPlayer = (key) => {\n if (!this.player) return null\n return this.player[key]\n }\n progress = () => {\n if (this.props.url && this.player && this.isReady) {\n const playedSeconds = this.getCurrentTime() || 0\n const loadedSeconds = this.getSecondsLoaded()\n const duration = this.getDuration()\n if (duration) {\n const progress = {\n playedSeconds,\n played: playedSeconds / duration\n }\n if (loadedSeconds !== null) {\n progress.loadedSeconds = loadedSeconds\n progress.loaded = loadedSeconds / duration\n }\n // Only call onProgress if values have changed\n if (progress.played !== this.prevPlayed || progress.loaded !== this.prevLoaded) {\n this.props.onProgress(progress)\n }\n this.prevPlayed = progress.played\n this.prevLoaded = progress.loaded\n }\n }\n this.progressTimeout = setTimeout(this.progress, this.props.progressFrequency || this.props.progressInterval)\n }\n seekTo (amount, type) {\n // When seeking before player is ready, store value and seek later\n if (!this.isReady && amount !== 0) {\n this.seekOnPlay = amount\n setTimeout(() => { this.seekOnPlay = null }, SEEK_ON_PLAY_EXPIRY)\n return\n }\n const isFraction = !type ? (amount > 0 && amount < 1) : type === 'fraction'\n if (isFraction) {\n // Convert fraction to seconds based on duration\n const duration = this.player.getDuration()\n if (!duration) {\n console.warn('ReactPlayer: could not seek using fraction – duration not yet available')\n return\n }\n this.player.seekTo(duration * amount)\n return\n }\n this.player.seekTo(amount)\n }\n onReady = () => {\n if (!this.mounted) return\n this.isReady = true\n this.isLoading = false\n const { onReady, playing, volume, muted } = this.props\n onReady()\n if (!muted && volume !== null) {\n this.player.setVolume(volume)\n }\n if (this.loadOnReady) {\n this.player.load(this.loadOnReady, true)\n this.loadOnReady = null\n } else if (playing) {\n this.player.play()\n }\n this.onDurationCheck()\n }\n onPlay = () => {\n this.isPlaying = true\n this.isLoading = false\n const { onStart, onPlay, playbackRate } = this.props\n if (this.startOnPlay) {\n if (this.player.setPlaybackRate) {\n this.player.setPlaybackRate(playbackRate)\n }\n onStart()\n this.startOnPlay = false\n }\n onPlay()\n if (this.seekOnPlay) {\n this.seekTo(this.seekOnPlay)\n this.seekOnPlay = null\n }\n this.onDurationCheck()\n }\n onPause = (e) => {\n this.isPlaying = false\n if (!this.isLoading) {\n this.props.onPause(e)\n }\n }\n onEnded = () => {\n const { activePlayer, loop, onEnded } = this.props\n if (activePlayer.loopOnEnded && loop) {\n this.seekTo(0)\n }\n if (!loop) {\n this.isPlaying = false\n onEnded()\n }\n }\n onError = (e) => {\n this.isLoading = false\n this.props.onError(e)\n }\n onDurationCheck = () => {\n clearTimeout(this.durationCheckTimeout)\n const duration = this.getDuration()\n if (duration) {\n if (!this.onDurationCalled) {\n this.props.onDuration(duration)\n this.onDurationCalled = true\n }\n } else {\n this.durationCheckTimeout = setTimeout(this.onDurationCheck, 100)\n }\n }\n onLoaded = () => {\n // Sometimes we know loading has stopped but onReady/onPlay are never called\n // so this provides a way for players to avoid getting stuck\n this.isLoading = false\n }\n ref = player => {\n if (player) {\n this.player = player\n }\n }\n render () {\n const Player = this.props.activePlayer\n if (!Player) {\n return null\n }\n return (\n <Player\n {...this.props}\n ref={this.ref}\n onReady={this.onReady}\n onPlay={this.onPlay}\n onPause={this.onPause}\n onEnded={this.onEnded}\n onLoaded={this.onLoaded}\n onError={this.onError}\n />\n )\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/Player.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = 'https://w.soundcloud.com/player/api.js'\nconst SDK_GLOBAL = 'SC'\nconst MATCH_URL = /(soundcloud\\.com|snd\\.sc)\\/.+$/\n\nexport class SoundCloud extends Component {\n static displayName = 'SoundCloud'\n static canPlay = url => MATCH_URL.test(url)\n static loopOnEnded = true\n\n callPlayer = callPlayer\n duration = null\n currentTime = null\n fractionLoaded = null\n load (url, isReady) {\n getSDK(SDK_URL, SDK_GLOBAL).then(SC => {\n if (!this.iframe) return\n const { PLAY, PLAY_PROGRESS, PAUSE, FINISH, ERROR } = SC.Widget.Events\n if (!isReady) {\n this.player = SC.Widget(this.iframe)\n this.player.bind(PLAY, this.props.onPlay)\n this.player.bind(PAUSE, this.props.onPause)\n this.player.bind(PLAY_PROGRESS, e => {\n this.currentTime = e.currentPosition / 1000\n this.fractionLoaded = e.loadedProgress\n })\n this.player.bind(FINISH, () => this.props.onEnded())\n this.player.bind(ERROR, e => this.props.onError(e))\n }\n this.player.load(url, {\n ...this.props.config.soundcloud.options,\n callback: () => {\n this.player.getDuration(duration => {\n this.duration = duration / 1000\n this.props.onReady()\n })\n }\n })\n })\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n // Nothing to do\n }\n seekTo (seconds) {\n this.callPlayer('seekTo', seconds * 1000)\n }\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction * 100)\n }\n mute = () => {\n this.setVolume(0)\n }\n unmute = () => {\n if (this.props.volume !== null) {\n this.setVolume(this.props.volume)\n }\n }\n getDuration () {\n return this.duration\n }\n getCurrentTime () {\n return this.currentTime\n }\n getSecondsLoaded () {\n return this.fractionLoaded * this.duration\n }\n ref = iframe => {\n this.iframe = iframe\n }\n render () {\n const style = {\n width: '100%',\n height: '100%',\n ...this.props.style\n }\n return (\n <iframe\n ref={this.ref}\n src={`https://w.soundcloud.com/player/?url=${encodeURIComponent(this.props.url)}`}\n style={style}\n frameBorder={0}\n allow='autoplay'\n />\n )\n }\n}\n\nexport default createSinglePlayer(SoundCloud)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/SoundCloud.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = 'https://player.vimeo.com/api/player.js'\nconst SDK_GLOBAL = 'Vimeo'\nconst MATCH_URL = /vimeo\\.com\\/.+/\nconst MATCH_FILE_URL = /vimeo\\.com\\/external\\/.+\\.mp4/\n\nexport class Vimeo extends Component {\n static displayName = 'Vimeo'\n static canPlay = url => {\n if (MATCH_FILE_URL.test(url)) {\n return false\n }\n return MATCH_URL.test(url)\n }\n\n callPlayer = callPlayer\n duration = null\n currentTime = null\n secondsLoaded = null\n load (url) {\n this.duration = null\n getSDK(SDK_URL, SDK_GLOBAL).then(Vimeo => {\n if (!this.container) return\n this.player = new Vimeo.Player(this.container, {\n ...this.props.config.vimeo.playerOptions,\n url,\n autoplay: this.props.playing,\n muted: this.props.muted,\n loop: this.props.loop,\n playsinline: this.props.playsinline\n })\n this.player.ready().then(() => {\n const iframe = this.container.querySelector('iframe')\n iframe.style.width = '100%'\n iframe.style.height = '100%'\n }).catch(this.props.onError)\n this.player.on('loaded', () => {\n this.props.onReady()\n this.refreshDuration()\n })\n this.player.on('play', () => {\n this.props.onPlay()\n this.refreshDuration()\n })\n this.player.on('pause', this.props.onPause)\n this.player.on('seeked', e => this.props.onSeek(e.seconds))\n this.player.on('ended', this.props.onEnded)\n this.player.on('error', this.props.onError)\n this.player.on('timeupdate', ({ seconds }) => {\n this.currentTime = seconds\n })\n this.player.on('progress', ({ seconds }) => {\n this.secondsLoaded = seconds\n })\n }, this.props.onError)\n }\n refreshDuration () {\n this.player.getDuration().then(duration => {\n this.duration = duration\n })\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n this.callPlayer('unload')\n }\n seekTo (seconds) {\n this.callPlayer('setCurrentTime', seconds)\n }\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction)\n }\n setLoop (loop) {\n this.callPlayer('setLoop', loop)\n }\n mute = () => {\n this.setVolume(0)\n }\n unmute = () => {\n if (this.props.volume !== null) {\n this.setVolume(this.props.volume)\n }\n }\n getDuration () {\n return this.duration\n }\n getCurrentTime () {\n return this.currentTime\n }\n getSecondsLoaded () {\n return this.secondsLoaded\n }\n ref = container => {\n this.container = container\n }\n render () {\n const style = {\n width: '100%',\n height: '100%',\n overflow: 'hidden',\n backgroundColor: 'black',\n ...this.props.style\n }\n return (\n <div\n key={this.props.url}\n ref={this.ref}\n style={style}\n />\n )\n }\n}\n\nexport default createSinglePlayer(Vimeo)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/Vimeo.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, parseStartTime } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = 'https://api.dmcdn.net/all.js'\nconst SDK_GLOBAL = 'DM'\nconst SDK_GLOBAL_READY = 'dmAsyncInit'\nconst MATCH_URL = /^(?:(?:https?):)?(?:\\/\\/)?(?:www\\.)?(?:(?:dailymotion\\.com(?:\\/embed)?\\/video)|dai\\.ly)\\/([a-zA-Z0-9]+)(?:_[\\w_-]+)?$/\n\nexport class DailyMotion extends Component {\n static displayName = 'DailyMotion'\n static canPlay = url => MATCH_URL.test(url)\n static loopOnEnded = true\n\n callPlayer = callPlayer\n load (url) {\n const { controls, config, onError, playing } = this.props\n const [, id] = url.match(MATCH_URL)\n if (this.player) {\n this.player.load(id, {\n start: parseStartTime(url),\n autoplay: playing\n })\n return\n }\n getSDK(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY, DM => DM.player).then(DM => {\n if (!this.container) return\n const Player = DM.player\n this.player = new Player(this.container, {\n width: '100%',\n height: '100%',\n video: id,\n params: {\n controls: controls,\n autoplay: this.props.playing,\n mute: this.props.muted,\n start: parseStartTime(url),\n origin: window.location.origin,\n ...config.dailymotion.params\n },\n events: {\n apiready: this.props.onReady,\n seeked: () => this.props.onSeek(this.player.currentTime),\n video_end: this.props.onEnded,\n durationchange: this.onDurationChange,\n pause: this.props.onPause,\n playing: this.props.onPlay,\n waiting: this.props.onBuffer,\n error: event => onError(event)\n }\n })\n }, onError)\n }\n onDurationChange = () => {\n const duration = this.getDuration()\n this.props.onDuration(duration)\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n // Nothing to do\n }\n seekTo (seconds) {\n this.callPlayer('seek', seconds)\n }\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction)\n }\n mute = () => {\n this.callPlayer('setMuted', true)\n }\n unmute = () => {\n this.callPlayer('setMuted', false)\n }\n getDuration () {\n return this.player.duration || null\n }\n getCurrentTime () {\n return this.player.currentTime\n }\n getSecondsLoaded () {\n return this.player.bufferedTime\n }\n ref = container => {\n this.container = container\n }\n render () {\n const style = {\n width: '100%',\n height: '100%',\n backgroundColor: 'black',\n ...this.props.style\n }\n return (\n <div style={style}>\n <div ref={this.ref} />\n </div>\n )\n }\n}\n\nexport default createSinglePlayer(DailyMotion)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/DailyMotion.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, randomString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = '//connect.facebook.net/en_US/sdk.js'\nconst SDK_GLOBAL = 'FB'\nconst SDK_GLOBAL_READY = 'fbAsyncInit'\nconst MATCH_URL = /facebook\\.com\\/([^/?].+\\/)?video(s|\\.php)[/?].*$/\nconst PLAYER_ID_PREFIX = 'facebook-player-'\n\nexport class Facebook extends Component {\n static displayName = 'Facebook'\n static canPlay = url => MATCH_URL.test(url)\n static loopOnEnded = true\n\n callPlayer = callPlayer\n playerID = PLAYER_ID_PREFIX + randomString()\n load (url, isReady) {\n if (isReady) {\n getSDK(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then(FB => FB.XFBML.parse())\n return\n }\n getSDK(SDK_URL, SDK_GLOBAL, SDK_GLOBAL_READY).then(FB => {\n FB.init({\n appId: this.props.config.facebook.appId,\n xfbml: true,\n version: 'v2.5'\n })\n FB.Event.subscribe('xfbml.render', msg => {\n // Here we know the SDK has loaded, even if onReady/onPlay\n // is not called due to a video that cannot be embedded\n this.props.onLoaded()\n })\n FB.Event.subscribe('xfbml.ready', msg => {\n if (msg.type === 'video' && msg.id === this.playerID) {\n this.player = msg.instance\n this.player.subscribe('startedPlaying', this.props.onPlay)\n this.player.subscribe('paused', this.props.onPause)\n this.player.subscribe('finishedPlaying', this.props.onEnded)\n this.player.subscribe('startedBuffering', this.props.onBuffer)\n this.player.subscribe('finishedBuffering', this.props.onBufferEnd)\n this.player.subscribe('error', this.props.onError)\n if (!this.props.muted) {\n // Player is muted by default\n this.callPlayer('unmute')\n }\n this.props.onReady()\n\n // For some reason Facebook have added `visibility: hidden`\n // to the iframe when autoplay fails, so here we set it back\n document.getElementById(this.playerID).querySelector('iframe').style.visibility = 'visible'\n }\n })\n })\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n // Nothing to do\n }\n seekTo (seconds) {\n this.callPlayer('seek', seconds)\n }\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction)\n }\n mute = () => {\n this.callPlayer('mute')\n }\n unmute = () => {\n this.callPlayer('unmute')\n }\n getDuration () {\n return this.callPlayer('getDuration')\n }\n getCurrentTime () {\n return this.callPlayer('getCurrentPosition')\n }\n getSecondsLoaded () {\n return null\n }\n render () {\n const style = {\n width: '100%',\n height: '100%',\n backgroundColor: 'black'\n }\n return (\n <div\n style={style}\n id={this.playerID}\n className='fb-video'\n data-href={this.props.url}\n data-autoplay={this.props.playing ? 'true' : 'false'}\n data-allowfullscreen='true'\n data-controls={this.props.controls ? 'true' : 'false'}\n />\n )\n }\n}\n\nexport default createSinglePlayer(Facebook)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/Facebook.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = '//cdn.embed.ly/player-0.1.0.min.js'\nconst SDK_GLOBAL = 'playerjs'\nconst MATCH_URL = /streamable\\.com\\/([a-z0-9]+)$/\n\nexport class Streamable extends Component {\n static displayName = 'Streamable'\n static canPlay = url => MATCH_URL.test(url)\n\n callPlayer = callPlayer\n duration = null\n currentTime = null\n secondsLoaded = null\n load (url) {\n getSDK(SDK_URL, SDK_GLOBAL).then(playerjs => {\n if (!this.iframe) return\n this.player = new playerjs.Player(this.iframe)\n this.player.setLoop(this.props.loop)\n this.player.on('ready', this.props.onReady)\n this.player.on('play', this.props.onPlay)\n this.player.on('pause', this.props.onPause)\n this.player.on('seeked', this.props.onSeek)\n this.player.on('ended', this.props.onEnded)\n this.player.on('error', this.props.onError)\n this.player.on('timeupdate', ({ duration, seconds }) => {\n this.duration = duration\n this.currentTime = seconds\n })\n this.player.on('buffered', ({ percent }) => {\n if (this.duration) {\n this.secondsLoaded = this.duration * percent\n }\n })\n if (this.props.muted) {\n this.player.mute()\n }\n }, this.props.onError)\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n // Nothing to do\n }\n seekTo (seconds) {\n this.callPlayer('setCurrentTime', seconds)\n }\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction * 100)\n }\n setLoop (loop) {\n this.callPlayer('setLoop', loop)\n }\n mute = () => {\n this.callPlayer('mute')\n }\n unmute = () => {\n this.callPlayer('unmute')\n }\n getDuration () {\n return this.duration\n }\n getCurrentTime () {\n return this.currentTime\n }\n getSecondsLoaded () {\n return this.secondsLoaded\n }\n ref = iframe => {\n this.iframe = iframe\n }\n render () {\n const id = this.props.url.match(MATCH_URL)[1]\n const style = {\n width: '100%',\n height: '100%'\n }\n return (\n <iframe\n ref={this.ref}\n src={`https://streamable.com/o/${id}`}\n frameBorder='0'\n scrolling='no'\n style={style}\n allowFullScreen\n />\n )\n }\n}\n\nexport default createSinglePlayer(Streamable)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/Streamable.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, randomString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = 'https://www.nfl.com/libs/playaction/api.js'\nconst SDK_GLOBAL = 'nfl'\nconst MATCH_FILE_URL = /nflent-vh\\.akamaihd\\.net\\/.+\\.m3u8/\nconst PLAYER_ID_PREFIX = 'facemask-player-'\n\nexport class FaceMask extends Component {\n static displayName = 'FaceMask'\n static canPlay = url => MATCH_FILE_URL.test(url)\n callPlayer = callPlayer\n duration = null\n volume = null\n currentTime = null\n secondsLoaded = null\n playerID = PLAYER_ID_PREFIX + randomString()\n load (url) {\n this.duration = null\n getSDK(SDK_URL, SDK_GLOBAL).then(nfl => {\n if (!this.container) return\n // eslint-disable-next-line new-cap\n this.player = new nfl.playaction({\n containerId: this.playerID,\n initialVideo: { url },\n height: '100%',\n width: '100%'\n })\n const { PLAYER_READY, STATUS, TIME_UPDATE, VOLUME } = nfl.playaction.EVENTS\n const { COMPLETE, ERROR, PAUSED, PLAYING } = nfl.playaction.STATUS\n this.player.on(PLAYER_READY, this.props.onReady)\n this.player.on(VOLUME, this.props.onVolumeChange)\n this.player.on(STATUS, (e) => {\n switch (e.status) {\n case COMPLETE: {\n this.props.onEnded()\n break\n }\n case ERROR: {\n this.props.onError(e)\n break\n }\n case PAUSED: {\n this.props.onPause()\n break\n }\n case PLAYING: {\n this.props.onPlay()\n break\n }\n }\n })\n this.player.on(TIME_UPDATE, ({currentTime, duration}) => {\n this.currentTime = currentTime\n this.duration = duration || Infinity\n })\n }, this.props.onError)\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n this.callPlayer('destroy')\n }\n seekTo (seconds) {\n this.callPlayer('seek', seconds)\n }\n setVolume (fraction) {\n // not supported\n }\n mute () {\n this.callPlayer('mute')\n }\n unmute () {\n this.callPlayer('unmute')\n }\n getDuration () {\n return this.duration\n }\n getCurrentTime () {\n return this.currentTime\n }\n getSecondsLoaded () {\n return this.secondsLoaded\n }\n ref = (container) => {\n this.container = container\n }\n render () {\n const style = {\n width: '100%',\n height: '100%'\n }\n return (\n <div\n id={this.playerID}\n ref={this.ref}\n style={style}\n />\n )\n }\n}\n\nexport default createSinglePlayer(FaceMask)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/FaceMask.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = '//fast.wistia.com/assets/external/E-v1.js'\nconst SDK_GLOBAL = 'Wistia'\nconst MATCH_URL = /(?:wistia\\.com|wi\\.st)\\/(?:medias|embed)\\/(.*)$/\n\nexport class Wistia extends Component {\n static displayName = 'Wistia'\n static canPlay = url => MATCH_URL.test(url)\n static loopOnEnded = true\n\n callPlayer = callPlayer\n getID (url) {\n return url && url.match(MATCH_URL)[1]\n }\n load (url) {\n const { playing, muted, controls, onReady, onPlay, onPause, onSeek, onEnded, config, onError } = this.props\n getSDK(SDK_URL, SDK_GLOBAL).then(() => {\n window._wq = window._wq || []\n window._wq.push({\n id: this.getID(url),\n options: {\n autoPlay: playing,\n silentAutoPlay: 'allow',\n muted: muted,\n controlsVisibleOnLoad: controls,\n ...config.wistia.options\n },\n onReady: player => {\n this.player = player\n this.unbind()\n this.player.bind('play', onPlay)\n this.player.bind('pause', onPause)\n this.player.bind('seek', onSeek)\n this.player.bind('end', onEnded)\n onReady()\n }\n })\n }, onError)\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n unbind () {\n const { onPlay, onPause, onSeek, onEnded } = this.props\n this.player.unbind('play', onPlay)\n this.player.unbind('pause', onPause)\n this.player.unbind('seek', onSeek)\n this.player.unbind('end', onEnded)\n }\n stop () {\n this.unbind()\n this.callPlayer('remove')\n }\n seekTo (seconds) {\n this.callPlayer('time', seconds)\n }\n setVolume (fraction) {\n this.callPlayer('volume', fraction)\n }\n mute = () => {\n this.callPlayer('mute')\n }\n unmute = () => {\n this.callPlayer('unmute')\n }\n setPlaybackRate (rate) {\n this.callPlayer('playbackRate', rate)\n }\n getDuration () {\n return this.callPlayer('duration')\n }\n getCurrentTime () {\n return this.callPlayer('time')\n }\n getSecondsLoaded () {\n return null\n }\n render () {\n const id = this.getID(this.props.url)\n const className = `wistia_embed wistia_async_${id}`\n const style = {\n width: '100%',\n height: '100%'\n }\n return (\n <div key={id} className={className} style={style} />\n )\n }\n}\n\nexport default createSinglePlayer(Wistia)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/Wistia.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, randomString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = 'https://player.twitch.tv/js/embed/v1.js'\nconst SDK_GLOBAL = 'Twitch'\nconst MATCH_VIDEO_URL = /(?:www\\.|go\\.)?twitch\\.tv\\/videos\\/(\\d+)($|\\?)/\nconst MATCH_CHANNEL_URL = /(?:www\\.|go\\.)?twitch\\.tv\\/([a-z0-9_]+)($|\\?)/\nconst PLAYER_ID_PREFIX = 'twitch-player-'\n\nexport class Twitch extends Component {\n static displayName = 'Twitch'\n static canPlay = url => MATCH_VIDEO_URL.test(url) || MATCH_CHANNEL_URL.test(url)\n static loopOnEnded = true\n\n callPlayer = callPlayer\n playerID = PLAYER_ID_PREFIX + randomString()\n load (url, isReady) {\n const { playsinline, onError, config } = this.props\n const isChannel = MATCH_CHANNEL_URL.test(url)\n const id = isChannel ? url.match(MATCH_CHANNEL_URL)[1] : url.match(MATCH_VIDEO_URL)[1]\n if (isReady) {\n if (isChannel) {\n this.player.setChannel(id)\n } else {\n this.player.setVideo('v' + id)\n }\n return\n }\n getSDK(SDK_URL, SDK_GLOBAL).then(Twitch => {\n this.player = new Twitch.Player(this.playerID, {\n video: isChannel ? '' : id,\n channel: isChannel ? id : '',\n height: '100%',\n width: '100%',\n playsinline: playsinline,\n autoplay: this.props.playing,\n muted: this.props.muted,\n ...config.twitch.options\n })\n const { READY, PLAYING, PAUSE, ENDED } = Twitch.Player\n this.player.addEventListener(READY, this.props.onReady)\n this.player.addEventListener(PLAYING, this.props.onPlay)\n this.player.addEventListener(PAUSE, this.props.onPause)\n this.player.addEventListener(ENDED, this.props.onEnded)\n }, onError)\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n this.callPlayer('pause')\n }\n seekTo (seconds) {\n this.callPlayer('seek', seconds)\n }\n getVolume () {\n return this.callPlayer('getVolume')\n }\n getMuted () {\n return this.callPlayer('getMuted')\n }\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction)\n }\n mute = () => {\n this.callPlayer('setMuted', true)\n }\n unmute = () => {\n this.callPlayer('setMuted', false)\n }\n getDuration () {\n return this.callPlayer('getDuration')\n }\n getCurrentTime () {\n return this.callPlayer('getCurrentTime')\n }\n getSecondsLoaded () {\n return null\n }\n render () {\n const style = {\n width: '100%',\n height: '100%'\n }\n return (\n <div style={style} id={this.playerID} />\n )\n }\n}\n\nexport default createSinglePlayer(Twitch)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/Twitch.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, randomString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = 'https://developers.ustream.tv/js/ustream-embedapi.min.js'\nconst SDK_GLOBAL = 'UstreamEmbed'\nconst MATCH_URL = /(ustream.tv\\/channel\\/)([^#&?/]*)/\nconst PLAYER_ID_PREFIX = 'UstreamLive-player-'\nexport class UstreamLive extends Component {\n static displayName = 'UstreamLive';\n static canPlay = url => MATCH_URL.test(url)\n static loopOnEnded = false;\n\n state = {\n ustreamSrc: null\n }\n\n playerID = PLAYER_ID_PREFIX + randomString()\n\n callPlayer = callPlayer\n parseId (url) {\n const m = url.match(MATCH_URL)\n return m[2]\n }\n componentDidUpdate (prevProps) {\n // reset ustreamSrc on reload\n if (prevProps.url && (prevProps.url !== this.props.url)) {\n this.setState({\n ustreamSrc: null\n })\n }\n }\n\n load () {\n const {onEnded, onError, onPause, onPlay, onReady, playing, url} = this.props\n const channelId = this.parseId(url)\n this.setState({\n ustreamSrc: `https://www.ustream.tv/embed/${channelId}?html5ui=1&autoplay=${playing}&controls=false&showtitle=false`\n })\n getSDK(SDK_URL, SDK_GLOBAL).then(UstreamEmbed => {\n if (!this.container) return\n this.currentTime = 0\n this.player = UstreamEmbed(this.playerID)\n this.player.addListener('playing', (type, playing) => {\n if (playing) {\n this.playTime = Date.now()\n onPlay()\n } else {\n this.currentTime = this.getCurrentTime()\n this.playTime = null\n onPause()\n }\n })\n this.player.addListener('live', onReady)\n this.player.addListener('offline', onReady)\n this.player.addListener('finished', onEnded)\n this.player.getProperty('duration', (duration) => {\n this.player.duration = duration || Infinity\n })\n }, onError)\n }\n // todo\n mute = () => {}\n // todo\n unmute = () => {}\n play () {\n this.callPlayer('callMethod', 'play')\n }\n pause () {\n this.callPlayer('callMethod', 'pause')\n }\n stop () {\n this.callPlayer('callMethod', 'stop')\n }\n seekTo (seconds) {\n this.callPlayer('callMethod', 'seek', seconds)\n }\n setVolume (fraction) {\n this.callPlayer('callMethod', 'volume', fraction * 100)\n }\n getDuration () {\n return Infinity\n }\n getCurrentTime () {\n let playing = 0\n if (this.playTime) {\n playing = (Date.now() - this.playTime) / 1000\n }\n return this.currentTime + playing\n }\n getSecondsLoaded () {\n return null\n }\n ref = container => {\n this.container = container\n }\n render () {\n const style = {\n width: '100%',\n height: '100%'\n }\n\n const {ustreamSrc} = this.state\n return (\n ustreamSrc && <iframe\n id={this.playerID}\n ref={this.ref}\n src={ustreamSrc}\n frameBorder='0'\n scrolling='no'\n style={style}\n allowFullScreen\n />\n )\n }\n}\n\nexport default createSinglePlayer(UstreamLive)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/UstreamLive.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, randomString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = 'https://developers.ustream.tv/js/ustream-embedapi.min.js'\nconst SDK_GLOBAL = 'UstreamEmbed'\nconst MATCH_URL = /(ustream.tv\\/recorded\\/)([^#&?/]*)/\nconst PLAYER_ID_PREFIX = 'UstreamVideo-player-'\nexport class UstreamVideo extends Component {\n static displayName = 'UstreamVideo';\n static canPlay = url => MATCH_URL.test(url)\n static loopOnEnded = false;\n\n state = {\n ustreamSrc: null\n }\n\n playerID = PLAYER_ID_PREFIX + randomString()\n\n callPlayer = callPlayer\n parseId (url) {\n const m = url.match(MATCH_URL)\n return m[2]\n }\n componentDidUpdate (prevProps) {\n // reset ustreamSrc on reload\n if (prevProps.url && (prevProps.url !== this.props.url)) {\n this.setState({\n ustreamSrc: null\n })\n }\n }\n\n componentWillUnmount () {\n // clear the interval below\n if (this.currentTimeInterval) {\n clearInterval(this.currentTimeInterval)\n }\n }\n\n // there's no events to update progress and duration,\n // so we're going to set an interval here. Also, duration\n // is zero or null for the first few seconds. Couldn't find\n // a deterministic event to let us know when we should grab the duration.\n initInterval () {\n if (this.currentTimeInterval) {\n return\n }\n this.currentTimeInterval = setInterval(() => {\n if (this.player) {\n this.player.getProperty('progress', (progress) => {\n this.player.currentTime = progress\n })\n this.player.getProperty('duration', (duration) => {\n this.player.duration = duration\n })\n }\n }, 500)\n }\n\n load () {\n const {onEnded, onError, onPause, onPlay, onReady, playing, url} = this.props\n const videoId = this.parseId(url)\n this.setState({\n ustreamSrc: `https://www.ustream.tv/embed/recorded/${videoId}?html5ui=1&autoplay=${playing}&controls=false&showtitle=false`\n })\n getSDK(SDK_URL, SDK_GLOBAL).then(UstreamEmbed => {\n if (!this.container) return\n this.player = UstreamEmbed(this.playerID)\n this.player.addListener('playing', (type, playing) => {\n playing ? onPlay() : onPause()\n })\n this.player.addListener('ready', () => {\n this.initInterval()\n onReady()\n })\n this.player.addListener('finished', onEnded)\n }, onError)\n }\n // todo\n mute = () => {}\n // todo\n unmute = () => {}\n play () {\n this.callPlayer('callMethod', 'play')\n }\n pause () {\n this.callPlayer('callMethod', 'pause')\n }\n stop () {\n this.callPlayer('callMethod', 'stop')\n }\n seekTo (seconds) {\n this.callPlayer('callMethod', 'seek', seconds)\n }\n setVolume (fraction) {\n this.callPlayer('callMethod', 'volume', fraction * 100)\n }\n getDuration () {\n return this.player.duration\n }\n getCurrentTime () {\n return this.player.currentTime\n }\n getSecondsLoaded () {\n return null\n }\n ref = container => {\n this.container = container\n }\n render () {\n const style = {\n width: '100%',\n height: '100%'\n }\n\n const {ustreamSrc} = this.state\n return (\n ustreamSrc && <iframe\n id={this.playerID}\n ref={this.ref}\n src={ustreamSrc}\n frameBorder='0'\n scrolling='no'\n style={style}\n allowFullScreen\n />\n )\n }\n}\n\nexport default createSinglePlayer(UstreamVideo)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/UstreamVideo.js","import React, { Component } from 'react'\n\nimport { randomString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst PLAYER_ID_PREFIX = 'Iframe-player-'\nexport class Iframe extends Component {\n static displayName = 'Iframe';\n static canPlay = url => true\n playerID = PLAYER_ID_PREFIX + randomString()\n player = {\n currentTime: 0\n }\n load (url) {\n if (!this.container) {\n this.props.onReady()\n } else {\n setTimeout(() => this.props.onReady(), 3000)\n }\n }\n play () {\n this.playTime = Date.now()\n this.props.onPlay()\n }\n pause () {\n this.player.currentTime = this.getCurrentTime()\n this.playTime = null\n this.props.onPause()\n }\n stop () {\n this.player.currentTime = this.getCurrentTime()\n this.playTime = null\n this.props.onPause()\n }\n seekTo (seconds) {\n // no support\n }\n setVolume (fraction) {\n // no support\n }\n mute = () => {\n // no support\n }\n unmute = () => {\n // no support\n }\n getDuration () {\n return Infinity\n }\n getCurrentTime () {\n let playing = 0\n if (this.playTime) {\n playing = (Date.now() - this.playTime) / 1000\n }\n return this.player.currentTime + playing\n }\n getSecondsLoaded () {\n return null\n }\n ref = container => {\n this.container = container\n }\n render () {\n const style = {\n width: '100%',\n height: '100%'\n }\n const {url, playing} = this.props\n if (playing) {\n return (\n <iframe\n id={this.playerID}\n ref={this.ref}\n src={playing && url}\n frameBorder='0'\n scrolling='no'\n style={style}\n allowFullScreen\n />\n )\n } else {\n // pause flow for iframe\n return (\n <div style={style} >\n <div style={{\n alignItems: 'center',\n background: 'rgba(255,255,255,0.3)',\n display: 'flex',\n height: '100%',\n justifyContent: 'center',\n width: '100%'\n }}>\n <div className='pause' style={{\n borderStyle: 'double',\n borderWidth: '0px 0px 0px 50px',\n color: 'gray',\n height: '60px'\n }} />\n </div>\n </div>\n )\n }\n }\n}\n\nexport default createSinglePlayer(Iframe)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/Iframe.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, queryString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = '//widget.mixcloud.com/media/js/widgetApi.js'\nconst SDK_GLOBAL = 'Mixcloud'\nconst MATCH_URL = /mixcloud\\.com\\/([^/]+\\/[^/]+)/\n\nexport class Mixcloud extends Component {\n static displayName = 'Mixcloud'\n static canPlay = url => MATCH_URL.test(url)\n static loopOnEnded = true\n\n callPlayer = callPlayer\n duration = null\n currentTime = null\n secondsLoaded = null\n load (url) {\n getSDK(SDK_URL, SDK_GLOBAL).then(Mixcloud => {\n this.player = Mixcloud.PlayerWidget(this.iframe)\n this.player.ready.then(() => {\n this.player.events.play.on(this.props.onPlay)\n this.player.events.pause.on(this.props.onPause)\n this.player.events.ended.on(this.props.onEnded)\n this.player.events.error.on(this.props.error)\n this.player.events.progress.on((seconds, duration) => {\n this.currentTime = seconds\n this.duration = duration\n })\n this.props.onReady()\n })\n }, this.props.onError)\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n // Nothing to do\n }\n seekTo (seconds) {\n this.callPlayer('seek', seconds)\n }\n setVolume (fraction) {\n // No volume support\n }\n mute = () => {\n // No volume support\n }\n unmute = () => {\n // No volume support\n }\n getDuration () {\n return this.duration\n }\n getCurrentTime () {\n return this.currentTime\n }\n getSecondsLoaded () {\n return null\n }\n ref = iframe => {\n this.iframe = iframe\n }\n render () {\n const { url, config } = this.props\n const id = url.match(MATCH_URL)[1]\n const style = {\n width: '100%',\n height: '100%'\n }\n const query = queryString({\n ...config.mixcloud.options,\n feed: `/${id}/`\n })\n // We have to give the iframe a key here to prevent a\n // weird dialog appearing when loading a new track\n return (\n <iframe\n key={id}\n ref={this.ref}\n style={style}\n src={`https://www.mixcloud.com/widget/iframe/?${query}`}\n frameBorder='0'\n />\n )\n }\n}\n\nexport default createSinglePlayer(Mixcloud)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/Mixcloud.js","import React, { Component } from 'react'\n\nimport { getSDK, isMediaStream } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst IOS = typeof navigator !== 'undefined' && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream\nconst AUDIO_EXTENSIONS = /\\.(m4a|mp4a|mpga|mp2|mp2a|mp3|m2a|m3a|wav|weba|aac|oga|spx)($|\\?)/i\nconst VIDEO_EXTENSIONS = /\\.(mp4|og[gv]|webm|mov|m4v)($|\\?)/i\nconst HLS_EXTENSIONS = /\\.(m3u8)($|\\?)/i\nconst HLS_SDK_URL = 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/VERSION/hls.min.js'\nconst HLS_GLOBAL = 'Hls'\nconst DASH_EXTENSIONS = /\\.(mpd)($|\\?)/i\nconst DASH_SDK_URL = 'https://cdnjs.cloudflare.com/ajax/libs/dashjs/VERSION/dash.all.min.js'\nconst DASH_GLOBAL = 'dashjs'\nconst MATCH_DROPBOX_URL = /www\\.dropbox\\.com\\/.+/\n\nfunction canPlay (url) {\n if (url instanceof Array) {\n for (let item of url) {\n if (typeof item === 'string' && canPlay(item)) {\n return true\n }\n if (canPlay(item.src)) {\n return true\n }\n }\n return false\n }\n if (isMediaStream(url)) {\n return true\n }\n return (\n AUDIO_EXTENSIONS.test(url) ||\n VIDEO_EXTENSIONS.test(url) ||\n HLS_EXTENSIONS.test(url) ||\n DASH_EXTENSIONS.test(url)\n )\n}\n\nfunction canEnablePIP (url) {\n return canPlay(url) && !!document.pictureInPictureEnabled && !AUDIO_EXTENSIONS.test(url)\n}\n\nexport class FilePlayer extends Component {\n static displayName = 'FilePlayer'\n static canPlay = canPlay\n static canEnablePIP = canEnablePIP\n\n componentDidMount () {\n this.addListeners()\n if (IOS) {\n this.player.load()\n }\n }\n componentWillReceiveProps (nextProps) {\n if (this.shouldUseAudio(this.props) !== this.shouldUseAudio(nextProps)) {\n this.removeListeners()\n }\n }\n componentDidUpdate (prevProps) {\n if (this.shouldUseAudio(this.props) !== this.shouldUseAudio(prevProps)) {\n this.addListeners()\n }\n }\n componentWillUnmount () {\n this.removeListeners()\n }\n addListeners () {\n const {\n onReady, onPlay, onBuffer, onBufferEnd,\n onPause, onEnded, onError, playsinline, onEnablePIP,\n onVolumeChange, videoElementId\n } = this.props\n this.player.addEventListener('canplay', onReady)\n this.player.addEventListener('play', onPlay)\n this.player.addEventListener('waiting', onBuffer)\n this.player.addEventListener('playing', onBufferEnd)\n this.player.addEventListener('pause', onPause)\n this.player.addEventListener('seeked', this.onSeek)\n this.player.addEventListener('ended', onEnded)\n this.player.addEventListener('error', onError)\n this.player.addEventListener('volumeChange', onVolumeChange)\n this.player.setAttribute('id', videoElementId)\n this.player.addEventListener('enterpictureinpicture', onEnablePIP)\n this.player.addEventListener('leavepictureinpicture', this.onDisablePIP)\n if (playsinline) {\n this.player.setAttribute('playsinline', '')\n this.player.setAttribute('webkit-playsinline', '')\n this.player.setAttribute('x5-playsinline', '')\n }\n }\n removeListeners () {\n const {\n onReady, onPlay, onBuffer, onBufferEnd,\n onPause, onEnded, onError, onEnablePIP,\n onVolumeChange\n } = this.props\n this.player.removeEventListener('canplay', onReady)\n this.player.removeEventListener('play', onPlay)\n this.player.removeEventListener('waiting', onBuffer)\n this.player.removeEventListener('playing', onBufferEnd)\n this.player.removeEventListener('pause', onPause)\n this.player.removeEventListener('seeked', this.onSeek)\n this.player.removeEventListener('ended', onEnded)\n this.player.removeEventListener('error', onError)\n this.player.removeEventListener('volumeChange', onVolumeChange)\n this.player.removeEventListener('enterpictureinpicture', onEnablePIP)\n this.player.removeEventListener('leavepictureinpicture', this.onDisablePIP)\n }\n onDisablePIP = e => {\n const { onDisablePIP, playing } = this.props\n onDisablePIP(e)\n if (playing) {\n this.play()\n }\n }\n onSeek = e => {\n this.props.onSeek(e.target.currentTime)\n }\n shouldUseAudio (props) {\n if (props.config.file.forceVideo) {\n return false\n }\n if (props.config.file.attributes.poster) {\n return false // Use <video> so that poster is shown\n }\n return AUDIO_EXTENSIONS.test(props.url) || props.config.file.forceAudio\n }\n shouldUseHLS (url) {\n return (HLS_EXTENSIONS.test(url) && !IOS) || this.props.config.file.forceHLS\n }\n shouldUseDASH (url) {\n return DASH_EXTENSIONS.test(url) || this.props.config.file.forceDASH\n }\n load (url) {\n const { hlsVersion, dashVersion } = this.props.config.file\n if (this.shouldUseHLS(url)) {\n getSDK(HLS_SDK_URL.replace('VERSION', hlsVersion), HLS_GLOBAL).then(Hls => {\n this.hls = new Hls(this.props.config.file.hlsOptions)\n this.hls.on(Hls.Events.ERROR, (e, data) => {\n this.props.onError(e, data, this.hls, Hls)\n })\n this.hls.loadSource(url)\n this.hls.attachMedia(this.player)\n })\n }\n if (this.shouldUseDASH(url)) {\n getSDK(DASH_SDK_URL.replace('VERSION', dashVersion), DASH_GLOBAL).then(dashjs => {\n this.dash = dashjs.MediaPlayer().create()\n this.dash.initialize(this.player, url, this.props.playing)\n this.dash.getDebug().setLogToBrowserConsole(false)\n })\n }\n\n if (url instanceof Array) {\n // When setting new urls (<source>) on an already loaded video,\n // HTMLMediaElement.load() is needed to reset the media element\n // and restart the media resource. Just replacing children source\n // dom nodes is not enough\n this.player.load()\n } else if (isMediaStream(url)) {\n try {\n this.player.srcObject = url\n } catch (e) {\n this.player.src = window.URL.createObjectURL(url)\n }\n }\n }\n play () {\n const promise = this.player.play()\n if (promise) {\n promise.catch(this.props.onError)\n }\n }\n pause () {\n this.player.pause()\n }\n stop () {\n this.player.removeAttribute('src')\n if (this.hls) {\n this.hls.destroy()\n }\n if (this.dash) {\n this.dash.reset()\n }\n }\n seekTo (seconds) {\n this.player.currentTime = seconds\n }\n setVolume (fraction) {\n this.player.volume = fraction\n }\n mute = () => {\n this.player.muted = true\n }\n unmute = () => {\n this.player.muted = false\n }\n enablePIP () {\n if (this.player.requestPictureInPicture && document.pictureInPictureElement !== this.player) {\n this.player.requestPictureInPicture()\n }\n }\n disablePIP () {\n if (document.exitPictureInPicture && document.pictureInPictureElement === this.player) {\n document.exitPictureInPicture()\n }\n }\n setPlaybackRate (rate) {\n this.player.playbackRate = rate\n }\n getDuration () {\n if (!this.player) return null\n const { duration, seekable } = this.player\n // on iOS, live streams return Infinity for the duration\n // so instead we use the end of the seekable timerange\n if (duration === Infinity && seekable.length > 0) {\n return seekable.end(seekable.length - 1)\n }\n return duration\n }\n getCurrentTime () {\n if (!this.player) return null\n return this.player.currentTime\n }\n getSecondsLoaded () {\n if (!this.player) return null\n const { buffered } = this.player\n if (buffered.length === 0) {\n return 0\n }\n const end = buffered.end(buffered.length - 1)\n const duration = this.getDuration()\n if (end > duration) {\n return duration\n }\n return end\n }\n getSource (url) {\n const useHLS = this.shouldUseHLS(url)\n const useDASH = this.shouldUseDASH(url)\n if (url instanceof Array || isMediaStream(url) || useHLS || useDASH) {\n return undefined\n }\n if (MATCH_DROPBOX_URL.test(url)) {\n return url.replace('www.dropbox.com', 'dl.dropboxusercontent.com')\n }\n return url\n }\n renderSourceElement = (source, index) => {\n if (typeof source === 'string') {\n return <source key={index} src={source} />\n }\n return <source key={index} {...source} />\n }\n renderTrack = (track, index) => {\n return <track key={index} {...track} />\n }\n ref = player => {\n this.player = player\n }\n render () {\n const { url, playing, loop, controls, muted, config, width, height } = this.props\n const useAudio = this.shouldUseAudio(this.props)\n const Element = useAudio ? 'audio' : 'video'\n const style = {\n width: width === 'auto' ? width : '100%',\n height: height === 'auto' ? height : '100%'\n }\n return (\n <Element\n ref={this.ref}\n src={this.getSource(url)}\n style={style}\n preload='auto'\n autoPlay={playing || undefined}\n controls={controls}\n muted={muted}\n loop={loop}\n {...config.file.attributes}>\n {url instanceof Array &&\n url.map(this.renderSourceElement)\n }\n {config.file.tracks.map(this.renderTrack)}\n </Element>\n )\n }\n}\n\nexport default createSinglePlayer(FilePlayer)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/FilePlayer.js","import React, { Component } from 'react'\nimport { callPlayer, randomString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\nimport { loadImaSdk } from '@alugha/ima'\n\nconst PLAYER_ID_PREFIX = 'vast-player-'\nconst CONTENT_ID_PREFIX = 'vast-content-'\nconst PLAY_BUTTON_ID_PREFIX = 'vast-play-'\nconst MATCH_URL = /^VAST:https:\\/\\//i\n\n// Example: https://github.com/googleads/googleads-ima-html5/blob/master/attempt_to_autoplay/ads.js\nexport class VAST extends Component {\n static displayName = 'VAST';\n static canPlay = url => MATCH_URL.test(url);\n\n state = {\n adDisplayContainer: null,\n autoplayChecksResolved: false,\n adObject: null,\n adsInitialized: false,\n adsLoader: null,\n adsManager: null,\n adsRequest: null,\n adsUrl: null,\n autoplayAllowed: null,\n autoplayRequiresMuted: null,\n ima: null,\n preMuteVolume: 0,\n showPlayButton: false\n }\n\n playerID = PLAYER_ID_PREFIX + randomString()\n contentID = CONTENT_ID_PREFIX + randomString()\n playButtonID = PLAY_BUTTON_ID_PREFIX + randomString()\n callPlayer = callPlayer;\n\n onAutoplayWithSoundSuccess () {\n // If we make it here, unmuted autoplay works.\n const videoElement = document.getElementById(this.playerID)\n videoElement.pause()\n this.setState({\n autoplayAllowed: true,\n autoplayRequiresMuted: false,\n autoplayChecksResolved: true\n })\n }\n\n onMutedAutoplaySuccess () {\n // If we make it here, muted autoplay works but unmuted autoplay does not.\n const videoElement = document.getElementById(this.playerID)\n videoElement.pause()\n this.setState({\n autoplayAllowed: true,\n autoplayRequiresMuted: true,\n autoplayChecksResolved: true\n })\n }\n\n onMutedAutoplayFail () {\n // Both muted and unmuted autoplay failed. Fall back to click to play.\n const videoElement = document.getElementById(this.playerID)\n videoElement.volume = 1\n videoElement.muted = false\n this.setState({\n autoplayAllowed: false,\n autoplayRequiresMuted: false,\n autoplayChecksResolved: true\n })\n }\n\n checkMutedAutoplaySupport () {\n const videoElement = document.getElementById(this.playerID)\n videoElement.volume = 0\n videoElement.muted = true\n const promise = videoElement.play()\n if (promise !== undefined) {\n promise.then(() => {\n this.onMutedAutoplaySuccess()\n }).catch(() => {\n this.onMutedAutoplayFail()\n })\n }\n }\n\n checkAutoplaySupport () {\n const videoElement = document.getElementById(this.playerID)\n const promise = videoElement.play()\n if (promise !== undefined) {\n promise\n .then(() => {\n this.onAutoplayWithSoundSuccess()\n })\n .catch(() => {\n this.checkMutedAutoplaySupport()\n })\n }\n }\n\n componentDidUpdate (prevProps, prevState) {\n // sdk is loaded\n if (prevState.adsUrl === null && this.state.adsUrl) {\n return this.checkAutoplaySupport()\n }\n\n // autoplay settings determined\n if (\n prevState.autoplayChecksResolved === false &&\n this.state.autoplayChecksResolved === true\n ) {\n return this.onAutoplayChecksResolved()\n }\n\n // adsManager events listening\n if (prevState.adsManager === null && this.state.adsManager) {\n const { autoplayAllowed } = this.state\n if (autoplayAllowed) {\n this.playAds()\n } else {\n this.setState({showPlayButton: true})\n }\n }\n }\n\n componentWillUnmount () {\n this.removeListeners()\n }\n\n removeListeners () {\n const { adsManager } = this.state\n window.removeEventListener('resize', this._onWindowResize)\n\n if (adsManager && this.eventMap) {\n for (const [event, fn] of Object.entries(this.eventMap)) {\n adsManager.removeEventListener(event, fn)\n }\n }\n }\n\n onWindowResize () {\n const { adsManager, ima } = this.state\n const videoElement = document.getElementById(this.playerID)\n const {offsetHeight: height, offsetWidth: width} = videoElement\n if (!adsManager) return null\n adsManager.resize(width, height, ima.ViewMode.NORMAL)\n }\n\n onLoaded (adEvent) {\n const { onPlay } = this.props\n const adObject = adEvent.getAd()\n onPlay()\n this.setState({adObject})\n }\n\n onAdsManagerLoaded (adsManagerLoadedEvent) {\n const {\n onEnded,\n onPause,\n onPlay,\n onVolumeChange\n } = this.props\n const { ima } = this.state\n const adsManager = adsManagerLoadedEvent.getAdsManager(\n document.getElementById(this.playerID)\n )\n\n // bind resize event\n this._onWindowResize = this.onWindowResize.bind(this)\n window.addEventListener('resize', this._onWindowResize)\n\n this.eventMap = {\n [ima.AdErrorEvent.Type.AD_ERROR]: this.onError.bind(this),\n [ima.AdEvent.Type.COMPLETE]: onEnded.bind(this),\n [ima.AdEvent.Type.LOADED]: this.onLoaded.bind(this),\n [ima.AdEvent.Type.RESUMED]: onPlay.bind(this),\n [ima.AdEvent.Type.PAUSED]: onPause.bind(this),\n [ima.AdEvent.Type.VOLUME_CHANGED]: onVolumeChange.bind(this)\n }\n\n for (const [event, fn] of Object.entries(this.eventMap)) {\n adsManager.addEventListener(event, fn)\n }\n\n this.setState({adsManager})\n }\n\n onAutoplayChecksResolved () {\n const { adsUrl, adsLoader, autoplayAllowed, autoplayRequiresMuted, ima } = this.state\n // setup ads request\n const adsRequest = new ima.AdsRequest()\n adsRequest.adTagUrl = adsUrl\n adsRequest.setAdWillAutoPlay(autoplayAllowed)\n adsRequest.setAdWillPlayMuted(autoplayRequiresMuted)\n adsLoader.requestAds(adsRequest)\n }\n\n playAds () {\n const { adDisplayContainer, adsManager, adsInitialized, ima } = this.state\n const { onReady } = this.props\n try {\n if (!adsInitialized) {\n adDisplayContainer.initialize()\n this.setState({adsInitialized: true})\n }\n // Initialize the ads manager. Ad rules playlist will start at this time.\n adsManager.init(640, 360, ima.ViewMode.NORMAL)\n\n // trigger window resize\n this.onWindowResize()\n\n // Call play to start showing the ad. Single video and overlay ads will\n // start at this time; the call will be ignored for ad rules.\n adsManager.start()\n\n // fire ready\n onReady()\n } catch (adError) {\n // An error may be thrown if there was a problem with the VAST response.\n this.props.onEnded()\n }\n }\n\n load (rawUrl) {\n // replace [RANDOM] or [random] with a randomly generated cache value\n const ord = Math.random() * 10000000000000000\n const url = rawUrl.replace(/\\[random]/ig, ord)\n\n loadImaSdk().then(ima => {\n // Create the ad display container.\n const adDisplayContainer = new ima.AdDisplayContainer(\n document.getElementById(this.contentID),\n document.getElementById(this.playerID)\n )\n\n // Create the ads loader.\n const adsLoader = new ima.AdsLoader(adDisplayContainer)\n\n // Listen and respond to ads loaded and error events\n adsLoader.addEventListener(\n ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,\n this.onAdsManagerLoaded.bind(this),\n false)\n adsLoader.addEventListener(\n ima.AdErrorEvent.Type.AD_ERROR,\n this.onError.bind(this),\n false)\n\n this.setState({\n ima,\n adDisplayContainer,\n adsLoader,\n adsUrl: url.slice('VAST:'.length)\n })\n }).catch(() => {\n // error loading ima, probably because of adblock. just fire onended\n this.props.onEnded()\n })\n }\n\n onError (error) {\n const { onError } = this.props\n const { adsManager } = this.state\n if (adsManager) {\n adsManager.destroy()\n }\n onError(error)\n }\n\n play () {\n const { adsManager } = this.state\n if (!adsManager) return null\n adsManager.resume()\n }\n\n pause () {\n const {adsManager} = this.state\n adsManager.pause()\n }\n\n seekTo () {}\n\n stop () {\n const {adsManager} = this.state\n if (!adsManager) return null\n adsManager.destroy()\n }\n\n setVolume (fraction) {\n const {adsManager} = this.state\n if (!adsManager) return null\n adsManager.setVolume(fraction)\n }\n\n mute = () => {\n const {adsManager} = this.state\n if (!adsManager) return null\n this.setState({preMuteVolume: adsManager.getVolume()})\n this.setVolume(0.0)\n };\n\n unmute = () => {\n const {preMuteVolume} = this.state\n this.setVolume(preMuteVolume)\n };\n\n getDuration () {\n const { adObject } = this.state\n if (!adObject) return null\n const duration = adObject.getDuration()\n return duration > 0 ? duration : null\n }\n\n getCurrentTime () {\n const {adsManager} = this.state\n if (!adsManager) return null\n const duration = this.getDuration()\n const remainingTime = adsManager.getRemainingTime()\n if (Number.isFinite(duration) && Number.isFinite(remainingTime)) {\n return duration - remainingTime\n }\n return null\n }\n\n getSecondsLoaded () {\n return null\n }\n\n ref = (container) => {\n this.container = container\n };\n\n onButtonClick () {\n // Initialize the container. Must be done via a user action where autoplay\n // is not allowed.\n const { adDisplayContainer } = this.state\n adDisplayContainer.initialize()\n const videoElement = document.getElementById(this.playerID)\n this.setState({\n adsInitalized: true,\n showPlayButton: false\n }, () => {\n videoElement.load()\n this.playAds()\n })\n }\n\n render () {\n const { width, height } = this.props\n const { showPlayButton } = this.state\n const dimensions = {\n width: width === 'auto' ? width : '100%',\n height: height === 'auto' ? height : '100%'\n }\n const contentStyle = {\n ...dimensions,\n top: 0,\n left: 0,\n position: 'absolute',\n zIndex: 1\n }\n const playButtonStyle = {\n borderStyle: 'solid',\n borderWidth: '16px 0 16px 26px',\n borderColor: 'transparent transparent transparent white',\n cursor: 'pointer',\n left: '50%',\n marginLeft: '-8px',\n marginTop: '-8px',\n position: 'absolute',\n top: '50%',\n zIndex: 2\n }\n return (\n <div style={{...dimensions, position: 'relative'}}>\n { showPlayButton &&\n <div style={playButtonStyle} id={this.playButtonID} onClick={() => this.onButtonClick()} /> }\n <video\n ref={this.ref}\n controls={false}\n src={'https://www.maestro.io/pkg/dobi-api/4.0/public/blank.mp4'}\n style={dimensions}\n preload='auto'\n id={this.playerID}\n />\n <div id={this.contentID} style={contentStyle} />\n </div>\n )\n }\n}\n\nexport default createSinglePlayer(VAST)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/VAST.js","// Asynchronous loader for external scripts\nvar loadScript = function (src) {\n return new Promise(function (resolve, reject) {\n var script = document.createElement('script');\n script.async = true;\n script.src = src;\n script.onload = resolve;\n script.onerror = reject;\n document.body.appendChild(script);\n });\n};\nexport default loadScript;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@alugha/ima/lib/esm/loadScript.js","import React, { Component } from 'react'\n\nimport { callPlayer, getSDK, randomString } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst SDK_URL = '//cdn.jwplayer.com/libraries/8DNY8ff0.js'\nconst SDK_GLOBAL = 'jwplayer'\n// TODO: figure out all cases\nconst MATCH_VIDEO_URL = /jwplayer/\nconst PLAYER_ID_PREFIX = 'jw-player-'\n\nexport class JWPlayer extends Component {\n static displayName = 'JWPlayer'\n static canPlay = url => MATCH_VIDEO_URL.test(url);\n static loopOnEnded = true\n\n callPlayer = callPlayer\n playerID = PLAYER_ID_PREFIX + randomString()\n load (url, isReady) {\n const { onError } = this.props\n if (isReady) {\n this.player.setup({\n file: url\n })\n } else {\n getSDK(SDK_URL, SDK_GLOBAL).then(jwplayer => {\n this.player = jwplayer(this.playerID).setup({\n file: url\n })\n this.player.on('ready', this.props.onReady)\n this.player.on('play', this.props.onPlay)\n this.player.on('pause', this.props.onPause)\n this.player.on('error', onError)\n }, onError)\n }\n }\n handleUnmount () {\n this.callPlayer('remove')\n }\n play () {\n this.callPlayer('play')\n }\n pause () {\n this.callPlayer('pause')\n }\n stop () {\n this.callPlayer('stop')\n }\n seekTo (seconds) {\n this.callPlayer('seek', seconds)\n }\n getVolume () {\n return this.callPlayer('getVolume') / 100\n }\n getMuted () {\n return this.callPlayer('getMute')\n }\n setVolume (fraction) {\n this.callPlayer('setVolume', fraction * 100)\n }\n mute = () => {\n this.callPlayer('setMute', true)\n }\n unmute = () => {\n this.callPlayer('setMute', false)\n }\n getDuration () {\n return this.callPlayer('getDuration')\n }\n getCurrentTime () {\n return this.callPlayer('getCurrentPosition')\n }\n getSecondsLoaded () {\n return null\n }\n render () {\n const style = {\n width: '100%',\n height: '100%'\n }\n return (\n <div style={style} id={this.playerID} />\n )\n }\n}\n\nexport default createSinglePlayer(JWPlayer)\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/JWPlayer.js","// TODO: ReactPlayer's listener logic is very shaky because if you change the function identity\n// it won't get cleaned up. This is an existing problem so we're not gonna fix it here.\nimport React, { Component } from 'react'\n\nimport { getSDK } from '../utils'\nimport createSinglePlayer from '../singlePlayer'\n\nconst PHENIX_SDK_URL = 'https://unpkg.com/phenix-web-sdk@2019.2.3/dist/phenix-web-sdk.min.js'\nconst PHENIX_SDK_GLOBAL = 'phenix-web-sdk'\n\n// TODO: Add optional auth data parameter at the end\nconst PHENIX_URL_REGEX = /^phenix:(.+?)\\|(.+?)(?:\\|(.+?))?$/i // i hate this so much\n\nfunction getPhenixSdk () {\n return getSDK(PHENIX_SDK_URL, PHENIX_SDK_GLOBAL)\n}\n\nfunction canPlay (url) {\n return PHENIX_URL_REGEX.test(url)\n}\n\nexport class PhenixPlayer extends Component {\n static displayName = 'PhenixPlayer'\n static canPlay = canPlay\n player = null\n channelExpress = null\n\n playerRef = (player) => {\n if (player === this.player) {\n return\n }\n if (this.player) {\n this.removeListeners()\n }\n this.player = player\n if (this.player) {\n this.addListeners()\n }\n }\n\n componentWillUnmount () {\n // TODO: If refs get called with null on unmount, no reason to do this\n if (this.player) {\n this.removeListeners()\n this.player = null\n }\n if (this.channelExpress) {\n this.channelExpress.dispose()\n this.channelExpress = null\n }\n }\n\n addListeners () {\n const { onReady, onPlay, onPause, onEnded, onVolumeChange, onError, playsinline, videoElementId } = this.props\n this.player.addEventListener('canplay', onReady)\n this.player.addEventListener('play', onPlay)\n this.player.addEventListener('pause', onPause)\n this.player.addEventListener('seeked', this.onSeek)\n this.player.addEventListener('ended', onEnded)\n this.player.addEventListener('error', onError)\n this.player.addEventListener('volumechange', onVolumeChange)\n // wow\n this.player.setAttribute('id', videoElementId)\n if (playsinline) {\n this.player.setAttribute('playsinline', '')\n this.player.setAttribute('webkit-playsinline', '')\n }\n }\n removeListeners () {\n const { onReady, onPlay, onPause, onEnded, onVolumeChange, onError } = this.props\n this.player.removeEventListener('canplay', onReady)\n this.player.removeEventListener('play', onPlay)\n this.player.removeEventListener('pause', onPause)\n this.player.removeEventListener('seeked', this.onSeek)\n this.player.removeEventListener('ended', onEnded)\n this.player.removeEventListener('error', onError)\n this.player.removeEventListener('volumechange', onVolumeChange)\n }\n\n onSeek = e => {\n this.props.onSeek(e.target.currentTime)\n }\n\n getPhenixBackendUri (url = this.props.url) {\n return PHENIX_URL_REGEX.exec(url)[1]\n }\n\n getPhenixChannelId (url = this.props.url) {\n return PHENIX_URL_REGEX.exec(url)[2]\n }\n\n getPhenixAuthenticationData (url = this.props.url) {\n const match = PHENIX_URL_REGEX.exec(url)[3]\n return match ? JSON.parse(match) : {}\n }\n\n load (url) {\n const backendUri = this.getPhenixBackendUri(url)\n const channelId = this.getPhenixChannelId(url)\n const authenticationData = this.getPhenixAuthenticationData(url)\n\n const joinChannelCallback = (err, response) => {\n const success = !err && response.status === 'ok'\n if (!success) {\n const error = err || new Error(`Response status: ${response.status}`)\n this.props.onError(error)\n }\n }\n\n const subscriberCallback = (err, response) => {\n const success = !err && ['ok', 'no-stream-playing'].includes(response.status)\n if (!success) {\n const error = err || new Error(`Response status: ${response.status}`)\n this.props.onError(error)\n }\n // otherwise, response.mediaStream.getStreamId() will be a thing\n }\n\n getPhenixSdk().then((phenix) => {\n // TODO: Does this check do anything?\n if (url !== this.props.url) {\n return\n }\n if (this.channelExpress) {\n this.channelExpress.dispose()\n this.channelExpress = null\n }\n this.channelExpress = new phenix.express.ChannelExpress({\n authenticationData,\n backendUri\n })\n this.channelExpress.joinChannel(\n {\n channelId,\n videoElement: this.player\n },\n joinChannelCallback,\n subscriberCallback\n )\n })\n }\n\n play () {\n const promise = this.player.play()\n if (promise) {\n promise.catch(this.props.onError)\n }\n }\n pause () {\n this.player.pause()\n }\n stop () {\n if (this.channelExpress) {\n this.channelExpress.dispose()\n this.channelExpress = null\n }\n }\n seekTo (seconds) {\n if (seconds === Infinity || this.getDuration() === Infinity) {\n return\n }\n this.player.currentTime = seconds\n }\n setVolume (fraction) {\n this.player.volume = fraction\n }\n mute = () => {\n this.player.muted = true\n }\n unmute = () => {\n this.player.muted = false\n }\n setPlaybackRate (rate) {\n this.player.playbackRate = rate\n }\n getDuration () {\n return this.player.duration\n }\n getCurrentTime () {\n return this.player.currentTime\n }\n getSecondsLoaded () {\n const { buffered } = this.player\n if (buffered.length === 0) {\n return 0\n }\n const end = buffered.end(buffered.length - 1)\n const duration = this.getDuration()\n if (end > duration) {\n return duration\n }\n return end\n }\n\n render () {\n const { playing, loop, controls, muted, width, height } = this.props\n const style = {\n width: width === 'auto' ? width : '100%',\n height: height === 'auto' ? height : '100%'\n }\n return (\n <video\n ref={this.playerRef}\n style={style}\n preload='auto' // TODO\n autoPlay={playing} // TODO\n controls={controls} // TODO\n muted={muted}\n loop={loop}\n />\n )\n }\n}\n\nexport default createSinglePlayer(PhenixPlayer) // TODO: WTF does this even do?\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/PhenixPlayer.js","import React, { Component } from 'react'\n\nimport { propTypes, defaultProps, DEPRECATED_CONFIG_PROPS } from './props'\nimport { getConfig, omit, isEqual } from './utils'\nimport players from './players'\nimport Player from './Player'\nimport Preview from './Preview'\nimport { Iframe } from './players/Iframe'\nimport renderPreloadPlayers from './preload'\n\nconst SUPPORTED_PROPS = Object.keys(propTypes)\n\nlet customPlayers = []\n\nexport default class ReactPlayer extends Component {\n static addCustomPlayer = player => {\n customPlayers.push(player)\n }\n static removeCustomPlayers = () => {\n customPlayers = []\n }\n static displayName = 'ReactPlayer'\n static propTypes = propTypes\n static defaultProps = defaultProps\n static canPlay = url => {\n for (let Player of [ ...customPlayers, ...players ]) {\n if (Player.canPlay(url)) {\n return true\n }\n }\n return false\n }\n static canEnablePIP = url => {\n for (let Player of [ ...customPlayers, ...players ]) {\n if (Player.canEnablePIP && Player.canEnablePIP(url)) {\n return true\n }\n }\n return false\n }\n config = getConfig(this.props, defaultProps, true)\n state = {\n showPreview: !!this.props.light\n }\n componentDidMount () {\n if (this.props.progressFrequency) {\n const message = 'ReactPlayer: %cprogressFrequency%c is deprecated, please use %cprogressInterval%c instead'\n console.warn(message, 'font-weight: bold', '', 'font-weight: bold', '')\n }\n }\n shouldComponentUpdate (nextProps, nextState) {\n return !isEqual(this.props, nextProps) || !isEqual(this.state, nextState)\n }\n componentWillUpdate (nextProps) {\n this.config = getConfig(nextProps, defaultProps)\n if (!this.props.light && nextProps.light) {\n this.setState({ showPreview: true })\n }\n }\n onClickPreview = () => {\n this.setState({ showPreview: false })\n }\n getDuration = () => {\n if (!this.player) return null\n return this.player.getDuration()\n }\n getCurrentTime = () => {\n if (!this.player) return null\n return this.player.getCurrentTime()\n }\n getSecondsLoaded = () => {\n if (!this.player) return null\n return this.player.getSecondsLoaded()\n }\n getInternalPlayer = (key = 'player') => {\n if (!this.player) return null\n return this.player.getInternalPlayer(key)\n }\n seekTo = (fraction, type) => {\n if (!this.player) return null\n this.player.seekTo(fraction, type)\n }\n onReady = () => {\n this.props.onReady(this)\n }\n getActivePlayer (url) {\n for (let Player of [ ...customPlayers, ...players ]) {\n if (Player.canPlay(url)) {\n return Player\n }\n }\n // Fall back to FilePlayer if nothing else can play the URL\n return Iframe\n }\n wrapperRef = wrapper => {\n this.wrapper = wrapper\n }\n activePlayerRef = player => {\n this.player = player\n }\n renderActivePlayer (url, activePlayer) {\n if (!url) return null\n return (\n <Player\n {...this.props}\n key={activePlayer.displayName}\n ref={this.activePlayerRef}\n config={this.config}\n activePlayer={activePlayer}\n onReady={this.onReady}\n />\n )\n }\n sortPlayers (a, b) {\n // Retain player order to prevent weird iframe behaviour when switching players\n if (a && b) {\n return a.key < b.key ? -1 : 1\n }\n return 0\n }\n render () {\n const { url, controls, style, width, height, light, wrapper: Wrapper } = this.props\n const showPreview = this.state.showPreview && url\n const otherProps = omit(this.props, SUPPORTED_PROPS, DEPRECATED_CONFIG_PROPS)\n const activePlayer = this.getActivePlayer(url)\n const renderedActivePlayer = this.renderActivePlayer(url, activePlayer)\n const preloadPlayers = renderPreloadPlayers(url, controls, this.config)\n const players = [ renderedActivePlayer, ...preloadPlayers ].sort(this.sortPlayers)\n const preview = <Preview url={url} light={light} onClick={this.onClickPreview} />\n return (\n <Wrapper ref={this.wrapperRef} style={{ ...style, width, height }} {...otherProps}>\n {showPreview ? preview : players}\n </Wrapper>\n )\n }\n}\n\nexport { default as YouTube } from './players/YouTube'\nexport { default as SoundCloud } from './players/SoundCloud'\nexport { default as Vimeo } from './players/Vimeo'\nexport { default as Facebook } from './players/Facebook'\nexport { default as Streamable } from './players/Streamable'\nexport { default as FaceMask } from './players/FaceMask'\nexport { default as Wistia } from './players/Wistia'\nexport { default as Twitch } from './players/Twitch'\nexport { default as DailyMotion } from './players/DailyMotion'\nexport { default as UstreamLive } from './players/UstreamLive'\nexport { default as UstreamVideo } from './players/UstreamVideo'\nexport { default as Iframe } from './players/Iframe'\nexport { default as Mixcloud } from './players/Mixcloud'\nexport { default as FilePlayer } from './players/FilePlayer'\nexport { default as VAST } from './players/VAST'\nexport { default as JWPlayer } from './players/JWPlayer'\nexport { default as PhenixPlayer } from './players/PhenixPlayer'\n\n\n\n// WEBPACK FOOTER //\n// ./src/ReactPlayer.js","\nmodule.exports = function load (src, opts, cb) {\n var head = document.head || document.getElementsByTagName('head')[0]\n var script = document.createElement('script')\n\n if (typeof opts === 'function') {\n cb = opts\n opts = {}\n }\n\n opts = opts || {}\n cb = cb || function() {}\n\n script.type = opts.type || 'text/javascript'\n script.charset = opts.charset || 'utf8';\n script.async = 'async' in opts ? !!opts.async : true\n script.src = src\n\n if (opts.attrs) {\n setAttributes(script, opts.attrs)\n }\n\n if (opts.text) {\n script.text = '' + opts.text\n }\n\n var onend = 'onload' in script ? stdOnEnd : ieOnEnd\n onend(script, cb)\n\n // some good legacy browsers (firefox) fail the 'in' detection above\n // so as a fallback we always set onload\n // old IE will ignore this and new IE will set onload\n if (!script.onload) {\n stdOnEnd(script, cb);\n }\n\n head.appendChild(script)\n}\n\nfunction setAttributes(script, attrs) {\n for (var attr in attrs) {\n script.setAttribute(attr, attrs[attr]);\n }\n}\n\nfunction stdOnEnd (script, cb) {\n script.onload = function () {\n this.onerror = this.onload = null\n cb(null, script)\n }\n script.onerror = function () {\n // this.onload = null here is necessary\n // because even IE9 works not like others\n this.onerror = this.onload = null\n cb(new Error('Failed to load ' + this.src), script)\n }\n}\n\nfunction ieOnEnd (script, cb) {\n script.onreadystatechange = function () {\n if (this.readyState != 'complete' && this.readyState != 'loaded') return\n this.onreadystatechange = null\n cb(null, script) // there is no way to catch loading errors in IE8\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/load-script/index.js","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.deepmerge = factory());\n}(this, (function () { 'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tObject.keys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tObject.keys(source).forEach(function(key) {\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = deepmerge(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nreturn deepmerge_1;\n\n})));\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/deepmerge/dist/umd.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\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')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/prop-types/index.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar emptyFunction = require('fbjs/lib/emptyFunction');\nvar invariant = require('fbjs/lib/invariant');\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\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 invariant(\n false,\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 };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/prop-types/factoryWithThrowingShims.js","\"use strict\";\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nfunction makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n}\n\n/**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\nvar emptyFunction = function emptyFunction() {};\n\nemptyFunction.thatReturns = makeEmptyFunction;\nemptyFunction.thatReturnsFalse = makeEmptyFunction(false);\nemptyFunction.thatReturnsTrue = makeEmptyFunction(true);\nemptyFunction.thatReturnsNull = makeEmptyFunction(null);\nemptyFunction.thatReturnsThis = function () {\n return this;\n};\nemptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n};\n\nmodule.exports = emptyFunction;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/fbjs/lib/emptyFunction.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar validateFormat = function validateFormat(format) {};\n\nif (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n}\n\nfunction invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n}\n\nmodule.exports = invariant;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/fbjs/lib/invariant.js","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/prop-types/lib/ReactPropTypesSecret.js","/// <reference path=\"../typings/ima.d.ts\" />\nimport loadScript from './loadScript';\nvar imaSdkSrc = '//imasdk.googleapis.com/js/sdkloader/ima3.js';\nvar pendingPromise = null;\nvar promiseFinished = function () {\n pendingPromise = null;\n};\nvar loadImaSdk = function () {\n if (window.google && window.google.ima) {\n return Promise.resolve(window.google.ima);\n }\n if (pendingPromise) {\n return pendingPromise;\n }\n pendingPromise = loadScript(imaSdkSrc).then(function () { return window.google.ima; });\n pendingPromise.then(promiseFinished).catch(promiseFinished);\n return pendingPromise;\n};\nexport default loadImaSdk;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@alugha/ima/lib/esm/loadImaSdk.js","import { YouTube } from './YouTube'\nimport { SoundCloud } from './SoundCloud'\nimport { Vimeo } from './Vimeo'\nimport { Facebook } from './Facebook'\nimport { Streamable } from './Streamable'\nimport { FaceMask } from './FaceMask'\nimport { Wistia } from './Wistia'\nimport { Twitch } from './Twitch'\nimport { DailyMotion } from './DailyMotion'\nimport { UstreamLive } from './UstreamLive'\nimport { UstreamVideo } from './UstreamVideo'\nimport { Iframe } from './Iframe'\nimport { Mixcloud } from './Mixcloud'\nimport { FilePlayer } from './FilePlayer'\nimport { VAST } from './VAST'\nimport { JWPlayer } from './JWPlayer'\nimport { PhenixPlayer } from './PhenixPlayer'\n\nexport default [\n PhenixPlayer,\n YouTube,\n SoundCloud,\n Vimeo,\n Facebook,\n Streamable,\n FaceMask,\n Wistia,\n Twitch,\n DailyMotion,\n Mixcloud,\n UstreamLive,\n UstreamVideo,\n JWPlayer,\n VAST,\n FilePlayer,\n Iframe\n]\n\n\n\n// WEBPACK FOOTER //\n// ./src/players/index.js","import React, { Component } from 'react'\n\nconst ICON_SIZE = '64px'\n\nexport default class Preview extends Component {\n state = {\n image: null\n }\n componentDidMount () {\n this.fetchImage(this.props)\n }\n componentWillReceiveProps (nextProps) {\n if (this.props.url !== nextProps.url) {\n this.fetchImage(nextProps)\n }\n }\n fetchImage ({ url, light }) {\n if (typeof light === 'string') {\n this.setState({ image: light })\n return\n }\n this.setState({ image: null })\n return window.fetch(`https://noembed.com/embed?url=${url}`)\n .then(response => response.json())\n .then(data => {\n if (data.thumbnail_url) {\n const image = data.thumbnail_url.replace('height=100', 'height=480')\n this.setState({ image })\n }\n })\n }\n render () {\n const { onClick } = this.props\n const { image } = this.state\n const flexCenter = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center'\n }\n const styles = {\n preview: {\n width: '100%',\n height: '100%',\n backgroundImage: image ? `url(${image})` : undefined,\n backgroundSize: 'cover',\n backgroundPosition: 'center',\n cursor: 'pointer',\n ...flexCenter\n },\n shadow: {\n background: 'radial-gradient(rgb(0, 0, 0, 0.3), rgba(0, 0, 0, 0) 60%)',\n borderRadius: ICON_SIZE,\n width: ICON_SIZE,\n height: ICON_SIZE,\n ...flexCenter\n },\n playIcon: {\n borderStyle: 'solid',\n borderWidth: '16px 0 16px 26px',\n borderColor: 'transparent transparent transparent white',\n marginLeft: '7px'\n }\n }\n return (\n <div style={styles.preview} className='react-player__preview' onClick={onClick}>\n <div style={styles.shadow} className='react-player__shadow'>\n <div style={styles.playIcon} className='react-player__play-icon' />\n </div>\n </div>\n )\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/Preview.js","import React from 'react'\n\nimport Player from './Player'\nimport { YouTube } from './players/YouTube'\nimport { SoundCloud } from './players/SoundCloud'\nimport { Vimeo } from './players/Vimeo'\nimport { DailyMotion } from './players/DailyMotion'\n\nconst PRELOAD_PLAYERS = [\n {\n Player: YouTube,\n configKey: 'youtube',\n url: 'https://www.youtube.com/watch?v=GlCmAC4MHek'\n },\n {\n Player: SoundCloud,\n configKey: 'soundcloud',\n url: 'https://soundcloud.com/seucheu/john-cage-433-8-bit-version'\n },\n {\n Player: Vimeo,\n configKey: 'vimeo',\n url: 'https://vimeo.com/300970506'\n },\n {\n Player: DailyMotion,\n configKey: 'dailymotion',\n url: 'http://www.dailymotion.com/video/xqdpyk'\n }\n]\n\nexport default function renderPreloadPlayers (url, controls, config) {\n const players = []\n\n for (let player of PRELOAD_PLAYERS) {\n if (!player.Player.canPlay(url) && config[player.configKey].preload) {\n players.push(\n <Player\n key={player.Player.displayName}\n activePlayer={player.Player}\n url={player.url}\n controls={controls}\n playing\n muted\n style={{ display: 'none' }}\n />\n )\n }\n }\n\n return players\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/preload.js"],"sourceRoot":""}
\No newline at end of file