mirror of
https://github.com/owntone/owntone-server.git
synced 2024-12-30 17:13:22 -05:00
1 line
424 KiB
Plaintext
1 line
424 KiB
Plaintext
{"version":3,"sources":["webpack:///./src/templates/ContentWithHeading.vue","webpack:///./src/templates/ContentWithHeading.vue?bbaf","webpack:///./src/store/index.js","webpack:///./src/store/mutation_types.js","webpack:///./src/webapi/index.js","webpack:///src/components/NavBarItemOutput.vue","webpack:///./src/components/NavBarItemOutput.vue?121c","webpack:///./src/components/NavBarItemOutput.vue","webpack:///src/components/PlayerButtonPlayPause.vue","webpack:///./src/components/PlayerButtonPlayPause.vue?dbe9","webpack:///./src/components/PlayerButtonPlayPause.vue","webpack:///src/components/PlayerButtonNext.vue","webpack:///./src/components/PlayerButtonNext.vue?82f2","webpack:///./src/components/PlayerButtonNext.vue","webpack:///src/components/PlayerButtonPrevious.vue","webpack:///./src/components/PlayerButtonPrevious.vue?0f91","webpack:///./src/components/PlayerButtonPrevious.vue","webpack:///src/components/PlayerButtonShuffle.vue","webpack:///./src/components/PlayerButtonShuffle.vue?2749","webpack:///./src/components/PlayerButtonShuffle.vue","webpack:///src/components/PlayerButtonConsume.vue","webpack:///./src/components/PlayerButtonConsume.vue?0d69","webpack:///./src/components/PlayerButtonConsume.vue","webpack:///src/components/PlayerButtonRepeat.vue","webpack:///./src/components/PlayerButtonRepeat.vue?6662","webpack:///./src/components/PlayerButtonRepeat.vue","webpack:///src/components/NavbarTop.vue","webpack:///./src/components/NavbarTop.vue?1306","webpack:///./src/components/NavbarTop.vue","webpack:///src/components/NavbarBottom.vue","webpack:///./src/components/NavbarBottom.vue?c3b7","webpack:///./src/components/NavbarBottom.vue","webpack:///src/components/Notifications.vue","webpack:///./src/components/Notifications.vue?dfce","webpack:///./src/components/Notifications.vue","webpack:///src/App.vue","webpack:///./src/App.vue?d4b1","webpack:///./src/App.vue","webpack:///./src/components/ModalDialog.vue?40c8","webpack:///./src/components/ModalDialog.vue","webpack:///src/components/ModalDialog.vue","webpack:///src/components/ListItemQueueItem.vue","webpack:///./src/components/ListItemQueueItem.vue?2ea1","webpack:///./src/components/ListItemQueueItem.vue","webpack:///src/pages/PageQueue.vue","webpack:///./src/pages/PageQueue.vue?4458","webpack:///./src/pages/PageQueue.vue","webpack:///src/pages/PageNowPlaying.vue","webpack:///./src/pages/PageNowPlaying.vue?8f72","webpack:///./src/pages/PageNowPlaying.vue","webpack:///./src/pages/mixin.js","webpack:///./src/components/TabsMusic.vue?13a1","webpack:///./src/components/TabsMusic.vue","webpack:///src/components/TabsMusic.vue","webpack:///src/components/ListItemAlbum.vue","webpack:///./src/components/ListItemAlbum.vue?54f3","webpack:///./src/components/ListItemAlbum.vue","webpack:///src/components/ListItemTrack.vue","webpack:///./src/components/ListItemTrack.vue?6af2","webpack:///./src/components/ListItemTrack.vue","webpack:///src/pages/PageBrowse.vue","webpack:///./src/pages/PageBrowse.vue?f5d5","webpack:///./src/pages/PageBrowse.vue","webpack:///src/pages/PageBrowseRecentlyAdded.vue","webpack:///./src/pages/PageBrowseRecentlyAdded.vue?6f96","webpack:///./src/pages/PageBrowseRecentlyAdded.vue","webpack:///src/pages/PageBrowseRecentlyPlayed.vue","webpack:///./src/pages/PageBrowseRecentlyPlayed.vue?bb1e","webpack:///./src/pages/PageBrowseRecentlyPlayed.vue","webpack:///src/components/ListItemArtist.vue","webpack:///./src/components/ListItemArtist.vue?3ac6","webpack:///./src/components/ListItemArtist.vue","webpack:///src/pages/PageArtists.vue","webpack:///./src/pages/PageArtists.vue?4c1d","webpack:///./src/pages/PageArtists.vue","webpack:///src/pages/PageArtist.vue","webpack:///./src/pages/PageArtist.vue?48f3","webpack:///./src/pages/PageArtist.vue","webpack:///src/pages/PageAlbums.vue","webpack:///./src/pages/PageAlbums.vue?41e0","webpack:///./src/pages/PageAlbums.vue","webpack:///src/pages/PageAlbum.vue","webpack:///./src/pages/PageAlbum.vue?2a3c","webpack:///./src/pages/PageAlbum.vue","webpack:///src/pages/PagePodcasts.vue","webpack:///./src/pages/PagePodcasts.vue?d639","webpack:///./src/pages/PagePodcasts.vue","webpack:///src/pages/PagePodcast.vue","webpack:///./src/pages/PagePodcast.vue?42da","webpack:///./src/pages/PagePodcast.vue","webpack:///src/pages/PageAudiobooks.vue","webpack:///./src/pages/PageAudiobooks.vue?257e","webpack:///./src/pages/PageAudiobooks.vue","webpack:///src/pages/PageAudiobook.vue","webpack:///./src/pages/PageAudiobook.vue?213d","webpack:///./src/pages/PageAudiobook.vue","webpack:///src/components/ListItemPlaylist.vue","webpack:///./src/components/ListItemPlaylist.vue?0c24","webpack:///./src/components/ListItemPlaylist.vue","webpack:///src/pages/PagePlaylists.vue","webpack:///./src/pages/PagePlaylists.vue?dec6","webpack:///./src/pages/PagePlaylists.vue","webpack:///src/pages/PagePlaylist.vue","webpack:///./src/pages/PagePlaylist.vue?3cf4","webpack:///./src/pages/PagePlaylist.vue","webpack:///./src/components/TabsSearch.vue?0f7a","webpack:///./src/components/TabsSearch.vue","webpack:///src/components/TabsSearch.vue","webpack:///src/pages/PageSearch.vue","webpack:///./src/pages/PageSearch.vue?e5a2","webpack:///./src/pages/PageSearch.vue","webpack:///src/pages/PageAbout.vue","webpack:///./src/pages/PageAbout.vue?5c28","webpack:///./src/pages/PageAbout.vue","webpack:///src/components/SpotifyListItemAlbum.vue","webpack:///./src/components/SpotifyListItemAlbum.vue?c44d","webpack:///./src/components/SpotifyListItemAlbum.vue","webpack:///src/components/SpotifyListItemPlaylist.vue","webpack:///./src/components/SpotifyListItemPlaylist.vue?2d36","webpack:///./src/components/SpotifyListItemPlaylist.vue","webpack:///src/pages/SpotifyPageBrowse.vue","webpack:///./src/pages/SpotifyPageBrowse.vue?6aab","webpack:///./src/pages/SpotifyPageBrowse.vue","webpack:///src/pages/SpotifyPageBrowseNewReleases.vue","webpack:///./src/pages/SpotifyPageBrowseNewReleases.vue?02fb","webpack:///./src/pages/SpotifyPageBrowseNewReleases.vue","webpack:///src/pages/SpotifyPageBrowseFeaturedPlaylists.vue","webpack:///./src/pages/SpotifyPageBrowseFeaturedPlaylists.vue?dd26","webpack:///./src/pages/SpotifyPageBrowseFeaturedPlaylists.vue","webpack:///src/pages/SpotifyPageArtist.vue","webpack:///./src/pages/SpotifyPageArtist.vue?a6cf","webpack:///./src/pages/SpotifyPageArtist.vue","webpack:///src/components/SpotifyListItemTrack.vue","webpack:///./src/components/SpotifyListItemTrack.vue?7e13","webpack:///./src/components/SpotifyListItemTrack.vue","webpack:///src/pages/SpotifyPageAlbum.vue","webpack:///./src/pages/SpotifyPageAlbum.vue?fdf9","webpack:///./src/pages/SpotifyPageAlbum.vue","webpack:///src/pages/SpotifyPagePlaylist.vue","webpack:///./src/pages/SpotifyPagePlaylist.vue?fa4c","webpack:///./src/pages/SpotifyPagePlaylist.vue","webpack:///src/components/SpotifyListItemArtist.vue","webpack:///./src/components/SpotifyListItemArtist.vue?20f7","webpack:///./src/components/SpotifyListItemArtist.vue","webpack:///src/pages/SpotifyPageSearch.vue","webpack:///./src/pages/SpotifyPageSearch.vue?9a95","webpack:///./src/pages/SpotifyPageSearch.vue","webpack:///./src/router/index.js","webpack:///./src/filter/index.js","webpack:///./src/progress/index.js","webpack:///./src/main.js","webpack:///./node_modules/moment/locale ^\\.\\/.*$"],"names":["__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_49dc1584_hasScoped_false_transformToRequire_video_src_poster_source_src_img_src_image_xlink_href_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_ContentWithHeading_vue__","__webpack_require__","__vue_styles__","ssrContext","Component","normalizeComponent","__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_ContentWithHeading_vue___default","a","__webpack_exports__","esExports","render","_h","this","$createElement","_c","_self","staticClass","_t","_v","staticStyle","margin-top","staticRenderFns","vue_esm","use","vuex_esm","store","Store","state","config","websocket_port","version","buildoptions","library","artists","albums","songs","db_playtime","updating","audiobooks_count","podcasts_count","outputs","player","repeat","consume","shuffle","volume","item_id","item_length_ms","item_progress_ms","queue","count","items","spotify","spotify_new_releases","spotify_featured_playlists","notifications","next_id","list","recent_searches","hide_singles","show_only_next_items","show_burger_menu","getters","now_playing","item","find","id","undefined","mutations","defineProperty_default","_mutations","libraryStats","playerStatus","newReleases","featuredPlaylists","notification","topic","index","findIndex","elem","splice","push","indexOf","query","length","pop","hideSingles","showOnlyNextItems","showBurgerMenu","actions","add_notification","_ref","commit","newNotification","type","text","timeout","setTimeout","axios_default","interceptors","response","error","dispatch","request","status","statusText","responseURL","promise_default","reject","webapi","get","expression","put","itemId","delete","newPosition","uri","post","position","newState","newRepeatMode","outputId","outputVolume","output","artistId","albumId","playlistId","searchParams","params","NavBarItemOutput","RangeSlider","vue_range_slider_cjs_default","newVolume","selected","values","components_NavBarItemOutput","_vm","flex-grow","class","has-text-grey-light","on","click","set_enabled","type_class","_s","name","attrs","min","max","step","disabled","value","change","set_volume","src_components_NavBarItemOutput","PlayerButtonPlayPause","components_PlayerButtonPlayPause","toggle_play_pause","icon_style","mdi-play","is_playing","mdi-pause","src_components_PlayerButtonPlayPause","PlayerButtonPlayPause_normalizeComponent","PlayerButtonNext","components_PlayerButtonNext","play_next","_m","src_components_PlayerButtonNext","PlayerButtonNext_normalizeComponent","PlayerButtonPrevious","components_PlayerButtonPrevious","play_previous","src_components_PlayerButtonPrevious","PlayerButtonPrevious_normalizeComponent","PlayerButtonShuffle","is_shuffle","components_PlayerButtonShuffle","is-warning","toggle_shuffle_mode","mdi-shuffle","mdi-shuffle-disabled","src_components_PlayerButtonShuffle","PlayerButtonShuffle_normalizeComponent","PlayerButtonConsume","is_consume","components_PlayerButtonConsume","toggle_consume_mode","src_components_PlayerButtonConsume","PlayerButtonConsume_normalizeComponent","PlayerButtonRepeat","is_repeat_single","components_PlayerButtonRepeat","is_repeat_off","toggle_repeat_mode","mdi-repeat","is_repeat_all","mdi-repeat-once","mdi-repeat-off","src_components_PlayerButtonRepeat","PlayerButtonRepeat_normalizeComponent","NavbarTop","components_NavbarTop","role","aria-label","to","active-class","podcasts","tracks","_e","audiobooks","is-active","update_show_burger_menu","_l","key","href","open_about","src_components_NavbarTop","NavbarTop_normalizeComponent","NavbarBottom","components_NavbarBottom","exact","title","artist","src_components_NavbarBottom","NavbarBottom_normalizeComponent","Notifications","components_Notifications","$event","remove","src_components_Notifications","Notifications_normalizeComponent","App","_this","connect","start","progress","meta","next","finish","_this2","data","library_name","open_ws","reconnecting_websocket_default","window","location","hostname","vm","$store","reconnectInterval","update_outputs","update_player_status","update_library_stats","update_queue","update_spotify","_this3","_ref2","_ref3","_ref4","_this4","_ref5","_this5","_ref6","_this6","_ref7","_this7","_ref8","token_timer_id","webapi_token_expires_in","selectortype_template_index_0_src_App","directives","rawName","src_App","App_normalizeComponent","components_ModalDialog","$emit","src_components_ModalDialog","ModalDialog_normalizeComponent","ListItemQueueItem","ModalDialog","current_position","components_ListItemQueueItem","is_next","play","has-text-primary","has-text-grey","album","edit_mode","show_details_modal","show","close","slot","album_artist","year","genre","track_number","disc_number","_f","length_ms","path","src_components_ListItemQueueItem","ListItemQueueItem_normalizeComponent","PageQueue","draggable","vuedraggable_default","oldPosition","oldIndex","pages_PageQueue","is-info","update_show_next_items","queue_clear","options","handle","end","move_item","model","callback","$$v","queue_items","src_pages_PageQueue","PageQueue_normalizeComponent","PageNowPlaying","interval_id","pages_PageNowPlaying","seek","src_pages_PageNowPlaying","PageNowPlaying_normalizeComponent","LoadDataBeforeEnterMixin","dataObject","beforeRouteEnter","from","load","then","set","beforeRouteUpdate","components_TabsMusic","tag","src_components_TabsMusic","TabsMusic_normalizeComponent","webapi_token_valid","ListItemAlbum","artist_id","components_ListItemAlbum","open_album","media_kind","open_artist","track_count","queue_add","src_components_ListItemAlbum","ListItemAlbum_normalizeComponent","ListItemTrack","context_uri","track","album_id","album_artist_id","components_ListItemTrack","date_released","data_kind","time_added","play_track","src_components_ListItemTrack","ListItemTrack_normalizeComponent","PageBrowse","limit","pages_PageBrowse","recently_added","open_browse","recently_played","src_pages_PageBrowse","PageBrowse_normalizeComponent","PageBrowseRecentlyAdded","pages_PageBrowseRecentlyAdded","src_pages_PageBrowseRecentlyAdded","PageBrowseRecentlyAdded_normalizeComponent","PageBrowseRecentlyPlayed","pages_PageBrowseRecentlyPlayed","src_pages_PageBrowseRecentlyPlayed","PageBrowseRecentlyPlayed_normalizeComponent","ListItemArtist","components_ListItemArtist","album_count","src_components_ListItemArtist","ListItemArtist_normalizeComponent","PageArtists","pages_PageArtists","total","update_hide_singles","src_pages_PageArtists","PageArtists_normalizeComponent","PageArtist","pages_PageArtist","src_pages_PageArtist","PageArtist_normalizeComponent","PageAlbums","pages_PageAlbums","src_pages_PageAlbums","PageAlbums_normalizeComponent","PageAlbum","pages_PageAlbum","src_pages_PageAlbum","PageAlbum_normalizeComponent","PagePodcasts","pages_PagePodcasts","src_pages_PagePodcasts","PagePodcasts_normalizeComponent","PagePodcast","pages_PagePodcast","src_pages_PagePodcast","PagePodcast_normalizeComponent","PageAudiobooks","pages_PageAudiobooks","src_pages_PageAudiobooks","PageAudiobooks_normalizeComponent","PageAudiobook","pages_PageAudiobook","src_pages_PageAudiobook","PageAudiobook_normalizeComponent","ListItemPlaylist","playlist","components_ListItemPlaylist","open_playlist","src_components_ListItemPlaylist","ListItemPlaylist_normalizeComponent","PagePlaylists","pages_PagePlaylists","playlists","src_pages_PagePlaylists","PagePlaylists_normalizeComponent","PagePlaylist","playlist_id","pages_PagePlaylist","src_pages_PagePlaylist","PagePlaylist_normalizeComponent","components_TabsSearch","$route","src_components_TabsSearch","TabsSearch_normalizeComponent","focus","offset","search_query","blur","new_search","pages_PageSearch","submit","preventDefault","ref","placeholder","domProps","input","target","composing","recent_search","open_recent_search","open_search_tracks","open_search_artists","open_search_albums","open_search_playlists","src_pages_PageSearch","PageSearch_normalizeComponent","PageSearch","PageAbout","pages_PageAbout","is-loading","update","updated_at","started_at","src_pages_PageAbout","PageAbout_normalizeComponent","SpotifyListItemAlbum","components_SpotifyListItemAlbum","show_details","hide_details","release_date","album_type","src_components_SpotifyListItemAlbum","SpotifyListItemAlbum_normalizeComponent","SpotifyListItemPlaylist","components_SpotifyListItemPlaylist","owner","display_name","src_components_SpotifyListItemPlaylist","SpotifyListItemPlaylist_normalizeComponent","resolve","spotify_web_api_default","webapi_token","spotifyApi","getNewReleases","country","webapi_country","getFeaturedPlaylists","pages_SpotifyPageBrowse","src_pages_SpotifyPageBrowse","SpotifyPageBrowse_normalizeComponent","SpotifyPageBrowse","SpotifyPageBrowseNewReleases","pages_SpotifyPageBrowseNewReleases","src_pages_SpotifyPageBrowseNewReleases","SpotifyPageBrowseNewReleases_normalizeComponent","SpotifyPageBrowseFeaturedPlaylists","pages_SpotifyPageBrowseFeaturedPlaylists","src_pages_SpotifyPageBrowseFeaturedPlaylists","SpotifyPageBrowseFeaturedPlaylists_normalizeComponent","SpotifyPageArtist","getArtist","getArtistAlbums","include_groups","InfiniteLoading","vue_infinite_loading_default","$state","loaded","complete","pages_SpotifyPageArtist","infinite","load_next","src_pages_SpotifyPageArtist","SpotifyPageArtist_normalizeComponent","SpotifyListItemTrack","components_SpotifyListItemTrack","duration_ms","src_components_SpotifyListItemTrack","SpotifyListItemTrack_normalizeComponent","SpotifyPageAlbum","pages_SpotifyPageAlbum","src_pages_SpotifyPageAlbum","SpotifyPageAlbum_normalizeComponent","SpotifyPagePlaylist","getPlaylist","user_id","getPlaylistTracks","pages_SpotifyPagePlaylist","src_pages_SpotifyPagePlaylist","SpotifyPagePlaylist_normalizeComponent","SpotifyListItemArtist","components_SpotifyListItemArtist","popularity","followers","genres","join","src_components_SpotifyListItemArtist","SpotifyListItemArtist_normalizeComponent","reset","search_all","search_param","search","pages_SpotifyPageSearch","search_tracks_next","search_artists_next","search_albums_next","search_playlists_next","src_pages_SpotifyPageSearch","SpotifyPageSearch_normalizeComponent","SpotifyPageSearch","vue_router_esm","router","routes","component","redirect","show_progress","scrollBehavior","savedPosition","x","y","beforeEach","moment_duration_format_default","moment_default","filter","format","duration","withoutSuffix","fromNow","toLocaleString","vue_progressbar_default","color","failedColor","height","productionTip","el","components","template","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-nz","./en-nz.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./gd","./gd.js","./gl","./gl.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-tw","./zh-tw.js","webpackContext","req","webpackContextResolve","Error","keys","Object","module","exports"],"mappings":"2KAAAA,EAAAC,EAAA,QAGA,IASAC,EAZA,SAAAC,GACAF,EAAA,SAgBAG,EAdAH,EAAA,OAcAI,CACAC,EAAAC,EACAP,EAAA,GATA,EAWAE,EAPA,KAEA,MAUAM,EAAA,QAAAJ,EAAA,mQC1BA,IAEAK,GAAiBC,OAFjB,WAA0B,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,WAAqBE,YAAA,YAAsBF,EAAA,OAAYE,YAAA,cAAwBF,EAAA,OAAYE,YAAA,wBAAkCF,EAAA,OAAYE,YAAA,0BAAoCF,EAAA,OAAYE,YAAA,UAAoBF,EAAA,OAAYE,YAAA,eAAyBF,EAAA,OAAYE,YAAA,wCAAkDF,EAAA,OAA/WF,KAA+WK,GAAA,wBAA/WL,KAA+WM,GAAA,KAAAJ,EAAA,OAAiEE,YAAA,yCAAhbJ,KAAmeK,GAAA,uBAAneL,KAAmeM,GAAA,KAAneN,KAAmeK,GAAA,WAAneL,KAAmeM,GAAA,KAAAJ,EAAA,OAAoFK,aAAaC,aAAA,UAApkBR,KAAylBK,GAAA,yBAElmBI,oBACjBb,EAAA,mTCCAc,EAAA,EAAIC,IAAIC,EAAA,GAER,IAAAC,EAAA,IAAmBD,EAAA,EAAKE,OACtBC,OACEC,QACEC,eAAkB,EAClBC,QAAW,GACXC,iBAEFC,SACEC,QAAW,EACXC,OAAU,EACVC,MAAS,EACTC,YAAe,EACfC,UAAY,GAEdC,oBACAC,kBACAC,WACAC,QACEd,MAAS,OACTe,OAAU,MACVC,SAAW,EACXC,SAAW,EACXC,OAAU,EACVC,QAAW,EACXC,eAAkB,EAClBC,iBAAoB,GAEtBC,OACEnB,QAAW,EACXoB,MAAS,EACTC,UAEFC,WAEAC,wBACAC,8BAEAC,eACEC,QAAW,EACXC,SAEFC,mBAEAC,cAAc,EACdC,sBAAsB,EACtBC,kBAAkB,GAGpBC,SACEC,YAAa,SAAApC,GACX,IAAIqC,EAAOrC,EAAMsB,MAAME,MAAMc,KAAK,SAAUD,GAC1C,OAAOA,EAAKE,KAAOvC,EAAMc,OAAOK,UAElC,YAAiBqB,IAATH,KAA2BA,IAIvCI,gBAAAC,IAAAD,EC/D2B,gBD+D3B,SACyBzC,EAAOC,GAC5BD,EAAMC,OAASA,IAFnByC,IAAAC,EC9DkC,uBD8DlC,SAIgC3C,EAAO4C,GACnC5C,EAAMK,QAAUuC,IALpBF,IAAAC,EC7D6C,kCD6D7C,SAO2C3C,EAAOuB,GAC9CvB,EAAMW,iBAAmBY,IAR7BmB,IAAAC,EC5D2C,gCD4D3C,SAUyC3C,EAAOuB,GAC5CvB,EAAMY,eAAiBW,IAX3BmB,IAAAC,EC3D4B,iBD2D5B,SAa0B3C,EAAOa,GAC7Bb,EAAMa,QAAUA,IAdpB6B,IAAAC,EC1DkC,uBD0DlC,SAgBgC3C,EAAO6C,GACnC7C,EAAMc,OAAS+B,IAjBnBH,IAAAC,ECzD0B,eDyD1B,SAmBwB3C,EAAOsB,GAC3BtB,EAAMsB,MAAQA,IApBlBoB,IAAAC,ECxD4B,iBDwD5B,SAsB0B3C,EAAOyB,GAC7BzB,EAAMyB,QAAUA,IAvBpBiB,IAAAC,ECtDkC,uBDsDlC,SAyBgC3C,EAAO8C,GACnC9C,EAAM0B,qBAAuBoB,IA1BjCJ,IAAAC,ECrDwC,6BDqDxC,SA4BsC3C,EAAO+C,GACzC/C,EAAM2B,2BAA6BoB,IA7BvCL,IAAAC,ECnD8B,mBDmD9B,SA+B4B3C,EAAOgD,GAC/B,GAAIA,EAAaC,MAAO,CACtB,IAAIC,EAAQlD,EAAM4B,cAAcE,KAAKqB,UAAU,SAAAC,GAAA,OAAQA,EAAKH,QAAUD,EAAaC,QACnF,GAAIC,GAAS,EAEX,YADAlD,EAAM4B,cAAcE,KAAKuB,OAAOH,EAAO,EAAGF,GAI9ChD,EAAM4B,cAAcE,KAAKwB,KAAKN,KAvClCN,IAAAC,EClDiC,sBDkDjC,SAyC+B3C,EAAOgD,GAClC,IAAME,EAAQlD,EAAM4B,cAAcE,KAAKyB,QAAQP,IAEhC,IAAXE,GACFlD,EAAM4B,cAAcE,KAAKuB,OAAOH,EAAO,KA7C7CR,IAAAC,ECjD+B,oBDiD/B,SAgD6B3C,EAAOwD,GAChC,IAAIN,EAAQlD,EAAM+B,gBAAgBoB,UAAU,SAAAC,GAAA,OAAQA,IAASI,IACzDN,GAAS,GACXlD,EAAM+B,gBAAgBsB,OAAOH,EAAO,GAGtClD,EAAM+B,gBAAgBsB,OAAO,EAAG,EAAGG,GAE/BxD,EAAM+B,gBAAgB0B,OAAS,GACjCzD,EAAM+B,gBAAgB2B,QAzD5BhB,IAAAC,EC/C0B,eD+C1B,SA4DwB3C,EAAO2D,GAC3B3D,EAAMgC,aAAe2B,IA7DzBjB,IAAAC,EC9CkC,uBD8ClC,SA+DgC3C,EAAO4D,GACnC5D,EAAMiC,qBAAuB2B,IAhEjClB,IAAAC,EC7C8B,mBD6C9B,SAkE4B3C,EAAO6D,GAC/B7D,EAAMkC,iBAAmB2B,IAnE7BlB,GAuEAmB,SACEC,iBADO,SAAAC,EAC8BhB,GAAc,IAA/BiB,EAA+BD,EAA/BC,OACZC,GACJ3B,GAF+CyB,EAAvBhE,MAEZ4B,cAAcC,UAC1BsC,KAAQnB,EAAamB,KACrBC,KAAQpB,EAAaoB,KACrBnB,MAASD,EAAaC,MACtBoB,QAAWrB,EAAaqB,SAG1BJ,ECpI0B,mBDoIKC,GAE3BlB,EAAaqB,QAAU,GACzBC,WAAW,WACTL,ECvIyB,sBDuISC,IACjClB,EAAaqB,aElJxBE,EAAA3F,EAAM4F,aAAaC,SAAS7E,IAAI,SAAU6E,GACxC,OAAOA,GACN,SAAUC,GAEX,OADA5E,EAAM6E,SAAS,oBAAsBP,KAAM,2BAA6BM,EAAME,QAAQC,OAAS,IAAMH,EAAME,QAAQE,WAAa,UAAYJ,EAAME,QAAQG,YAAc,IAAKZ,KAAM,WAC5Ka,EAAApG,EAAQqG,OAAOP,KAGxB,IAAAQ,EAAe,WAEX,OAAOX,EAAA3F,EAAMuG,IAAI,gBAFrBD,EAAe,WAMX,OAAOX,EAAA3F,EAAMuG,IAAI,iBANrBD,EAAe,WAUX,OAAOX,EAAA3F,EAAMuG,IAAI,gBAVrBD,EAAe,SAaEE,GACb,OAAOb,EAAA3F,EAAMuG,IAAI,iCAAmCC,IAdxDF,EAAe,WAkBX,OAAOX,EAAA3F,EAAMuG,IAAI,eAlBrBD,EAAe,WAsBX,OAAOX,EAAA3F,EAAMyG,IAAI,qBAtBrBH,EAAe,SAyBCI,GACZ,OAAOf,EAAA3F,EAAM2G,OAAO,oBAAsBD,IA1B9CJ,EAAe,SA6BDI,EAAQE,GAClB,OAAOjB,EAAA3F,EAAMyG,IAAI,oBAAsBC,EAAS,iBAAmBE,IA9BvEN,EAAe,SAiCFO,GACT,OAAOlB,EAAA3F,EAAM8G,KAAK,6BAA+BD,IAlCrDP,EAAe,WAsCX,OAAOX,EAAA3F,EAAMuG,IAAI,gBAtCrBD,EAAe,WA0CX,OAAOX,EAAA3F,EAAMyG,IAAI,qBA1CrBH,EAAe,SA6CGS,GACd,OAAOpB,EAAA3F,EAAMyG,IAAI,6BAA+BM,IA9CpDT,EAAe,SAiDEI,GACb,OAAOf,EAAA3F,EAAMyG,IAAI,4BAA8BC,IAlDnDJ,EAAe,WAsDX,OAAOX,EAAA3F,EAAMyG,IAAI,sBAtDrBH,EAAe,WA0DX,OAAOX,EAAA3F,EAAMyG,IAAI,qBA1DrBH,EAAe,WA8DX,OAAOX,EAAA3F,EAAMyG,IAAI,yBA9DrBH,EAAe,SAiEGU,GACd,IAAI3E,EAAU2E,EAAW,OAAS,QAClC,OAAOrB,EAAA3F,EAAMyG,IAAI,6BAA+BpE,IAnEpDiE,EAAe,SAsEGU,GACd,IAAI5E,EAAU4E,EAAW,OAAS,QAClC,OAAOrB,EAAA3F,EAAMyG,IAAI,6BAA+BrE,IAxEpDkE,EAAe,SA2EEW,GACb,OAAOtB,EAAA3F,EAAMyG,IAAI,4BAA8BQ,IA5EnDX,EAAe,SA+EEhE,GACb,OAAOqD,EAAA3F,EAAMyG,IAAI,6BAA+BnE,IAhFpDgE,EAAe,SAmFSY,EAAUC,GAC9B,OAAOxB,EAAA3F,EAAMyG,IAAI,6BAA+BU,EAAe,cAAgBD,IApFnFZ,EAAe,SAuFAM,GACX,OAAOjB,EAAA3F,EAAMyG,IAAI,gCAAkCG,IAxFvDN,EAAe,WA4FX,OAAOX,EAAA3F,EAAMuG,IAAI,iBA5FrBD,EAAe,SA+FEY,EAAUE,GACvB,OAAOzB,EAAA3F,EAAMyG,IAAI,gBAAkBS,EAAUE,IAhGjDd,EAAe,WAoGX,OAAOX,EAAA3F,EAAMuG,IAAI,0CApGrBD,EAAe,SAuGGe,GACd,OAAO1B,EAAA3F,EAAMuG,IAAI,wBAA0Bc,IAxG/Cf,EAAe,SA2GGe,GACd,OAAIA,EACK1B,EAAA3F,EAAMuG,IAAI,wBAA0Bc,EAAW,WAEjD1B,EAAA3F,EAAMuG,IAAI,yCA/GrBD,EAAe,SAkHEgB,GACb,OAAO3B,EAAA3F,EAAMuG,IAAI,uBAAyBe,IAnH9ChB,EAAe,SAsHSgB,GACpB,OAAO3B,EAAA3F,EAAMuG,IAAI,uBAAyBe,EAAU,YAvHxDhB,EAAe,WA2HX,OAAOX,EAAA3F,EAAMuG,IAAI,2CA3HrBD,EAAe,WA+HX,OAAOX,EAAA3F,EAAMuG,IAAI,6CA/HrBD,EAAe,WAmIX,OAAOX,EAAA3F,EAAMuG,IAAI,2BAnIrBD,EAAe,SAsIKiB,GAChB,OAAO5B,EAAA3F,EAAMuG,IAAI,0BAA4BgB,IAvIjDjB,EAAe,SA0IYiB,GACvB,OAAO5B,EAAA3F,EAAMuG,IAAI,0BAA4BgB,EAAa,YA3I9DjB,EAAe,SA8ILkB,GACN,OAAO7B,EAAA3F,EAAMuG,IAAI,eACfkB,OAAQD,KAhJdlB,EAAe,WAqJX,OAAOX,EAAA3F,EAAMuG,IAAI,sCCjIrBmB,QAEA,+BAEAC,YAAAC,EAAA5H,UAEA,6EAIA,wCAEA,WAEA,+EAKA,+EAUA6H,wDAMAC,2BACAC,MC/DAC,IADiB7H,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,gBAA0BF,EAAA,OAAYE,YAAA,oBAA8BF,EAAA,OAAYE,YAAA,2BAAqCF,EAAA,OAAYE,YAAA,aAAAG,aAAsCsH,YAAA,OAAiB3H,EAAA,QAAaE,YAAA,qBAAA0H,OAAwCC,uBAAAH,EAAAb,OAAAU,UAA8CO,IAAKC,MAAAL,EAAAM,eAAyBhI,EAAA,KAAUE,YAAA,eAAA0H,MAAAF,EAAAO,iBAAgDP,EAAAtH,GAAA,KAAAJ,EAAA,OAA4BE,YAAA,2BAAqCF,EAAA,OAAYE,YAAA,gBAA0BF,EAAA,KAAUE,YAAA,UAAA0H,OAA6BC,uBAAAH,EAAAb,OAAAU,YAA+CG,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAb,OAAAsB,SAAAT,EAAAtH,GAAA,KAAAJ,EAAA,gBAAmEE,YAAA,uBAAAkI,OAA0CC,IAAA,IAAAC,IAAA,MAAAC,KAAA,IAAAC,UAAAd,EAAAb,OAAAU,SAAAkB,MAAAf,EAAA3F,QAAoF+F,IAAKY,OAAAhB,EAAAiB,eAAyB,YAEx2BpI,oBCCjB,IAuBAqI,GAvBAzJ,EAAA,OAcAI,CACA4H,EACAM,IATA,EAVA,SAAApI,GACAF,EAAA,SAaA,KAEA,MAUA,QCjBA0J,SAGA,+BAEA,oDAGA,2GCdAC,IADiBlJ,OAFjB,WAA0B,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,KAAe8H,IAAIC,MAAlFjI,KAAkFiJ,qBAA+B/I,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,MAAA0H,OAA3J9H,KAA2JkJ,YAA0CC,YAArMnJ,KAAqMoJ,WAAAC,YAArMrJ,KAAqMoJ,oBAE9M3I,oBCCjB,IAuBA6I,GAvBAjK,EAAA,OAcAkK,CACAR,GACAC,IATA,EAVA,SAAAzJ,GACAF,EAAA,SAaA,KAEA,MAUA,QCjBAmK,SAGA,wDCTAC,IADiB3J,OAFjB,WAA0B,IAAaC,EAAbC,KAAaC,eAAkD,OAA/DD,KAAuCG,MAAAD,IAAAH,GAAwB,KAAeiI,IAAIC,MAAlFjI,KAAkF0J,aAAlF1J,KAAyG2J,GAAA,MAElHlJ,iBADjB,WAAoC,IAAaV,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,QAAkBE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,8BCElJ,IAuBAwJ,GAvBAvK,EAAA,OAcAwK,CACAL,GACAC,IATA,EAVA,SAAAlK,GACAF,EAAA,SAaA,KAEA,MAUA,QCjBAyK,SAGA,gECTAC,IADiBjK,OAFjB,WAA0B,IAAaC,EAAbC,KAAaC,eAAkD,OAA/DD,KAAuCG,MAAAD,IAAAH,GAAwB,KAAeiI,IAAIC,MAAlFjI,KAAkFgK,iBAAlFhK,KAA6G2J,GAAA,MAEtHlJ,iBADjB,WAAoC,IAAaV,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,QAAkBE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,+BCElJ,IAuBA6J,GAvBA5K,EAAA,OAcA6K,CACAJ,GACAC,IATA,EAVA,SAAAxK,GACAF,EAAA,SAaA,KAEA,MAUA,QCjBA8K,SAGA,sFAGAnI,0DAMAoI,eClBAC,IADiBvK,OAFjB,WAA0B,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,KAAe4H,OAAOwC,aAArFtK,KAAqFoK,YAA+BpC,IAAKC,MAAzHjI,KAAyHuK,uBAAiCrK,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,MAAA0H,OAAyB0C,cAA7NxK,KAA6NoK,WAAAK,wBAA7NzK,KAA6NoK,mBAEtO3J,oBCCjB,IAuBAiK,GAvBArL,EAAA,OAcAsL,CACAR,GACAE,IATA,EAVA,SAAA9K,GACAF,EAAA,SAaA,KAEA,MAUA,QCjBAuL,SAGA,sFAGA7I,0DAMA8I,eClBAC,IADiBhL,OAFjB,WAA0B,IAAaC,EAAbC,KAAaC,eAAkD,OAA/DD,KAAuCG,MAAAD,IAAAH,GAAwB,KAAe+H,OAAOwC,aAArFtK,KAAqF6K,YAA+B7C,IAAKC,MAAzHjI,KAAyH+K,uBAAzH/K,KAA0J2J,GAAA,MAEnKlJ,iBADjB,WAAoC,IAAaV,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,QAAkBE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,sBCElJ,IAuBA4K,GAvBA3L,EAAA,OAcA4L,CACAL,GACAE,IATA,EAVA,SAAAvL,GACAF,EAAA,SAaA,KAEA,MAUA,QCjBA6L,SAGA,wFAOA,2EAGA,sGAGAC,+EAOA,kCAEA,SAEA,UCjCAC,IADiBtL,OAFjB,WAA0B,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,KAAe4H,OAAOwC,cAArFtK,KAAqFqL,eAAmCrD,IAAKC,MAA7HjI,KAA6HsL,sBAAgCpL,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,MAAA0H,OAAyByD,aAAhOvL,KAAgOwL,cAAAC,kBAAhOzL,KAAgOmL,iBAAAO,iBAAhO1L,KAAgOqL,sBAEzO5K,oBCCjB,IAuBAkL,GAvBAtM,EAAA,OAcAuM,CACAV,GACAE,IATA,EAVA,SAAA7L,GACAF,EAAA,SAaA,KAEA,MAUA,QCuFAwM,SAEA,qLAEAvE,YAAAC,EAAA5H,uCAIA,2DAKAiC,oDAIAC,mDAIAb,oDAIAI,wDAIAM,+DAIAC,qEAIAsB,kFvBpIgC,yBuB0IhCA,4CAIAuE,6CvB9IgC,oBuBkJhC,2BACA,cClKAsE,IADiBhM,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,+BAAAkI,OAAkDyD,KAAA,aAAAC,aAAA,qBAAoD9L,EAAA,OAAYE,YAAA,iBAA2BF,EAAA,eAAoBE,YAAA,cAAAkI,OAAiC2D,GAAA,aAAAC,eAAA,eAA8ChM,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,8BAAoCwH,EAAAtH,GAAA,KAAAJ,EAAA,eAAoCE,YAAA,cAAAkI,OAAiC2D,GAAA,SAAAC,eAAA,eAA0ChM,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,sBAA4BwH,EAAAtH,GAAA,KAAAsH,EAAAuE,SAAAC,OAAA,EAAAlM,EAAA,eAA8DE,YAAA,cAAAkI,OAAiC2D,GAAA,YAAAC,eAAA,eAA6ChM,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,2BAAiCwH,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAA0E,WAAAF,OAAA,EAAAlM,EAAA,eAAyEE,YAAA,cAAAkI,OAAiC2D,GAAA,cAAAC,eAAA,eAA+ChM,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,kCAAwCwH,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAJ,EAAA,eAA6CE,YAAA,cAAAkI,OAAiC2D,GAAA,UAAAC,eAAA,eAA2ChM,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,wBAA8BwH,EAAAtH,GAAA,KAAAJ,EAAA,OAA4BE,YAAA,gBAAA0H,OAAmCyE,YAAA3E,EAAA3E,kBAAoC+E,IAAKC,MAAAL,EAAA4E,2BAAqCtM,EAAA,QAAA0H,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,KAAAJ,EAAA,cAAA0H,EAAAtH,GAAA,KAAAJ,EAAA,OAAuFE,YAAA,cAAA0H,OAAiCyE,YAAA3E,EAAA3E,oBAAqC/C,EAAA,OAAYE,YAAA,iBAA2BwH,EAAAtH,GAAA,KAAAJ,EAAA,OAAwBE,YAAA,eAAyBF,EAAA,OAAYE,YAAA,0CAAoDwH,EAAA+B,GAAA,GAAA/B,EAAAtH,GAAA,KAAAJ,EAAA,OAAkCE,YAAA,6BAAuCF,EAAA,OAAYE,YAAA,gBAA0BF,EAAA,OAAYE,YAAA,oBAA8BF,EAAA,OAAYE,YAAA,2BAAqCwH,EAAA+B,GAAA,GAAA/B,EAAAtH,GAAA,KAAAJ,EAAA,OAAkCE,YAAA,2BAAqCF,EAAA,OAAYE,YAAA,gBAA0BF,EAAA,KAAUE,YAAA,YAAsBwH,EAAAtH,GAAA,YAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,gBAAoDE,YAAA,uBAAAkI,OAA0CC,IAAA,IAAAC,IAAA,MAAAC,KAAA,IAAAE,MAAAf,EAAA/F,OAAAI,QAA2D+F,IAAKY,OAAAhB,EAAAiB,eAAyB,WAAAjB,EAAAtH,GAAA,KAAAJ,EAAA,MAAmCE,YAAA,mBAA6BwH,EAAAtH,GAAA,KAAAsH,EAAA6E,GAAA7E,EAAA,iBAAAb,GAAoD,OAAA7G,EAAA,uBAAiCwM,IAAA3F,EAAAzD,GAAAgF,OAAqBvB,cAAmBa,EAAAtH,GAAA,KAAAJ,EAAA,MAAuBE,YAAA,mBAA6BwH,EAAAtH,GAAA,KAAAJ,EAAA,OAAwBE,YAAA,gBAA0BF,EAAA,OAAYE,YAAA,oBAA8BF,EAAA,OAAYE,YAAA,eAAyBF,EAAA,OAAYE,YAAA,eAAyBF,EAAA,OAAYE,YAAA,uBAAiCF,EAAA,0BAA+BE,YAAA,WAAqBwH,EAAAtH,GAAA,KAAAJ,EAAA,4BAA6CE,YAAA,WAAqBwH,EAAAtH,GAAA,KAAAJ,EAAA,sBAAuCE,YAAA,YAAqB,KAAAwH,EAAAtH,GAAA,KAAAJ,EAAA,OAA8BE,YAAA,eAAyBF,EAAA,OAAYE,YAAA,uBAAiCF,EAAA,wBAA6BE,YAAA,oBAA8BwH,EAAAtH,GAAA,KAAAJ,EAAA,yBAA0CE,YAAA,oBAA8BwH,EAAAtH,GAAA,KAAAJ,EAAA,yBAA0CE,YAAA,qBAA8B,iBAAAwH,EAAAtH,GAAA,KAAAJ,EAAA,OAA0CE,YAAA,0CAAoDwH,EAAA+B,GAAA,GAAA/B,EAAAtH,GAAA,KAAAJ,EAAA,OAAkCE,YAAA,6BAAuCF,EAAA,KAAUE,YAAA,cAAAkI,OAAiCqE,KAAA,iBAAsB/E,EAAAtH,GAAA,WAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,MAAyCE,YAAA,mBAA6BwH,EAAAtH,GAAA,KAAAJ,EAAA,KAAsBE,YAAA,cAAA4H,IAA8BC,MAAAL,EAAAgF,cAAwB1M,EAAA,OAAAA,EAAA,KAAoBE,YAAA,eAAyBwH,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAA+CE,YAAA,kBAA4BwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAA5G,OAAAE,2BAEtjHT,iBADjB,WAAoC,IAAaV,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,KAAeE,YAAA,gBAA0BF,EAAA,QAAaE,YAAA,gDAA0DF,EAAA,KAAUE,YAAA,0BAAzLJ,KAA2NM,GAAA,KAAAJ,EAAA,QAA2BE,YAAA,sBAAtPJ,KAAsRM,GAAA,eAAuB,WAAc,IAAaP,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,aAAAG,aAAsCsH,YAAA,OAAiB3H,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,sCAAiD,WAAc,IAAaL,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,KAAeE,YAAA,gBAA0BF,EAAA,QAAaE,YAAA,gDAA0DF,EAAA,KAAUE,YAAA,uBAAzLJ,KAAwNM,GAAA,KAAAJ,EAAA,QAA2BE,YAAA,sBAAnPJ,KAAmRM,GAAA,mBCEl2B,IAuBAuM,GAvBAxN,EAAA,OAcAyN,CACAjB,GACAC,IATA,EAVA,SAAAvM,GACAF,EAAA,SAaA,KAEA,MAUA,QCJA0N,SAEA,2BAEAhE,sBAAAO,kFAOAzH,0DAGAsB,eCjCA6J,IADiBlN,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,iCAAAkI,OAAoDyD,KAAA,aAAAC,aAAA,qBAAoD9L,EAAA,OAAYE,YAAA,6BAAuCF,EAAA,eAAoBE,YAAA,cAAAkI,OAAiC2D,GAAA,IAAAC,eAAA,YAAAe,MAAA,MAAgD/M,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,uCAA6CwH,EAAAtH,GAAA,KAAAJ,EAAA,eAAoCE,YAAA,qCAAAkI,OAAwD2D,GAAA,eAAAC,eAAA,YAAAe,MAAA,MAA2D/M,EAAA,OAAAA,EAAA,KAAoBE,YAAA,iCAA2CF,EAAA,UAAA0H,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAzE,YAAA+J,UAAAhN,EAAA,MAAA0H,EAAAtH,GAAA,eAAAsH,EAAAQ,GAAAR,EAAAzE,YAAAgK,QAAA,oBAAAvF,EAAAtH,GAAA,KAAAJ,EAAA,4BAAoLE,YAAA,kCAAAkI,OAAqDY,WAAA,eAAyB,MAEx4BzI,oBCCjB,IAuBA2M,GAvBA/N,EAAA,OAcAgO,CACAN,GACAC,IATA,EAVA,SAAAzN,GACAF,EAAA,SAaA,KAEA,MAUA,QCVAiO,SAEA,8DAIA,8EAKAzK,sD7BdmC,sB6BoBnCkB,MC9BAwJ,IADiBzN,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,WAAqBE,YAAA,qBAA+BF,EAAA,OAAYE,YAAA,wBAAkCF,EAAA,OAAYE,YAAA,kBAA6BwH,EAAA6E,GAAA7E,EAAA,uBAAA7D,GAAmD,OAAA7D,EAAA,OAAiBwM,IAAA3I,EAAAT,GAAAlD,YAAA,2BAAA0H,OAAA,eAAA/D,EAAAmB,KAAA,MAAAnB,EAAA,WAA0I7D,EAAA,UAAeE,YAAA,SAAA4H,IAAyBC,MAAA,SAAAuF,GAAyB5F,EAAA6F,OAAA1J,OAA2B6D,EAAAtH,GAAA,aAAAsH,EAAAQ,GAAArE,EAAAoB,MAAA,sBAE7f1E,oBCCjB,IAuBAiN,GAvBArO,EAAA,OAcAsO,CACAL,GACAC,IATA,EAVA,SAAAhO,GACAF,EAAA,SAaA,KAEA,MAUA,gCCNAuO,SAEA,+CACAN,cAAAI,aAEA,+CAIA,mEAKAzK,sCAIA,IAAA4K,EAAA7N,UAEA8N,yBAGAC,wEAGA,6BACA,cACAC,+BACAC,eAEAF,QAEAG,6EAMAC,wCAMA,IAAAC,EAAApO,uHAEA,2BACA,IAAAqO,EAAAtJ,EAAAsJ,qBhCpE6B,gBgCqE7BA,mBhCrD4B,iBgCsD5BtL,+BAEAuL,eACAC,sBACAJ,+HAEA,+JAMA,sBAKAnO,WACAwO,GAAA7O,EAAA,QAAA8O,OAAAC,SAAAC,SAAA,IAAAC,EAAAC,OAAA9N,MAAAC,OACAC,eACA,UAAA6N,kBAGA,kJAEA,yEAEA,gBACAC,mBACAC,yBACAC,yBACAC,iBACAC,iKAMA,2DAGAd,qCAEAY,mHAGAD,sFAGAD,+CAGAG,+CAGAC,oDAKA,IAAAC,EAAApP,0BACA,IAAAqO,EAAAgB,EAAAhB,qBhClIoC,uBgCmIpCA,mDAEA,IAAAA,EAAAiB,EAAAjB,qBhCpI+C,kCgCqI/CA,iDAEA,IAAAA,EAAAkB,EAAAlB,qBhCtI6C,gCgCuI7CA,gCAIA,IAAAmB,EAAAxP,0BACA,IAAAqO,EAAAoB,EAAApB,qBhC3I8B,mBgC4I9BzM,4CAIA,IAAA8N,EAAA1P,0BACA,IAAAqO,EAAAsB,EAAAtB,qBhChJoC,uBgCiJpCA,8BAIA,IAAAuB,EAAA5P,0BACA,IAAAqO,EAAAwB,EAAAxB,qBhCrJ4B,egCsJ5BA,gCAIA,IAAAyB,EAAA9P,0BACA,IAAAqO,EAAA0B,EAAA1B,qBhC1J8B,iBgC4J9BA,0DAEA2B,sCACAA,iCACA,2GAGAC,8GACA,gEhCzJgC,oBgCiKhC,mGAIA,8DAEA,iBCtLAC,IADiBpQ,OAFjB,WAA0B,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBoI,OAAOhF,GAAA,SAAYpD,EAAA,cAAnGF,KAAmGM,GAAA,KAAAJ,EAAA,oBAAsDE,YAAA,oBAAzJJ,KAAuLM,GAAA,KAAAJ,EAAA,cAA+BoI,OAAOD,KAAA,UAAenI,EAAA,eAAoBiQ,aAAa9H,KAAA,OAAA+H,QAAA,SAAAzH,OAA7Q3I,KAA6QiD,iBAAAkD,WAAA,yBAA4F,GAAzWnG,KAAyWM,GAAA,KAAAJ,EAAA,iBAAsCiQ,aAAa9H,KAAA,OAAA+H,QAAA,SAAAzH,OAA5Z3I,KAA4ZiD,iBAAAkD,WAAA,wBAA5ZnG,KAAwfM,GAAA,KAAAJ,EAAA,iBAAkCiQ,aAAa9H,KAAA,OAAA+H,QAAA,SAAAzH,OAAviB3I,KAAuiBiD,iBAAAkD,WAAA,yBAA4F,IAE5oB1F,oBCCjB,IAuBA4P,GAvBAhR,EAAA,OAcAiR,CACA1C,GACAsC,IATA,EAVA,SAAA3Q,GACAF,EAAA,SAaA,KAEA,MAUA,kCCvBAkR,IADiBzQ,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAAA,EAAA,cAAkCoI,OAAOD,KAAA,UAAeT,EAAA,KAAA1H,EAAA,OAAuBE,YAAA,oBAA8BF,EAAA,OAAYE,YAAA,mBAAA4H,IAAmCC,MAAA,SAAAuF,GAAyB5F,EAAA4I,MAAA,aAAqB5I,EAAAtH,GAAA,KAAAJ,EAAA,OAAwBE,YAAA,gCAA0CwH,EAAAvH,GAAA,qBAAAuH,EAAAtH,GAAA,KAAAJ,EAAA,UAAuDE,YAAA,uBAAAkI,OAA0C0D,aAAA,SAAqBhE,IAAKC,MAAA,SAAAuF,GAAyB5F,EAAA4I,MAAA,eAAqB5I,EAAAyE,QAAA,IAE7f5L,oBCCjB,IAuBAgQ,GAvBApR,EAAA,OAcAqR,OCAA,qBACA,SDCAH,IATA,EAVA,SAAAhR,GACAF,EAAA,SAaA,KAEA,MAUA,QEqDAsR,SAEA,4BAEAC,YAAAH,uEAEA,wDAIA,wDAKA5O,+EAIAgP,uEAMA,cACAvN,8CAIA,cACAA,OC3GAwN,IADiBhR,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAA6H,EAAAmJ,UAAAnJ,EAAA5E,qBAAA9C,EAAA,OAA4DE,YAAA,UAAoBwH,EAAA,UAAA1H,EAAA,OAA4BE,YAAA,eAAyBwH,EAAA+B,GAAA,KAAA/B,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAJ,EAAA,OAA6CE,YAAA,yCAAA4H,IAAyDC,MAAAL,EAAAoJ,QAAkB9Q,EAAA,MAAWE,YAAA,aAAA0H,OAAgCmJ,mBAAArJ,EAAAxE,KAAAE,KAAAsE,EAAA7G,MAAAmB,QAAA6F,uBAAAH,EAAAmJ,WAA8FnJ,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAxE,KAAA8J,UAAAtF,EAAAtH,GAAA,KAAAJ,EAAA,MAAwDE,YAAA,gBAAA0H,OAAmCmJ,mBAAArJ,EAAAxE,KAAAE,KAAAsE,EAAA7G,MAAAmB,QAAA6F,uBAAAH,EAAAmJ,QAAAG,gBAAAtJ,EAAAmJ,SAAAnJ,EAAAxE,KAAAE,KAAAsE,EAAA7G,MAAAmB,WAAiKhC,EAAA,KAAA0H,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAxE,KAAA+J,aAAAvF,EAAAtH,GAAA,KAAAJ,EAAA,MAAmEE,YAAA,gBAAA0H,OAAmCmJ,mBAAArJ,EAAAxE,KAAAE,KAAAsE,EAAA7G,MAAAmB,QAAA6F,uBAAAH,EAAAmJ,QAAAG,gBAAAtJ,EAAAmJ,SAAAnJ,EAAAxE,KAAAE,KAAAsE,EAAA7G,MAAAmB,WAAiK0F,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAxE,KAAA+N,YAAAvJ,EAAAtH,GAAA,KAAAJ,EAAA,OAA2DE,YAAA,gBAA0BwH,EAAAxE,KAAAE,KAAAsE,EAAA7G,MAAAmB,SAAA0F,EAAAwJ,UAAAlR,EAAA,KAA+D8H,IAAIC,MAAAL,EAAA6F,UAAoB7F,EAAA+B,GAAA,KAAA/B,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAAwJ,UAAyHxJ,EAAAyE,KAAzHnM,EAAA,KAA4D8H,IAAIC,MAAA,SAAAuF,GAAyB5F,EAAAyJ,oBAAA,MAAgCzJ,EAAA+B,GAAA,KAAA/B,EAAAtH,GAAA,KAAAsH,EAAAwJ,UAA8qExJ,EAAAyE,KAA9qEnM,EAAA,gBAAuEoI,OAAOgJ,KAAA1J,EAAAyJ,oBAA8BrJ,IAAKuJ,MAAA,SAAA/D,GAAyB5F,EAAAyJ,oBAAA,MAAiCnR,EAAA,YAAiBsR,KAAA,kBAAqBtR,EAAA,OAAYE,YAAA,SAAmBF,EAAA,OAAYE,YAAA,iBAA2BF,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,mBAAAsH,EAAAQ,GAAAR,EAAAxE,KAAA8J,OAAA,oBAAAtF,EAAAtH,GAAA,KAAAJ,EAAA,KAA2FE,YAAA,aAAuBwH,EAAAtH,GAAA,mBAAAsH,EAAAQ,GAAAR,EAAAxE,KAAA+J,QAAA,oBAAAvF,EAAAtH,GAAA,KAAAJ,EAAA,OAA8FE,YAAA,qBAA+BF,EAAA,KAAAA,EAAA,QAAqBE,YAAA,YAAsBwH,EAAAtH,GAAA,WAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA2CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAxE,KAAA+N,YAAAvJ,EAAAtH,GAAA,KAAAsH,EAAAxE,KAAA,aAAAlD,EAAA,KAAAA,EAAA,QAA4FE,YAAA,YAAsBwH,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAAkDE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAxE,KAAAqO,mBAAA7J,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAAxE,KAAAsO,KAAA,EAAAxR,EAAA,KAAAA,EAAA,QAAwGE,YAAA,YAAsBwH,EAAAtH,GAAA,UAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA0CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAxE,KAAAsO,WAAA9J,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAA4EE,YAAA,YAAsBwH,EAAAtH,GAAA,WAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA2CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAxE,KAAAuO,YAAA/J,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAAoEE,YAAA,YAAsBwH,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAAkDE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAxE,KAAAwO,cAAA,MAAAhK,EAAAQ,GAAAR,EAAAxE,KAAAyO,kBAAAjK,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAA8GE,YAAA,YAAsBwH,EAAAtH,GAAA,YAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA4CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAkK,GAAA,WAAAlK,GAAAxE,KAAA2O,iBAAAnK,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAA4FE,YAAA,YAAsBwH,EAAAtH,GAAA,UAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA0CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAxE,KAAA4O,eAAApK,EAAAtH,GAAA,KAAAJ,EAAA,UAAiEE,YAAA,gBAA0BF,EAAA,KAAUE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAA6F,UAAoBvN,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,8BAAsCwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,cAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAAoEE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAAoJ,QAAkB9Q,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,4BAAoCwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,4BAAAsH,EAAAyE,MAEp6G5L,iBADjB,WAAoC,IAAaV,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,QAAkBE,YAAA,4CAAsDF,EAAA,KAAUE,YAAA,wCAAmD,WAAc,IAAaL,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,QAAkBE,YAAA,uBAAiCF,EAAA,KAAUE,YAAA,+BAA0C,WAAc,IAAaL,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,QAAkBE,YAAA,uBAAiCF,EAAA,KAAUE,YAAA,wCCEtiB,IAuBA6R,GAvBA5S,EAAA,OAcA6S,CACAvB,GACAG,IATA,EAVA,SAAAvR,GACAF,EAAA,SAaA,KAEA,MAUA,gCC6BA8S,SAEA,2EAEAC,UAAAC,GAAA1S,qCAIA,wDAKAkC,kDAGAQ,kJAOAc,sFACAuD,mEAGA1D,kHzCjEoC,6ByC2EpCA,6FAIA6N,+CACAyB,8BACAC,wBAEAhM,MCjGAiM,IADiB1S,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,wBAAAA,EAAA,YAAiDsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,YAAsBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAvF,MAAAC,OAAA,aAAAsF,EAAAtH,GAAA,KAAAJ,EAAA,KAAkEE,YAAA,eAAyBwH,EAAAtH,GAAA,aAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAAiDsR,KAAA,kBAAqBtR,EAAA,OAAYE,YAAA,wBAAkCF,EAAA,KAAUE,YAAA,kBAAA0H,OAAqC2K,UAAA7K,EAAA5E,sBAAsCgF,IAAKC,MAAAL,EAAA8K,0BAAoCxS,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,kCAA0CwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,qBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAA2EE,YAAA,kBAAA0H,OAAqC2K,UAAA7K,EAAAwJ,WAA2BpJ,IAAKC,MAAA,SAAAuF,GAAyB5F,EAAAwJ,WAAAxJ,EAAAwJ,cAAiClR,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,qBAA6BwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,YAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAAkEE,YAAA,kBAAA4H,IAAkCC,MAAAL,EAAA+K,eAAyBzS,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,2BAAmCwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,iBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAA8EsR,KAAA,YAAetR,EAAA,aAAkBoI,OAAOsK,SAAWC,OAAA,YAAkB7K,IAAK8K,IAAAlL,EAAAmL,WAAoBC,OAAQrK,MAAAf,EAAA,YAAAqL,SAAA,SAAAC,GAAiDtL,EAAAuL,YAAAD,GAAoB/M,WAAA,gBAA2ByB,EAAA6E,GAAA7E,EAAA,qBAAAxE,EAAAa,GAA+C,OAAA/D,EAAA,wBAAkCwM,IAAAtJ,EAAAE,GAAAgF,OAAmBlF,OAAAsD,SAAAzC,EAAA4M,iBAAAjJ,EAAAiJ,iBAAA7N,qBAAA4E,EAAA5E,qBAAAoO,UAAAxJ,EAAAwJ,iBAAkJ,QAEnjD3Q,oBCCjB,IAuBA2S,GAvBA/T,EAAA,OAcAgU,CACAlB,GACAK,IATA,EAVA,SAAAjT,GACAF,EAAA,SAaA,KAEA,MAUA,QC0BAiU,SAEA,sKAEAhM,YAAAC,EAAA5H,2CAGA,cAEA,uBAGA,IAAAkO,EAAA7N,sCACAoC,sCACA,IAAAiM,EAAAtJ,EAAAsJ,qB5C7DoC,uB4C8DpCA,oEAEA,4EAOAkF,8BACA,wDAMA1R,0DAGAsB,8DAMA,sBAGA,IAAAiL,EAAApO,sDAEAoC,2FAQAmR,8BACA,oCAEAnR,2FAEA,SC3GAoR,IADiB1T,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,WAAqBE,YAAA,SAAmBF,EAAA,OAAYE,YAAA,cAAwBF,EAAA,OAAYE,YAAA,gCAA0CF,EAAA,KAAUE,YAAA,YAAsBwH,EAAAtH,GAAA,iBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,MAA+CE,YAAA,eAAyBwH,EAAAtH,GAAA,aAAAsH,EAAAQ,GAAAR,EAAAzE,YAAA+J,OAAA,cAAAtF,EAAAtH,GAAA,KAAAJ,EAAA,MAAuFE,YAAA,eAAyBwH,EAAAtH,GAAA,aAAAsH,EAAAQ,GAAAR,EAAAzE,YAAAgK,QAAA,cAAAvF,EAAAtH,GAAA,KAAAJ,EAAA,MAAwFE,YAAA,kBAA4BwH,EAAAtH,GAAA,aAAAsH,EAAAQ,GAAAR,EAAAzE,YAAAgO,OAAA,cAAAvJ,EAAAtH,GAAA,KAAAJ,EAAA,KAAsFE,YAAA,sDAAgEF,EAAA,gBAAqBE,YAAA,4BAAAkI,OAA+CC,IAAA,IAAAC,IAAAZ,EAAA7G,MAAAoB,eAAAwG,MAAAf,EAAAxF,iBAAAsG,SAAA,SAAAd,EAAA7G,YAAA0H,KAAA,QAA0HT,IAAKY,OAAAhB,EAAA6L,SAAmB,GAAA7L,EAAAtH,GAAA,KAAAJ,EAAA,KAA0BE,YAAA,YAAsBF,EAAA,QAAA0H,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAkK,GAAA,WAAAlK,GAAAxF,mBAAA,MAAAwF,EAAAQ,GAAAR,EAAAkK,GAAA,WAAAlK,GAAAzE,YAAA4O,iBAAAnK,EAAAtH,GAAA,KAAAJ,EAAA,KAA0JE,YAAA,8BAAwCF,EAAA,0BAA+BE,YAAA,qBAA+BwH,EAAAtH,GAAA,KAAAJ,EAAA,4BAA6CE,YAAA,mBAAAkI,OAAsCY,WAAA,cAAyBtB,EAAAtH,GAAA,KAAAJ,EAAA,sBAAuCE,YAAA,qBAA+BwH,EAAAtH,GAAA,KAAAJ,EAAA,wBAAyCE,YAAA,8BAAwCwH,EAAAtH,GAAA,KAAAJ,EAAA,yBAA0CE,YAAA,8BAAwCwH,EAAAtH,GAAA,KAAAJ,EAAA,yBAA0CE,YAAA,+BAAwC,UAEzlDK,oBCCjB,IAuBAiT,GAvBArU,EAAA,OAcAsU,CACAL,GACAE,IATA,EAVA,SAAAjU,GACAF,EAAA,SAaA,KAEA,MAUA,QCzBauU,GAA2B,SAAUC,GAChD,OACEC,iBADK,SACa7H,EAAI8H,EAAM7F,GAC1B2F,EAAWG,KAAK/H,GAAIgI,KAAK,SAACzO,GACxB0I,EAAK,SAAAU,GAAA,OAAMiF,EAAWK,IAAItF,EAAIpJ,QAGlC2O,kBANK,SAMclI,EAAI8H,EAAM7F,GAC3B,IAAMU,EAAK5O,KACX6T,EAAWG,KAAK/H,GAAIgI,KAAK,SAACzO,GACxBqO,EAAWK,IAAItF,EAAIpJ,GACnB0I,SCTRkG,IADiBtU,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,WAAqBE,YAAA,4BAAsCF,EAAA,OAAYE,YAAA,cAAwBF,EAAA,OAAYE,YAAA,wBAAkCF,EAAA,OAAYE,YAAA,0BAAoCF,EAAA,OAAYE,YAAA,8BAAwCF,EAAA,MAAAA,EAAA,eAA6BoI,OAAO+L,IAAA,KAAApI,GAAA,gBAAAC,eAAA,eAA4DhM,EAAA,KAAAA,EAAA,QAAqBE,YAAA,kBAA4BF,EAAA,KAAUE,YAAA,kBAA0BwH,EAAAtH,GAAA,KAAAJ,EAAA,WAA4B0H,EAAAtH,GAAA,gBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,eAAuDoI,OAAO+L,IAAA,KAAApI,GAAA,iBAAAC,eAAA,eAA6DhM,EAAA,KAAAA,EAAA,QAAqBE,YAAA,kBAA4BF,EAAA,KAAUE,YAAA,qBAA6BwH,EAAAtH,GAAA,KAAAJ,EAAA,WAA4B0H,EAAAtH,GAAA,iBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,eAAwDoI,OAAO+L,IAAA,KAAApI,GAAA,gBAAAC,eAAA,eAA4DhM,EAAA,KAAAA,EAAA,QAAqBE,YAAA,kBAA4BF,EAAA,KAAUE,YAAA,oBAA4BwH,EAAAtH,GAAA,KAAAJ,EAAA,WAA4B0H,EAAAtH,GAAA,gBAAAsH,EAAAtH,GAAA,KAAAsH,EAAA,gBAAA1H,EAAA,eAA6EoI,OAAO+L,IAAA,KAAApI,GAAA,iBAAAC,eAAA,eAA6DhM,EAAA,KAAAA,EAAA,QAAqBE,YAAA,kBAA4BF,EAAA,KAAUE,YAAA,sBAA8BwH,EAAAtH,GAAA,KAAAJ,EAAA,WAA4B0H,EAAAtH,GAAA,iBAAAsH,EAAAyE,MAAA,cAE7uC5L,oBCCjB,IAuBA6T,GAvBAjV,EAAA,OAcAkV,OC0BA,kFAGAC,sBD3BAJ,IATA,EAVA,SAAA7U,GACAF,EAAA,SAaA,KAEA,MAUA,QEyBAoV,SAEA,4BAEA7D,YAAAH,mBAEA,yDAIA,6BAIA,IAAA5C,EAAA7N,8BACA,sBACA,OAAAiG,EAAA4H,EAAAsD,MAAA3K,KAAAyN,KAAA,WACA,OAAAhO,8BAMA,IAAAmI,EAAApO,8BACA,oCACA,OAAAoO,EAAAS,OAAAnJ,SAAA,oBAAAP,KAAA,iCAAAD,KAAA,OAAAE,QAEA,wDAIA,8EAEA9B,qFAEAA,yDAEAA,sDAKA,uDACAoR,eC3FAC,IADiB7U,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,UAAoBF,EAAA,OAAYE,YAAA,yCAAA4H,IAAyDC,MAAAL,EAAAgN,cAAwB1U,EAAA,MAAWE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA9I,SAAAT,EAAAtH,GAAA,KAAAJ,EAAA,MAAwDE,YAAA,gCAA0CF,EAAA,KAAA0H,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAAhE,eAAAvF,EAAAtH,GAAA,KAAAJ,EAAA,OAAuEE,YAAA,gBAA0BF,EAAA,KAAU8H,IAAIC,MAAA,SAAAuF,GAAyB5F,EAAAyJ,oBAAA,MAAgCzJ,EAAA+B,GAAA,KAAA/B,EAAAtH,GAAA,KAAAJ,EAAA,gBAA6CoI,OAAOgJ,KAAA1J,EAAAyJ,oBAA8BrJ,IAAKuJ,MAAA,SAAA/D,GAAyB5F,EAAAyJ,oBAAA,MAAiCnR,EAAA,YAAiBsR,KAAA,kBAAqBtR,EAAA,OAAYE,YAAA,SAAmBF,EAAA,OAAYE,YAAA,iBAA2BF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,KAAUE,YAAA,gBAAA4H,IAAgCC,MAAAL,EAAAgN,cAAwBhN,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA9I,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,OAA2DE,YAAA,qBAA+BwH,EAAAuJ,MAAAhE,QAAA,cAAAvF,EAAAiN,WAAA3U,EAAA,KAAAA,EAAA,QAA0EE,YAAA,YAAsBwH,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAA+CE,YAAA,2BAAA4H,IAA2CC,MAAAL,EAAAkN,eAAyBlN,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAAhE,aAAAvF,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAAuJ,MAAAhE,QAAA,cAAAvF,EAAAiN,WAAA3U,EAAA,KAAAA,EAAA,QAAoIE,YAAA,YAAsBwH,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAAkDE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAAhE,aAAAvF,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAA+EE,YAAA,YAAsBwH,EAAAtH,GAAA,YAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA4CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA4D,sBAAAnN,EAAAtH,GAAA,KAAAJ,EAAA,UAAyEE,YAAA,gBAA0BF,EAAA,KAAUE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAAoN,aAAuB9U,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,qCAA6CwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,WAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAAiEE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAAoJ,QAAkB9Q,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,4BAAoCwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,6BAEp/DG,iBADjB,WAAoC,IAAaV,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,QAAkBE,YAAA,uBAAiCF,EAAA,KAAUE,YAAA,wCCEhK,IAuBA6U,GAvBA5V,EAAA,OAcA6V,CACAT,GACAE,IATA,EAVA,SAAApV,GACAF,EAAA,SAaA,KAEA,MAUA,QCyDA8V,SAEA,wBAEAvE,YAAAH,8BAEA,0DAIA,6BAIA,IAAA5C,EAAA7N,8BACA,sBACA,OAAAiG,EAAA4H,EAAAuH,aAAAnB,KAAA,WACA,OAAAhO,EAAA4H,EAGAnH,qCAGA,IAAA0H,EAAApO,8BACA,sBACA,OAAAiG,EAAAmI,EAAAiH,MAAA7O,KAAAyN,KAAA,WACA,OAAAhO,8BAMA,IAAAmJ,EAAApP,8BACA,oCACA,OAAAoP,EAAAP,OAAAnJ,SAAA,oBAAAP,KAAA,0BAAAD,KAAA,OAAAE,QAEA,wDAIA,oFAEAkQ,iGAEAA,+DAEAA,4DAKA,uDACAC,qBCpIAC,IADiB1V,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,UAAoBF,EAAA,OAAYE,YAAA,yCAAA4H,IAAyDC,MAAAL,EAAAoJ,QAAkB9Q,EAAA,MAAWE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAyN,MAAAnI,UAAAtF,EAAAtH,GAAA,KAAAJ,EAAA,MAAyDE,YAAA,gCAA0CF,EAAA,KAAA0H,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAyN,MAAAlI,aAAAvF,EAAAtH,GAAA,KAAAJ,EAAA,MAAoEE,YAAA,gCAA0CwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAyN,MAAAlE,YAAAvJ,EAAAtH,GAAA,KAAAJ,EAAA,OAA4DE,YAAA,gBAA0BF,EAAA,KAAU8H,IAAIC,MAAA,SAAAuF,GAAyB5F,EAAAyJ,oBAAA,MAAgCzJ,EAAA+B,GAAA,KAAA/B,EAAAtH,GAAA,KAAAJ,EAAA,gBAA6CoI,OAAOgJ,KAAA1J,EAAAyJ,oBAA8BrJ,IAAKuJ,MAAA,SAAA/D,GAAyB5F,EAAAyJ,oBAAA,MAAiCnR,EAAA,YAAiBsR,KAAA,kBAAqBtR,EAAA,OAAYE,YAAA,SAAmBF,EAAA,OAAYE,YAAA,iBAA2BF,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,mBAAAsH,EAAAQ,GAAAR,EAAAyN,MAAAnI,OAAA,oBAAAtF,EAAAtH,GAAA,KAAAJ,EAAA,KAA4FE,YAAA,aAAuBwH,EAAAtH,GAAA,mBAAAsH,EAAAQ,GAAAR,EAAAyN,MAAAlI,QAAA,oBAAAvF,EAAAtH,GAAA,KAAAJ,EAAA,OAA+FE,YAAA,qBAA+BF,EAAA,KAAAA,EAAA,QAAqBE,YAAA,YAAsBwH,EAAAtH,GAAA,WAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAAwCE,YAAA,2BAAA4H,IAA2CC,MAAAL,EAAAgN,cAAwBhN,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAyN,MAAAlE,YAAAvJ,EAAAtH,GAAA,KAAAsH,EAAAyN,MAAA5D,cAAA,cAAA7J,EAAAyN,MAAAR,WAAA3U,EAAA,KAAAA,EAAA,QAAsIE,YAAA,YAAsBwH,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAA+CE,YAAA,2BAAA4H,IAA2CC,MAAAL,EAAAkN,eAAyBlN,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAyN,MAAA5D,mBAAA7J,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAAyN,MAAA,cAAAnV,EAAA,KAAAA,EAAA,QAA+GE,YAAA,YAAsBwH,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAAkDE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAkK,GAAA,OAAAlK,GAAAyN,MAAAI,cAAA,WAAA7N,EAAAyN,MAAA3D,KAAA,EAAAxR,EAAA,KAAAA,EAAA,QAA0GE,YAAA,YAAsBwH,EAAAtH,GAAA,UAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA0CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAyN,MAAA3D,WAAA9J,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAA6EE,YAAA,YAAsBwH,EAAAtH,GAAA,WAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA2CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAyN,MAAA1D,YAAA/J,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAAqEE,YAAA,YAAsBwH,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAAkDE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAyN,MAAAzD,cAAA,MAAAhK,EAAAQ,GAAAR,EAAAyN,MAAAxD,kBAAAjK,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAAgHE,YAAA,YAAsBwH,EAAAtH,GAAA,YAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA4CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAkK,GAAA,WAAAlK,GAAAyN,MAAAtD,iBAAAnK,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAA6FE,YAAA,YAAsBwH,EAAAtH,GAAA,UAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA0CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAyN,MAAArD,WAAApK,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAAoEE,YAAA,YAAsBwH,EAAAtH,GAAA,UAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA0CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAyN,MAAAR,YAAA,MAAAjN,EAAAQ,GAAAR,EAAAyN,MAAAK,gBAAA9N,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAA4GE,YAAA,YAAsBwH,EAAAtH,GAAA,cAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA8CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAkK,GAAA,OAAAlK,GAAAyN,MAAAM,WAAA,kBAAA/N,EAAAtH,GAAA,KAAAJ,EAAA,UAA+FE,YAAA,gBAA0BF,EAAA,KAAUE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAAoN,aAAuB9U,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,qCAA6CwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,WAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAAiEE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAAgO,cAAwB1V,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,4BAAoCwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,6BAE78GG,iBADjB,WAAoC,IAAaV,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,QAAkBE,YAAA,uBAAiCF,EAAA,KAAUE,YAAA,wCCEhK,IAuBAyV,GAvBAxW,EAAA,OAcAyW,CACAX,GACAK,IATA,EAVA,SAAAjW,GACAF,EAAA,SAaA,KAEA,MAUA,QCsCA0W,SAEA,0DAbA9P,GAAAf,KAAA,QAAAiB,WAAA,+EAAA6P,MACA,IAAA/P,GAAAf,KAAA,QAAAiB,WAAA,0DAAA6P,MAEA,oDAIA1U,mCACA8K,mFAQA+I,cAAAU,4IAUA3Q,OC5EA+Q,IADiBnW,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAAA,EAAA,cAAA0H,EAAAtH,GAAA,KAAAJ,EAAA,wBAAAA,EAAA,YAAwFsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,oBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAAiDE,YAAA,YAAsBwH,EAAAtH,GAAA,cAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAAkDsR,KAAA,WAAe5J,EAAA6E,GAAA7E,EAAAsO,eAAA,eAAA/E,GAAmD,OAAAjR,EAAA,mBAA6BwM,IAAAyE,EAAA7N,GAAAgF,OAAoB6I,cAAiBvJ,EAAAtH,GAAA,KAAAJ,EAAA,YAA8BsR,KAAA,WAActR,EAAA,OAAYE,YAAA,UAAoBF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,KAAUE,YAAA,sCAAA4H,IAAsDC,MAAA,SAAAuF,GAAyB5F,EAAAuO,YAAA,sBAAoCvO,EAAAtH,GAAA,yBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,wBAAAA,EAAA,YAAwFsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,qBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAAkDE,YAAA,YAAsBwH,EAAAtH,GAAA,cAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAAkDsR,KAAA,WAAe5J,EAAA6E,GAAA7E,EAAAwO,gBAAA,eAAAf,GAAoD,OAAAnV,EAAA,mBAA6BwM,IAAA2I,EAAA/R,GAAAgF,OAAoB+M,QAAA3O,SAAA,EAAA0O,YAAAC,EAAA7O,UAAsDoB,EAAAtH,GAAA,KAAAJ,EAAA,YAA8BsR,KAAA,WAActR,EAAA,OAAYE,YAAA,UAAoBF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,KAAUE,YAAA,sCAAA4H,IAAsDC,MAAA,SAAAuF,GAAyB5F,EAAAuO,YAAA,uBAAqCvO,EAAAtH,GAAA,8BAEh2CG,oBCCjB,IAuBA4V,GAvBAhX,EAAA,OAcAiX,CACAP,GACAE,IATA,EAVA,SAAA1W,GACAF,EAAA,SAaA,KAEA,MAUA,QCWAkX,SAEA,6DAZA,mBACA,qFAEA,gDAIAjV,kEAQAmT,cAAAQ,gDCvCAuB,IADiB1W,OAFjB,WAA0B,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAAA,EAAA,cAA/DF,KAA+DM,GAAA,KAAAJ,EAAA,wBAAAA,EAAA,YAAwFsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAArLJ,KAA8MM,GAAA,oBAA9MN,KAA8MM,GAAA,KAAAJ,EAAA,KAAiDE,YAAA,YAA/PJ,KAAqRM,GAAA,cAArRN,KAAqRM,GAAA,KAAAJ,EAAA,YAAkDsR,KAAA,WAAvUxR,KAAsVyM,GAAtVzM,KAAsVkW,eAAA,eAAA/E,GAAmD,OAAAjR,EAAA,mBAA6BwM,IAAAyE,EAAA7N,GAAAgF,OAAoB6I,eAAiB,QAEpd1Q,oBCCjB,IAuBAgW,GAvBApX,EAAA,OAcAqX,CACAH,GACAC,IATA,EAVA,SAAAjX,GACAF,EAAA,SAaA,KAEA,MAUA,QCWAsX,SAEA,6DAZA,mBACA,gEAEA,iDAIAvK,kEAQA+I,cAAAU,iDCvCAe,IADiB9W,OAFjB,WAA0B,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAAA,EAAA,cAA/DF,KAA+DM,GAAA,KAAAJ,EAAA,wBAAAA,EAAA,YAAwFsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAArLJ,KAA8MM,GAAA,qBAA9MN,KAA8MM,GAAA,KAAAJ,EAAA,KAAkDE,YAAA,YAAhQJ,KAAsRM,GAAA,cAAtRN,KAAsRM,GAAA,KAAAJ,EAAA,YAAkDsR,KAAA,WAAxUxR,KAAuVyM,GAAvVzM,KAAuVoW,gBAAA,eAAAf,GAAoD,OAAAnV,EAAA,mBAA6BwM,IAAA2I,EAAA/R,GAAAgF,OAAoB+M,QAAA3O,SAAA,EAAA0O,YAAAC,EAAA7O,WAAsD,QAE3f/F,oBCCjB,IAuBAoW,GAvBAxX,EAAA,OAcAyX,CACAH,GACAC,IATA,EAVA,SAAArX,GACAF,EAAA,SAaA,KAEA,MAUA,QCoBA0X,SAEA,yBAEAnG,YAAAH,WAEA,qDAIA,6BAIA,IAAA5C,EAAA7N,8BACA,sBACA,OAAAiG,EAAA4H,EAAAV,OAAA3G,KAAAyN,KAAA,WACA,OAAAhO,8BAMA,IAAAmI,EAAApO,8BACA,qCACA,OAAAoO,EAAAS,OAAAnJ,SAAA,oBAAAP,KAAA,kCAAAD,KAAA,OAAAE,QAEA,yDAIA,wDACA9B,QC3EA0T,IADiBlX,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,UAAoBF,EAAA,OAAYE,YAAA,yCAAA4H,IAAyDC,MAAAL,EAAAkN,eAAyB5U,EAAA,MAAWE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuF,OAAA9E,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,OAA4DE,YAAA,gBAA0BF,EAAA,KAAU8H,IAAIC,MAAA,SAAAuF,GAAyB5F,EAAAyJ,oBAAA,MAAgCzJ,EAAA+B,GAAA,KAAA/B,EAAAtH,GAAA,KAAAJ,EAAA,gBAA6CoI,OAAOgJ,KAAA1J,EAAAyJ,oBAA8BrJ,IAAKuJ,MAAA,SAAA/D,GAAyB5F,EAAAyJ,oBAAA,MAAiCnR,EAAA,YAAiBsR,KAAA,kBAAqBtR,EAAA,OAAYE,YAAA,SAAmBF,EAAA,OAAYE,YAAA,iBAA2BF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,KAAUE,YAAA,gBAAA4H,IAAgCC,MAAAL,EAAAkN,eAAyBlN,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuF,OAAA9E,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,OAA4DE,YAAA,qBAA+BF,EAAA,KAAAA,EAAA,QAAqBE,YAAA,YAAsBwH,EAAAtH,GAAA,YAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA4CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuF,OAAA8J,kBAAArP,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAA4EE,YAAA,YAAsBwH,EAAAtH,GAAA,YAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA4CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuF,OAAA4H,sBAAAnN,EAAAtH,GAAA,KAAAJ,EAAA,UAA0EE,YAAA,gBAA0BF,EAAA,KAAUE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAAoN,aAAuB9U,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,qCAA6CwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,WAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAAiEE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAAoJ,QAAkB9Q,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,4BAAoCwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,6BAEhkDG,iBADjB,WAAoC,IAAaV,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,QAAkBE,YAAA,uBAAiCF,EAAA,KAAUE,YAAA,wCCEhK,IAuBA8W,GAvBA7X,EAAA,OAcA8X,CACAJ,GACAC,IATA,EAVA,SAAAzX,GACAF,EAAA,SAaA,KAEA,MAUA,QCgBA+X,SAEA,qFALA/I,gEAQA0I,eAAAG,mGASAnU,2ErExC4B,qBqE8C5BA,iBC3DAsU,IADiBvX,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAAA,EAAA,cAAA0H,EAAAtH,GAAA,KAAAJ,EAAA,wBAAAA,EAAA,YAAwFsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,aAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAA0CE,YAAA,YAAsBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAvG,QAAAiW,OAAA,gBAAA1P,EAAAtH,GAAA,KAAAJ,EAAA,YAA8EsR,KAAA,kBAAqBtR,EAAA,KAAUE,YAAA,kBAAA0H,OAAqC2K,UAAA7K,EAAA7E,cAA8BiF,IAAKC,MAAAL,EAAA2P,uBAAiCrX,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,6CAAqDwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,sBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAAmFsR,KAAA,WAAe5J,EAAA6E,GAAA7E,EAAAvG,QAAA,eAAA8L,GAA6C,OAAAvF,EAAA7E,cAAAoK,EAAA4H,YAAA,EAAA5H,EAAA8J,YAAA/W,EAAA,oBAAmGwM,IAAAS,EAAA7J,GAAAgF,OAAqB6E,YAAiBvF,EAAAyE,SAAW,QAE/2B5L,oBCCjB,IAuBA+W,GAvBAnY,EAAA,OAcAoY,CACAL,GACAC,IATA,EAVA,SAAA9X,GACAF,EAAA,SAaA,KAEA,MAUA,QCMAqY,SAEA,0DAbAzR,EAAAgG,EAAA7E,OACAsN,WAAAzO,EAAAgG,EAAA7E,OAEAsN,8CAIArG,mBACAA,mDAQAoG,cAAAQ,6DClCA0C,IADiB7X,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,wBAAAA,EAAA,YAAiDsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuF,OAAA9E,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,YAAiEsR,KAAA,YAAetR,EAAA,KAAUE,YAAA,qCAA+CwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuF,OAAA8J,aAAA,aAAArP,EAAAQ,GAAAR,EAAAuF,OAAA4H,aAAA,aAAAnN,EAAAtH,GAAA,KAAAsH,EAAA6E,GAAA7E,EAAAtG,OAAA,eAAA6P,GAAuJ,OAAAjR,EAAA,mBAA6BwM,IAAAyE,EAAA7N,GAAAgF,OAAoB6I,cAAiB,QAElhB1Q,oBCCjB,IAuBAmX,GAvBAvY,EAAA,OAcAwY,CACAH,GACAC,IATA,EAVA,SAAApY,GACAF,EAAA,SAaA,KAEA,MAUA,QCgBAyY,SAEA,mFALAzJ,gEAQAoG,cAAAQ,kGASAlS,2E3ExC4B,qB2E8C5BA,iBC3DAgV,IADiBjY,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAAA,EAAA,cAAA0H,EAAAtH,GAAA,KAAAJ,EAAA,wBAAAA,EAAA,YAAwFsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,YAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAAyCE,YAAA,YAAsBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAtG,OAAAgW,OAAA,eAAA1P,EAAAtH,GAAA,KAAAJ,EAAA,YAA4EsR,KAAA,kBAAqBtR,EAAA,KAAUE,YAAA,kBAAA0H,OAAqC2K,UAAA7K,EAAA7E,cAA8BiF,IAAKC,MAAAL,EAAA2P,uBAAiCrX,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,6CAAqDwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,sBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAAmFsR,KAAA,WAAe5J,EAAA6E,GAAA7E,EAAAtG,OAAA,eAAA6P,GAA2C,OAAAvJ,EAAA7E,cAAAoO,EAAA4D,YAAA,EAAA7U,EAAA,mBAA0EwM,IAAAyE,EAAA7N,GAAAgF,OAAoB6I,WAAevJ,EAAAyE,SAAW,QAE90B5L,oBCCjB,IAuBAuX,GAvBA3Y,EAAA,OAcA4Y,CACAH,GACAC,IATA,EAVA,SAAAxY,GACAF,EAAA,SAaA,KAEA,MAUA,QCeA6Y,SAEA,yDAbAjS,EAAAgG,EAAA7E,OACAkO,UAAArP,EAAAgG,EAAA7E,OAEAkO,4CAIAjH,wBACA9L,oDAQA4S,cAAAU,yGAUA,uDACAnB,6BAGA,IAAA7G,EAAA7N,yBACA,OAAAiG,EAAA4H,EAAAsD,MAAA3K,KAAAyN,KAAA,WACA,OAAAhO,WC3DAkS,IADiBrY,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,wBAAAA,EAAA,YAAiDsR,KAAA,iBAAoBtR,EAAA,OAAYE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA9I,SAAAT,EAAAtH,GAAA,KAAAJ,EAAA,KAAuDE,YAAA,kDAAA4H,IAAkEC,MAAAL,EAAAkN,eAAyBlN,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAAhE,aAAAvF,EAAAtH,GAAA,KAAAJ,EAAA,YAAkEsR,KAAA,kBAAqBtR,EAAA,KAAUE,YAAA,qCAAA4H,IAAqDC,MAAAL,EAAAoJ,QAAkB9Q,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,mBAA2BwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,cAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAA2EsR,KAAA,YAAetR,EAAA,KAAUE,YAAA,qCAA+CwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA4D,aAAA,aAAAnN,EAAAtH,GAAA,KAAAsH,EAAA6E,GAAA7E,EAAA,gBAAAyN,EAAApR,GAA0G,OAAA/D,EAAA,mBAA6BwM,IAAA2I,EAAA/R,GAAAgF,OAAoB+M,QAAA3O,SAAAzC,EAAAmR,YAAAxN,EAAAuJ,MAAA3K,UAA8D,QAE75B/F,oBCCjB,IAuBA2X,GAvBA/Y,EAAA,OAcAgZ,CACAH,GACAC,IATA,EAVA,SAAA5Y,GACAF,EAAA,SAaA,KAEA,MAUA,QCIAiZ,SAEA,qFALAjK,mDAQAoG,cAAAQ,wCChCAsD,IADiBzY,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAAA,EAAA,wBAAAA,EAAA,YAA2DsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,cAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAA2CE,YAAA,YAAsBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAtG,OAAAgW,OAAA,iBAAA1P,EAAAtH,GAAA,KAAAJ,EAAA,YAA8EsR,KAAA,WAAe5J,EAAA6E,GAAA7E,EAAAtG,OAAA,eAAA6P,GAA2C,OAAAjR,EAAA,mBAA6BwM,IAAAyE,EAAA7N,GAAAgF,OAAoB6I,QAAA0D,WAAA,iBAAwC,QAE5dpU,oBCCjB,IAuBA+X,GAvBAnZ,EAAA,OAcAoZ,CACAH,GACAC,IATA,EAVA,SAAAhZ,GACAF,EAAA,SAaA,KAEA,MAUA,QCcAqZ,SAEA,2DAbAzS,EAAAgG,EAAA7E,OACAkO,UAAArP,EAAAgG,EAAA7E,OAEAkO,4CAIAjH,wBACA9L,oDAQA4S,cAAAU,yEASA,IAAAhI,EAAA7N,yBACA,OAAAiG,EAAA4H,EAAAsD,MAAA3K,KAAAyN,KAAA,WACA,OAAAhO,WCrDA0S,IADiB7Y,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,wBAAAA,EAAA,YAAiDsR,KAAA,iBAAoBtR,EAAA,OAAYE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA9I,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,YAAgEsR,KAAA,kBAAqBtR,EAAA,KAAUE,YAAA,qCAAA4H,IAAqDC,MAAAL,EAAAoJ,QAAkB9Q,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,mBAA2BwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,cAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAA2EsR,KAAA,YAAetR,EAAA,KAAUE,YAAA,qCAA+CwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA4D,aAAA,aAAAnN,EAAAtH,GAAA,KAAAsH,EAAA6E,GAAA7E,EAAA,gBAAAyN,EAAApR,GAA0G,OAAA/D,EAAA,mBAA6BwM,IAAA2I,EAAA/R,GAAAgF,OAAoB+M,QAAA3O,SAAAzC,EAAAmR,YAAAxN,EAAAuJ,MAAA3K,UAA8D,QAEzwB/F,oBCCjB,IAuBAmY,GAvBAvZ,EAAA,OAcAwZ,CACAH,GACAC,IATA,EAVA,SAAApZ,GACAF,EAAA,SAaA,KAEA,MAUA,QCIAyZ,SAEA,uFALAzK,mDAQAoG,cAAAQ,wCChCA8D,IADiBjZ,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAAA,EAAA,wBAAAA,EAAA,YAA2DsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,gBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAA6CE,YAAA,YAAsBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAtG,OAAAgW,OAAA,mBAAA1P,EAAAtH,GAAA,KAAAJ,EAAA,YAAgFsR,KAAA,WAAe5J,EAAA6E,GAAA7E,EAAAtG,OAAA,eAAA6P,GAA2C,OAAAjR,EAAA,mBAA6BwM,IAAAyE,EAAA7N,GAAAgF,OAAoB6I,QAAA0D,WAAA,mBAA0C,QAElepU,oBCCjB,IAuBAuY,GAvBA3Z,EAAA,OAcA4Z,CACAH,GACAC,IATA,EAVA,SAAAxZ,GACAF,EAAA,SAaA,KAEA,MAUA,QCeA6Z,SAEA,6DAbAjT,EAAAgG,EAAA7E,OACAkO,UAAArP,EAAAgG,EAAA7E,OAEAkO,4CAIAjH,wBACA9L,oDAQA4S,cAAAU,yEASA,IAAAhI,EAAA7N,yBACA,OAAAiG,EAAA4H,EAAAsD,MAAA3K,KAAAyN,KAAA,WACA,OAAAhO,WCtDAkT,IADiBrZ,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,wBAAAA,EAAA,YAAiDsR,KAAA,iBAAoBtR,EAAA,OAAYE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA9I,SAAAT,EAAAtH,GAAA,KAAAJ,EAAA,OAAyDE,YAAA,oDAA8DwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAAhE,aAAAvF,EAAAtH,GAAA,KAAAJ,EAAA,YAAkEsR,KAAA,kBAAqBtR,EAAA,KAAUE,YAAA,qCAAA4H,IAAqDC,MAAAL,EAAAoJ,QAAkB9Q,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,mBAA2BwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,cAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAA2EsR,KAAA,YAAetR,EAAA,KAAUE,YAAA,qCAA+CwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA4D,aAAA,aAAAnN,EAAAtH,GAAA,KAAAsH,EAAA6E,GAAA7E,EAAA,gBAAAyN,EAAApR,GAA0G,OAAA/D,EAAA,mBAA6BwM,IAAA2I,EAAA/R,GAAAgF,OAAoB+M,QAAA3O,SAAAzC,EAAAmR,YAAAxN,EAAAuJ,MAAA3K,UAA8D,QAEl4B/F,oBCCjB,IAuBA2Y,GAvBA/Z,EAAA,OAcAga,CACAH,GACAC,IATA,EAVA,SAAA5Z,GACAF,EAAA,SAaA,KAEA,MAUA,QCgBAia,SAEA,2BAEA1I,YAAAH,WAEA,uDAIA,6BAIA,IAAA5C,EAAA7N,8BACA,sBACA,OAAAiG,EAAA4H,EAAA0L,SAAA/S,KAAAyN,KAAA,WACA,OAAAhO,8BAMA,IAAAmI,EAAApO,8BACA,uCACA,OAAAoO,EAAAS,OAAAnJ,SAAA,oBAAAP,KAAA,6BAAAD,KAAA,OAAAE,QAEA,2DAIA,sDACA9B,QCvEAkW,IADiB1Z,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,UAAoBF,EAAA,OAAYE,YAAA,yCAAA4H,IAAyDC,MAAAL,EAAA6R,iBAA2BvZ,EAAA,MAAWE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAA2R,SAAAlR,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,OAA8DE,YAAA,gBAA0BF,EAAA,KAAU8H,IAAIC,MAAA,SAAAuF,GAAyB5F,EAAAyJ,oBAAA,MAAgCzJ,EAAA+B,GAAA,KAAA/B,EAAAtH,GAAA,KAAAJ,EAAA,gBAA6CoI,OAAOgJ,KAAA1J,EAAAyJ,oBAA8BrJ,IAAKuJ,MAAA,SAAA/D,GAAyB5F,EAAAyJ,oBAAA,MAAiCnR,EAAA,YAAiBsR,KAAA,kBAAqBtR,EAAA,OAAYE,YAAA,SAAmBF,EAAA,OAAYE,YAAA,iBAA2BF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,KAAUE,YAAA,gBAAA4H,IAAgCC,MAAAL,EAAA6R,iBAA2B7R,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAA2R,SAAAlR,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,OAA8DE,YAAA,qBAA+BF,EAAA,KAAAA,EAAA,QAAqBE,YAAA,YAAsBwH,EAAAtH,GAAA,UAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA0CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAA2R,SAAAvH,eAAApK,EAAAtH,GAAA,KAAAJ,EAAA,UAAqEE,YAAA,gBAA0BF,EAAA,KAAUE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAAoN,aAAuB9U,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,qCAA6CwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,WAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAAiEE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAAoJ,QAAkB9Q,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,4BAAoCwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,6BAE15CG,iBADjB,WAAoC,IAAaV,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,QAAkBE,YAAA,uBAAiCF,EAAA,KAAUE,YAAA,wCCEhK,IAuBAsZ,GAvBAra,EAAA,OAcAsa,CACAL,GACAE,IATA,EAVA,SAAAja,GACAF,EAAA,SAaA,KAEA,MAUA,QCGAua,SAEA,yFALAvL,gEAQAiL,iBAAAI,2CC/BAG,IADiB/Z,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,wBAAAA,EAAA,YAAiDsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,eAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAA4CE,YAAA,YAAsBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAkS,UAAAxC,OAAA,kBAAA1P,EAAAtH,GAAA,KAAAJ,EAAA,YAAkFsR,KAAA,WAAe5J,EAAA6E,GAAA7E,EAAAkS,UAAA,eAAAP,GAAiD,OAAArZ,EAAA,sBAAgCwM,IAAA6M,EAAAjW,GAAAgF,OAAuBiR,kBAAuB,IAEld9Y,oBCCjB,IAuBAsZ,GAvBA1a,EAAA,OAcA2a,CACAJ,GACAC,IATA,EAVA,SAAAta,GACAF,EAAA,SAaA,KAEA,MAUA,QCcA4a,SAEA,4DAbAhU,EAAAgG,EAAA7E,OACA8S,aAAAjU,EAAAgG,EAAA7E,OAEA8S,kDAIA7L,wBACA9L,oDAQA4S,cAAAU,4EASA,IAAAhI,EAAA7N,yBACA,OAAAiG,EAAA4H,EAAA0L,SAAA/S,KAAAyN,KAAA,WACA,OAAAhO,WCrDAkU,IADiBra,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,wBAAAA,EAAA,YAAiDsR,KAAA,iBAAoBtR,EAAA,OAAYE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAA2R,SAAAlR,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,YAAmEsR,KAAA,kBAAqBtR,EAAA,KAAUE,YAAA,qCAAA4H,IAAqDC,MAAAL,EAAAoJ,QAAkB9Q,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,mBAA2BwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,cAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAA2EsR,KAAA,YAAetR,EAAA,KAAUE,YAAA,qCAA+CwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAwE,OAAA5H,QAAA,aAAAoD,EAAAtH,GAAA,KAAAsH,EAAA6E,GAAA7E,EAAA,gBAAAyN,EAAApR,GAAsG,OAAA/D,EAAA,mBAA6BwM,IAAA2I,EAAA/R,GAAAgF,OAAoB+M,QAAA3O,SAAAzC,EAAAmR,YAAAxN,EAAA2R,SAAA/S,UAAiE,QAE3wB/F,oBCCjB,IAuBA2Z,GAvBA/a,EAAA,OAcAgb,CACAJ,GACAE,IATA,EAVA,SAAA5a,GACAF,EAAA,SAaA,KAEA,MAUA,QCvBAib,IADiBxa,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAA6H,EAAA,gBAAA1H,EAAA,WAA2CE,YAAA,4BAAsCF,EAAA,OAAYE,YAAA,cAAwBF,EAAA,OAAYE,YAAA,wBAAkCF,EAAA,OAAYE,YAAA,0BAAoCF,EAAA,OAAYE,YAAA,0DAAoEF,EAAA,MAAAA,EAAA,eAA6BoI,OAAO+L,IAAA,KAAApI,IAAiB+F,KAAA,kBAAAzN,MAAAqD,EAAA2S,OAAAhW,OAAmD2H,eAAA,eAA6BhM,EAAA,KAAAA,EAAA,QAAqBE,YAAA,kBAA4BF,EAAA,KAAUE,YAAA,4BAAoCwH,EAAAtH,GAAA,KAAAJ,EAAA,WAA4B0H,EAAAtH,GAAA,iBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,eAAwDoI,OAAO+L,IAAA,KAAApI,IAAiB+F,KAAA,kBAAAzN,MAAAqD,EAAA2S,OAAAhW,OAAmD2H,eAAA,eAA6BhM,EAAA,KAAAA,EAAA,QAAqBE,YAAA,kBAA4BF,EAAA,KAAUE,YAAA,sBAA8BwH,EAAAtH,GAAA,KAAAJ,EAAA,WAA4B0H,EAAAtH,GAAA,+BAAAsH,EAAAyE,MAEh4B5L,oBCCjB,IAuBA+Z,GAvBAnb,EAAA,OAcAob,OCcA,mFAGAjG,sBDfA8F,IATA,EAVA,SAAA/a,GACAF,EAAA,SAaA,KAEA,MAUA,iBEuFA,yHAEAia,iBAAAI,wCAGA,0BACA,2BACA,0BACA,6BAEA,mEAKA5W,uGAIA,uFAGA0B,+FAIA,2FAGAA,8FAIA,uFAGAA,iGAIA,mGAGAA,qCAKA,IAAAqJ,EAAA7N,2CAIA,yBAFA,gCACA0a,4BAKAxV,mBACAX,iBAGA,yCAEAyR,uBACA2E,8BAGA,IAAAtM,EAAAtJ,EAAAsJ,gDACA,iDACA,8CACA,uDAEA,mBzG1KiC,sByG2KjC9J,4EASA,8BAEA,yCACAqW,mBACA,SAGA,6BACAC,+DAIA,8BAEA,gCAGAtW,iEAIA,8BAEA,iCAGAA,gEAIA,8BAEA,gCAGAA,mEAIA,8BAEA,mCAGAA,2DAIAA,OACAuW,mDAKAP,iDAKAtO,MC1PA8O,IADiBjb,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAAA,EAAA,WAA+BE,YAAA,4BAAsCF,EAAA,OAAYE,YAAA,cAAwBF,EAAA,OAAYE,YAAA,wBAAkCF,EAAA,OAAYE,YAAA,0BAAoCF,EAAA,QAAa8H,IAAIgT,OAAA,SAAAxN,GAAkD,OAAxBA,EAAAyN,iBAAwBrT,EAAAkT,WAAAtN,OAAgCtN,EAAA,OAAYE,YAAA,UAAoBF,EAAA,KAAUE,YAAA,uCAAiDF,EAAA,SAAciQ,aAAa9H,KAAA,QAAA+H,QAAA,UAAAzH,MAAAf,EAAA,aAAAzB,WAAA,iBAAkF+U,IAAA,eAAA9a,YAAA,iCAAAkI,OAAyEpD,KAAA,OAAAiW,YAAA,UAAqCC,UAAWzS,MAAAf,EAAA,cAA2BI,IAAKqT,MAAA,SAAA7N,GAAyBA,EAAA8N,OAAAC,YAAsC3T,EAAAgT,aAAApN,EAAA8N,OAAA3S,WAAuCf,EAAAtH,GAAA,KAAAsH,EAAA+B,GAAA,SAAA/B,EAAAtH,GAAA,KAAAJ,EAAA,OAAoDE,YAAA,OAAAG,aAAgCC,aAAA,SAAqBoH,EAAA6E,GAAA7E,EAAA,yBAAA4T,GAAsD,OAAAtb,EAAA,KAAewM,IAAA8O,EAAApb,YAAA,MAAA4H,IAAwCC,MAAA,SAAAuF,GAAyB5F,EAAA6T,mBAAAD,OAAwC5T,EAAAtH,GAAAsH,EAAAQ,GAAAoT,iBAAkC5T,EAAAtH,GAAA,KAAAJ,EAAA,eAAA0H,EAAAtH,GAAA,KAAAsH,EAAA,YAAA1H,EAAA,wBAAAA,EAAA,YAAiHsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,cAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAAkDsR,KAAA,WAAe5J,EAAA6E,GAAA7E,EAAAwE,OAAA,eAAAiJ,GAA2C,OAAAnV,EAAA,mBAA6BwM,IAAA2I,EAAA/R,GAAAgF,OAAoB+M,QAAA3O,SAAA,EAAA0O,YAAAC,EAAA7O,UAAsDoB,EAAAtH,GAAA,KAAAJ,EAAA,YAA8BsR,KAAA,WAAc5J,EAAA,uBAAA1H,EAAA,OAAyCE,YAAA,UAAoBF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,KAAUE,YAAA,sCAAA4H,IAAsDC,MAAAL,EAAA8T,sBAAgC9T,EAAAtH,GAAA,YAAAsH,EAAAQ,GAAAR,EAAAwE,OAAAkL,OAAA,iBAAA1P,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAAwE,OAAAkL,MAAA1P,EAAAyE,KAAAnM,EAAA,KAAA0H,EAAAtH,GAAA,sBAAAsH,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAA,aAAA1H,EAAA,wBAAAA,EAAA,YAAwOsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,eAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAAmDsR,KAAA,WAAe5J,EAAA6E,GAAA7E,EAAAvG,QAAA,eAAA8L,GAA6C,OAAAjN,EAAA,oBAA8BwM,IAAAS,EAAA7J,GAAAgF,OAAqB6E,eAAmBvF,EAAAtH,GAAA,KAAAJ,EAAA,YAA8BsR,KAAA,WAAc5J,EAAA,wBAAA1H,EAAA,OAA0CE,YAAA,UAAoBF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,KAAUE,YAAA,sCAAA4H,IAAsDC,MAAAL,EAAA+T,uBAAiC/T,EAAAtH,GAAA,YAAAsH,EAAAQ,GAAAR,EAAAvG,QAAAiW,OAAA,kBAAA1P,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAAvG,QAAAiW,MAAA1P,EAAAyE,KAAAnM,EAAA,KAAA0H,EAAAtH,GAAA,sBAAAsH,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAA,YAAA1H,EAAA,wBAAAA,EAAA,YAA0OsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,cAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAAkDsR,KAAA,WAAe5J,EAAA6E,GAAA7E,EAAAtG,OAAA,eAAA6P,GAA2C,OAAAjR,EAAA,mBAA6BwM,IAAAyE,EAAA7N,GAAAgF,OAAoB6I,cAAiBvJ,EAAAtH,GAAA,KAAAJ,EAAA,YAA8BsR,KAAA,WAAc5J,EAAA,uBAAA1H,EAAA,OAAyCE,YAAA,UAAoBF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,KAAUE,YAAA,sCAAA4H,IAAsDC,MAAAL,EAAAgU,sBAAgChU,EAAAtH,GAAA,YAAAsH,EAAAQ,GAAAR,EAAAtG,OAAAgW,OAAA,iBAAA1P,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAAtG,OAAAgW,MAAA1P,EAAAyE,KAAAnM,EAAA,KAAA0H,EAAAtH,GAAA,sBAAAsH,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAA,eAAA1H,EAAA,wBAAAA,EAAA,YAA0OsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,iBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAAqDsR,KAAA,WAAe5J,EAAA6E,GAAA7E,EAAAkS,UAAA,eAAAP,GAAiD,OAAArZ,EAAA,sBAAgCwM,IAAA6M,EAAAjW,GAAAgF,OAAuBiR,iBAAuB3R,EAAAtH,GAAA,KAAAJ,EAAA,YAA8BsR,KAAA,WAAc5J,EAAA,0BAAA1H,EAAA,OAA4CE,YAAA,UAAoBF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,KAAUE,YAAA,sCAAA4H,IAAsDC,MAAAL,EAAAiU,yBAAmCjU,EAAAtH,GAAA,YAAAsH,EAAAQ,GAAAR,EAAAkS,UAAAxC,OAAA,oBAAA1P,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAAkS,UAAAxC,MAAA1P,EAAAyE,KAAAnM,EAAA,KAAA0H,EAAAtH,GAAA,sBAAAsH,EAAAyE,MAAA,IAE5yH5L,iBADjB,WAAoC,IAAaV,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,QAAkBE,YAAA,iBAA2BF,EAAA,KAAUE,YAAA,yBCE1J,IAuBA0b,GAvBAzc,EAAA,OAcA0c,CACAC,GACAjB,IATA,EAVA,SAAAxb,GACAF,EAAA,SAaA,KAEA,MAUA,QCwDA4c,SAGA,0GASAjb,oDAGAI,mFAYA,SC1GA8a,IADiBpc,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAAA,EAAA,WAA+BE,YAAA,YAAsBF,EAAA,OAAYE,YAAA,cAAwBF,EAAA,OAAYE,YAAA,wBAAkCF,EAAA,OAAYE,YAAA,mDAA6DF,EAAA,KAAUE,YAAA,YAAsBF,EAAA,KAAA0H,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,cAAAsH,EAAAQ,GAAAR,EAAA5G,OAAAE,YAAA0G,EAAAtH,GAAA,KAAAJ,EAAA,MAA2GE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAA5G,OAAAsN,yBAAA1G,EAAAtH,GAAA,KAAAJ,EAAA,WAA8EE,YAAA,YAAsBF,EAAA,OAAYE,YAAA,cAAwBF,EAAA,OAAYE,YAAA,wBAAkCF,EAAA,OAAYE,YAAA,0BAAoCF,EAAA,OAAYE,YAAA,YAAsBF,EAAA,OAAYE,YAAA,oBAA8BwH,EAAA+B,GAAA,GAAA/B,EAAAtH,GAAA,KAAAJ,EAAA,OAAkCE,YAAA,gBAA0BF,EAAA,KAAUE,YAAA,sCAAA0H,OAAyDqU,aAAAvU,EAAAxG,QAAAK,UAAqCuG,IAAKC,MAAAL,EAAAwU,UAAoBxU,EAAAtH,GAAA,gBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,SAAiDE,YAAA,UAAoBF,EAAA,SAAAA,EAAA,MAAAA,EAAA,MAAA0H,EAAAtH,GAAA,aAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,MAAyEE,YAAA,mBAA6BwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAkK,GAAA,SAAAlK,GAAAxG,QAAAC,eAAAuG,EAAAtH,GAAA,KAAAJ,EAAA,MAAAA,EAAA,MAAA0H,EAAAtH,GAAA,YAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,MAAkIE,YAAA,mBAA6BwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAkK,GAAA,SAAAlK,GAAAxG,QAAAE,cAAAsG,EAAAtH,GAAA,KAAAJ,EAAA,MAAAA,EAAA,MAAA0H,EAAAtH,GAAA,YAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,MAAiIE,YAAA,mBAA6BwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAkK,GAAA,SAAAlK,GAAAxG,QAAAG,aAAAqG,EAAAtH,GAAA,KAAAJ,EAAA,MAAAA,EAAA,MAAA0H,EAAAtH,GAAA,oBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,MAAwIE,YAAA,mBAA6BwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAkK,GAAA,WAAAlK,CAAA,IAAAA,EAAAxG,QAAAI,YAAA,qDAAAoG,EAAAtH,GAAA,KAAAJ,EAAA,MAAAA,EAAA,MAAA0H,EAAAtH,GAAA,qBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,MAAsME,YAAA,mBAA6BwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAkK,GAAA,cAAAlK,GAAAxG,QAAAib,aAAA,KAAAnc,EAAA,QAA+EE,YAAA,kBAA4BwH,EAAAtH,GAAA,IAAAsH,EAAAQ,GAAAR,EAAAkK,GAAA,OAAAlK,GAAAxG,QAAAib,WAAA,4BAAAzU,EAAAtH,GAAA,KAAAJ,EAAA,MAAAA,EAAA,MAAA0H,EAAAtH,GAAA,YAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,MAA4JE,YAAA,mBAA6BwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAkK,GAAA,cAAAlK,GAAAxG,QAAAkb,YAAA,SAAApc,EAAA,QAAoFE,YAAA,kBAA4BwH,EAAAtH,GAAA,IAAAsH,EAAAQ,GAAAR,EAAAkK,GAAA,OAAAlK,GAAAxG,QAAAkb,WAAA,0CAAA1U,EAAAtH,GAAA,KAAAJ,EAAA,WAA8HE,YAAA,YAAsBF,EAAA,OAAYE,YAAA,cAAwBF,EAAA,OAAYE,YAAA,wBAAkCF,EAAA,OAAYE,YAAA,0BAAoCF,EAAA,OAAYE,YAAA,qCAA+CF,EAAA,KAAUE,YAAA,cAAwBwH,EAAAtH,GAAA,6BAAAsH,EAAAQ,GAAAR,EAAAkK,GAAA,OAAAlK,GAAA5G,OAAAG,eAAA,OAAAyG,EAAAtH,GAAA,KAAAJ,EAAA,KAAiHE,YAAA,cAAwBF,EAAA,KAAUoI,OAAOqE,KAAA,8CAAmD/E,EAAAtH,GAAA,mBAAAsH,EAAAtH,GAAA,KAAAsH,EAAAQ,GAAAR,EAAA1G,SAAA,gBAAAhB,EAAA,KAAoFoI,OAAOqE,KAAA,qBAA0B/E,EAAAtH,GAAA,WAAAsH,EAAAtH,GAAA,MAAAJ,EAAA,KAAyCoI,OAAOqE,KAAA,sCAA2C/E,EAAAtH,GAAA,2BAAAsH,EAAAtH,GAAA,MAAAJ,EAAA,KAAyDoI,OAAOqE,KAAA,wBAA6B/E,EAAAtH,GAAA,YAAAsH,EAAAtH,GAAA,MAAAJ,EAAA,KAA0CoI,OAAOqE,KAAA,yCAA8C/E,EAAAtH,GAAA,WAAAsH,EAAAtH,GAAA,SAAAJ,EAAA,KAA4CoI,OAAOqE,KAAA,mEAAwE/E,EAAAtH,GAAA,UAAAsH,EAAAtH,GAAA,oBAEtvGG,iBADjB,WAAoC,IAAaV,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,eAAyBF,EAAA,OAAYE,YAAA,eAAyBF,EAAA,MAAWE,YAAA,eAAzJJ,KAAkLM,GAAA,oBCEtN,IAuBAic,GAvBAld,EAAA,OAcAmd,CACAP,GACAC,IATA,EAVA,SAAA3c,GACAF,EAAA,SAaA,KAEA,MAUA,QC4BAod,SAGA,8BAEA,oDAIA,6BAIA,IAAA5O,EAAA7N,yBACA,OAAAiG,EAAA4H,EAAAsD,MAAA3K,KAAAyN,KAAA,WACA,OAAAhO,iCAIA,0CAIAgO,wGAGA,gCACA,oDAIA,oDAIA,qFAIA3Q,sDAIA,0EACAA,QC/FAoZ,IADiB5c,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,UAAoBF,EAAA,OAAYE,YAAA,yCAAA4H,IAAyDC,MAAAL,EAAAgN,cAAwB1U,EAAA,MAAWE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA9I,SAAAT,EAAAtH,GAAA,KAAAJ,EAAA,MAAwDE,YAAA,gCAA0CF,EAAA,KAAA0H,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA9P,QAAA,GAAAgH,aAAAT,EAAAtH,GAAA,KAAAJ,EAAA,OAAgFE,YAAA,gBAA0BF,EAAA,KAAU8H,IAAIC,MAAAL,EAAA+U,gBAA0B/U,EAAA+B,GAAA,KAAA/B,EAAAtH,GAAA,KAAAJ,EAAA,cAA2CoI,OAAOD,KAAA,UAAeT,EAAA,mBAAA1H,EAAA,OAAqCE,YAAA,oBAA8BF,EAAA,OAAYE,YAAA,mBAAA4H,IAAmCC,MAAAL,EAAAgV,gBAA0BhV,EAAAtH,GAAA,KAAAJ,EAAA,OAAwBE,YAAA,kBAA4BF,EAAA,OAAYE,YAAA,SAAmBF,EAAA,OAAYE,YAAA,iBAA2BF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,KAAUE,YAAA,gBAAA4H,IAAgCC,MAAAL,EAAAgN,cAAwBhN,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA9I,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,OAA2DE,YAAA,qBAA+BF,EAAA,KAAAA,EAAA,QAAqBE,YAAA,YAAsBwH,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAA+CE,YAAA,2BAAA4H,IAA2CC,MAAAL,EAAAkN,eAAyBlN,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA9P,QAAA,GAAAgH,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAA+EE,YAAA,YAAsBwH,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAAkDE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA0L,mBAAAjV,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAA4EE,YAAA,YAAsBwH,EAAAtH,GAAA,UAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA0CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA2L,qBAAAlV,EAAAtH,GAAA,KAAAJ,EAAA,UAAwEE,YAAA,gBAA0BF,EAAA,KAAUE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAAoN,aAAuB9U,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,qCAA6CwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,WAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAAiEE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAAoJ,QAAkB9Q,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,4BAAoCwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,UAA6EE,YAAA,uBAAAkI,OAA0C0D,aAAA,SAAqBhE,IAAKC,MAAAL,EAAAgV,kBAA0BhV,EAAAyE,QAAA,MAEnmE5L,iBADjB,WAAoC,IAAaV,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,QAAkBE,YAAA,uBAAiCF,EAAA,KAAUE,YAAA,wCCEhK,IAuBA2c,GAvBA1d,EAAA,OAcA2d,CACAP,GACAC,IATA,EAVA,SAAAnd,GACAF,EAAA,SAaA,KAEA,MAUA,QC4BA4d,SAGA,iCAEA,uDAIA,6BAIA,IAAApP,EAAA7N,yBACA,OAAAiG,EAAA4H,EAAA0L,SAAA/S,KAAAyN,KAAA,WACA,OAAAhO,iCAIA,wBAGA,IAAAmI,EAAApO,0CACA,OAAAoO,EAAAS,OAAAnJ,SAAA,oBAAAP,KAAA,6BAAAD,KAAA,OAAAE,QAEA,iCACA,oDAIA,oDAIA,qDAIA,+FACA9B,QC1FA4Z,IADiBpd,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,UAAoBF,EAAA,OAAYE,YAAA,yCAAA4H,IAAyDC,MAAAL,EAAA6R,iBAA2BvZ,EAAA,MAAWE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAA2R,SAAAlR,SAAAT,EAAAtH,GAAA,KAAAJ,EAAA,MAA2DE,YAAA,kBAA4BwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAA2R,SAAA4D,MAAAC,mBAAAxV,EAAAtH,GAAA,KAAAJ,EAAA,OAA4EE,YAAA,gBAA0BF,EAAA,KAAU8H,IAAIC,MAAAL,EAAA+U,gBAA0B/U,EAAA+B,GAAA,KAAA/B,EAAAtH,GAAA,KAAAJ,EAAA,cAA2CoI,OAAOD,KAAA,UAAeT,EAAA,mBAAA1H,EAAA,OAAqCE,YAAA,oBAA8BF,EAAA,OAAYE,YAAA,mBAAA4H,IAAmCC,MAAAL,EAAAgV,gBAA0BhV,EAAAtH,GAAA,KAAAJ,EAAA,OAAwBE,YAAA,kBAA4BF,EAAA,OAAYE,YAAA,SAAmBF,EAAA,OAAYE,YAAA,iBAA2BF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,KAAUE,YAAA,gBAAA4H,IAAgCC,MAAAL,EAAA6R,iBAA2B7R,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAA2R,SAAAlR,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,OAA8DE,YAAA,qBAA+BF,EAAA,KAAAA,EAAA,QAAqBE,YAAA,YAAsBwH,EAAAtH,GAAA,WAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA2CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAA2R,SAAA4D,MAAAC,mBAAAxV,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAAqFE,YAAA,YAAsBwH,EAAAtH,GAAA,YAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA4CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAA2R,SAAAnN,OAAAkL,YAAA1P,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAA+EE,YAAA,YAAsBwH,EAAAtH,GAAA,UAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA0CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAA2R,SAAA/S,cAAAoB,EAAAtH,GAAA,KAAAJ,EAAA,UAAoEE,YAAA,gBAA0BF,EAAA,KAAUE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAAoN,aAAuB9U,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,qCAA6CwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,WAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAAiEE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAAoJ,QAAkB9Q,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,4BAAoCwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,UAA6EE,YAAA,uBAAAkI,OAA0C0D,aAAA,SAAqBhE,IAAKC,MAAAL,EAAAgV,kBAA0BhV,EAAAyE,QAAA,MAE7iE5L,iBADjB,WAAoC,IAAaV,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,QAAkBE,YAAA,uBAAiCF,EAAA,KAAUE,YAAA,wCCEhK,IAuBAid,GAvBAhe,EAAA,OAcAie,CACAL,GACAC,IATA,EAVA,SAAA3d,GACAF,EAAA,SAaA,KAEA,MAUA,yCCoDA,kJApBAke,oBAGAC,GAAA7d,0CACA8d,uBACAC,EAAAC,gBAAAC,QAAA/c,EAAAE,MAAAyB,QAAAqb,eAAA7H,MACA,KAAA0H,EAAAI,sBAAAF,QAAA/c,EAAAE,MAAAyB,QAAAqb,eAAA7H,MAEA,uCrHzDoC,mCqH8DpCzT,gBrH7D0C,4CqH8D1CA,2FASA0a,wBAAAI,4FAGA,8FAIA,MCrFAU,IADiBje,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAAA,EAAA,cAAA0H,EAAAtH,GAAA,KAAAJ,EAAA,wBAAAA,EAAA,YAAwFsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,oBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAAwDsR,KAAA,WAAe5J,EAAA6E,GAAA7E,EAAA,sBAAAuJ,GAA2C,OAAAjR,EAAA,2BAAqCwM,IAAAyE,EAAA7N,GAAAgF,OAAoB6I,cAAiBvJ,EAAAtH,GAAA,KAAAJ,EAAA,YAA8BsR,KAAA,WAActR,EAAA,OAAYE,YAAA,UAAoBF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,eAAoBE,YAAA,sCAAAkI,OAAyD2D,GAAA,iCAAoCrE,EAAAtH,GAAA,qDAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,wBAAAA,EAAA,YAAoHsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,0BAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAA8DsR,KAAA,WAAe5J,EAAA6E,GAAA7E,EAAA,4BAAA2R,GAAoD,OAAArZ,EAAA,8BAAwCwM,IAAA6M,EAAAjW,GAAAgF,OAAuBiR,iBAAuB3R,EAAAtH,GAAA,KAAAJ,EAAA,YAA8BsR,KAAA,WAActR,EAAA,OAAYE,YAAA,UAAoBF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,eAAoBE,YAAA,sCAAAkI,OAAyD2D,GAAA,uCAA0CrE,EAAAtH,GAAA,0DAE3tCG,oBCCjB,IAuBAud,GAvBA3e,EAAA,OAcA4e,CACAC,GACAH,IATA,EAVA,SAAAxe,GACAF,EAAA,SAaA,KAEA,MAUA,QCgBA8e,SAEA,gHAhBAZ,oBAGAC,GAAA7d,0CACA8d,6EACA,oCxHxBoC,gCwH6BpClb,kEASAka,qBAAAM,+DAGAta,wBC/CA2b,IADiBte,OAFjB,WAA0B,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAAA,EAAA,cAA/DF,KAA+DM,GAAA,KAAAJ,EAAA,wBAAAA,EAAA,YAAwFsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAArLJ,KAA8MM,GAAA,oBAA9MN,KAA8MM,GAAA,KAAAJ,EAAA,YAAwDsR,KAAA,WAAtQxR,KAAqRyM,GAArRzM,KAAqR,sBAAAmR,GAA2C,OAAAjR,EAAA,2BAAqCwM,IAAAyE,EAAA7N,GAAAgF,OAAoB6I,eAAiB,QAEnZ1Q,oBCCjB,IAuBA4d,GAvBAhf,EAAA,OAcAif,CACAH,GACAC,IATA,EAVA,SAAA7e,GACAF,EAAA,SAaA,KAEA,MAUA,QCgBAkf,SAEA,4HAhBAhB,oBAGAC,GAAA7d,mCACA8d,mFACA,oC3HvB0C,yC2H4B1Clb,kEASA0a,wBAAAI,qEAGA3a,8BC/CA8b,IADiB1e,OAFjB,WAA0B,IAAaC,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAAA,EAAA,cAA/DF,KAA+DM,GAAA,KAAAJ,EAAA,wBAAAA,EAAA,YAAwFsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAArLJ,KAA8MM,GAAA,0BAA9MN,KAA8MM,GAAA,KAAAJ,EAAA,YAA8DsR,KAAA,WAA5QxR,KAA2RyM,GAA3RzM,KAA2R,4BAAAuZ,GAAoD,OAAArZ,EAAA,8BAAwCwM,IAAA6M,EAAAjW,GAAAgF,OAAuBiR,kBAAuB,QAE9a9Y,oBCCjB,IAuBAge,GAvBApf,EAAA,OAcAqf,CACAH,GACAC,IATA,EAVA,SAAAjf,GACAF,EAAA,SAaA,KAEA,MAUA,gCCeAsf,SAEA,2DAnBAnB,GAAA7d,0CACA8d,uBACAC,EAAAkB,UAAA3S,EAAA7E,OACAsN,WAAAgJ,EAAAmB,gBAAA5S,EAAA7E,OAAAsN,WAAAsB,MAAA,GAAA2E,OAAA,EAAAmE,eAEA,iDAKA,uBAEA,WACA,oBACA,0EAQAC,gBAAAC,GAAArf,oDAKA,SAEA,mCAIA,IAAAkO,EAAA7N,WACAwd,GAAA7d,6CACA8d,+IAEAwB,mEAKA1c,oBACA+U,qBAEAtB,YAEAkJ,oCAEAC,eCtEAC,IADiBtf,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,wBAAAA,EAAA,YAAiDsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuF,OAAA9E,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,YAAiEsR,KAAA,YAAetR,EAAA,KAAUE,YAAA,qCAA+CwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAA0P,OAAA,aAAA1P,EAAAtH,GAAA,KAAAsH,EAAA6E,GAAA7E,EAAA,gBAAAuJ,GAAwF,OAAAjR,EAAA,2BAAqCwM,IAAAyE,EAAA7N,GAAAgF,OAAoB6I,aAAiBvJ,EAAAtH,GAAA,KAAAsH,EAAA+S,OAAA/S,EAAA0P,MAAApX,EAAA,oBAA8D8H,IAAIqX,SAAAzX,EAAA0X,aAA0Bpf,EAAA,QAAaoI,OAAOkJ,KAAA,WAAiBA,KAAA,YAAgB5J,EAAAtH,GAAA,SAAAsH,EAAAyE,MAAA,QAE5mB5L,oBCCjB,IAuBA8e,GAvBAlgB,EAAA,OAcAmgB,CACAb,GACAS,IATA,EAVA,SAAA7f,GACAF,EAAA,SAaA,KAEA,MAUA,QC2CAogB,SAGA,yDAEA,0DAIA,6BAIA,IAAA5R,EAAA7N,yBACA,OAAAiG,EAAA4H,EAAAuH,aAAAnB,KAAA,WACA,OAAAhO,EAAA4H,EAGAnH,uCACA,wBAGA,IAAA0H,EAAApO,uCACA,OAAAoO,EAAAS,OAAAnJ,SAAA,oBAAAP,KAAA,0BAAAD,KAAA,OAAAE,QAEA,iCACA,oDAIA,oDAIA,kDAIA,8DACA9B,sDAIA,0EACAA,QC9GAoc,IADiB5f,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,UAAoBF,EAAA,OAAYE,YAAA,yCAAA4H,IAAyDC,MAAAL,EAAAoJ,QAAkB9Q,EAAA,MAAWE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAyN,MAAAhN,SAAAT,EAAAtH,GAAA,KAAAJ,EAAA,MAAwDE,YAAA,gCAA0CF,EAAA,KAAA0H,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAyN,MAAAhU,QAAA,GAAAgH,aAAAT,EAAAtH,GAAA,KAAAJ,EAAA,OAAgFE,YAAA,gBAA0BF,EAAA,KAAU8H,IAAIC,MAAAL,EAAA+U,gBAA0B/U,EAAA+B,GAAA,KAAA/B,EAAAtH,GAAA,KAAAJ,EAAA,cAA2CoI,OAAOD,KAAA,UAAeT,EAAA,mBAAA1H,EAAA,OAAqCE,YAAA,oBAA8BF,EAAA,OAAYE,YAAA,mBAAA4H,IAAmCC,MAAAL,EAAAgV,gBAA0BhV,EAAAtH,GAAA,KAAAJ,EAAA,OAAwBE,YAAA,kBAA4BF,EAAA,OAAYE,YAAA,SAAmBF,EAAA,OAAYE,YAAA,iBAA2BF,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,qBAAAsH,EAAAQ,GAAAR,EAAAyN,MAAAhN,MAAA,sBAAAT,EAAAtH,GAAA,KAAAJ,EAAA,KAA+FE,YAAA,aAAuBwH,EAAAtH,GAAA,qBAAAsH,EAAAQ,GAAAR,EAAAyN,MAAAhU,QAAA,GAAAgH,MAAA,sBAAAT,EAAAtH,GAAA,KAAAJ,EAAA,OAA4GE,YAAA,qBAA+BF,EAAA,KAAAA,EAAA,QAAqBE,YAAA,YAAsBwH,EAAAtH,GAAA,WAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAAwCE,YAAA,2BAAA4H,IAA2CC,MAAAL,EAAAgN,cAAwBhN,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA9I,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAAoEE,YAAA,YAAsBwH,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAA+CE,YAAA,2BAAA4H,IAA2CC,MAAAL,EAAAkN,eAAyBlN,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA9P,QAAA,GAAAgH,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAA+EE,YAAA,YAAsBwH,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAAkDE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA0L,mBAAAjV,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAA4EE,YAAA,YAAsBwH,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAAkDE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAyN,MAAAzD,cAAA,MAAAhK,EAAAQ,GAAAR,EAAAyN,MAAAxD,kBAAAjK,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAAgHE,YAAA,YAAsBwH,EAAAtH,GAAA,YAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA4CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAkK,GAAA,WAAAlK,GAAAyN,MAAAsK,mBAAA/X,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAA+FE,YAAA,YAAsBwH,EAAAtH,GAAA,UAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA0CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAyN,MAAA7O,cAAAoB,EAAAtH,GAAA,KAAAJ,EAAA,UAAiEE,YAAA,gBAA0BF,EAAA,KAAUE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAAoN,aAAuB9U,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,qCAA6CwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,WAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAAiEE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAAoJ,QAAkB9Q,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,4BAAoCwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,UAA6EE,YAAA,uBAAAkI,OAA0C0D,aAAA,SAAqBhE,IAAKC,MAAAL,EAAAgV,kBAA0BhV,EAAAyE,QAAA,MAE3wF5L,iBADjB,WAAoC,IAAaV,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,QAAkBE,YAAA,uBAAiCF,EAAA,KAAUE,YAAA,wCCEhK,IAuBAwf,GAvBAvgB,EAAA,OAcAwgB,CACAJ,GACAC,IATA,EAVA,SAAAngB,GACAF,EAAA,SAaA,KAEA,MAUA,QCeAygB,SAEA,mDAXAtC,GAAA7d,0CACA8d,kCACAnI,qCAIA9P,gDAQAia,qBAAAG,8IASAtc,sBAGA,IAAAuK,EAAA7N,yBACA,OAAAiG,EAAA4H,EAAAsD,MAAA3K,KAAAyN,KAAA,WACA,OAAAhO,iCAIA,KC7DA8Z,IADiBjgB,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,wBAAAA,EAAA,YAAiDsR,KAAA,iBAAoBtR,EAAA,OAAYE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA9I,SAAAT,EAAAtH,GAAA,KAAAJ,EAAA,KAAuDE,YAAA,kDAAA4H,IAAkEC,MAAAL,EAAAkN,eAAyBlN,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA9P,QAAA,GAAAgH,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,YAA2EsR,KAAA,kBAAqBtR,EAAA,KAAUE,YAAA,qCAAA4H,IAAqDC,MAAAL,EAAAoJ,QAAkB9Q,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,mBAA2BwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,cAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAA2EsR,KAAA,YAAetR,EAAA,KAAUE,YAAA,qCAA+CwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuJ,MAAA/E,OAAAkL,OAAA,aAAA1P,EAAAtH,GAAA,KAAAsH,EAAA6E,GAAA7E,EAAAuJ,MAAA/E,OAAA,eAAAiJ,EAAApR,GAAuH,OAAA/D,EAAA,2BAAqCwM,IAAA2I,EAAA/R,GAAAgF,OAAoB+M,QAAA3O,SAAAzC,EAAAkN,MAAAvJ,EAAAuJ,MAAAiE,YAAAxN,EAAAuJ,MAAA3K,UAAgF,QAE78B/F,oBCCjB,IAuBAuf,GAvBA3gB,EAAA,OAcA4gB,CACAH,GACAC,IATA,EAVA,SAAAxgB,GACAF,EAAA,SAaA,KAEA,MAUA,QCuBA6gB,SAEA,6DAlBA1C,GAAA7d,0CACA8d,uBACAC,EAAAyC,YAAAlU,EAAA7E,OAAAgZ,QAAAnU,EAAA7E,OACA8S,aAAAwD,EAAA2C,kBAAApU,EAAA7E,OAAAgZ,QAAAnU,EAAA7E,OAAA8S,aAAAlE,MAAA,GAAA2E,OAEA,sCAIA,uBAEA,WACA,oBACA,0EAQAoE,gBAAAC,GAAArf,sDAKA,SAEA,mCAIA,IAAAkO,EAAA7N,WACAwd,GAAA7d,6CACA8d,4IAEAwB,mEAKA1c,oBACA+U,qBAEAtB,YAEAkJ,oCAEAC,6BAKA,IAAA/Q,EAAApO,yBACA,OAAAiG,EAAAmI,EAAAmL,SAAA/S,KAAAyN,KAAA,WACA,OAAAhO,iCAIA,KCzFAqa,IADiBxgB,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,wBAAAA,EAAA,YAAiDsR,KAAA,iBAAoBtR,EAAA,OAAYE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAA2R,SAAAlR,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,YAAmEsR,KAAA,kBAAqBtR,EAAA,KAAUE,YAAA,qCAAA4H,IAAqDC,MAAAL,EAAAoJ,QAAkB9Q,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,mBAA2BwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,cAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAA2EsR,KAAA,YAAetR,EAAA,KAAUE,YAAA,qCAA+CwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAA2R,SAAAnN,OAAAkL,OAAA,aAAA1P,EAAAtH,GAAA,KAAAsH,EAAA6E,GAAA7E,EAAA,gBAAAxE,EAAAa,GAA6G,OAAA/D,EAAA,2BAAqCwM,IAAAtJ,EAAAiS,MAAA/R,GAAAgF,OAAyB+M,MAAAjS,EAAAiS,MAAAlE,MAAA/N,EAAAiS,MAAAlE,MAAAzK,SAAAzC,EAAAmR,YAAAxN,EAAA2R,SAAA/S,SAA+FoB,EAAAtH,GAAA,KAAAsH,EAAA+S,OAAA/S,EAAA0P,MAAApX,EAAA,oBAA8D8H,IAAIqX,SAAAzX,EAAA0X,aAA0Bpf,EAAA,QAAaoI,OAAOkJ,KAAA,WAAiBA,KAAA,YAAgB5J,EAAAtH,GAAA,SAAAsH,EAAAyE,MAAA,QAE98B5L,oBCCjB,IAuBA8f,GAvBAlhB,EAAA,OAcAmhB,CACAN,GACAI,IATA,EAVA,SAAA/gB,GACAF,EAAA,SAaA,KAEA,MAUA,QCuBAohB,SAGA,+BAEA,qDAIA,6BAIA,IAAA5S,EAAA7N,yBACA,OAAAiG,EAAA4H,EAAAV,OAAA3G,KAAAyN,KAAA,WACA,OAAAhO,iCAIA,wBAGA,IAAAmI,EAAApO,wCACA,OAAAoO,EAAAS,OAAAnJ,SAAA,oBAAAP,KAAA,kCAAAD,KAAA,OAAAE,QAEA,iCACA,oDAIA,oDAIA,mDAIA,gEACA9B,QCrFAod,IADiB5gB,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAiBE,YAAA,UAAoBF,EAAA,OAAYE,YAAA,yCAAA4H,IAAyDC,MAAAL,EAAAkN,eAAyB5U,EAAA,MAAWE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuF,OAAA9E,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,OAA4DE,YAAA,gBAA0BF,EAAA,KAAU8H,IAAIC,MAAAL,EAAA+U,gBAA0B/U,EAAA+B,GAAA,KAAA/B,EAAAtH,GAAA,KAAAJ,EAAA,cAA2CoI,OAAOD,KAAA,UAAeT,EAAA,mBAAA1H,EAAA,OAAqCE,YAAA,oBAA8BF,EAAA,OAAYE,YAAA,mBAAA4H,IAAmCC,MAAAL,EAAAgV,gBAA0BhV,EAAAtH,GAAA,KAAAJ,EAAA,OAAwBE,YAAA,kBAA4BF,EAAA,OAAYE,YAAA,SAAmBF,EAAA,OAAYE,YAAA,iBAA2BF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,KAAUE,YAAA,gBAAA4H,IAAgCC,MAAAL,EAAAkN,eAAyBlN,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuF,OAAA9E,WAAAT,EAAAtH,GAAA,KAAAJ,EAAA,OAA4DE,YAAA,qBAA+BF,EAAA,KAAAA,EAAA,QAAqBE,YAAA,YAAsBwH,EAAAtH,GAAA,4BAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA4DE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuF,OAAAwT,YAAA,MAAA/Y,EAAAQ,GAAAR,EAAAuF,OAAAyT,UAAAtJ,YAAA1P,EAAAtH,GAAA,KAAAJ,EAAA,KAAAA,EAAA,QAAoHE,YAAA,YAAsBwH,EAAAtH,GAAA,YAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,QAA4CE,YAAA,eAAyBwH,EAAAtH,GAAAsH,EAAAQ,GAAAR,EAAAuF,OAAA0T,OAAAC,KAAA,gBAAAlZ,EAAAtH,GAAA,KAAAJ,EAAA,UAAgFE,YAAA,gBAA0BF,EAAA,KAAUE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAAoN,aAAuB9U,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,qCAA6CwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,WAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,KAAiEE,YAAA,iCAAA4H,IAAiDC,MAAAL,EAAAoJ,QAAkB9Q,EAAA,QAAaE,YAAA,SAAmBF,EAAA,KAAUE,YAAA,4BAAoCwH,EAAAtH,GAAA,KAAAJ,EAAA,QAAA0H,EAAAtH,GAAA,kBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,UAA6EE,YAAA,uBAAAkI,OAA0C0D,aAAA,SAAqBhE,IAAKC,MAAAL,EAAAgV,kBAA0BhV,EAAAyE,QAAA,MAEp1D5L,iBADjB,WAAoC,IAAaV,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,QAAkBE,YAAA,uBAAiCF,EAAA,KAAUE,YAAA,wCCEhK,IAuBA2gB,GAvBA1hB,EAAA,OAcA2hB,CACAP,GACAC,IATA,EAVA,SAAAnhB,GACAF,EAAA,SAaA,KAEA,MAUA,iBC6FA,gLAEA0f,gBAAAC,GAAArf,uCAGA,0BACA,2BACA,0BACA,6BAEA,4FAQAmD,uGAIA,uFAGA0B,+FAIA,2FAGAA,8FAIA,uFAGAA,iGAIA,mGAGAA,+DAMA,gCACA,+BACA,kCACA,8BAKAyc,iDAKA,yBAFA,gCACAvG,kEAIA,gEAEA,qB7I/KiC,+B6IiLjCnW,2CAEA2c,wCAIA,IAAArT,EAAA7N,iCACA,IAAAqO,EAAAtJ,EAAAsJ,6BAEAwP,yBACAL,GAAA7d,4BAEA8d,+DACA0D,uCAIA,IAAA/S,EAAApO,uFAEA,iDACA,8CACA,uDACA,qCAIA,IAAAoP,EAAApP,0FAEAuC,+BACA+U,sCAEAtB,QACAkJ,kDAEAC,8CAKA,IAAA3P,EAAAxP,6FAEAuC,iCACA+U,uCAEAtB,QACAkJ,mDAEAC,6CAKA,IAAAzP,EAAA1P,0FAEAuC,+BACA+U,sCAEAtB,QACAkJ,kDAEAC,gDAKA,IAAAvP,EAAA5P,mGAEAuC,qCACA+U,yCAEAtB,QACAkJ,qDAEAC,gFAUA,8BAEA,yCACAvE,mBACA,SAGA,6BACAC,+DAIA,8BAEA,gCAGAtW,iEAIA,8BAEA,iCAGAA,gEAIA,8BAEA,gCAGAA,mEAIA,8BAEA,mCAGAA,2DAIAA,OACAuW,yDAKAvW,WACA6c,mDAKA7c,WACA6c,YC5UAC,IADiBvhB,OAFjB,WAA0B,IAAA8H,EAAA5H,KAAaD,EAAA6H,EAAA3H,eAA0BC,EAAA0H,EAAAzH,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,OAAAA,EAAA,WAA+BE,YAAA,4BAAsCF,EAAA,OAAYE,YAAA,cAAwBF,EAAA,OAAYE,YAAA,wBAAkCF,EAAA,OAAYE,YAAA,0BAAoCF,EAAA,QAAa8H,IAAIgT,OAAA,SAAAxN,GAAkD,OAAxBA,EAAAyN,iBAAwBrT,EAAAkT,WAAAtN,OAAgCtN,EAAA,OAAYE,YAAA,UAAoBF,EAAA,KAAUE,YAAA,uCAAiDF,EAAA,SAAciQ,aAAa9H,KAAA,QAAA+H,QAAA,UAAAzH,MAAAf,EAAA,aAAAzB,WAAA,iBAAkF+U,IAAA,eAAA9a,YAAA,iCAAAkI,OAAyEpD,KAAA,OAAAiW,YAAA,UAAqCC,UAAWzS,MAAAf,EAAA,cAA2BI,IAAKqT,MAAA,SAAA7N,GAAyBA,EAAA8N,OAAAC,YAAsC3T,EAAAgT,aAAApN,EAAA8N,OAAA3S,WAAuCf,EAAAtH,GAAA,KAAAsH,EAAA+B,GAAA,SAAA/B,EAAAtH,GAAA,KAAAJ,EAAA,OAAoDE,YAAA,OAAAG,aAAgCC,aAAA,SAAqBoH,EAAA6E,GAAA7E,EAAA,yBAAA4T,GAAsD,OAAAtb,EAAA,KAAewM,IAAA8O,EAAApb,YAAA,MAAA4H,IAAwCC,MAAA,SAAAuF,GAAyB5F,EAAA6T,mBAAAD,OAAwC5T,EAAAtH,GAAAsH,EAAAQ,GAAAoT,iBAAkC5T,EAAAtH,GAAA,KAAAJ,EAAA,eAAA0H,EAAAtH,GAAA,KAAAsH,EAAA,YAAA1H,EAAA,wBAAAA,EAAA,YAAiHsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,cAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAAkDsR,KAAA,YAAe5J,EAAA6E,GAAA7E,EAAAwE,OAAA,eAAAiJ,GAA4C,OAAAnV,EAAA,2BAAqCwM,IAAA2I,EAAA/R,GAAAgF,OAAoB+M,QAAAlE,MAAAkE,EAAAlE,MAAAzK,SAAA,EAAA0O,YAAAC,EAAA7O,SAA0EoB,EAAAtH,GAAA,eAAAsH,EAAArD,MAAAW,KAAAhF,EAAA,oBAAkE8H,IAAIqX,SAAAzX,EAAA0Z,sBAAmCphB,EAAA,QAAaoI,OAAOkJ,KAAA,WAAiBA,KAAA,YAAgB5J,EAAAtH,GAAA,SAAAsH,EAAAyE,MAAA,GAAAzE,EAAAtH,GAAA,KAAAJ,EAAA,YAA0DsR,KAAA,WAAc5J,EAAA,uBAAA1H,EAAA,OAAyCE,YAAA,UAAoBF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,KAAUE,YAAA,sCAAA4H,IAAsDC,MAAAL,EAAA8T,sBAAgC9T,EAAAtH,GAAA,YAAAsH,EAAAQ,GAAAR,EAAAwE,OAAAkL,OAAA,iBAAA1P,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAAwE,OAAAkL,MAAA1P,EAAAyE,KAAAnM,EAAA,KAAA0H,EAAAtH,GAAA,sBAAAsH,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAA,aAAA1H,EAAA,wBAAAA,EAAA,YAAwOsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,eAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAAmDsR,KAAA,YAAe5J,EAAA6E,GAAA7E,EAAAvG,QAAA,eAAA8L,GAA8C,OAAAjN,EAAA,4BAAsCwM,IAAAS,EAAA7J,GAAAgF,OAAqB6E,cAAmBvF,EAAAtH,GAAA,gBAAAsH,EAAArD,MAAAW,KAAAhF,EAAA,oBAAmE8H,IAAIqX,SAAAzX,EAAA2Z,uBAAoCrhB,EAAA,QAAaoI,OAAOkJ,KAAA,WAAiBA,KAAA,YAAgB5J,EAAAtH,GAAA,SAAAsH,EAAAyE,MAAA,GAAAzE,EAAAtH,GAAA,KAAAJ,EAAA,YAA0DsR,KAAA,WAAc5J,EAAA,wBAAA1H,EAAA,OAA0CE,YAAA,UAAoBF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,KAAUE,YAAA,sCAAA4H,IAAsDC,MAAAL,EAAA+T,uBAAiC/T,EAAAtH,GAAA,YAAAsH,EAAAQ,GAAAR,EAAAvG,QAAAiW,OAAA,kBAAA1P,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAAvG,QAAAiW,MAAA1P,EAAAyE,KAAAnM,EAAA,KAAA0H,EAAAtH,GAAA,sBAAAsH,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAA,YAAA1H,EAAA,wBAAAA,EAAA,YAA0OsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,cAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAAkDsR,KAAA,YAAe5J,EAAA6E,GAAA7E,EAAAtG,OAAA,eAAA6P,GAA4C,OAAAjR,EAAA,2BAAqCwM,IAAAyE,EAAA7N,GAAAgF,OAAoB6I,aAAiBvJ,EAAAtH,GAAA,eAAAsH,EAAArD,MAAAW,KAAAhF,EAAA,oBAAkE8H,IAAIqX,SAAAzX,EAAA4Z,sBAAmCthB,EAAA,QAAaoI,OAAOkJ,KAAA,WAAiBA,KAAA,YAAgB5J,EAAAtH,GAAA,SAAAsH,EAAAyE,MAAA,GAAAzE,EAAAtH,GAAA,KAAAJ,EAAA,YAA0DsR,KAAA,WAAc5J,EAAA,uBAAA1H,EAAA,OAAyCE,YAAA,UAAoBF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,KAAUE,YAAA,sCAAA4H,IAAsDC,MAAAL,EAAAgU,sBAAgChU,EAAAtH,GAAA,YAAAsH,EAAAQ,GAAAR,EAAAtG,OAAAgW,OAAA,iBAAA1P,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAAtG,OAAAgW,MAAA1P,EAAAyE,KAAAnM,EAAA,KAAA0H,EAAAtH,GAAA,sBAAAsH,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAA,eAAA1H,EAAA,wBAAAA,EAAA,YAA0OsR,KAAA,iBAAoBtR,EAAA,KAAUE,YAAA,eAAyBwH,EAAAtH,GAAA,iBAAAsH,EAAAtH,GAAA,KAAAJ,EAAA,YAAqDsR,KAAA,YAAe5J,EAAA6E,GAAA7E,EAAAkS,UAAA,eAAAP,GAAkD,OAAArZ,EAAA,8BAAwCwM,IAAA6M,EAAAjW,GAAAgF,OAAuBiR,gBAAuB3R,EAAAtH,GAAA,kBAAAsH,EAAArD,MAAAW,KAAAhF,EAAA,oBAAqE8H,IAAIqX,SAAAzX,EAAA6Z,yBAAsCvhB,EAAA,QAAaoI,OAAOkJ,KAAA,WAAiBA,KAAA,YAAgB5J,EAAAtH,GAAA,SAAAsH,EAAAyE,MAAA,GAAAzE,EAAAtH,GAAA,KAAAJ,EAAA,YAA0DsR,KAAA,WAAc5J,EAAA,0BAAA1H,EAAA,OAA4CE,YAAA,UAAoBF,EAAA,KAAUE,YAAA,eAAyBF,EAAA,KAAUE,YAAA,sCAAA4H,IAAsDC,MAAAL,EAAAiU,yBAAmCjU,EAAAtH,GAAA,YAAAsH,EAAAQ,GAAAR,EAAAkS,UAAAxC,OAAA,oBAAA1P,EAAAyE,KAAAzE,EAAAtH,GAAA,KAAAsH,EAAAkS,UAAAxC,MAAA1P,EAAAyE,KAAAnM,EAAA,KAAA0H,EAAAtH,GAAA,sBAAAsH,EAAAyE,MAAA,IAEplJ5L,iBADjB,WAAoC,IAAaV,EAAbC,KAAaC,eAA0BC,EAAvCF,KAAuCG,MAAAD,IAAAH,EAAwB,OAAAG,EAAA,QAAkBE,YAAA,iBAA2BF,EAAA,KAAUE,YAAA,yBCE1J,IAuBAshB,GAvBAriB,EAAA,OAcAsiB,CACAC,GACAP,IATA,EAVA,SAAA9hB,GACAF,EAAA,SAaA,KAEA,MAUA,QCGAqB,EAAA,EAAIC,IAAIkhB,GAAA,GAED,IAAMC,GAAS,IAAID,GAAA,GACxBE,SAEI/P,KAAM,IACN3J,KAAM,YACN2Z,UAAW5O,KAGXpB,KAAM,SACN3J,KAAM,QACN2Z,UAAWzF,KAGXvK,KAAM,eACN3J,KAAM,cACN2Z,UAAWtO,KAGX1B,KAAM,SACNiQ,SAAU,kBAGVjQ,KAAM,gBACN3J,KAAM,SACN2Z,UAAW3L,GACXpI,MAAQiU,eAAe,KAGvBlQ,KAAM,+BACN3J,KAAM,wBACN2Z,UAAWvL,GACXxI,MAAQiU,eAAe,KAGvBlQ,KAAM,gCACN3J,KAAM,yBACN2Z,UAAWnL,GACX5I,MAAQiU,eAAe,KAGvBlQ,KAAM,iBACN3J,KAAM,UACN2Z,UAAWxK,GACXvJ,MAAQiU,eAAe,KAGvBlQ,KAAM,4BACN3J,KAAM,SACN2Z,UAAWpK,GACX3J,MAAQiU,eAAe,KAGvBlQ,KAAM,gBACN3J,KAAM,SACN2Z,UAAWhK,GACX/J,MAAQiU,eAAe,KAGvBlQ,KAAM,0BACN3J,KAAM,QACN2Z,UAAW5J,GACXnK,MAAQiU,eAAe,KAGvBlQ,KAAM,YACN3J,KAAM,WACN2Z,UAAWxJ,GACXvK,MAAQiU,eAAe,KAGvBlQ,KAAM,sBACN3J,KAAM,UACN2Z,UAAWpJ,GACX3K,MAAQiU,eAAe,KAGvBlQ,KAAM,cACN3J,KAAM,aACN2Z,UAAWhJ,GACX/K,MAAQiU,eAAe,KAGvBlQ,KAAM,wBACN3J,KAAM,YACN2Z,UAAW5I,GACXnL,MAAQiU,eAAe,KAGvBlQ,KAAM,aACN3J,KAAM,YACN2Z,UAAWjI,GACX9L,MAAQiU,eAAe,KAGvBlQ,KAAM,0BACN3J,KAAM,WACN2Z,UAAW5H,GACXnM,MAAQiU,eAAe,KAGvBlQ,KAAM,UACNiQ,SAAU,oBAGVjQ,KAAM,kBACN3J,KAAM,iBACN2Z,UAAWlG,KAGX9J,KAAM,iBACN3J,KAAM,UACN2Z,UAAWhE,GACX/P,MAAQiU,eAAe,KAGvBlQ,KAAM,8BACN3J,KAAM,8BACN2Z,UAAW3D,GACXpQ,MAAQiU,eAAe,KAGvBlQ,KAAM,oCACN3J,KAAM,oCACN2Z,UAAWvD,GACXxQ,MAAQiU,eAAe,KAGvBlQ,KAAM,oCACN3J,KAAM,iBACN2Z,UAAWzC,GACXtR,MAAQiU,eAAe,KAGvBlQ,KAAM,kCACN3J,KAAM,gBACN2Z,UAAWhC,GACX/R,MAAQiU,eAAe,KAGvBlQ,KAAM,iDACN3J,KAAM,mBACN2Z,UAAWzB,GACXtS,MAAQiU,eAAe,KAGvBlQ,KAAM,kBACN3J,KAAM,iBACN2Z,UAAWN,KAGfS,eAtJkC,SAsJlBlW,EAAI8H,EAAMqO,GACxB,OAAIA,EACK,IAAArc,EAAApG,EAAY,SAAC4d,EAASvX,GAC3BX,WAAW,WACTkY,EAAQ6E,IACP,QAGIC,EAAG,EAAGC,EAAG,MAKxBR,GAAOS,WAAW,SAACtW,EAAI8H,EAAM7F,GACvBrN,EAAME,MAAMkC,kBACdpC,EAAMmE,OhJlLsB,oBgJkLS,GACrCkJ,GAAK,IAELA,sDCnMJsU,GAA0BC,GAAA9iB,GAC1Be,EAAA,EAAIgiB,OAAO,WAAY,SAAU/Z,EAAOga,GACtC,OAAIA,EACKF,GAAA9iB,EAAOijB,SAASja,GAAOga,OAAOA,GAEhCF,GAAA9iB,EAAOijB,SAASja,GAAOga,OAAO,eAGvCjiB,EAAA,EAAIgiB,OAAO,OAAQ,SAAU/Z,EAAOga,GAClC,OAAIA,EACKF,KAAO9Z,GAAOga,OAAOA,GAEvBF,KAAO9Z,GAAOga,WAGvBjiB,EAAA,EAAIgiB,OAAO,cAAe,SAAU/Z,EAAOka,GACzC,OAAOJ,KAAO9Z,GAAOma,QAAQD,KAG/BniB,EAAA,EAAIgiB,OAAO,SAAU,SAAU/Z,GAC7B,OAAOA,EAAMoa,+CCrBfriB,EAAA,EAAIC,IAAIqiB,GAAArjB,GACNsjB,MAAO,qBACPC,YAAa,MACbC,OAAQ,gDCOVziB,EAAA,EAAIM,OAAOoiB,eAAgB,EAG3B,IAAI1iB,EAAA,GACF2iB,GAAI,OACJvB,UACAjhB,QACAyiB,YAAc1V,IAAAyC,IACdkT,SAAU,krBCrBZ,IAAAC,GACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,QAAA,OACAC,WAAA,OACAC,OAAA,OACAC,UAAA,OACAC,QAAA,OACAC,WAAA,OACAC,QAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,WAAA,OACAC,UAAA,OACAC,aAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,OAAA,OACAC,YAAA,OACAC,eAAA,OACAC,UAAA,OACAC,OAAA,OACAC,UAAA,OACAC,aAAA,OACAC,gBAAA,OACAC,OAAA,OACAC,UAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,OACAC,UAAA,OACAC,aAAA,QAEA,SAAAC,EAAAC,GACA,OAAA3zB,EAAA4zB,EAAAD,IAEA,SAAAC,EAAAD,GACA,IAAA1vB,EAAAkgB,EAAAwP,GACA,KAAA1vB,EAAA,GACA,UAAA4vB,MAAA,uBAAAF,EAAA,MACA,OAAA1vB,EAEAyvB,EAAAI,KAAA,WACA,OAAAC,OAAAD,KAAA3P,IAEAuP,EAAAxV,QAAA0V,EACAI,EAAAC,QAAAP,EACAA,EAAAzvB,GAAA","file":"js/app.js","sourcesContent":["function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-49dc1584\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ContentWithHeading.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ContentWithHeading.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ContentWithHeading.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-49dc1584\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ContentWithHeading.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/templates/ContentWithHeading.vue\n// module id = 4XX/\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"section\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"columns is-centered\"},[_c('div',{staticClass:\"column is-four-fifths\"},[_c('nav',{staticClass:\"level\"},[_c('div',{staticClass:\"level-left\"},[_c('div',{staticClass:\"level-item has-text-centered-mobile\"},[_c('div',[_vm._t(\"heading-left\")],2)])]),_vm._v(\" \"),_c('div',{staticClass:\"level-right has-text-centered-mobile\"},[_vm._t(\"heading-right\")],2)]),_vm._v(\" \"),_vm._t(\"content\"),_vm._v(\" \"),_c('div',{staticStyle:{\"margin-top\":\"16px\"}},[_vm._t(\"footer\")],2)],2)])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-49dc1584\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/templates/ContentWithHeading.vue\n// module id = Ho37\n// module chunks = 1","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport * as types from './mutation_types'\n\nVue.use(Vuex)\n\nexport default new Vuex.Store({\n state: {\n config: {\n 'websocket_port': 0,\n 'version': '',\n 'buildoptions': [ ]\n },\n library: {\n 'artists': 0,\n 'albums': 0,\n 'songs': 0,\n 'db_playtime': 0,\n 'updating': false\n },\n audiobooks_count: { },\n podcasts_count: { },\n outputs: [ ],\n player: {\n 'state': 'stop',\n 'repeat': 'off',\n 'consume': false,\n 'shuffle': false,\n 'volume': 0,\n 'item_id': 0,\n 'item_length_ms': 0,\n 'item_progress_ms': 0\n },\n queue: {\n 'version': 0,\n 'count': 0,\n 'items': [ ]\n },\n spotify: {},\n\n spotify_new_releases: [],\n spotify_featured_playlists: [],\n\n notifications: {\n 'next_id': 1,\n 'list': []\n },\n recent_searches: [],\n\n hide_singles: false,\n show_only_next_items: false,\n show_burger_menu: false\n },\n\n getters: {\n now_playing: state => {\n var item = state.queue.items.find(function (item) {\n return item.id === state.player.item_id\n })\n return (item === undefined) ? {} : item\n }\n },\n\n mutations: {\n [types.UPDATE_CONFIG] (state, config) {\n state.config = config\n },\n [types.UPDATE_LIBRARY_STATS] (state, libraryStats) {\n state.library = libraryStats\n },\n [types.UPDATE_LIBRARY_AUDIOBOOKS_COUNT] (state, count) {\n state.audiobooks_count = count\n },\n [types.UPDATE_LIBRARY_PODCASTS_COUNT] (state, count) {\n state.podcasts_count = count\n },\n [types.UPDATE_OUTPUTS] (state, outputs) {\n state.outputs = outputs\n },\n [types.UPDATE_PLAYER_STATUS] (state, playerStatus) {\n state.player = playerStatus\n },\n [types.UPDATE_QUEUE] (state, queue) {\n state.queue = queue\n },\n [types.UPDATE_SPOTIFY] (state, spotify) {\n state.spotify = spotify\n },\n [types.SPOTIFY_NEW_RELEASES] (state, newReleases) {\n state.spotify_new_releases = newReleases\n },\n [types.SPOTIFY_FEATURED_PLAYLISTS] (state, featuredPlaylists) {\n state.spotify_featured_playlists = featuredPlaylists\n },\n [types.ADD_NOTIFICATION] (state, notification) {\n if (notification.topic) {\n var index = state.notifications.list.findIndex(elem => elem.topic === notification.topic)\n if (index >= 0) {\n state.notifications.list.splice(index, 1, notification)\n return\n }\n }\n state.notifications.list.push(notification)\n },\n [types.DELETE_NOTIFICATION] (state, notification) {\n const index = state.notifications.list.indexOf(notification)\n\n if (index !== -1) {\n state.notifications.list.splice(index, 1)\n }\n },\n [types.ADD_RECENT_SEARCH] (state, query) {\n var index = state.recent_searches.findIndex(elem => elem === query)\n if (index >= 0) {\n state.recent_searches.splice(index, 1)\n }\n\n state.recent_searches.splice(0, 0, query)\n\n if (state.recent_searches.length > 5) {\n state.recent_searches.pop()\n }\n },\n [types.HIDE_SINGLES] (state, hideSingles) {\n state.hide_singles = hideSingles\n },\n [types.SHOW_ONLY_NEXT_ITEMS] (state, showOnlyNextItems) {\n state.show_only_next_items = showOnlyNextItems\n },\n [types.SHOW_BURGER_MENU] (state, showBurgerMenu) {\n state.show_burger_menu = showBurgerMenu\n }\n },\n\n actions: {\n add_notification ({ commit, state }, notification) {\n const newNotification = {\n 'id': state.notifications.next_id++,\n 'type': notification.type,\n 'text': notification.text,\n 'topic': notification.topic,\n 'timeout': notification.timeout\n }\n\n commit(types.ADD_NOTIFICATION, newNotification)\n\n if (notification.timeout > 0) {\n setTimeout(() => {\n commit(types.DELETE_NOTIFICATION, newNotification)\n }, notification.timeout)\n }\n }\n }\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/index.js","export const UPDATE_CONFIG = 'UPDATE_CONFIG'\nexport const UPDATE_LIBRARY_STATS = 'UPDATE_LIBRARY_STATS'\nexport const UPDATE_LIBRARY_AUDIOBOOKS_COUNT = 'UPDATE_LIBRARY_AUDIOBOOKS_COUNT'\nexport const UPDATE_LIBRARY_PODCASTS_COUNT = 'UPDATE_LIBRARY_PODCASTS_COUNT'\nexport const UPDATE_OUTPUTS = 'UPDATE_OUTPUTS'\nexport const UPDATE_PLAYER_STATUS = 'UPDATE_PLAYER_STATUS'\nexport const UPDATE_QUEUE = 'UPDATE_QUEUE'\nexport const UPDATE_SPOTIFY = 'UPDATE_SPOTIFY'\n\nexport const SPOTIFY_NEW_RELEASES = 'SPOTIFY_NEW_RELEASES'\nexport const SPOTIFY_FEATURED_PLAYLISTS = 'SPOTIFY_FEATURED_PLAYLISTS'\n\nexport const ADD_NOTIFICATION = 'ADD_NOTIFICATION'\nexport const DELETE_NOTIFICATION = 'DELETE_NOTIFICATION'\nexport const ADD_RECENT_SEARCH = 'ADD_RECENT_SEARCH'\n\nexport const HIDE_SINGLES = 'HIDE_SINGLES'\nexport const SHOW_ONLY_NEXT_ITEMS = 'SHOW_ONLY_NEXT_ITEMS'\nexport const SHOW_BURGER_MENU = 'SHOW_BURGER_MENU'\n\n\n\n// WEBPACK FOOTER //\n// ./src/store/mutation_types.js","import axios from 'axios'\nimport store from '@/store'\n\naxios.interceptors.response.use(function (response) {\n return response\n}, function (error) {\n store.dispatch('add_notification', { text: 'Request failed (status: ' + error.request.status + ' ' + error.request.statusText + ', url: ' + error.request.responseURL + ')', type: 'danger' })\n return Promise.reject(error)\n})\n\nexport default {\n config () {\n return axios.get('/api/config')\n },\n\n library_stats () {\n return axios.get('/api/library')\n },\n\n library_update () {\n return axios.get('/api/update')\n },\n\n library_count (expression) {\n return axios.get('/api/library/count?expression=' + expression)\n },\n\n queue () {\n return axios.get('/api/queue')\n },\n\n queue_clear () {\n return axios.put('/api/queue/clear')\n },\n\n queue_remove (itemId) {\n return axios.delete('/api/queue/items/' + itemId)\n },\n\n queue_move (itemId, newPosition) {\n return axios.put('/api/queue/items/' + itemId + '?new_position=' + newPosition)\n },\n\n queue_add (uri) {\n return axios.post('/api/queue/items/add?uris=' + uri)\n },\n\n player_status () {\n return axios.get('/api/player')\n },\n\n player_play () {\n return axios.put('/api/player/play')\n },\n\n player_playpos (position) {\n return axios.put('/api/player/play?position=' + position)\n },\n\n player_playid (itemId) {\n return axios.put('/api/player/play?item_id=' + itemId)\n },\n\n player_pause () {\n return axios.put('/api/player/pause')\n },\n\n player_next () {\n return axios.put('/api/player/next')\n },\n\n player_previous () {\n return axios.put('/api/player/previous')\n },\n\n player_shuffle (newState) {\n var shuffle = newState ? 'true' : 'false'\n return axios.put('/api/player/shuffle?state=' + shuffle)\n },\n\n player_consume (newState) {\n var consume = newState ? 'true' : 'false'\n return axios.put('/api/player/consume?state=' + consume)\n },\n\n player_repeat (newRepeatMode) {\n return axios.put('/api/player/repeat?state=' + newRepeatMode)\n },\n\n player_volume (volume) {\n return axios.put('/api/player/volume?volume=' + volume)\n },\n\n player_output_volume (outputId, outputVolume) {\n return axios.put('/api/player/volume?volume=' + outputVolume + '&output_id=' + outputId)\n },\n\n player_seek (newPosition) {\n return axios.put('/api/player/seek?position_ms=' + newPosition)\n },\n\n outputs () {\n return axios.get('/api/outputs')\n },\n\n output_update (outputId, output) {\n return axios.put('/api/outputs/' + outputId, output)\n },\n\n library_artists () {\n return axios.get('/api/library/artists?media_kind=music')\n },\n\n library_artist (artistId) {\n return axios.get('/api/library/artists/' + artistId)\n },\n\n library_albums (artistId) {\n if (artistId) {\n return axios.get('/api/library/artists/' + artistId + '/albums')\n }\n return axios.get('/api/library/albums?media_kind=music')\n },\n\n library_album (albumId) {\n return axios.get('/api/library/albums/' + albumId)\n },\n\n library_album_tracks (albumId) {\n return axios.get('/api/library/albums/' + albumId + '/tracks')\n },\n\n library_podcasts () {\n return axios.get('/api/library/albums?media_kind=podcast')\n },\n\n library_audiobooks () {\n return axios.get('/api/library/albums?media_kind=audiobook')\n },\n\n library_playlists () {\n return axios.get('/api/library/playlists')\n },\n\n library_playlist (playlistId) {\n return axios.get('/api/library/playlists/' + playlistId)\n },\n\n library_playlist_tracks (playlistId) {\n return axios.get('/api/library/playlists/' + playlistId + '/tracks')\n },\n\n search (searchParams) {\n return axios.get('/api/search', {\n params: searchParams\n })\n },\n\n spotify () {\n return axios.get('/api/spotify')\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/webapi/index.js","<template>\n <div class=\"navbar-item\">\n <div class=\"level is-mobile\">\n <div class=\"level-left fd-expanded\">\n <div class=\"level-item\" style=\"flex-grow: 0;\">\n <span class=\"icon fd-has-action\" :class=\"{ 'has-text-grey-light': !output.selected }\" v-on:click=\"set_enabled\"><i class=\"mdi mdi-18px\" v-bind:class=\"type_class\"></i></span>\n </div>\n <div class=\"level-item fd-expanded\">\n <div class=\"fd-expanded\">\n <p class=\"heading\" :class=\"{ 'has-text-grey-light': !output.selected }\">{{ output.name }}</p>\n <range-slider\n class=\"slider fd-has-action\"\n min=\"0\"\n max=\"100\"\n step=\"1\"\n :disabled=\"!output.selected\"\n :value=\"volume\"\n @change=\"set_volume\" >\n </range-slider>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport RangeSlider from 'vue-range-slider'\nimport webapi from '@/webapi'\n\nexport default {\n name: 'NavBarItemOutput',\n components: { RangeSlider },\n\n props: [ 'output' ],\n\n computed: {\n type_class () {\n if (this.output.type === 'AirPlay') {\n return 'mdi-airplay'\n } else if (this.output.type === 'fifo') {\n return 'mdi-pipe'\n } else {\n return 'mdi-server'\n }\n },\n\n volume () {\n return this.output.selected ? this.output.volume : 0\n }\n },\n\n methods: {\n play_next: function () {\n webapi.player_next()\n },\n\n set_volume: function (newVolume) {\n webapi.player_output_volume(this.output.id, newVolume)\n },\n\n set_enabled: function () {\n const values = {\n 'selected': !this.output.selected\n }\n webapi.output_update(this.output.id, values)\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/NavBarItemOutput.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"navbar-item\"},[_c('div',{staticClass:\"level is-mobile\"},[_c('div',{staticClass:\"level-left fd-expanded\"},[_c('div',{staticClass:\"level-item\",staticStyle:{\"flex-grow\":\"0\"}},[_c('span',{staticClass:\"icon fd-has-action\",class:{ 'has-text-grey-light': !_vm.output.selected },on:{\"click\":_vm.set_enabled}},[_c('i',{staticClass:\"mdi mdi-18px\",class:_vm.type_class})])]),_vm._v(\" \"),_c('div',{staticClass:\"level-item fd-expanded\"},[_c('div',{staticClass:\"fd-expanded\"},[_c('p',{staticClass:\"heading\",class:{ 'has-text-grey-light': !_vm.output.selected }},[_vm._v(_vm._s(_vm.output.name))]),_vm._v(\" \"),_c('range-slider',{staticClass:\"slider fd-has-action\",attrs:{\"min\":\"0\",\"max\":\"100\",\"step\":\"1\",\"disabled\":!_vm.output.selected,\"value\":_vm.volume},on:{\"change\":_vm.set_volume}})],1)])])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-2e8372b3\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/NavBarItemOutput.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2e8372b3\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./NavBarItemOutput.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./NavBarItemOutput.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./NavBarItemOutput.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2e8372b3\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./NavBarItemOutput.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/NavBarItemOutput.vue\n// module id = null\n// module chunks = ","<template>\n <a v-on:click=\"toggle_play_pause\">\n <span class=\"icon\"><i class=\"mdi\" v-bind:class=\"[icon_style, { 'mdi-play': !is_playing, 'mdi-pause': is_playing }]\"></i></span>\n </a>\n</template>\n\n<script>\nimport webapi from '@/webapi'\n\nexport default {\n name: 'PlayerButtonPlayPause',\n\n props: ['icon_style'],\n\n computed: {\n is_playing () {\n return this.$store.state.player.state === 'play'\n }\n },\n\n methods: {\n toggle_play_pause: function () {\n if (this.is_playing) {\n webapi.player_pause()\n } else {\n webapi.player_play()\n }\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/PlayerButtonPlayPause.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{on:{\"click\":_vm.toggle_play_pause}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi\",class:[_vm.icon_style, { 'mdi-play': !_vm.is_playing, 'mdi-pause': _vm.is_playing }]})])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-080e27af\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/PlayerButtonPlayPause.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-080e27af\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PlayerButtonPlayPause.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PlayerButtonPlayPause.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PlayerButtonPlayPause.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-080e27af\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PlayerButtonPlayPause.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/PlayerButtonPlayPause.vue\n// module id = null\n// module chunks = ","<template>\n <a v-on:click=\"play_next\">\n <span class=\"icon\"><i class=\"mdi mdi-skip-forward\"></i></span>\n </a>\n</template>\n\n<script>\nimport webapi from '@/webapi'\n\nexport default {\n name: 'PlayerButtonNext',\n\n methods: {\n play_next: function () {\n webapi.player_next()\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/PlayerButtonNext.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{on:{\"click\":_vm.play_next}},[_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-skip-forward\"})])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-235c2697\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/PlayerButtonNext.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-235c2697\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PlayerButtonNext.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PlayerButtonNext.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PlayerButtonNext.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-235c2697\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PlayerButtonNext.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/PlayerButtonNext.vue\n// module id = null\n// module chunks = ","<template>\n <a v-on:click=\"play_previous\">\n <span class=\"icon\"><i class=\"mdi mdi-skip-backward\"></i></span>\n </a>\n</template>\n\n<script>\nimport webapi from '@/webapi'\n\nexport default {\n name: 'PlayerButtonPrevious',\n\n methods: {\n play_previous: function () {\n webapi.player_previous()\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/PlayerButtonPrevious.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{on:{\"click\":_vm.play_previous}},[_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-skip-backward\"})])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-7b751d83\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/PlayerButtonPrevious.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7b751d83\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PlayerButtonPrevious.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PlayerButtonPrevious.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PlayerButtonPrevious.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7b751d83\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PlayerButtonPrevious.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/PlayerButtonPrevious.vue\n// module id = null\n// module chunks = ","<template>\n <a v-on:click=\"toggle_shuffle_mode\" v-bind:class=\"{ 'is-warning': is_shuffle }\">\n <span class=\"icon\"><i class=\"mdi\" v-bind:class=\"{ 'mdi-shuffle': is_shuffle, 'mdi-shuffle-disabled': !is_shuffle }\"></i></span>\n </a>\n</template>\n\n<script>\nimport webapi from '@/webapi'\n\nexport default {\n name: 'PlayerButtonShuffle',\n\n computed: {\n is_shuffle () {\n return this.$store.state.player.shuffle\n }\n },\n\n methods: {\n toggle_shuffle_mode: function () {\n webapi.player_shuffle(!this.is_shuffle)\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/PlayerButtonShuffle.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{class:{ 'is-warning': _vm.is_shuffle },on:{\"click\":_vm.toggle_shuffle_mode}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi\",class:{ 'mdi-shuffle': _vm.is_shuffle, 'mdi-shuffle-disabled': !_vm.is_shuffle }})])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0baed9c3\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/PlayerButtonShuffle.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0baed9c3\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PlayerButtonShuffle.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PlayerButtonShuffle.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PlayerButtonShuffle.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0baed9c3\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PlayerButtonShuffle.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/PlayerButtonShuffle.vue\n// module id = null\n// module chunks = ","<template>\n <a v-on:click=\"toggle_consume_mode\" v-bind:class=\"{ 'is-warning': is_consume }\">\n <span class=\"icon\"><i class=\"mdi mdi-fire\"></i></span>\n </a>\n</template>\n\n<script>\nimport webapi from '@/webapi'\n\nexport default {\n name: 'PlayerButtonConsume',\n\n computed: {\n is_consume () {\n return this.$store.state.player.consume\n }\n },\n\n methods: {\n toggle_consume_mode: function () {\n webapi.player_consume(!this.is_consume)\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/PlayerButtonConsume.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{class:{ 'is-warning': _vm.is_consume },on:{\"click\":_vm.toggle_consume_mode}},[_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-fire\"})])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-74ecbfd2\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/PlayerButtonConsume.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-74ecbfd2\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PlayerButtonConsume.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PlayerButtonConsume.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PlayerButtonConsume.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-74ecbfd2\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PlayerButtonConsume.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/PlayerButtonConsume.vue\n// module id = null\n// module chunks = ","<template>\n <a v-on:click=\"toggle_repeat_mode\" v-bind:class=\"{ 'is-warning': !is_repeat_off }\">\n <span class=\"icon\"><i class=\"mdi\" v-bind:class=\"{ 'mdi-repeat': is_repeat_all, 'mdi-repeat-once': is_repeat_single, 'mdi-repeat-off': is_repeat_off }\"></i></span>\n </a>\n</template>\n\n<script>\nimport webapi from '@/webapi'\n\nexport default {\n name: 'PlayerButtonRepeat',\n\n data () {\n return { }\n },\n\n computed: {\n is_repeat_all () {\n return this.$store.state.player.repeat === 'all'\n },\n is_repeat_single () {\n return this.$store.state.player.repeat === 'single'\n },\n is_repeat_off () {\n return !this.is_repeat_all && !this.is_repeat_single\n }\n },\n\n methods: {\n toggle_repeat_mode: function () {\n if (this.is_repeat_all) {\n webapi.player_repeat('single')\n } else if (this.is_repeat_single) {\n webapi.player_repeat('off')\n } else {\n webapi.player_repeat('all')\n }\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/PlayerButtonRepeat.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{class:{ 'is-warning': !_vm.is_repeat_off },on:{\"click\":_vm.toggle_repeat_mode}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi\",class:{ 'mdi-repeat': _vm.is_repeat_all, 'mdi-repeat-once': _vm.is_repeat_single, 'mdi-repeat-off': _vm.is_repeat_off }})])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6375ce2e\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/PlayerButtonRepeat.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6375ce2e\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PlayerButtonRepeat.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PlayerButtonRepeat.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PlayerButtonRepeat.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6375ce2e\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PlayerButtonRepeat.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/PlayerButtonRepeat.vue\n// module id = null\n// module chunks = ","<template>\n <nav class=\"navbar is-light is-fixed-top\" role=\"navigation\" aria-label=\"main navigation\">\n <div class=\"navbar-brand\">\n <router-link to=\"/playlists\" class=\"navbar-item\" active-class=\"is-active\">\n <span class=\"icon\"><i class=\"mdi mdi-library-music\"></i></span>\n </router-link>\n <router-link to=\"/music\" class=\"navbar-item\" active-class=\"is-active\">\n <span class=\"icon\"><i class=\"mdi mdi-music\"></i></span>\n </router-link>\n <router-link to=\"/podcasts\" class=\"navbar-item\" active-class=\"is-active\" v-if=\"podcasts.tracks > 0\">\n <span class=\"icon\"><i class=\"mdi mdi-microphone\"></i></span>\n </router-link>\n <router-link to=\"/audiobooks\" class=\"navbar-item\" active-class=\"is-active\" v-if=\"audiobooks.tracks > 0\">\n <span class=\"icon\"><i class=\"mdi mdi-book-open-variant\"></i></span>\n </router-link>\n <router-link to=\"/search\" class=\"navbar-item\" active-class=\"is-active\">\n <span class=\"icon\"><i class=\"mdi mdi-magnify\"></i></span>\n </router-link>\n\n <div class=\"navbar-burger\" @click=\"update_show_burger_menu\" :class=\"{ 'is-active': show_burger_menu }\">\n <span></span>\n <span></span>\n <span></span>\n </div>\n </div>\n <div class=\"navbar-menu\" :class=\"{ 'is-active': show_burger_menu }\">\n <div class=\"navbar-start\">\n </div>\n\n <div class=\"navbar-end\">\n <div class=\"navbar-item has-dropdown is-hoverable\">\n <a class=\"navbar-link\"><span class=\"icon is-hidden-mobile is-hidden-tablet-only\"><i class=\"mdi mdi-volume-high\"></i></span> <span class=\"is-hidden-desktop\">Volume</span></a>\n\n <div class=\"navbar-dropdown is-right\">\n <div class=\"navbar-item\">\n <div class=\"level is-mobile\">\n <div class=\"level-left fd-expanded\">\n <div class=\"level-item\" style=\"flex-grow: 0;\">\n <span class=\"icon\"><i class=\"mdi mdi-18px mdi-volume-high\"></i></span>\n </div>\n <div class=\"level-item fd-expanded\">\n <div class=\"fd-expanded\">\n <p class=\"heading\">Volume</p>\n <range-slider\n class=\"slider fd-has-action\"\n min=\"0\"\n max=\"100\"\n step=\"1\"\n :value=\"player.volume\"\n @change=\"set_volume\">\n </range-slider>\n </div>\n </div>\n </div>\n </div>\n </div>\n <hr class=\"navbar-divider\">\n <nav-bar-item-output v-for=\"output in outputs\" :key=\"output.id\" :output=\"output\"></nav-bar-item-output>\n\n <hr class=\"navbar-divider\">\n <div class=\"navbar-item\">\n <div class=\"level is-mobile\">\n <div class=\"level-left\">\n <div class=\"level-item\">\n <div class=\"buttons has-addons\">\n <player-button-previous class=\"button\"></player-button-previous>\n <player-button-play-pause class=\"button\"></player-button-play-pause>\n <player-button-next class=\"button\"></player-button-next>\n </div>\n </div>\n <div class=\"level-item\">\n <div class=\"buttons has-addons\">\n <player-button-repeat class=\"button is-light\"></player-button-repeat>\n <player-button-shuffle class=\"button is-light\"></player-button-shuffle>\n <player-button-consume class=\"button is-light\"></player-button-consume>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"navbar-item has-dropdown is-hoverable\">\n <a class=\"navbar-link\"><span class=\"icon is-hidden-mobile is-hidden-tablet-only\"><i class=\"mdi mdi-settings\"></i></span> <span class=\"is-hidden-desktop\">Settings</span></a>\n\n <div class=\"navbar-dropdown is-right\">\n <a class=\"navbar-item\" href=\"/admin.html\">Admin</a>\n <hr class=\"navbar-divider\">\n <a class=\"navbar-item\" v-on:click=\"open_about\">\n <div>\n <p class=\"title is-7\">forked-daapd</p>\n <p class=\"subtitle is-7\">{{ config.version }}</p>\n </div>\n </a>\n </div>\n </div>\n </div>\n </div>\n </nav>\n</template>\n\n<script>\nimport webapi from '@/webapi'\nimport NavBarItemOutput from './NavBarItemOutput'\nimport PlayerButtonPlayPause from './PlayerButtonPlayPause'\nimport PlayerButtonNext from './PlayerButtonNext'\nimport PlayerButtonPrevious from './PlayerButtonPrevious'\nimport PlayerButtonShuffle from './PlayerButtonShuffle'\nimport PlayerButtonConsume from './PlayerButtonConsume'\nimport PlayerButtonRepeat from './PlayerButtonRepeat'\nimport RangeSlider from 'vue-range-slider'\nimport * as types from '@/store/mutation_types'\n\nexport default {\n name: 'NavbarTop',\n components: { NavBarItemOutput, PlayerButtonPlayPause, PlayerButtonNext, PlayerButtonPrevious, PlayerButtonShuffle, PlayerButtonConsume, PlayerButtonRepeat, RangeSlider },\n\n data () {\n return {\n search_query: ''\n }\n },\n\n computed: {\n outputs () {\n return this.$store.state.outputs\n },\n\n player () {\n return this.$store.state.player\n },\n\n config () {\n return this.$store.state.config\n },\n\n library () {\n return this.$store.state.library\n },\n\n audiobooks () {\n return this.$store.state.audiobooks_count\n },\n\n podcasts () {\n return this.$store.state.podcasts_count\n },\n\n show_burger_menu () {\n return this.$store.state.show_burger_menu\n }\n },\n\n methods: {\n update_show_burger_menu: function () {\n this.$store.commit(types.SHOW_BURGER_MENU, !this.show_burger_menu)\n },\n\n set_volume: function (newVolume) {\n webapi.player_volume(newVolume)\n },\n\n open_about: function () {\n this.$store.commit(types.SHOW_BURGER_MENU, false)\n this.$router.push({ path: '/about' })\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/NavbarTop.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{staticClass:\"navbar is-light is-fixed-top\",attrs:{\"role\":\"navigation\",\"aria-label\":\"main navigation\"}},[_c('div',{staticClass:\"navbar-brand\"},[_c('router-link',{staticClass:\"navbar-item\",attrs:{\"to\":\"/playlists\",\"active-class\":\"is-active\"}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-library-music\"})])]),_vm._v(\" \"),_c('router-link',{staticClass:\"navbar-item\",attrs:{\"to\":\"/music\",\"active-class\":\"is-active\"}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-music\"})])]),_vm._v(\" \"),(_vm.podcasts.tracks > 0)?_c('router-link',{staticClass:\"navbar-item\",attrs:{\"to\":\"/podcasts\",\"active-class\":\"is-active\"}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-microphone\"})])]):_vm._e(),_vm._v(\" \"),(_vm.audiobooks.tracks > 0)?_c('router-link',{staticClass:\"navbar-item\",attrs:{\"to\":\"/audiobooks\",\"active-class\":\"is-active\"}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-book-open-variant\"})])]):_vm._e(),_vm._v(\" \"),_c('router-link',{staticClass:\"navbar-item\",attrs:{\"to\":\"/search\",\"active-class\":\"is-active\"}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-magnify\"})])]),_vm._v(\" \"),_c('div',{staticClass:\"navbar-burger\",class:{ 'is-active': _vm.show_burger_menu },on:{\"click\":_vm.update_show_burger_menu}},[_c('span'),_vm._v(\" \"),_c('span'),_vm._v(\" \"),_c('span')])],1),_vm._v(\" \"),_c('div',{staticClass:\"navbar-menu\",class:{ 'is-active': _vm.show_burger_menu }},[_c('div',{staticClass:\"navbar-start\"}),_vm._v(\" \"),_c('div',{staticClass:\"navbar-end\"},[_c('div',{staticClass:\"navbar-item has-dropdown is-hoverable\"},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"navbar-dropdown is-right\"},[_c('div',{staticClass:\"navbar-item\"},[_c('div',{staticClass:\"level is-mobile\"},[_c('div',{staticClass:\"level-left fd-expanded\"},[_vm._m(1),_vm._v(\" \"),_c('div',{staticClass:\"level-item fd-expanded\"},[_c('div',{staticClass:\"fd-expanded\"},[_c('p',{staticClass:\"heading\"},[_vm._v(\"Volume\")]),_vm._v(\" \"),_c('range-slider',{staticClass:\"slider fd-has-action\",attrs:{\"min\":\"0\",\"max\":\"100\",\"step\":\"1\",\"value\":_vm.player.volume},on:{\"change\":_vm.set_volume}})],1)])])])]),_vm._v(\" \"),_c('hr',{staticClass:\"navbar-divider\"}),_vm._v(\" \"),_vm._l((_vm.outputs),function(output){return _c('nav-bar-item-output',{key:output.id,attrs:{\"output\":output}})}),_vm._v(\" \"),_c('hr',{staticClass:\"navbar-divider\"}),_vm._v(\" \"),_c('div',{staticClass:\"navbar-item\"},[_c('div',{staticClass:\"level is-mobile\"},[_c('div',{staticClass:\"level-left\"},[_c('div',{staticClass:\"level-item\"},[_c('div',{staticClass:\"buttons has-addons\"},[_c('player-button-previous',{staticClass:\"button\"}),_vm._v(\" \"),_c('player-button-play-pause',{staticClass:\"button\"}),_vm._v(\" \"),_c('player-button-next',{staticClass:\"button\"})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"level-item\"},[_c('div',{staticClass:\"buttons has-addons\"},[_c('player-button-repeat',{staticClass:\"button is-light\"}),_vm._v(\" \"),_c('player-button-shuffle',{staticClass:\"button is-light\"}),_vm._v(\" \"),_c('player-button-consume',{staticClass:\"button is-light\"})],1)])])])])],2)]),_vm._v(\" \"),_c('div',{staticClass:\"navbar-item has-dropdown is-hoverable\"},[_vm._m(2),_vm._v(\" \"),_c('div',{staticClass:\"navbar-dropdown is-right\"},[_c('a',{staticClass:\"navbar-item\",attrs:{\"href\":\"/admin.html\"}},[_vm._v(\"Admin\")]),_vm._v(\" \"),_c('hr',{staticClass:\"navbar-divider\"}),_vm._v(\" \"),_c('a',{staticClass:\"navbar-item\",on:{\"click\":_vm.open_about}},[_c('div',[_c('p',{staticClass:\"title is-7\"},[_vm._v(\"forked-daapd\")]),_vm._v(\" \"),_c('p',{staticClass:\"subtitle is-7\"},[_vm._v(_vm._s(_vm.config.version))])])])])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"navbar-link\"},[_c('span',{staticClass:\"icon is-hidden-mobile is-hidden-tablet-only\"},[_c('i',{staticClass:\"mdi mdi-volume-high\"})]),_vm._v(\" \"),_c('span',{staticClass:\"is-hidden-desktop\"},[_vm._v(\"Volume\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"level-item\",staticStyle:{\"flex-grow\":\"0\"}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-18px mdi-volume-high\"})])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:\"navbar-link\"},[_c('span',{staticClass:\"icon is-hidden-mobile is-hidden-tablet-only\"},[_c('i',{staticClass:\"mdi mdi-settings\"})]),_vm._v(\" \"),_c('span',{staticClass:\"is-hidden-desktop\"},[_vm._v(\"Settings\")])])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-44b5a12a\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/NavbarTop.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-44b5a12a\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./NavbarTop.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./NavbarTop.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./NavbarTop.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-44b5a12a\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./NavbarTop.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/NavbarTop.vue\n// module id = null\n// module chunks = ","<template>\n <nav class=\"navbar is-dark is-fixed-bottom\" role=\"navigation\" aria-label=\"player controls\">\n <div class=\"navbar-brand fd-expanded\">\n <router-link to=\"/\" class=\"navbar-item\" active-class=\"is-active\" exact>\n <span class=\"icon\"><i class=\"mdi mdi-24px mdi-playlist-play\"></i></span>\n </router-link>\n <router-link to=\"/now-playing\" class=\"navbar-item is-expanded is-clipped\" active-class=\"is-active\" exact>\n <div>\n <p class=\"is-size-7 fd-is-text-clipped\">\n <strong>{{ now_playing.title }}</strong><br>\n {{ now_playing.artist }}\n </p>\n </div>\n </router-link>\n <player-button-play-pause class=\"navbar-item fd-margin-left-auto\" icon_style=\"mdi-36px\"></player-button-play-pause>\n </div>\n </nav>\n</template>\n\n<script>\nimport PlayerButtonPlayPause from './PlayerButtonPlayPause'\n\nexport default {\n name: 'NavbarBottom',\n components: { PlayerButtonPlayPause },\n\n data () {\n return { }\n },\n\n computed: {\n state () {\n return this.$store.state.player\n },\n now_playing () {\n return this.$store.getters.now_playing\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/NavbarBottom.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{staticClass:\"navbar is-dark is-fixed-bottom\",attrs:{\"role\":\"navigation\",\"aria-label\":\"player controls\"}},[_c('div',{staticClass:\"navbar-brand fd-expanded\"},[_c('router-link',{staticClass:\"navbar-item\",attrs:{\"to\":\"/\",\"active-class\":\"is-active\",\"exact\":\"\"}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-24px mdi-playlist-play\"})])]),_vm._v(\" \"),_c('router-link',{staticClass:\"navbar-item is-expanded is-clipped\",attrs:{\"to\":\"/now-playing\",\"active-class\":\"is-active\",\"exact\":\"\"}},[_c('div',[_c('p',{staticClass:\"is-size-7 fd-is-text-clipped\"},[_c('strong',[_vm._v(_vm._s(_vm.now_playing.title))]),_c('br'),_vm._v(\"\\n \"+_vm._s(_vm.now_playing.artist)+\"\\n \")])])]),_vm._v(\" \"),_c('player-button-play-pause',{staticClass:\"navbar-item fd-margin-left-auto\",attrs:{\"icon_style\":\"mdi-36px\"}})],1)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-933ee650\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/NavbarBottom.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-933ee650\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./NavbarBottom.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./NavbarBottom.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./NavbarBottom.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-933ee650\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./NavbarBottom.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/NavbarBottom.vue\n// module id = null\n// module chunks = ","<template>\n <section class=\"fd-notifications\">\n <div class=\"columns is-centered\">\n <div class=\"column is-half\">\n <div class=\"notification has-shadow \" v-for=\"notification in notifications\" :key=\"notification.id\" :class=\"['notification', notification.type ? `is-${notification.type}` : '']\">\n <button class=\"delete\" v-on:click=\"remove(notification)\"></button>\n {{ notification.text }}\n </div>\n </div>\n </div>\n </section>\n</template>\n\n<script>\nimport * as types from '@/store/mutation_types'\n\nexport default {\n name: 'Notifications',\n components: { },\n\n data () {\n return { showNav: false }\n },\n\n computed: {\n notifications () {\n return this.$store.state.notifications.list\n }\n },\n\n methods: {\n remove: function (notification) {\n this.$store.commit(types.DELETE_NOTIFICATION, notification)\n }\n }\n}\n</script>\n\n<style>\n.fd-notifications {\n position: fixed;\n bottom: 60px;\n z-index: 20000;\n width: 100%;\n}\n.fd-notifications .notification {\n margin-bottom: 10px;\n margin-left: 24px;\n margin-right: 24px;\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\n}\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/Notifications.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"fd-notifications\"},[_c('div',{staticClass:\"columns is-centered\"},[_c('div',{staticClass:\"column is-half\"},_vm._l((_vm.notifications),function(notification){return _c('div',{key:notification.id,staticClass:\"notification has-shadow \",class:['notification', notification.type ? (\"is-\" + (notification.type)) : '']},[_c('button',{staticClass:\"delete\",on:{\"click\":function($event){_vm.remove(notification)}}}),_vm._v(\"\\n \"+_vm._s(notification.text)+\"\\n \")])}))])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-45b704a5\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Notifications.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-45b704a5\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Notifications.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Notifications.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Notifications.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-45b704a5\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Notifications.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Notifications.vue\n// module id = null\n// module chunks = ","<template>\n <div id=\"app\">\n <navbar-top />\n <vue-progress-bar class=\"fd-progress-bar\" />\n <transition name=\"fade\">\n <router-view v-show=\"!show_burger_menu\" />\n </transition>\n <notifications v-show=\"!show_burger_menu\" />\n <navbar-bottom v-show=\"!show_burger_menu\" />\n </div>\n</template>\n\n<script>\nimport NavbarTop from '@/components/NavbarTop'\nimport NavbarBottom from '@/components/NavbarBottom'\nimport Notifications from '@/components/Notifications'\nimport webapi from '@/webapi'\nimport * as types from '@/store/mutation_types'\nimport ReconnectingWebSocket from 'reconnectingwebsocket'\n\nexport default {\n name: 'App',\n components: { NavbarTop, NavbarBottom, Notifications },\n template: '<App/>',\n\n data () {\n return {\n token_timer_id: 0\n }\n },\n\n computed: {\n show_burger_menu () {\n return this.$store.state.show_burger_menu\n }\n },\n\n created: function () {\n this.connect()\n\n // Start the progress bar on app start\n this.$Progress.start()\n\n // Hook the progress bar to start before we move router-view\n this.$router.beforeEach((to, from, next) => {\n if (to.meta.show_progress) {\n if (to.meta.progress !== undefined) {\n let meta = to.meta.progress\n this.$Progress.parseMeta(meta)\n }\n this.$Progress.start()\n }\n next()\n })\n\n // hook the progress bar to finish after we've finished moving router-view\n this.$router.afterEach((to, from) => {\n if (to.meta.show_progress) {\n this.$Progress.finish()\n }\n })\n },\n\n methods: {\n connect: function () {\n this.$store.dispatch('add_notification', { text: 'Connecting to forked-daapd', type: 'info', topic: 'connection', timeout: 2000 })\n\n webapi.config().then(({ data }) => {\n this.$store.commit(types.UPDATE_CONFIG, data)\n this.$store.commit(types.HIDE_SINGLES, data.hide_singles)\n document.title = data.library_name\n\n this.open_ws()\n this.$Progress.finish()\n }).catch(() => {\n this.$store.dispatch('add_notification', { text: 'Failed to connect to forked-daapd', type: 'danger', topic: 'connection' })\n })\n },\n\n open_ws: function () {\n if (this.$store.state.config.websocket_port <= 0) {\n this.$store.dispatch('add_notification', { text: 'Missing websocket port', type: 'danger' })\n return\n }\n\n const vm = this\n\n var socket = new ReconnectingWebSocket(\n 'ws://' + window.location.hostname + ':' + vm.$store.state.config.websocket_port,\n 'notify',\n { reconnectInterval: 5000 }\n )\n\n socket.onopen = function () {\n vm.$store.dispatch('add_notification', { text: 'Connection to server established', type: 'primary', topic: 'connection', timeout: 2000 })\n socket.send(JSON.stringify({ notify: ['update', 'player', 'options', 'outputs', 'volume', 'spotify'] }))\n\n vm.update_outputs()\n vm.update_player_status()\n vm.update_library_stats()\n vm.update_queue()\n vm.update_spotify()\n }\n socket.onclose = function () {\n // vm.$store.dispatch('add_notification', { text: 'Connection closed', type: 'danger', timeout: 2000 })\n }\n socket.onerror = function () {\n vm.$store.dispatch('add_notification', { text: 'Connection lost. Reconnecting ...', type: 'danger', topic: 'connection' })\n }\n socket.onmessage = function (response) {\n var data = JSON.parse(response.data)\n if (data.notify.includes('update')) {\n vm.update_library_stats()\n }\n if (data.notify.includes('player') || data.notify.includes('options') || data.notify.includes('volume')) {\n vm.update_player_status()\n }\n if (data.notify.includes('outputs') || data.notify.includes('volume')) {\n vm.update_outputs()\n }\n if (data.notify.includes('queue')) {\n vm.update_queue()\n }\n if (data.notify.includes('spotify')) {\n vm.update_spotify()\n }\n }\n },\n\n update_library_stats: function () {\n webapi.library_stats().then(({ data }) => {\n this.$store.commit(types.UPDATE_LIBRARY_STATS, data)\n })\n webapi.library_count('media_kind is audiobook').then(({ data }) => {\n this.$store.commit(types.UPDATE_LIBRARY_AUDIOBOOKS_COUNT, data)\n })\n webapi.library_count('media_kind is podcast').then(({ data }) => {\n this.$store.commit(types.UPDATE_LIBRARY_PODCASTS_COUNT, data)\n })\n },\n\n update_outputs: function () {\n webapi.outputs().then(({ data }) => {\n this.$store.commit(types.UPDATE_OUTPUTS, data.outputs)\n })\n },\n\n update_player_status: function () {\n webapi.player_status().then(({ data }) => {\n this.$store.commit(types.UPDATE_PLAYER_STATUS, data)\n })\n },\n\n update_queue: function () {\n webapi.queue().then(({ data }) => {\n this.$store.commit(types.UPDATE_QUEUE, data)\n })\n },\n\n update_spotify: function () {\n webapi.spotify().then(({ data }) => {\n this.$store.commit(types.UPDATE_SPOTIFY, data)\n\n if (this.token_timer_id > 0) {\n console.log('clear old timer: ' + this.token_timer_id)\n window.clearTimeout(this.token_timer_id)\n this.token_timer_id = 0\n }\n if (data.webapi_token_expires_in > 0 && data.webapi_token) {\n this.token_timer_id = window.setTimeout(this.update_spotify, 1000 * data.webapi_token_expires_in)\n console.log('new timer: ' + this.token_timer_id + ', expires in ' + data.webapi_token_expires_in + ' seconds')\n }\n })\n }\n },\n\n watch: {\n '$route' (to, from) {\n this.$store.commit(types.SHOW_BURGER_MENU, false)\n },\n 'show_burger_menu' () {\n if (this.show_burger_menu) {\n document.querySelector('html').classList.add('is-clipped')\n } else {\n document.querySelector('html').classList.remove('is-clipped')\n }\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('navbar-top'),_vm._v(\" \"),_c('vue-progress-bar',{staticClass:\"fd-progress-bar\"}),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[_c('router-view',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.show_burger_menu),expression:\"!show_burger_menu\"}]})],1),_vm._v(\" \"),_c('notifications',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.show_burger_menu),expression:\"!show_burger_menu\"}]}),_vm._v(\" \"),_c('navbar-bottom',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.show_burger_menu),expression:\"!show_burger_menu\"}]})],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-f0c104fc\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-f0c104fc\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n}\nvar normalizeComponent = require(\"!../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f0c104fc\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.show)?_c('div',{staticClass:\"modal is-active\"},[_c('div',{staticClass:\"modal-background\",on:{\"click\":function($event){_vm.$emit('close')}}}),_vm._v(\" \"),_c('div',{staticClass:\"modal-content fd-modal-card\"},[_vm._t(\"modal-content\")],2),_vm._v(\" \"),_c('button',{staticClass:\"modal-close is-large\",attrs:{\"aria-label\":\"close\"},on:{\"click\":function($event){_vm.$emit('close')}}})]):_vm._e()])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6978f662\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/ModalDialog.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6978f662\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ModalDialog.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ModalDialog.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ModalDialog.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6978f662\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ModalDialog.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/ModalDialog.vue\n// module id = null\n// module chunks = ","<template>\n <div>\n <transition name=\"fade\">\n <div class=\"modal is-active\" v-if=\"show\">\n <div class=\"modal-background\" @click=\"$emit('close')\"></div>\n <div class=\"modal-content fd-modal-card\">\n <slot name=\"modal-content\"></slot>\n </div>\n <button class=\"modal-close is-large\" aria-label=\"close\" @click=\"$emit('close')\"></button>\n </div>\n </transition>\n </div>\n</template>\n\n<script>\nexport default {\n name: 'ModalDialog',\n props: [ 'show' ]\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/ModalDialog.vue","<template>\n <div class=\"media\" v-if=\"is_next || !show_only_next_items\">\n <!---->\n <div class=\"media-left\" v-if=\"edit_mode\">\n <span class=\"icon has-text-grey fd-is-movable handle\"><i class=\"mdi mdi-drag-horizontal mdi-18px\"></i></span>\n </div>\n\n <div class=\"media-content fd-has-action is-clipped\" v-on:click=\"play\">\n <h1 class=\"title is-6\" :class=\"{ 'has-text-primary': item.id === state.item_id, 'has-text-grey-light': !is_next }\">{{ item.title }}</h1>\n <h2 class=\"subtitle is-7\" :class=\"{ 'has-text-primary': item.id === state.item_id, 'has-text-grey-light': !is_next, 'has-text-grey': is_next && item.id !== state.item_id }\"><b>{{ item.artist }}</b></h2>\n <h2 class=\"subtitle is-7\" :class=\"{ 'has-text-primary': item.id === state.item_id, 'has-text-grey-light': !is_next, 'has-text-grey': is_next && item.id !== state.item_id }\">{{ item.album }}</h2>\n </div>\n <div class=\"media-right\">\n <a v-on:click=\"remove\" v-if=\"item.id !== state.item_id && edit_mode\">\n <span class=\"icon has-text-grey\"><i class=\"mdi mdi-delete mdi-18px\"></i></span>\n </a>\n <a @click=\"show_details_modal = true\" v-if=\"!edit_mode\">\n <span class=\"icon has-text-dark\"><i class=\"mdi mdi-dots-vertical mdi-18px\"></i></span>\n </a>\n <modal-dialog v-if=\"!edit_mode\" :show=\"show_details_modal\" @close=\"show_details_modal = false\">\n <template slot=\"modal-content\">\n <div class=\"card\">\n <div class=\"card-content\">\n <p class=\"title is-4\">\n {{ item.title }}\n </p>\n <p class=\"subtitle\">\n {{ item.artist }}\n </p>\n <div class=\"content is-small\">\n <p>\n <span class=\"heading\">Album</span>\n <span class=\"title is-6\">{{ item.album }}</span>\n </p>\n <p v-if=\"item.album_artist\">\n <span class=\"heading\">Album artist</span>\n <span class=\"title is-6\">{{ item.album_artist }}</span>\n </p>\n <p v-if=\"item.year > 0\">\n <span class=\"heading\">Year</span>\n <span class=\"title is-6\">{{ item.year }}</span>\n </p>\n <p>\n <span class=\"heading\">Genre</span>\n <span class=\"title is-6\">{{ item.genre }}</span>\n </p>\n <p>\n <span class=\"heading\">Track / Disc</span>\n <span class=\"title is-6\">{{ item.track_number }} / {{ item.disc_number }}</span>\n </p>\n <p>\n <span class=\"heading\">Length</span>\n <span class=\"title is-6\">{{ item.length_ms | duration }}</span>\n </p>\n <p>\n <span class=\"heading\">Path</span>\n <span class=\"title is-6\">{{ item.path }}</span>\n </p>\n </div>\n </div>\n <footer class=\"card-footer\">\n <a class=\"card-footer-item has-text-dark\" @click=\"remove\">\n <span class=\"icon\"><i class=\"mdi mdi-delete mdi-18px\"></i></span> <span>Remove</span>\n </a>\n <a class=\"card-footer-item has-text-dark\" @click=\"play\">\n <span class=\"icon\"><i class=\"mdi mdi-play mdi-18px\"></i></span> <span>Play</span>\n </a>\n </footer>\n </div>\n </template>\n </modal-dialog>\n </div>\n </div>\n</template>\n\n<script>\nimport ModalDialog from '@/components/ModalDialog'\nimport webapi from '@/webapi'\n\nexport default {\n name: 'PartQueueItem',\n components: { ModalDialog },\n\n props: ['item', 'position', 'current_position', 'show_only_next_items', 'edit_mode'],\n\n data () {\n return {\n show_details_modal: false\n }\n },\n\n computed: {\n state () {\n return this.$store.state.player\n },\n\n is_next () {\n return this.current_position < 0 || this.position >= this.current_position\n }\n },\n\n methods: {\n remove: function () {\n this.show_details_modal = false\n webapi.queue_remove(this.item.id)\n },\n\n play: function () {\n this.show_details_modal = false\n webapi.player_playid(this.item.id)\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/ListItemQueueItem.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.is_next || !_vm.show_only_next_items)?_c('div',{staticClass:\"media\"},[(_vm.edit_mode)?_c('div',{staticClass:\"media-left\"},[_vm._m(0)]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"media-content fd-has-action is-clipped\",on:{\"click\":_vm.play}},[_c('h1',{staticClass:\"title is-6\",class:{ 'has-text-primary': _vm.item.id === _vm.state.item_id, 'has-text-grey-light': !_vm.is_next }},[_vm._v(_vm._s(_vm.item.title))]),_vm._v(\" \"),_c('h2',{staticClass:\"subtitle is-7\",class:{ 'has-text-primary': _vm.item.id === _vm.state.item_id, 'has-text-grey-light': !_vm.is_next, 'has-text-grey': _vm.is_next && _vm.item.id !== _vm.state.item_id }},[_c('b',[_vm._v(_vm._s(_vm.item.artist))])]),_vm._v(\" \"),_c('h2',{staticClass:\"subtitle is-7\",class:{ 'has-text-primary': _vm.item.id === _vm.state.item_id, 'has-text-grey-light': !_vm.is_next, 'has-text-grey': _vm.is_next && _vm.item.id !== _vm.state.item_id }},[_vm._v(_vm._s(_vm.item.album))])]),_vm._v(\" \"),_c('div',{staticClass:\"media-right\"},[(_vm.item.id !== _vm.state.item_id && _vm.edit_mode)?_c('a',{on:{\"click\":_vm.remove}},[_vm._m(1)]):_vm._e(),_vm._v(\" \"),(!_vm.edit_mode)?_c('a',{on:{\"click\":function($event){_vm.show_details_modal = true}}},[_vm._m(2)]):_vm._e(),_vm._v(\" \"),(!_vm.edit_mode)?_c('modal-dialog',{attrs:{\"show\":_vm.show_details_modal},on:{\"close\":function($event){_vm.show_details_modal = false}}},[_c('template',{slot:\"modal-content\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-content\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"\\n \"+_vm._s(_vm.item.title)+\"\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"subtitle\"},[_vm._v(\"\\n \"+_vm._s(_vm.item.artist)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"content is-small\"},[_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Album\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.item.album))])]),_vm._v(\" \"),(_vm.item.album_artist)?_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Album artist\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.item.album_artist))])]):_vm._e(),_vm._v(\" \"),(_vm.item.year > 0)?_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Year\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.item.year))])]):_vm._e(),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Genre\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.item.genre))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Track / Disc\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.item.track_number)+\" / \"+_vm._s(_vm.item.disc_number))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Length\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm._f(\"duration\")(_vm.item.length_ms)))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Path\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.item.path))])])])]),_vm._v(\" \"),_c('footer',{staticClass:\"card-footer\"},[_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.remove}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-delete mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Remove\")])]),_vm._v(\" \"),_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.play}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-play mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Play\")])])])])])],2):_vm._e()],1)]):_vm._e()}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon has-text-grey fd-is-movable handle\"},[_c('i',{staticClass:\"mdi mdi-drag-horizontal mdi-18px\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon has-text-grey\"},[_c('i',{staticClass:\"mdi mdi-delete mdi-18px\"})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon has-text-dark\"},[_c('i',{staticClass:\"mdi mdi-dots-vertical mdi-18px\"})])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-405ea7e8\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/ListItemQueueItem.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-405ea7e8\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ListItemQueueItem.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ListItemQueueItem.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ListItemQueueItem.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-405ea7e8\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ListItemQueueItem.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/ListItemQueueItem.vue\n// module id = null\n// module chunks = ","<template>\n <content-with-heading>\n <template slot=\"heading-left\">\n <p class=\"heading\">{{ queue.count }} tracks</p>\n <p class=\"title is-4\">Queue</p>\n </template>\n <template slot=\"heading-right\">\n <div class=\"buttons is-centered\">\n <a class=\"button is-small\" :class=\"{ 'is-info': show_only_next_items }\" @click=\"update_show_next_items\">\n <span class=\"icon\">\n <i class=\"mdi mdi-arrow-collapse-down\"></i>\n </span>\n <span>Hide previous</span>\n </a>\n <!--\n <a class=\"button\" :class=\"{ 'is-info': edit_mode }\" @click=\"edit_mode = !edit_mode\">\n <span class=\"icon\">\n <i class=\"mdi mdi-content-save\"></i>\n </span>\n <span>Save</span>\n </a>\n -->\n <a class=\"button is-small\" :class=\"{ 'is-info': edit_mode }\" @click=\"edit_mode = !edit_mode\">\n <span class=\"icon\">\n <i class=\"mdi mdi-pencil\"></i>\n </span>\n <span>Edit</span>\n </a>\n <a class=\"button is-small\" @click=\"queue_clear\">\n <span class=\"icon\">\n <i class=\"mdi mdi-delete-empty\"></i>\n </span>\n <span>Clear</span>\n </a>\n </div>\n </template>\n <template slot=\"content\">\n <draggable v-model=\"queue_items\" :options=\"{handle:'.handle'}\" @end=\"move_item\">\n <list-item-queue-item v-for=\"(item, index) in queue_items\"\n :key=\"item.id\" :item=\"item\" :position=\"index\"\n :current_position=\"current_position\"\n :show_only_next_items=\"show_only_next_items\"\n :edit_mode=\"edit_mode\"></list-item-queue-item>\n </draggable>\n </template>\n </content-with-heading>\n</template>\n\n<script>\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport ListItemQueueItem from '@/components/ListItemQueueItem'\nimport webapi from '@/webapi'\nimport * as types from '@/store/mutation_types'\nimport draggable from 'vuedraggable'\n\nexport default {\n name: 'PageQueue',\n components: { ContentWithHeading, ListItemQueueItem, draggable },\n\n data () {\n return {\n edit_mode: false\n }\n },\n\n computed: {\n state () {\n return this.$store.state.player\n },\n queue () {\n return this.$store.state.queue\n },\n queue_items: {\n get () { return this.$store.state.queue.items },\n set (value) { /* Do nothing? Send move request in @end event */ }\n },\n current_position () {\n const nowPlaying = this.$store.getters.now_playing\n return nowPlaying === undefined || nowPlaying.position === undefined ? -1 : this.$store.getters.now_playing.position\n },\n show_only_next_items () {\n return this.$store.state.show_only_next_items\n }\n },\n\n methods: {\n queue_clear: function () {\n webapi.queue_clear()\n },\n\n update_show_next_items: function (e) {\n this.$store.commit(types.SHOW_ONLY_NEXT_ITEMS, !this.show_only_next_items)\n },\n\n move_item: function (e) {\n var oldPosition = !this.show_only_next_items ? e.oldIndex : e.oldIndex + this.current_position\n var item = this.queue_items[oldPosition]\n var newPosition = item.position + (e.newIndex - e.oldIndex)\n if (newPosition !== oldPosition) {\n webapi.queue_move(item.id, newPosition)\n }\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/PageQueue.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm.queue.count)+\" tracks\")]),_vm._v(\" \"),_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Queue\")])]),_vm._v(\" \"),_c('template',{slot:\"heading-right\"},[_c('div',{staticClass:\"buttons is-centered\"},[_c('a',{staticClass:\"button is-small\",class:{ 'is-info': _vm.show_only_next_items },on:{\"click\":_vm.update_show_next_items}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-arrow-collapse-down\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Hide previous\")])]),_vm._v(\" \"),_c('a',{staticClass:\"button is-small\",class:{ 'is-info': _vm.edit_mode },on:{\"click\":function($event){_vm.edit_mode = !_vm.edit_mode}}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-pencil\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Edit\")])]),_vm._v(\" \"),_c('a',{staticClass:\"button is-small\",on:{\"click\":_vm.queue_clear}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-delete-empty\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Clear\")])])])]),_vm._v(\" \"),_c('template',{slot:\"content\"},[_c('draggable',{attrs:{\"options\":{handle:'.handle'}},on:{\"end\":_vm.move_item},model:{value:(_vm.queue_items),callback:function ($$v) {_vm.queue_items=$$v},expression:\"queue_items\"}},_vm._l((_vm.queue_items),function(item,index){return _c('list-item-queue-item',{key:item.id,attrs:{\"item\":item,\"position\":index,\"current_position\":_vm.current_position,\"show_only_next_items\":_vm.show_only_next_items,\"edit_mode\":_vm.edit_mode}})}))],1)],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-f8b2f956\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/PageQueue.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-f8b2f956\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PageQueue.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageQueue.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageQueue.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-f8b2f956\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PageQueue.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/PageQueue.vue\n// module id = null\n// module chunks = ","<template>\n <section class=\"hero\">\n <div class=\"hero-body\">\n <div class=\"container has-text-centered\">\n <p class=\"heading\">NOW PLAYING</p>\n <h1 class=\"title is-3\">\n {{ now_playing.title }}\n </h1>\n <h2 class=\"title is-5\">\n {{ now_playing.artist }}\n </h2>\n <h3 class=\"subtitle is-5\">\n {{ now_playing.album }}\n </h3>\n <p class=\"control has-text-centered fd-progress-now-playing\">\n <range-slider\n class=\"seek-slider fd-has-action\"\n min=\"0\"\n :max=\"state.item_length_ms\"\n :value=\"item_progress_ms\"\n :disabled=\"state.state === 'stop'\"\n step=\"1000\"\n @change=\"seek\" >\n </range-slider>\n </p>\n <p class=\"content\">\n <span>{{ item_progress_ms | duration }} / {{ now_playing.length_ms | duration }}</span>\n </p>\n <p class=\"control has-text-centered\">\n <player-button-previous class=\"button is-medium\"></player-button-previous>\n <player-button-play-pause class=\"button is-medium\" icon_style=\"mdi-36px\"></player-button-play-pause>\n <player-button-next class=\"button is-medium\"></player-button-next>\n <player-button-repeat class=\"button is-medium is-light\"></player-button-repeat>\n <player-button-shuffle class=\"button is-medium is-light\"></player-button-shuffle>\n <player-button-consume class=\"button is-medium is-light\"></player-button-consume>\n </p>\n </div>\n </div>\n </section>\n</template>\n\n<script>\nimport PlayerButtonPlayPause from '@/components/PlayerButtonPlayPause'\nimport PlayerButtonNext from '@/components/PlayerButtonNext'\nimport PlayerButtonPrevious from '@/components/PlayerButtonPrevious'\nimport PlayerButtonShuffle from '@/components/PlayerButtonShuffle'\nimport PlayerButtonConsume from '@/components/PlayerButtonConsume'\nimport PlayerButtonRepeat from '@/components/PlayerButtonRepeat'\nimport RangeSlider from 'vue-range-slider'\nimport webapi from '@/webapi'\nimport * as types from '@/store/mutation_types'\n\nexport default {\n name: 'PageNowPlaying',\n components: { PlayerButtonPlayPause, PlayerButtonNext, PlayerButtonPrevious, PlayerButtonShuffle, PlayerButtonConsume, PlayerButtonRepeat, RangeSlider },\n\n data () {\n return {\n item_progress_ms: 0,\n interval_id: 0\n }\n },\n\n created () {\n this.item_progress_ms = this.state.item_progress_ms\n webapi.player_status().then(({ data }) => {\n this.$store.commit(types.UPDATE_PLAYER_STATUS, data)\n if (this.state.state === 'play') {\n this.interval_id = window.setInterval(this.tick, 1000)\n }\n })\n },\n\n destroyed () {\n if (this.interval_id > 0) {\n window.clearTimeout(this.interval_id)\n this.interval_id = 0\n }\n },\n\n computed: {\n state () {\n return this.$store.state.player\n },\n now_playing () {\n return this.$store.getters.now_playing\n }\n },\n\n methods: {\n tick: function () {\n this.item_progress_ms += 1000\n },\n\n seek: function (newPosition) {\n webapi.player_seek(newPosition).catch(() => {\n this.item_progress_ms = this.state.item_progress_ms\n })\n }\n },\n\n watch: {\n 'state' () {\n if (this.interval_id > 0) {\n window.clearTimeout(this.interval_id)\n this.interval_id = 0\n }\n this.item_progress_ms = this.state.item_progress_ms\n if (this.state.state === 'play') {\n this.interval_id = window.setInterval(this.tick, 1000)\n }\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/PageNowPlaying.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"hero\"},[_c('div',{staticClass:\"hero-body\"},[_c('div',{staticClass:\"container has-text-centered\"},[_c('p',{staticClass:\"heading\"},[_vm._v(\"NOW PLAYING\")]),_vm._v(\" \"),_c('h1',{staticClass:\"title is-3\"},[_vm._v(\"\\n \"+_vm._s(_vm.now_playing.title)+\"\\n \")]),_vm._v(\" \"),_c('h2',{staticClass:\"title is-5\"},[_vm._v(\"\\n \"+_vm._s(_vm.now_playing.artist)+\"\\n \")]),_vm._v(\" \"),_c('h3',{staticClass:\"subtitle is-5\"},[_vm._v(\"\\n \"+_vm._s(_vm.now_playing.album)+\"\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"control has-text-centered fd-progress-now-playing\"},[_c('range-slider',{staticClass:\"seek-slider fd-has-action\",attrs:{\"min\":\"0\",\"max\":_vm.state.item_length_ms,\"value\":_vm.item_progress_ms,\"disabled\":_vm.state.state === 'stop',\"step\":\"1000\"},on:{\"change\":_vm.seek}})],1),_vm._v(\" \"),_c('p',{staticClass:\"content\"},[_c('span',[_vm._v(_vm._s(_vm._f(\"duration\")(_vm.item_progress_ms))+\" / \"+_vm._s(_vm._f(\"duration\")(_vm.now_playing.length_ms)))])]),_vm._v(\" \"),_c('p',{staticClass:\"control has-text-centered\"},[_c('player-button-previous',{staticClass:\"button is-medium\"}),_vm._v(\" \"),_c('player-button-play-pause',{staticClass:\"button is-medium\",attrs:{\"icon_style\":\"mdi-36px\"}}),_vm._v(\" \"),_c('player-button-next',{staticClass:\"button is-medium\"}),_vm._v(\" \"),_c('player-button-repeat',{staticClass:\"button is-medium is-light\"}),_vm._v(\" \"),_c('player-button-shuffle',{staticClass:\"button is-medium is-light\"}),_vm._v(\" \"),_c('player-button-consume',{staticClass:\"button is-medium is-light\"})],1)])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-b48cb132\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/PageNowPlaying.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-b48cb132\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PageNowPlaying.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageNowPlaying.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageNowPlaying.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-b48cb132\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PageNowPlaying.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/PageNowPlaying.vue\n// module id = null\n// module chunks = ","\nexport const LoadDataBeforeEnterMixin = function (dataObject) {\n return {\n beforeRouteEnter (to, from, next) {\n dataObject.load(to).then((response) => {\n next(vm => dataObject.set(vm, response))\n })\n },\n beforeRouteUpdate (to, from, next) {\n const vm = this\n dataObject.load(to).then((response) => {\n dataObject.set(vm, response)\n next()\n })\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/mixin.js","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"section fd-tabs-section\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"columns is-centered\"},[_c('div',{staticClass:\"column is-four-fifths\"},[_c('div',{staticClass:\"tabs is-centered is-small\"},[_c('ul',[_c('router-link',{attrs:{\"tag\":\"li\",\"to\":\"/music/browse\",\"active-class\":\"is-active\"}},[_c('a',[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"mdi mdi-web\"})]),_vm._v(\" \"),_c('span',{},[_vm._v(\"Browse\")])])]),_vm._v(\" \"),_c('router-link',{attrs:{\"tag\":\"li\",\"to\":\"/music/artists\",\"active-class\":\"is-active\"}},[_c('a',[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"mdi mdi-artist\"})]),_vm._v(\" \"),_c('span',{},[_vm._v(\"Artists\")])])]),_vm._v(\" \"),_c('router-link',{attrs:{\"tag\":\"li\",\"to\":\"/music/albums\",\"active-class\":\"is-active\"}},[_c('a',[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"mdi mdi-album\"})]),_vm._v(\" \"),_c('span',{},[_vm._v(\"Albums\")])])]),_vm._v(\" \"),(_vm.spotify_enabled)?_c('router-link',{attrs:{\"tag\":\"li\",\"to\":\"/music/spotify\",\"active-class\":\"is-active\"}},[_c('a',[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"mdi mdi-spotify\"})]),_vm._v(\" \"),_c('span',{},[_vm._v(\"Spotify\")])])]):_vm._e()],1)])])])])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-016f3e58\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/TabsMusic.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-016f3e58\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./TabsMusic.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./TabsMusic.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./TabsMusic.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-016f3e58\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./TabsMusic.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/TabsMusic.vue\n// module id = null\n// module chunks = ","<template>\n <section class=\"section fd-tabs-section\">\n <div class=\"container\">\n <div class=\"columns is-centered\">\n <div class=\"column is-four-fifths\">\n <div class=\"tabs is-centered is-small\">\n <ul>\n <router-link tag=\"li\" to=\"/music/browse\" active-class=\"is-active\">\n <a>\n <span class=\"icon is-small\"><i class=\"mdi mdi-web\"></i></span>\n <span class=\"\">Browse</span>\n </a>\n </router-link>\n <router-link tag=\"li\" to=\"/music/artists\" active-class=\"is-active\">\n <a>\n <span class=\"icon is-small\"><i class=\"mdi mdi-artist\"></i></span>\n <span class=\"\">Artists</span>\n </a>\n </router-link>\n <router-link tag=\"li\" to=\"/music/albums\" active-class=\"is-active\">\n <a>\n <span class=\"icon is-small\"><i class=\"mdi mdi-album\"></i></span>\n <span class=\"\">Albums</span>\n </a>\n </router-link>\n <router-link tag=\"li\" to=\"/music/spotify\" v-if=\"spotify_enabled\" active-class=\"is-active\">\n <a>\n <span class=\"icon is-small\"><i class=\"mdi mdi-spotify\"></i></span>\n <span class=\"\">Spotify</span>\n </a>\n </router-link>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </section>\n</template>\n\n<script>\nexport default {\n name: 'TabsMusic',\n\n computed: {\n spotify_enabled () {\n return this.$store.state.spotify.webapi_token_valid\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/TabsMusic.vue","<template>\n <div class=\"media\">\n <div class=\"media-content fd-has-action is-clipped\" v-on:click=\"open_album\">\n <h1 class=\"title is-6\">{{ album.name }}</h1>\n <h2 class=\"subtitle is-7 has-text-grey\"><b>{{ album.artist }}</b></h2>\n </div>\n <div class=\"media-right\">\n <a @click=\"show_details_modal = true\">\n <span class=\"icon has-text-dark\"><i class=\"mdi mdi-dots-vertical mdi-18px\"></i></span>\n </a>\n <modal-dialog :show=\"show_details_modal\" @close=\"show_details_modal = false\">\n <template slot=\"modal-content\">\n <div class=\"card\">\n <div class=\"card-content\">\n <p class=\"title is-4\">\n <a class=\"has-text-link\" @click=\"open_album\">{{ album.name }}</a>\n </p>\n <div class=\"content is-small\">\n <p v-if=\"album.artist && media_kind !== 'audiobook'\">\n <span class=\"heading\">Album artist</span>\n <a class=\"title is-6 has-text-link\" @click=\"open_artist\">{{ album.artist }}</a>\n </p>\n <p v-if=\"album.artist && media_kind === 'audiobook'\">\n <span class=\"heading\">Album artist</span>\n <span class=\"title is-6\">{{ album.artist }}</span>\n </p>\n <p>\n <span class=\"heading\">Tracks</span>\n <span class=\"title is-6\">{{ album.track_count }}</span>\n </p>\n </div>\n </div>\n <footer class=\"card-footer\">\n <a class=\"card-footer-item has-text-dark\" @click=\"queue_add\">\n <span class=\"icon\"><i class=\"mdi mdi-playlist-plus mdi-18px\"></i></span> <span>Add</span>\n </a>\n <a class=\"card-footer-item has-text-dark\" @click=\"play\">\n <span class=\"icon\"><i class=\"mdi mdi-play mdi-18px\"></i></span> <span>Play</span>\n </a>\n </footer>\n </div>\n </template>\n </modal-dialog>\n </div>\n </div>\n</template>\n\n<script>\nimport ModalDialog from '@/components/ModalDialog'\nimport webapi from '@/webapi'\n\nexport default {\n name: 'ListItemAlbum',\n components: { ModalDialog },\n\n props: ['album', 'media_kind'],\n\n data () {\n return {\n show_details_modal: false\n }\n },\n\n methods: {\n play: function () {\n this.show_details_modal = false\n webapi.queue_clear().then(() =>\n webapi.queue_add(this.album.uri).then(() =>\n webapi.player_play()\n )\n )\n },\n\n queue_add: function () {\n this.show_details_modal = false\n webapi.queue_add(this.album.uri).then(() =>\n this.$store.dispatch('add_notification', { text: 'Album tracks appended to queue', type: 'info', timeout: 2000 })\n )\n },\n\n open_album: function () {\n this.show_details_modal = false\n if (this.media_kind === 'podcast') {\n this.$router.push({ path: '/podcasts/' + this.album.id })\n } else if (this.media_kind === 'audiobook') {\n this.$router.push({ path: '/audiobooks/' + this.album.id })\n } else {\n this.$router.push({ path: '/music/albums/' + this.album.id })\n }\n },\n\n open_artist: function () {\n this.show_details_modal = false\n this.$router.push({ path: '/music/artists/' + this.album.artist_id })\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/ListItemAlbum.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"media\"},[_c('div',{staticClass:\"media-content fd-has-action is-clipped\",on:{\"click\":_vm.open_album}},[_c('h1',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.album.name))]),_vm._v(\" \"),_c('h2',{staticClass:\"subtitle is-7 has-text-grey\"},[_c('b',[_vm._v(_vm._s(_vm.album.artist))])])]),_vm._v(\" \"),_c('div',{staticClass:\"media-right\"},[_c('a',{on:{\"click\":function($event){_vm.show_details_modal = true}}},[_vm._m(0)]),_vm._v(\" \"),_c('modal-dialog',{attrs:{\"show\":_vm.show_details_modal},on:{\"close\":function($event){_vm.show_details_modal = false}}},[_c('template',{slot:\"modal-content\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-content\"},[_c('p',{staticClass:\"title is-4\"},[_c('a',{staticClass:\"has-text-link\",on:{\"click\":_vm.open_album}},[_vm._v(_vm._s(_vm.album.name))])]),_vm._v(\" \"),_c('div',{staticClass:\"content is-small\"},[(_vm.album.artist && _vm.media_kind !== 'audiobook')?_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Album artist\")]),_vm._v(\" \"),_c('a',{staticClass:\"title is-6 has-text-link\",on:{\"click\":_vm.open_artist}},[_vm._v(_vm._s(_vm.album.artist))])]):_vm._e(),_vm._v(\" \"),(_vm.album.artist && _vm.media_kind === 'audiobook')?_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Album artist\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.album.artist))])]):_vm._e(),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Tracks\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.album.track_count))])])])]),_vm._v(\" \"),_c('footer',{staticClass:\"card-footer\"},[_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.queue_add}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-playlist-plus mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Add\")])]),_vm._v(\" \"),_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.play}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-play mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Play\")])])])])])],2)],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon has-text-dark\"},[_c('i',{staticClass:\"mdi mdi-dots-vertical mdi-18px\"})])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-367347b1\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/ListItemAlbum.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-367347b1\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ListItemAlbum.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ListItemAlbum.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ListItemAlbum.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-367347b1\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ListItemAlbum.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/ListItemAlbum.vue\n// module id = null\n// module chunks = ","<template>\n <div class=\"media\">\n <div class=\"media-content fd-has-action is-clipped\" v-on:click=\"play\">\n <h1 class=\"title is-6\">{{ track.title }}</h1>\n <h2 class=\"subtitle is-7 has-text-grey\"><b>{{ track.artist }}</b></h2>\n <h2 class=\"subtitle is-7 has-text-grey\">{{ track.album }}</h2>\n </div>\n <div class=\"media-right\">\n <a @click=\"show_details_modal = true\">\n <span class=\"icon has-text-dark\"><i class=\"mdi mdi-dots-vertical mdi-18px\"></i></span>\n </a>\n <modal-dialog :show=\"show_details_modal\" @close=\"show_details_modal = false\">\n <template slot=\"modal-content\">\n <div class=\"card\">\n <div class=\"card-content\">\n <p class=\"title is-4\">\n {{ track.title }}\n </p>\n <p class=\"subtitle\">\n {{ track.artist }}\n </p>\n <div class=\"content is-small\">\n <p>\n <span class=\"heading\">Album</span>\n <a class=\"title is-6 has-text-link\" @click=\"open_album\">{{ track.album }}</a>\n </p>\n <p v-if=\"track.album_artist && track.media_kind !== 'audiobook'\">\n <span class=\"heading\">Album artist</span>\n <a class=\"title is-6 has-text-link\" @click=\"open_artist\">{{ track.album_artist }}</a>\n </p>\n <p v-if=\"track.date_released\">\n <span class=\"heading\">Release date</span>\n <span class=\"title is-6\">{{ track.date_released | time('L')}}</span>\n </p>\n <p v-else-if=\"track.year > 0\">\n <span class=\"heading\">Year</span>\n <span class=\"title is-6\">{{ track.year }}</span>\n </p>\n <p>\n <span class=\"heading\">Genre</span>\n <span class=\"title is-6\">{{ track.genre }}</span>\n </p>\n <p>\n <span class=\"heading\">Track / Disc</span>\n <span class=\"title is-6\">{{ track.track_number }} / {{ track.disc_number }}</span>\n </p>\n <p>\n <span class=\"heading\">Length</span>\n <span class=\"title is-6\">{{ track.length_ms | duration }}</span>\n </p>\n <p>\n <span class=\"heading\">Path</span>\n <span class=\"title is-6\">{{ track.path }}</span>\n </p>\n <p>\n <span class=\"heading\">Type</span>\n <span class=\"title is-6\">{{ track.media_kind }} - {{ track.data_kind }}</span>\n </p>\n <p>\n <span class=\"heading\">Added at</span>\n <span class=\"title is-6\">{{ track.time_added | time('L LT')}}</span>\n </p>\n </div>\n </div>\n <footer class=\"card-footer\">\n <a class=\"card-footer-item has-text-dark\" @click=\"queue_add\">\n <span class=\"icon\"><i class=\"mdi mdi-playlist-plus mdi-18px\"></i></span> <span>Add</span>\n </a>\n <a class=\"card-footer-item has-text-dark\" @click=\"play_track\">\n <span class=\"icon\"><i class=\"mdi mdi-play mdi-18px\"></i></span> <span>Play</span>\n </a>\n </footer>\n </div>\n </template>\n </modal-dialog>\n </div>\n </div>\n</template>\n\n<script>\nimport ModalDialog from '@/components/ModalDialog'\nimport webapi from '@/webapi'\n\nexport default {\n name: 'PartTrack',\n components: { ModalDialog },\n\n props: ['track', 'position', 'context_uri'],\n\n data () {\n return {\n show_details_modal: false\n }\n },\n\n methods: {\n play: function () {\n this.show_details_modal = false\n webapi.queue_clear().then(() =>\n webapi.queue_add(this.context_uri).then(() =>\n webapi.player_playpos(this.position)\n )\n )\n },\n\n play_track: function () {\n this.show_details_modal = false\n webapi.queue_clear().then(() =>\n webapi.queue_add(this.track.uri).then(() =>\n webapi.player_play()\n )\n )\n },\n\n queue_add: function () {\n this.show_details_modal = false\n webapi.queue_add(this.track.uri).then(() =>\n this.$store.dispatch('add_notification', { text: 'Track appended to queue', type: 'info', timeout: 2000 })\n )\n },\n\n open_album: function () {\n this.show_details_modal = false\n if (this.track.media_kind === 'podcast') {\n this.$router.push({ path: '/podcasts/' + this.track.album_id })\n } else if (this.track.media_kind === 'audiobook') {\n this.$router.push({ path: '/audiobooks/' + this.track.album_id })\n } else {\n this.$router.push({ path: '/music/albums/' + this.track.album_id })\n }\n },\n\n open_artist: function () {\n this.show_details_modal = false\n this.$router.push({ path: '/music/artists/' + this.track.album_artist_id })\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/ListItemTrack.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"media\"},[_c('div',{staticClass:\"media-content fd-has-action is-clipped\",on:{\"click\":_vm.play}},[_c('h1',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.track.title))]),_vm._v(\" \"),_c('h2',{staticClass:\"subtitle is-7 has-text-grey\"},[_c('b',[_vm._v(_vm._s(_vm.track.artist))])]),_vm._v(\" \"),_c('h2',{staticClass:\"subtitle is-7 has-text-grey\"},[_vm._v(_vm._s(_vm.track.album))])]),_vm._v(\" \"),_c('div',{staticClass:\"media-right\"},[_c('a',{on:{\"click\":function($event){_vm.show_details_modal = true}}},[_vm._m(0)]),_vm._v(\" \"),_c('modal-dialog',{attrs:{\"show\":_vm.show_details_modal},on:{\"close\":function($event){_vm.show_details_modal = false}}},[_c('template',{slot:\"modal-content\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-content\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"\\n \"+_vm._s(_vm.track.title)+\"\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"subtitle\"},[_vm._v(\"\\n \"+_vm._s(_vm.track.artist)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"content is-small\"},[_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Album\")]),_vm._v(\" \"),_c('a',{staticClass:\"title is-6 has-text-link\",on:{\"click\":_vm.open_album}},[_vm._v(_vm._s(_vm.track.album))])]),_vm._v(\" \"),(_vm.track.album_artist && _vm.track.media_kind !== 'audiobook')?_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Album artist\")]),_vm._v(\" \"),_c('a',{staticClass:\"title is-6 has-text-link\",on:{\"click\":_vm.open_artist}},[_vm._v(_vm._s(_vm.track.album_artist))])]):_vm._e(),_vm._v(\" \"),(_vm.track.date_released)?_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Release date\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm._f(\"time\")(_vm.track.date_released,'L')))])]):(_vm.track.year > 0)?_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Year\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.track.year))])]):_vm._e(),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Genre\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.track.genre))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Track / Disc\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.track.track_number)+\" / \"+_vm._s(_vm.track.disc_number))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Length\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm._f(\"duration\")(_vm.track.length_ms)))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Path\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.track.path))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Type\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.track.media_kind)+\" - \"+_vm._s(_vm.track.data_kind))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Added at\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm._f(\"time\")(_vm.track.time_added,'L LT')))])])])]),_vm._v(\" \"),_c('footer',{staticClass:\"card-footer\"},[_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.queue_add}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-playlist-plus mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Add\")])]),_vm._v(\" \"),_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.play_track}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-play mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Play\")])])])])])],2)],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon has-text-dark\"},[_c('i',{staticClass:\"mdi mdi-dots-vertical mdi-18px\"})])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-5929586b\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/ListItemTrack.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-5929586b\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ListItemTrack.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ListItemTrack.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ListItemTrack.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5929586b\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ListItemTrack.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/ListItemTrack.vue\n// module id = null\n// module chunks = ","<template>\n <div>\n <tabs-music></tabs-music>\n\n <!-- Recently added -->\n <content-with-heading>\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Recently added</p>\n <p class=\"heading\">albums</p>\n </template>\n <template slot=\"content\">\n <list-item-album v-for=\"album in recently_added.items\" :key=\"album.id\" :album=\"album\"></list-item-album>\n </template>\n <template slot=\"footer\">\n <nav class=\"level\">\n <p class=\"level-item\">\n <a class=\"button is-light is-small is-rounded\" v-on:click=\"open_browse('recently_added')\">Show more</a>\n </p>\n </nav>\n </template>\n </content-with-heading>\n\n <!-- Recently played -->\n <content-with-heading>\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Recently played</p>\n <p class=\"heading\">tracks</p>\n </template>\n <template slot=\"content\">\n <list-item-track v-for=\"track in recently_played.items\" :key=\"track.id\" :track=\"track\" :position=\"0\" :context_uri=\"track.uri\"></list-item-track>\n </template>\n <template slot=\"footer\">\n <nav class=\"level\">\n <p class=\"level-item\">\n <a class=\"button is-light is-small is-rounded\" v-on:click=\"open_browse('recently_played')\">Show more</a>\n </p>\n </nav>\n </template>\n </content-with-heading>\n </div>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport TabsMusic from '@/components/TabsMusic'\nimport ListItemAlbum from '@/components/ListItemAlbum'\nimport ListItemTrack from '@/components/ListItemTrack'\nimport webapi from '@/webapi'\n\nconst browseData = {\n load: function (to) {\n return Promise.all([\n webapi.search({ type: 'album', expression: 'time_added after 8 weeks ago having track_count > 3 order by time_added desc', limit: 3 }),\n webapi.search({ type: 'track', expression: 'time_played after 8 weeks ago order by time_played desc', limit: 3 })\n ])\n },\n\n set: function (vm, response) {\n vm.recently_added = response[0].data.albums\n vm.recently_played = response[1].data.tracks\n }\n}\n\nexport default {\n name: 'PageBrowse',\n mixins: [ LoadDataBeforeEnterMixin(browseData) ],\n components: { ContentWithHeading, TabsMusic, ListItemAlbum, ListItemTrack },\n\n data () {\n return {\n recently_added: {},\n recently_played: {}\n }\n },\n\n methods: {\n open_browse: function (type) {\n this.$router.push({ path: '/music/browse/' + type })\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/PageBrowse.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('tabs-music'),_vm._v(\" \"),_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Recently added\")]),_vm._v(\" \"),_c('p',{staticClass:\"heading\"},[_vm._v(\"albums\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},_vm._l((_vm.recently_added.items),function(album){return _c('list-item-album',{key:album.id,attrs:{\"album\":album}})})),_vm._v(\" \"),_c('template',{slot:\"footer\"},[_c('nav',{staticClass:\"level\"},[_c('p',{staticClass:\"level-item\"},[_c('a',{staticClass:\"button is-light is-small is-rounded\",on:{\"click\":function($event){_vm.open_browse('recently_added')}}},[_vm._v(\"Show more\")])])])])],2),_vm._v(\" \"),_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Recently played\")]),_vm._v(\" \"),_c('p',{staticClass:\"heading\"},[_vm._v(\"tracks\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},_vm._l((_vm.recently_played.items),function(track){return _c('list-item-track',{key:track.id,attrs:{\"track\":track,\"position\":0,\"context_uri\":track.uri}})})),_vm._v(\" \"),_c('template',{slot:\"footer\"},[_c('nav',{staticClass:\"level\"},[_c('p',{staticClass:\"level-item\"},[_c('a',{staticClass:\"button is-light is-small is-rounded\",on:{\"click\":function($event){_vm.open_browse('recently_played')}}},[_vm._v(\"Show more\")])])])])],2)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-5c1d796e\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/PageBrowse.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-5c1d796e\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PageBrowse.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageBrowse.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageBrowse.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5c1d796e\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PageBrowse.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/PageBrowse.vue\n// module id = null\n// module chunks = ","<template>\n <div>\n <tabs-music></tabs-music>\n\n <content-with-heading>\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Recently added</p>\n <p class=\"heading\">albums</p>\n </template>\n <template slot=\"content\">\n <list-item-album v-for=\"album in recently_added.items\" :key=\"album.id\" :album=\"album\"></list-item-album>\n </template>\n </content-with-heading>\n </div>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport TabsMusic from '@/components/TabsMusic'\nimport ListItemAlbum from '@/components/ListItemAlbum'\nimport webapi from '@/webapi'\n\nconst browseData = {\n load: function (to) {\n return webapi.search({\n type: 'album',\n expression: 'time_added after 8 weeks ago having track_count > 3 order by time_added desc',\n limit: 50\n })\n },\n\n set: function (vm, response) {\n vm.recently_added = response.data.albums\n }\n}\n\nexport default {\n name: 'PageBrowseType',\n mixins: [ LoadDataBeforeEnterMixin(browseData) ],\n components: { ContentWithHeading, TabsMusic, ListItemAlbum },\n\n data () {\n return {\n recently_added: {}\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/PageBrowseRecentlyAdded.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('tabs-music'),_vm._v(\" \"),_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Recently added\")]),_vm._v(\" \"),_c('p',{staticClass:\"heading\"},[_vm._v(\"albums\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},_vm._l((_vm.recently_added.items),function(album){return _c('list-item-album',{key:album.id,attrs:{\"album\":album}})}))],2)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-4d83db6c\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/PageBrowseRecentlyAdded.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-4d83db6c\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PageBrowseRecentlyAdded.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageBrowseRecentlyAdded.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageBrowseRecentlyAdded.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4d83db6c\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PageBrowseRecentlyAdded.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/PageBrowseRecentlyAdded.vue\n// module id = null\n// module chunks = ","<template>\n <div>\n <tabs-music></tabs-music>\n\n <content-with-heading>\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Recently played</p>\n <p class=\"heading\">tracks</p>\n </template>\n <template slot=\"content\">\n <list-item-track v-for=\"track in recently_played.items\" :key=\"track.id\" :track=\"track\" :position=\"0\" :context_uri=\"track.uri\"></list-item-track>\n </template>\n </content-with-heading>\n </div>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport TabsMusic from '@/components/TabsMusic'\nimport ListItemTrack from '@/components/ListItemTrack'\nimport webapi from '@/webapi'\n\nconst browseData = {\n load: function (to) {\n return webapi.search({\n type: 'track',\n expression: 'time_played after 8 weeks ago order by time_played desc',\n limit: 50\n })\n },\n\n set: function (vm, response) {\n vm.recently_played = response.data.tracks\n }\n}\n\nexport default {\n name: 'PageBrowseType',\n mixins: [ LoadDataBeforeEnterMixin(browseData) ],\n components: { ContentWithHeading, TabsMusic, ListItemTrack },\n\n data () {\n return {\n recently_played: {}\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/PageBrowseRecentlyPlayed.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('tabs-music'),_vm._v(\" \"),_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Recently played\")]),_vm._v(\" \"),_c('p',{staticClass:\"heading\"},[_vm._v(\"tracks\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},_vm._l((_vm.recently_played.items),function(track){return _c('list-item-track',{key:track.id,attrs:{\"track\":track,\"position\":0,\"context_uri\":track.uri}})}))],2)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-17dcab08\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/PageBrowseRecentlyPlayed.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-17dcab08\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PageBrowseRecentlyPlayed.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageBrowseRecentlyPlayed.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageBrowseRecentlyPlayed.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-17dcab08\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PageBrowseRecentlyPlayed.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/PageBrowseRecentlyPlayed.vue\n// module id = null\n// module chunks = ","<template>\n <div class=\"media\">\n <div class=\"media-content fd-has-action is-clipped\" v-on:click=\"open_artist\">\n <h1 class=\"title is-6\">{{ artist.name }}</h1>\n </div>\n <div class=\"media-right\">\n <a @click=\"show_details_modal = true\">\n <span class=\"icon has-text-dark\"><i class=\"mdi mdi-dots-vertical mdi-18px\"></i></span>\n </a>\n <modal-dialog :show=\"show_details_modal\" @close=\"show_details_modal = false\">\n <template slot=\"modal-content\">\n <div class=\"card\">\n <div class=\"card-content\">\n <p class=\"title is-4\">\n <a class=\"has-text-link\" @click=\"open_artist\">{{ artist.name }}</a>\n </p>\n <div class=\"content is-small\">\n <p>\n <span class=\"heading\">Albums</span>\n <span class=\"title is-6\">{{ artist.album_count }}</span>\n </p>\n <p>\n <span class=\"heading\">Tracks</span>\n <span class=\"title is-6\">{{ artist.track_count }}</span>\n </p>\n </div>\n </div>\n <footer class=\"card-footer\">\n <a class=\"card-footer-item has-text-dark\" @click=\"queue_add\">\n <span class=\"icon\"><i class=\"mdi mdi-playlist-plus mdi-18px\"></i></span> <span>Add</span>\n </a>\n <a class=\"card-footer-item has-text-dark\" @click=\"play\">\n <span class=\"icon\"><i class=\"mdi mdi-play mdi-18px\"></i></span> <span>Play</span>\n </a>\n </footer>\n </div>\n </template>\n </modal-dialog>\n </div>\n </div>\n</template>\n\n<script>\nimport ModalDialog from '@/components/ModalDialog'\nimport webapi from '@/webapi'\n\nexport default {\n name: 'PartArtist',\n components: { ModalDialog },\n\n props: ['artist'],\n\n data () {\n return {\n show_details_modal: false\n }\n },\n\n methods: {\n play: function () {\n this.show_details_modal = false\n webapi.queue_clear().then(() =>\n webapi.queue_add(this.artist.uri).then(() =>\n webapi.player_play()\n )\n )\n },\n\n queue_add: function () {\n this.show_details_modal = false\n webapi.queue_add(this.artist.uri).then(() =>\n this.$store.dispatch('add_notification', { text: 'Artist tracks appended to queue', type: 'info', timeout: 2000 })\n )\n },\n\n open_artist: function () {\n this.show_details_modal = false\n this.$router.push({ path: '/music/artists/' + this.artist.id })\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/ListItemArtist.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"media\"},[_c('div',{staticClass:\"media-content fd-has-action is-clipped\",on:{\"click\":_vm.open_artist}},[_c('h1',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.artist.name))])]),_vm._v(\" \"),_c('div',{staticClass:\"media-right\"},[_c('a',{on:{\"click\":function($event){_vm.show_details_modal = true}}},[_vm._m(0)]),_vm._v(\" \"),_c('modal-dialog',{attrs:{\"show\":_vm.show_details_modal},on:{\"close\":function($event){_vm.show_details_modal = false}}},[_c('template',{slot:\"modal-content\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-content\"},[_c('p',{staticClass:\"title is-4\"},[_c('a',{staticClass:\"has-text-link\",on:{\"click\":_vm.open_artist}},[_vm._v(_vm._s(_vm.artist.name))])]),_vm._v(\" \"),_c('div',{staticClass:\"content is-small\"},[_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Albums\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.artist.album_count))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Tracks\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.artist.track_count))])])])]),_vm._v(\" \"),_c('footer',{staticClass:\"card-footer\"},[_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.queue_add}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-playlist-plus mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Add\")])]),_vm._v(\" \"),_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.play}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-play mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Play\")])])])])])],2)],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon has-text-dark\"},[_c('i',{staticClass:\"mdi mdi-dots-vertical mdi-18px\"})])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0a8423d4\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/ListItemArtist.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0a8423d4\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ListItemArtist.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ListItemArtist.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ListItemArtist.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0a8423d4\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ListItemArtist.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/ListItemArtist.vue\n// module id = null\n// module chunks = ","<template>\n <div>\n <tabs-music></tabs-music>\n\n <content-with-heading>\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Artists</p>\n <p class=\"heading\">{{ artists.total }} artists</p>\n </template>\n <template slot=\"heading-right\">\n <a class=\"button is-small\" :class=\"{ 'is-info': hide_singles }\" @click=\"update_hide_singles\">\n <span class=\"icon\">\n <i class=\"mdi mdi-numeric-1-box-multiple-outline\"></i>\n </span>\n <span>Hide singles</span>\n </a>\n </template>\n <template slot=\"content\">\n <list-item-artist v-for=\"artist in artists.items\" :key=\"artist.id\" :artist=\"artist\" v-if=\"!hide_singles || artist.track_count > (artist.album_count * 2)\"></list-item-artist>\n </template>\n </content-with-heading>\n </div>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport TabsMusic from '@/components/TabsMusic'\nimport ListItemArtist from '@/components/ListItemArtist'\nimport webapi from '@/webapi'\nimport * as types from '@/store/mutation_types'\n\nconst artistsData = {\n load: function (to) {\n return webapi.library_artists()\n },\n\n set: function (vm, response) {\n vm.artists = response.data\n }\n}\n\nexport default {\n name: 'PageArtists',\n mixins: [ LoadDataBeforeEnterMixin(artistsData) ],\n components: { ContentWithHeading, TabsMusic, ListItemArtist },\n\n data () {\n return {\n artists: {}\n }\n },\n\n computed: {\n hide_singles () {\n return this.$store.state.hide_singles\n }\n },\n\n methods: {\n update_hide_singles: function (e) {\n this.$store.commit(types.HIDE_SINGLES, !this.hide_singles)\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/PageArtists.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('tabs-music'),_vm._v(\" \"),_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Artists\")]),_vm._v(\" \"),_c('p',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm.artists.total)+\" artists\")])]),_vm._v(\" \"),_c('template',{slot:\"heading-right\"},[_c('a',{staticClass:\"button is-small\",class:{ 'is-info': _vm.hide_singles },on:{\"click\":_vm.update_hide_singles}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-numeric-1-box-multiple-outline\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Hide singles\")])])]),_vm._v(\" \"),_c('template',{slot:\"content\"},_vm._l((_vm.artists.items),function(artist){return (!_vm.hide_singles || artist.track_count > (artist.album_count * 2))?_c('list-item-artist',{key:artist.id,attrs:{\"artist\":artist}}):_vm._e()}))],2)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-da7a56b4\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/PageArtists.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-da7a56b4\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PageArtists.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageArtists.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageArtists.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-da7a56b4\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PageArtists.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/PageArtists.vue\n// module id = null\n// module chunks = ","<template>\n <content-with-heading>\n <template slot=\"heading-left\">\n <p class=\"title is-4\">{{ artist.name }}</p>\n </template>\n <template slot=\"content\">\n <p class=\"heading has-text-centered-mobile\">{{ artist.album_count }} albums | {{ artist.track_count }} tracks</p>\n <list-item-album v-for=\"album in albums.items\" :key=\"album.id\" :album=\"album\"></list-item-album>\n </template>\n </content-with-heading>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport ListItemAlbum from '@/components/ListItemAlbum'\nimport webapi from '@/webapi'\n\nconst artistData = {\n load: function (to) {\n return Promise.all([\n webapi.library_artist(to.params.artist_id),\n webapi.library_albums(to.params.artist_id)\n ])\n },\n\n set: function (vm, response) {\n vm.artist = response[0].data\n vm.albums = response[1].data\n }\n}\n\nexport default {\n name: 'PageArtist',\n mixins: [ LoadDataBeforeEnterMixin(artistData) ],\n components: { ContentWithHeading, ListItemAlbum },\n\n data () {\n return {\n artist: {},\n albums: {}\n }\n },\n\n methods: {\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/PageArtist.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(_vm._s(_vm.artist.name))])]),_vm._v(\" \"),_c('template',{slot:\"content\"},[_c('p',{staticClass:\"heading has-text-centered-mobile\"},[_vm._v(_vm._s(_vm.artist.album_count)+\" albums | \"+_vm._s(_vm.artist.track_count)+\" tracks\")]),_vm._v(\" \"),_vm._l((_vm.albums.items),function(album){return _c('list-item-album',{key:album.id,attrs:{\"album\":album}})})],2)],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0caf620e\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/PageArtist.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0caf620e\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PageArtist.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageArtist.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageArtist.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0caf620e\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PageArtist.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/PageArtist.vue\n// module id = null\n// module chunks = ","<template>\n <div>\n <tabs-music></tabs-music>\n\n <content-with-heading>\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Albums</p>\n <p class=\"heading\">{{ albums.total }} albums</p>\n </template>\n <template slot=\"heading-right\">\n <a class=\"button is-small\" :class=\"{ 'is-info': hide_singles }\" @click=\"update_hide_singles\">\n <span class=\"icon\">\n <i class=\"mdi mdi-numeric-1-box-multiple-outline\"></i>\n </span>\n <span>Hide singles</span>\n </a>\n </template>\n <template slot=\"content\">\n <list-item-album v-for=\"album in albums.items\" :key=\"album.id\" :album=\"album\" v-if=\"!hide_singles || album.track_count > 2\"></list-item-album>\n </template>\n </content-with-heading>\n </div>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport TabsMusic from '@/components/TabsMusic'\nimport ListItemAlbum from '@/components/ListItemAlbum'\nimport webapi from '@/webapi'\nimport * as types from '@/store/mutation_types'\n\nconst albumsData = {\n load: function (to) {\n return webapi.library_albums()\n },\n\n set: function (vm, response) {\n vm.albums = response.data\n }\n}\n\nexport default {\n name: 'PageAlbums',\n mixins: [ LoadDataBeforeEnterMixin(albumsData) ],\n components: { ContentWithHeading, TabsMusic, ListItemAlbum },\n\n data () {\n return {\n albums: {}\n }\n },\n\n computed: {\n hide_singles () {\n return this.$store.state.hide_singles\n }\n },\n\n methods: {\n update_hide_singles: function (e) {\n this.$store.commit(types.HIDE_SINGLES, !this.hide_singles)\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/PageAlbums.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('tabs-music'),_vm._v(\" \"),_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Albums\")]),_vm._v(\" \"),_c('p',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm.albums.total)+\" albums\")])]),_vm._v(\" \"),_c('template',{slot:\"heading-right\"},[_c('a',{staticClass:\"button is-small\",class:{ 'is-info': _vm.hide_singles },on:{\"click\":_vm.update_hide_singles}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-numeric-1-box-multiple-outline\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Hide singles\")])])]),_vm._v(\" \"),_c('template',{slot:\"content\"},_vm._l((_vm.albums.items),function(album){return (!_vm.hide_singles || album.track_count > 2)?_c('list-item-album',{key:album.id,attrs:{\"album\":album}}):_vm._e()}))],2)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-ff8d6226\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/PageAlbums.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-ff8d6226\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PageAlbums.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageAlbums.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageAlbums.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-ff8d6226\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PageAlbums.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/PageAlbums.vue\n// module id = null\n// module chunks = ","<template>\n <content-with-heading>\n <template slot=\"heading-left\">\n <div class=\"title is-4\">{{ album.name }}</div>\n <a class=\"title is-4 has-text-link has-text-weight-normal\" @click=\"open_artist\">{{ album.artist }}</a>\n </template>\n <template slot=\"heading-right\">\n <a class=\"button is-small is-dark is-rounded\" @click=\"play\">\n <span class=\"icon\">\n <i class=\"mdi mdi-play\"></i>\n </span>\n <span>Play</span>\n </a>\n </template>\n <template slot=\"content\">\n <p class=\"heading has-text-centered-mobile\">{{ album.track_count }} tracks</p>\n <list-item-track v-for=\"(track, index) in tracks\" :key=\"track.id\" :track=\"track\" :position=\"index\" :context_uri=\"album.uri\"></list-item-track>\n </template>\n </content-with-heading>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport ListItemTrack from '@/components/ListItemTrack'\nimport webapi from '@/webapi'\n\nconst albumData = {\n load: function (to) {\n return Promise.all([\n webapi.library_album(to.params.album_id),\n webapi.library_album_tracks(to.params.album_id)\n ])\n },\n\n set: function (vm, response) {\n vm.album = response[0].data\n vm.tracks = response[1].data.items\n }\n}\n\nexport default {\n name: 'PageAlbum',\n mixins: [ LoadDataBeforeEnterMixin(albumData) ],\n components: { ContentWithHeading, ListItemTrack },\n\n data () {\n return {\n album: {},\n tracks: []\n }\n },\n\n methods: {\n open_artist: function () {\n this.show_details_modal = false\n this.$router.push({ path: '/music/artists/' + this.album.artist_id })\n },\n\n play: function () {\n webapi.queue_clear().then(() =>\n webapi.queue_add(this.album.uri).then(() =>\n webapi.player_play()\n )\n )\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/PageAlbum.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('div',{staticClass:\"title is-4\"},[_vm._v(_vm._s(_vm.album.name))]),_vm._v(\" \"),_c('a',{staticClass:\"title is-4 has-text-link has-text-weight-normal\",on:{\"click\":_vm.open_artist}},[_vm._v(_vm._s(_vm.album.artist))])]),_vm._v(\" \"),_c('template',{slot:\"heading-right\"},[_c('a',{staticClass:\"button is-small is-dark is-rounded\",on:{\"click\":_vm.play}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-play\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Play\")])])]),_vm._v(\" \"),_c('template',{slot:\"content\"},[_c('p',{staticClass:\"heading has-text-centered-mobile\"},[_vm._v(_vm._s(_vm.album.track_count)+\" tracks\")]),_vm._v(\" \"),_vm._l((_vm.tracks),function(track,index){return _c('list-item-track',{key:track.id,attrs:{\"track\":track,\"position\":index,\"context_uri\":_vm.album.uri}})})],2)],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-31d7f772\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/PageAlbum.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-31d7f772\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PageAlbum.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageAlbum.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageAlbum.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-31d7f772\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PageAlbum.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/PageAlbum.vue\n// module id = null\n// module chunks = ","<template>\n <div>\n <content-with-heading>\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Podcasts</p>\n <p class=\"heading\">{{ albums.total }} podcasts</p>\n </template>\n <template slot=\"content\">\n <list-item-album v-for=\"album in albums.items\" :key=\"album.id\" :album=\"album\" :media_kind=\"'podcast'\"></list-item-album>\n </template>\n </content-with-heading>\n </div>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport ListItemAlbum from '@/components/ListItemAlbum'\nimport webapi from '@/webapi'\n\nconst albumsData = {\n load: function (to) {\n return webapi.library_podcasts()\n },\n\n set: function (vm, response) {\n vm.albums = response.data\n }\n}\n\nexport default {\n name: 'PagePodcasts',\n mixins: [ LoadDataBeforeEnterMixin(albumsData) ],\n components: { ContentWithHeading, ListItemAlbum },\n\n data () {\n return {\n albums: {}\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/PagePodcasts.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Podcasts\")]),_vm._v(\" \"),_c('p',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm.albums.total)+\" podcasts\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},_vm._l((_vm.albums.items),function(album){return _c('list-item-album',{key:album.id,attrs:{\"album\":album,\"media_kind\":'podcast'}})}))],2)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6b0b4ae1\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/PagePodcasts.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6b0b4ae1\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PagePodcasts.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PagePodcasts.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PagePodcasts.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6b0b4ae1\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PagePodcasts.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/PagePodcasts.vue\n// module id = null\n// module chunks = ","<template>\n <content-with-heading>\n <template slot=\"heading-left\">\n <div class=\"title is-4\">{{ album.name }}</div>\n </template>\n <template slot=\"heading-right\">\n <a class=\"button is-small is-dark is-rounded\" @click=\"play\">\n <span class=\"icon\">\n <i class=\"mdi mdi-play\"></i>\n </span>\n <span>Play</span>\n </a>\n </template>\n <template slot=\"content\">\n <p class=\"heading has-text-centered-mobile\">{{ album.track_count }} tracks</p>\n <list-item-track v-for=\"(track, index) in tracks\" :key=\"track.id\" :track=\"track\" :position=\"index\" :context_uri=\"album.uri\"></list-item-track>\n </template>\n </content-with-heading>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport ListItemTrack from '@/components/ListItemTrack'\nimport webapi from '@/webapi'\n\nconst albumData = {\n load: function (to) {\n return Promise.all([\n webapi.library_album(to.params.album_id),\n webapi.library_album_tracks(to.params.album_id)\n ])\n },\n\n set: function (vm, response) {\n vm.album = response[0].data\n vm.tracks = response[1].data.items\n }\n}\n\nexport default {\n name: 'PagePodcast',\n mixins: [ LoadDataBeforeEnterMixin(albumData) ],\n components: { ContentWithHeading, ListItemTrack },\n\n data () {\n return {\n album: {},\n tracks: []\n }\n },\n\n methods: {\n play: function () {\n webapi.queue_clear().then(() =>\n webapi.queue_add(this.album.uri).then(() =>\n webapi.player_play()\n )\n )\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/PagePodcast.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('div',{staticClass:\"title is-4\"},[_vm._v(_vm._s(_vm.album.name))])]),_vm._v(\" \"),_c('template',{slot:\"heading-right\"},[_c('a',{staticClass:\"button is-small is-dark is-rounded\",on:{\"click\":_vm.play}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-play\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Play\")])])]),_vm._v(\" \"),_c('template',{slot:\"content\"},[_c('p',{staticClass:\"heading has-text-centered-mobile\"},[_vm._v(_vm._s(_vm.album.track_count)+\" tracks\")]),_vm._v(\" \"),_vm._l((_vm.tracks),function(track,index){return _c('list-item-track',{key:track.id,attrs:{\"track\":track,\"position\":index,\"context_uri\":_vm.album.uri}})})],2)],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-db65c84c\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/PagePodcast.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-db65c84c\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PagePodcast.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PagePodcast.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PagePodcast.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-db65c84c\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PagePodcast.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/PagePodcast.vue\n// module id = null\n// module chunks = ","<template>\n <div>\n <content-with-heading>\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Audiobooks</p>\n <p class=\"heading\">{{ albums.total }} audiobooks</p>\n </template>\n <template slot=\"content\">\n <list-item-album v-for=\"album in albums.items\" :key=\"album.id\" :album=\"album\" :media_kind=\"'audiobook'\"></list-item-album>\n </template>\n </content-with-heading>\n </div>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport ListItemAlbum from '@/components/ListItemAlbum'\nimport webapi from '@/webapi'\n\nconst albumsData = {\n load: function (to) {\n return webapi.library_audiobooks()\n },\n\n set: function (vm, response) {\n vm.albums = response.data\n }\n}\n\nexport default {\n name: 'PageAudiobooks',\n mixins: [ LoadDataBeforeEnterMixin(albumsData) ],\n components: { ContentWithHeading, ListItemAlbum },\n\n data () {\n return {\n albums: {}\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/PageAudiobooks.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Audiobooks\")]),_vm._v(\" \"),_c('p',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm.albums.total)+\" audiobooks\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},_vm._l((_vm.albums.items),function(album){return _c('list-item-album',{key:album.id,attrs:{\"album\":album,\"media_kind\":'audiobook'}})}))],2)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-205b722b\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/PageAudiobooks.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-205b722b\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PageAudiobooks.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageAudiobooks.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageAudiobooks.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-205b722b\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PageAudiobooks.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/PageAudiobooks.vue\n// module id = null\n// module chunks = ","<template>\n <content-with-heading>\n <template slot=\"heading-left\">\n <div class=\"title is-4\">{{ album.name }}</div>\n <div class=\"title is-4 has-text-grey has-text-weight-normal\">{{ album.artist }}</div>\n </template>\n <template slot=\"heading-right\">\n <a class=\"button is-small is-dark is-rounded\" @click=\"play\">\n <span class=\"icon\">\n <i class=\"mdi mdi-play\"></i>\n </span>\n <span>Play</span>\n </a>\n </template>\n <template slot=\"content\">\n <p class=\"heading has-text-centered-mobile\">{{ album.track_count }} tracks</p>\n <list-item-track v-for=\"(track, index) in tracks\" :key=\"track.id\" :track=\"track\" :position=\"index\" :context_uri=\"album.uri\"></list-item-track>\n </template>\n </content-with-heading>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport ListItemTrack from '@/components/ListItemTrack'\nimport webapi from '@/webapi'\n\nconst albumData = {\n load: function (to) {\n return Promise.all([\n webapi.library_album(to.params.album_id),\n webapi.library_album_tracks(to.params.album_id)\n ])\n },\n\n set: function (vm, response) {\n vm.album = response[0].data\n vm.tracks = response[1].data.items\n }\n}\n\nexport default {\n name: 'PageAudiobook',\n mixins: [ LoadDataBeforeEnterMixin(albumData) ],\n components: { ContentWithHeading, ListItemTrack },\n\n data () {\n return {\n album: {},\n tracks: []\n }\n },\n\n methods: {\n play: function () {\n webapi.queue_clear().then(() =>\n webapi.queue_add(this.album.uri).then(() =>\n webapi.player_play()\n )\n )\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/PageAudiobook.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('div',{staticClass:\"title is-4\"},[_vm._v(_vm._s(_vm.album.name))]),_vm._v(\" \"),_c('div',{staticClass:\"title is-4 has-text-grey has-text-weight-normal\"},[_vm._v(_vm._s(_vm.album.artist))])]),_vm._v(\" \"),_c('template',{slot:\"heading-right\"},[_c('a',{staticClass:\"button is-small is-dark is-rounded\",on:{\"click\":_vm.play}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-play\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Play\")])])]),_vm._v(\" \"),_c('template',{slot:\"content\"},[_c('p',{staticClass:\"heading has-text-centered-mobile\"},[_vm._v(_vm._s(_vm.album.track_count)+\" tracks\")]),_vm._v(\" \"),_vm._l((_vm.tracks),function(track,index){return _c('list-item-track',{key:track.id,attrs:{\"track\":track,\"position\":index,\"context_uri\":_vm.album.uri}})})],2)],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-d122e984\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/PageAudiobook.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-d122e984\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PageAudiobook.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageAudiobook.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageAudiobook.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d122e984\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PageAudiobook.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/PageAudiobook.vue\n// module id = null\n// module chunks = ","<template>\n <div class=\"media\">\n <div class=\"media-content fd-has-action is-clipped\" v-on:click=\"open_playlist\">\n <h1 class=\"title is-6\">{{ playlist.name }}</h1>\n </div>\n <div class=\"media-right\">\n <a @click=\"show_details_modal = true\">\n <span class=\"icon has-text-dark\"><i class=\"mdi mdi-dots-vertical mdi-18px\"></i></span>\n </a>\n <modal-dialog :show=\"show_details_modal\" @close=\"show_details_modal = false\">\n <template slot=\"modal-content\">\n <div class=\"card\">\n <div class=\"card-content\">\n <p class=\"title is-4\">\n <a class=\"has-text-link\" @click=\"open_playlist\">{{ playlist.name }}</a>\n </p>\n <div class=\"content is-small\">\n <p>\n <span class=\"heading\">Path</span>\n <span class=\"title is-6\">{{ playlist.path }}</span>\n </p>\n </div>\n </div>\n <footer class=\"card-footer\">\n <a class=\"card-footer-item has-text-dark\" @click=\"queue_add\">\n <span class=\"icon\"><i class=\"mdi mdi-playlist-plus mdi-18px\"></i></span> <span>Add</span>\n </a>\n <a class=\"card-footer-item has-text-dark\" @click=\"play\">\n <span class=\"icon\"><i class=\"mdi mdi-play mdi-18px\"></i></span> <span>Play</span>\n </a>\n </footer>\n </div>\n </template>\n </modal-dialog>\n </div>\n </div>\n</template>\n\n<script>\nimport ModalDialog from '@/components/ModalDialog'\nimport webapi from '@/webapi'\n\nexport default {\n name: 'PartPlaylist',\n components: { ModalDialog },\n\n props: ['playlist'],\n\n data () {\n return {\n show_details_modal: false\n }\n },\n\n methods: {\n play: function () {\n this.show_details_modal = false\n webapi.queue_clear().then(() =>\n webapi.queue_add(this.playlist.uri).then(() =>\n webapi.player_play()\n )\n )\n },\n\n queue_add: function () {\n this.show_details_modal = false\n webapi.queue_add(this.playlist.uri).then(() =>\n this.$store.dispatch('add_notification', { text: 'Playlist appended to queue', type: 'info', timeout: 2000 })\n )\n },\n\n open_playlist: function () {\n this.show_details_modal = false\n this.$router.push({ path: '/playlists/' + this.playlist.id })\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/ListItemPlaylist.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"media\"},[_c('div',{staticClass:\"media-content fd-has-action is-clipped\",on:{\"click\":_vm.open_playlist}},[_c('h1',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.playlist.name))])]),_vm._v(\" \"),_c('div',{staticClass:\"media-right\"},[_c('a',{on:{\"click\":function($event){_vm.show_details_modal = true}}},[_vm._m(0)]),_vm._v(\" \"),_c('modal-dialog',{attrs:{\"show\":_vm.show_details_modal},on:{\"close\":function($event){_vm.show_details_modal = false}}},[_c('template',{slot:\"modal-content\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-content\"},[_c('p',{staticClass:\"title is-4\"},[_c('a',{staticClass:\"has-text-link\",on:{\"click\":_vm.open_playlist}},[_vm._v(_vm._s(_vm.playlist.name))])]),_vm._v(\" \"),_c('div',{staticClass:\"content is-small\"},[_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Path\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.playlist.path))])])])]),_vm._v(\" \"),_c('footer',{staticClass:\"card-footer\"},[_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.queue_add}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-playlist-plus mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Add\")])]),_vm._v(\" \"),_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.play}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-play mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Play\")])])])])])],2)],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon has-text-dark\"},[_c('i',{staticClass:\"mdi mdi-dots-vertical mdi-18px\"})])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-a9271506\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/ListItemPlaylist.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-a9271506\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ListItemPlaylist.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ListItemPlaylist.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ListItemPlaylist.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-a9271506\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ListItemPlaylist.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/ListItemPlaylist.vue\n// module id = null\n// module chunks = ","<template>\n <content-with-heading>\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Playlists</p>\n <p class=\"heading\">{{ playlists.total }} playlists</p>\n </template>\n <template slot=\"content\">\n <list-item-playlist v-for=\"playlist in playlists.items\" :key=\"playlist.id\" :playlist=\"playlist\"></list-item-playlist>\n </template>\n </content-with-heading>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport TabsMusic from '@/components/TabsMusic'\nimport ListItemPlaylist from '@/components/ListItemPlaylist'\nimport webapi from '@/webapi'\n\nconst playlistsData = {\n load: function (to) {\n return webapi.library_playlists()\n },\n\n set: function (vm, response) {\n vm.playlists = response.data\n }\n}\n\nexport default {\n name: 'PagePlaylists',\n mixins: [ LoadDataBeforeEnterMixin(playlistsData) ],\n components: { ContentWithHeading, TabsMusic, ListItemPlaylist },\n\n data () {\n return {\n playlists: {}\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/PagePlaylists.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Playlists\")]),_vm._v(\" \"),_c('p',{staticClass:\"heading\"},[_vm._v(_vm._s(_vm.playlists.total)+\" playlists\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},_vm._l((_vm.playlists.items),function(playlist){return _c('list-item-playlist',{key:playlist.id,attrs:{\"playlist\":playlist}})}))],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-24482562\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/PagePlaylists.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-24482562\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PagePlaylists.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PagePlaylists.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PagePlaylists.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-24482562\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PagePlaylists.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/PagePlaylists.vue\n// module id = null\n// module chunks = ","<template>\n <content-with-heading>\n <template slot=\"heading-left\">\n <div class=\"title is-4\">{{ playlist.name }}</div>\n </template>\n <template slot=\"heading-right\">\n <a class=\"button is-small is-dark is-rounded\" @click=\"play\">\n <span class=\"icon\">\n <i class=\"mdi mdi-play\"></i>\n </span>\n <span>Play</span>\n </a>\n </template>\n <template slot=\"content\">\n <p class=\"heading has-text-centered-mobile\">{{ tracks.length }} tracks</p>\n <list-item-track v-for=\"(track, index) in tracks\" :key=\"track.id\" :track=\"track\" :position=\"index\" :context_uri=\"playlist.uri\"></list-item-track>\n </template>\n </content-with-heading>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport ListItemTrack from '@/components/ListItemTrack'\nimport webapi from '@/webapi'\n\nconst playlistData = {\n load: function (to) {\n return Promise.all([\n webapi.library_playlist(to.params.playlist_id),\n webapi.library_playlist_tracks(to.params.playlist_id)\n ])\n },\n\n set: function (vm, response) {\n vm.playlist = response[0].data\n vm.tracks = response[1].data.items\n }\n}\n\nexport default {\n name: 'PagePlaylist',\n mixins: [ LoadDataBeforeEnterMixin(playlistData) ],\n components: { ContentWithHeading, ListItemTrack },\n\n data () {\n return {\n playlist: {},\n tracks: []\n }\n },\n\n methods: {\n play: function () {\n webapi.queue_clear().then(() =>\n webapi.queue_add(this.playlist.uri).then(() =>\n webapi.player_play()\n )\n )\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/PagePlaylist.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('div',{staticClass:\"title is-4\"},[_vm._v(_vm._s(_vm.playlist.name))])]),_vm._v(\" \"),_c('template',{slot:\"heading-right\"},[_c('a',{staticClass:\"button is-small is-dark is-rounded\",on:{\"click\":_vm.play}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-play\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Play\")])])]),_vm._v(\" \"),_c('template',{slot:\"content\"},[_c('p',{staticClass:\"heading has-text-centered-mobile\"},[_vm._v(_vm._s(_vm.tracks.length)+\" tracks\")]),_vm._v(\" \"),_vm._l((_vm.tracks),function(track,index){return _c('list-item-track',{key:track.id,attrs:{\"track\":track,\"position\":index,\"context_uri\":_vm.playlist.uri}})})],2)],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-73765a99\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/PagePlaylist.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-73765a99\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PagePlaylist.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PagePlaylist.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PagePlaylist.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-73765a99\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PagePlaylist.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/PagePlaylist.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.spotify_enabled)?_c('section',{staticClass:\"section fd-tabs-section\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"columns is-centered\"},[_c('div',{staticClass:\"column is-four-fifths\"},[_c('div',{staticClass:\"tabs is-centered is-small is-toggle is-toggle-rounded\"},[_c('ul',[_c('router-link',{attrs:{\"tag\":\"li\",\"to\":{ path: '/search/library', query: _vm.$route.query },\"active-class\":\"is-active\"}},[_c('a',[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"mdi mdi-library-books\"})]),_vm._v(\" \"),_c('span',{},[_vm._v(\"Library\")])])]),_vm._v(\" \"),_c('router-link',{attrs:{\"tag\":\"li\",\"to\":{ path: '/search/spotify', query: _vm.$route.query },\"active-class\":\"is-active\"}},[_c('a',[_c('span',{staticClass:\"icon is-small\"},[_c('i',{staticClass:\"mdi mdi-spotify\"})]),_vm._v(\" \"),_c('span',{},[_vm._v(\"Spotify\")])])])],1)])])])])]):_vm._e()}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-64d92f2a\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/TabsSearch.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-64d92f2a\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./TabsSearch.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./TabsSearch.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./TabsSearch.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-64d92f2a\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./TabsSearch.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/TabsSearch.vue\n// module id = null\n// module chunks = ","<template>\n <section class=\"section fd-tabs-section\" v-if=\"spotify_enabled\">\n <div class=\"container\">\n <div class=\"columns is-centered\">\n <div class=\"column is-four-fifths\">\n <div class=\"tabs is-centered is-small is-toggle is-toggle-rounded\">\n <ul>\n <router-link tag=\"li\" :to=\"{ path: '/search/library', query: $route.query }\" active-class=\"is-active\">\n <a>\n <span class=\"icon is-small\"><i class=\"mdi mdi-library-books\"></i></span>\n <span class=\"\">Library</span>\n </a>\n </router-link>\n <router-link tag=\"li\" :to=\"{ path: '/search/spotify', query: $route.query }\" active-class=\"is-active\">\n <a>\n <span class=\"icon is-small\"><i class=\"mdi mdi-spotify\"></i></span>\n <span class=\"\">Spotify</span>\n </a>\n </router-link>\n </ul>\n </div>\n </div>\n </div>\n </div>\n </section>\n</template>\n\n<script>\nexport default {\n name: 'TabsSearch',\n\n computed: {\n spotify_enabled () {\n return this.$store.state.spotify.webapi_token_valid\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/TabsSearch.vue","<template>\n <div>\n <!-- Search field + recent searches -->\n <section class=\"section fd-tabs-section\">\n <div class=\"container\">\n <div class=\"columns is-centered\">\n <div class=\"column is-four-fifths\">\n <form v-on:submit.prevent=\"new_search\">\n <div class=\"field\">\n <p class=\"control is-expanded has-icons-left\">\n <input class=\"input is-rounded is-shadowless\" type=\"text\" placeholder=\"Search\" v-model=\"search_query\" ref=\"search_field\">\n <span class=\"icon is-left\">\n <i class=\"mdi mdi-magnify\"></i>\n </span>\n </p>\n </div>\n </form>\n <div class=\"tags\" style=\"margin-top: 16px;\">\n <a class=\"tag\" v-for=\"recent_search in recent_searches\" :key=\"recent_search\" @click=\"open_recent_search(recent_search)\">{{ recent_search }}</a>\n </div>\n </div>\n </div>\n </div>\n </section>\n\n <tabs-search></tabs-search>\n\n <!-- Tracks -->\n <content-with-heading v-if=\"show_tracks\">\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Tracks</p>\n </template>\n <template slot=\"content\">\n <list-item-track v-for=\"track in tracks.items\" :key=\"track.id\" :track=\"track\" :position=\"0\" :context_uri=\"track.uri\"></list-item-track>\n </template>\n <template slot=\"footer\">\n <nav v-if=\"show_all_tracks_button\" class=\"level\">\n <p class=\"level-item\">\n <a class=\"button is-light is-small is-rounded\" v-on:click=\"open_search_tracks\">Show all {{ tracks.total }} tracks</a>\n </p>\n </nav>\n <p v-if=\"!tracks.total\">No results</p>\n </template>\n </content-with-heading>\n\n <!-- Artists -->\n <content-with-heading v-if=\"show_artists\">\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Artists</p>\n </template>\n <template slot=\"content\">\n <list-item-artist v-for=\"artist in artists.items\" :key=\"artist.id\" :artist=\"artist\"></list-item-artist>\n </template>\n <template slot=\"footer\">\n <nav v-if=\"show_all_artists_button\" class=\"level\">\n <p class=\"level-item\">\n <a class=\"button is-light is-small is-rounded\" v-on:click=\"open_search_artists\">Show all {{ artists.total }} artists</a>\n </p>\n </nav>\n <p v-if=\"!artists.total\">No results</p>\n </template>\n </content-with-heading>\n\n <!-- Albums -->\n <content-with-heading v-if=\"show_albums\">\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Albums</p>\n </template>\n <template slot=\"content\">\n <list-item-album v-for=\"album in albums.items\" :key=\"album.id\" :album=\"album\"></list-item-album>\n </template>\n <template slot=\"footer\">\n <nav v-if=\"show_all_albums_button\" class=\"level\">\n <p class=\"level-item\">\n <a class=\"button is-light is-small is-rounded\" v-on:click=\"open_search_albums\">Show all {{ albums.total }} albums</a>\n </p>\n </nav>\n <p v-if=\"!albums.total\">No results</p>\n </template>\n </content-with-heading>\n\n <!-- Playlists -->\n <content-with-heading v-if=\"show_playlists\">\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Playlists</p>\n </template>\n <template slot=\"content\">\n <list-item-playlist v-for=\"playlist in playlists.items\" :key=\"playlist.id\" :playlist=\"playlist\"></list-item-playlist>\n </template>\n <template slot=\"footer\">\n <nav v-if=\"show_all_playlists_button\" class=\"level\">\n <p class=\"level-item\">\n <a class=\"button is-light is-small is-rounded\" v-on:click=\"open_search_playlists\">Show all {{ playlists.total }} playlists</a>\n </p>\n </nav>\n <p v-if=\"!playlists.total\">No results</p>\n </template>\n </content-with-heading>\n </div>\n</template>\n\n<script>\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport TabsSearch from '@/components/TabsSearch'\nimport ListItemTrack from '@/components/ListItemTrack'\nimport ListItemArtist from '@/components/ListItemArtist'\nimport ListItemAlbum from '@/components/ListItemAlbum'\nimport ListItemPlaylist from '@/components/ListItemPlaylist'\nimport webapi from '@/webapi'\nimport * as types from '@/store/mutation_types'\n\nexport default {\n name: 'PageSearch',\n components: { ContentWithHeading, TabsSearch, ListItemTrack, ListItemArtist, ListItemAlbum, ListItemPlaylist },\n\n data () {\n return {\n search_query: '',\n tracks: { items: [], total: 0 },\n artists: { items: [], total: 0 },\n albums: { items: [], total: 0 },\n playlists: { items: [], total: 0 }\n }\n },\n\n computed: {\n recent_searches () {\n return this.$store.state.recent_searches\n },\n\n show_tracks () {\n return this.$route.query.type && this.$route.query.type.includes('track')\n },\n show_all_tracks_button () {\n return this.tracks.total > this.tracks.items.length\n },\n\n show_artists () {\n return this.$route.query.type && this.$route.query.type.includes('artist')\n },\n show_all_artists_button () {\n return this.artists.total > this.artists.items.length\n },\n\n show_albums () {\n return this.$route.query.type && this.$route.query.type.includes('album')\n },\n show_all_albums_button () {\n return this.albums.total > this.albums.items.length\n },\n\n show_playlists () {\n return this.$route.query.type && this.$route.query.type.includes('playlist')\n },\n show_all_playlists_button () {\n return this.playlists.total > this.playlists.items.length\n }\n },\n\n methods: {\n search: function (route) {\n if (!route.query.query || route.query.query === '') {\n this.search_query = ''\n this.$refs.search_field.focus()\n return\n }\n\n var searchParams = {\n 'type': route.query.type,\n 'query': route.query.query,\n 'media_kind': 'music'\n }\n\n if (route.query.limit) {\n searchParams.limit = route.query.limit\n searchParams.offset = route.query.offset\n }\n\n webapi.search(searchParams).then(({ data }) => {\n this.tracks = data.tracks ? data.tracks : { items: [], total: 0 }\n this.artists = data.artists ? data.artists : { items: [], total: 0 }\n this.albums = data.albums ? data.albums : { items: [], total: 0 }\n this.playlists = data.playlists ? data.playlists : { items: [], total: 0 }\n\n this.$store.commit(types.ADD_RECENT_SEARCH, searchParams.query)\n })\n },\n\n new_search: function () {\n if (!this.search_query) {\n return\n }\n\n this.$router.push({ path: '/search/library',\n query: {\n type: 'track,artist,album,playlist',\n query: this.search_query,\n limit: 3,\n offset: 0\n }\n })\n this.$refs.search_field.blur()\n },\n\n open_search_tracks: function () {\n this.$router.push({ path: '/search/library',\n query: {\n type: 'track',\n query: this.$route.query.query\n }\n })\n },\n\n open_search_artists: function () {\n this.$router.push({ path: '/search/library',\n query: {\n type: 'artist',\n query: this.$route.query.query\n }\n })\n },\n\n open_search_albums: function () {\n this.$router.push({ path: '/search/library',\n query: {\n type: 'album',\n query: this.$route.query.query\n }\n })\n },\n\n open_search_playlists: function () {\n this.$router.push({ path: '/search/library',\n query: {\n type: 'playlist',\n query: this.$route.query.query\n }\n })\n },\n\n open_recent_search: function (query) {\n this.search_query = query\n this.new_search()\n }\n },\n\n mounted: function () {\n this.search(this.$route)\n },\n\n watch: {\n '$route' (to, from) {\n this.search(to)\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/PageSearch.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('section',{staticClass:\"section fd-tabs-section\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"columns is-centered\"},[_c('div',{staticClass:\"column is-four-fifths\"},[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.new_search($event)}}},[_c('div',{staticClass:\"field\"},[_c('p',{staticClass:\"control is-expanded has-icons-left\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.search_query),expression:\"search_query\"}],ref:\"search_field\",staticClass:\"input is-rounded is-shadowless\",attrs:{\"type\":\"text\",\"placeholder\":\"Search\"},domProps:{\"value\":(_vm.search_query)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.search_query=$event.target.value}}}),_vm._v(\" \"),_vm._m(0)])])]),_vm._v(\" \"),_c('div',{staticClass:\"tags\",staticStyle:{\"margin-top\":\"16px\"}},_vm._l((_vm.recent_searches),function(recent_search){return _c('a',{key:recent_search,staticClass:\"tag\",on:{\"click\":function($event){_vm.open_recent_search(recent_search)}}},[_vm._v(_vm._s(recent_search))])}))])])])]),_vm._v(\" \"),_c('tabs-search'),_vm._v(\" \"),(_vm.show_tracks)?_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Tracks\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},_vm._l((_vm.tracks.items),function(track){return _c('list-item-track',{key:track.id,attrs:{\"track\":track,\"position\":0,\"context_uri\":track.uri}})})),_vm._v(\" \"),_c('template',{slot:\"footer\"},[(_vm.show_all_tracks_button)?_c('nav',{staticClass:\"level\"},[_c('p',{staticClass:\"level-item\"},[_c('a',{staticClass:\"button is-light is-small is-rounded\",on:{\"click\":_vm.open_search_tracks}},[_vm._v(\"Show all \"+_vm._s(_vm.tracks.total)+\" tracks\")])])]):_vm._e(),_vm._v(\" \"),(!_vm.tracks.total)?_c('p',[_vm._v(\"No results\")]):_vm._e()])],2):_vm._e(),_vm._v(\" \"),(_vm.show_artists)?_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Artists\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},_vm._l((_vm.artists.items),function(artist){return _c('list-item-artist',{key:artist.id,attrs:{\"artist\":artist}})})),_vm._v(\" \"),_c('template',{slot:\"footer\"},[(_vm.show_all_artists_button)?_c('nav',{staticClass:\"level\"},[_c('p',{staticClass:\"level-item\"},[_c('a',{staticClass:\"button is-light is-small is-rounded\",on:{\"click\":_vm.open_search_artists}},[_vm._v(\"Show all \"+_vm._s(_vm.artists.total)+\" artists\")])])]):_vm._e(),_vm._v(\" \"),(!_vm.artists.total)?_c('p',[_vm._v(\"No results\")]):_vm._e()])],2):_vm._e(),_vm._v(\" \"),(_vm.show_albums)?_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Albums\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},_vm._l((_vm.albums.items),function(album){return _c('list-item-album',{key:album.id,attrs:{\"album\":album}})})),_vm._v(\" \"),_c('template',{slot:\"footer\"},[(_vm.show_all_albums_button)?_c('nav',{staticClass:\"level\"},[_c('p',{staticClass:\"level-item\"},[_c('a',{staticClass:\"button is-light is-small is-rounded\",on:{\"click\":_vm.open_search_albums}},[_vm._v(\"Show all \"+_vm._s(_vm.albums.total)+\" albums\")])])]):_vm._e(),_vm._v(\" \"),(!_vm.albums.total)?_c('p',[_vm._v(\"No results\")]):_vm._e()])],2):_vm._e(),_vm._v(\" \"),(_vm.show_playlists)?_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Playlists\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},_vm._l((_vm.playlists.items),function(playlist){return _c('list-item-playlist',{key:playlist.id,attrs:{\"playlist\":playlist}})})),_vm._v(\" \"),_c('template',{slot:\"footer\"},[(_vm.show_all_playlists_button)?_c('nav',{staticClass:\"level\"},[_c('p',{staticClass:\"level-item\"},[_c('a',{staticClass:\"button is-light is-small is-rounded\",on:{\"click\":_vm.open_search_playlists}},[_vm._v(\"Show all \"+_vm._s(_vm.playlists.total)+\" playlists\")])])]):_vm._e(),_vm._v(\" \"),(!_vm.playlists.total)?_c('p',[_vm._v(\"No results\")]):_vm._e()])],2):_vm._e()],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon is-left\"},[_c('i',{staticClass:\"mdi mdi-magnify\"})])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-c7529f6c\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/PageSearch.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-c7529f6c\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PageSearch.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageSearch.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageSearch.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-c7529f6c\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PageSearch.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/PageSearch.vue\n// module id = null\n// module chunks = ","<template>\n <div>\n <section class=\"section\">\n <div class=\"container\">\n <div class=\"columns is-centered\">\n <div class=\"column is-four-fifths has-text-centered-mobile\">\n <p class=\"heading\"><b>forked-daapd</b> - version {{ config.version }}</p>\n <h1 class=\"title is-4\">{{ config.library_name }}</h1>\n </div>\n </div>\n </div>\n </section>\n <section class=\"section\">\n <div class=\"container\">\n <div class=\"columns is-centered\">\n <div class=\"column is-four-fifths\">\n <div class=\"content\">\n <nav class=\"level is-mobile\">\n <!-- Left side -->\n <div class=\"level-left\">\n <div class=\"level-item\">\n <h2 class=\"title is-5\">Library</h2>\n </div>\n </div>\n\n <!-- Right side -->\n <div class=\"level-right\">\n <a class=\"button is-small is-outlined is-link\" :class=\"{ 'is-loading': library.updating }\" @click=\"update\">Update</a>\n </div>\n </nav>\n\n <table class=\"table\">\n <tbody>\n <tr>\n <th>Artists</th>\n <td class=\"has-text-right\">{{ library.artists | number }}</td>\n </tr>\n <tr>\n <th>Albums</th>\n <td class=\"has-text-right\">{{ library.albums | number }}</td>\n </tr>\n <tr>\n <th>Tracks</th>\n <td class=\"has-text-right\">{{ library.songs | number }}</td>\n </tr>\n <tr>\n <th>Total playtime</th>\n <td class=\"has-text-right\">{{ library.db_playtime * 1000 | duration('y [years], d [days], h [hours], m [minutes]') }}</td>\n </tr>\n <tr>\n <th>Library updated</th>\n <td class=\"has-text-right\">{{ library.updated_at | timeFromNow }} <span class=\"has-text-grey\">({{ library.updated_at | time('MMM Do, h:mm') }})</span></td>\n </tr>\n <tr>\n <th>Uptime</th>\n <td class=\"has-text-right\">{{ library.started_at | timeFromNow(true) }} <span class=\"has-text-grey\">({{ library.started_at | time('MMM Do, h:mm') }})</span></td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n </section>\n <section class=\"section\">\n <div class=\"container\">\n <div class=\"columns is-centered\">\n <div class=\"column is-four-fifths\">\n <div class=\"content has-text-centered-mobile\">\n <p class=\"is-size-7\">Compiled with support for {{ config.buildoptions | join }}.</p>\n <p class=\"is-size-7\"><a href=\"https://github.com/chme/forked-daapd-web\">Web interface</a> v{{ version }} built with <a href=\"http://bulma.io\">Bulma</a>, <a href=\"https://materialdesignicons.com/\">Material Design Icons</a>, <a href=\"https://vuejs.org/\">Vue.js</a>, <a href=\"https://github.com/mzabriskie/axios\">axios</a> and <a href=\"https://github.com/chme/forked-daapd-web/network/dependencies\">more</a>.</p>\n </div>\n </div>\n </div>\n </div>\n </section>\n </div>\n</template>\n\n<script>\nimport webapi from '@/webapi'\n\nexport default {\n name: 'PageAbout',\n\n data () {\n return {\n 'version': process.env.V2\n }\n },\n\n computed: {\n config () {\n return this.$store.state.config\n },\n library () {\n return this.$store.state.library\n }\n },\n\n methods: {\n update: function () {\n webapi.library_update()\n }\n },\n\n filters: {\n join: function (array) {\n return array.join(', ')\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/PageAbout.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('section',{staticClass:\"section\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"columns is-centered\"},[_c('div',{staticClass:\"column is-four-fifths has-text-centered-mobile\"},[_c('p',{staticClass:\"heading\"},[_c('b',[_vm._v(\"forked-daapd\")]),_vm._v(\" - version \"+_vm._s(_vm.config.version))]),_vm._v(\" \"),_c('h1',{staticClass:\"title is-4\"},[_vm._v(_vm._s(_vm.config.library_name))])])])])]),_vm._v(\" \"),_c('section',{staticClass:\"section\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"columns is-centered\"},[_c('div',{staticClass:\"column is-four-fifths\"},[_c('div',{staticClass:\"content\"},[_c('nav',{staticClass:\"level is-mobile\"},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"level-right\"},[_c('a',{staticClass:\"button is-small is-outlined is-link\",class:{ 'is-loading': _vm.library.updating },on:{\"click\":_vm.update}},[_vm._v(\"Update\")])])]),_vm._v(\" \"),_c('table',{staticClass:\"table\"},[_c('tbody',[_c('tr',[_c('th',[_vm._v(\"Artists\")]),_vm._v(\" \"),_c('td',{staticClass:\"has-text-right\"},[_vm._v(_vm._s(_vm._f(\"number\")(_vm.library.artists)))])]),_vm._v(\" \"),_c('tr',[_c('th',[_vm._v(\"Albums\")]),_vm._v(\" \"),_c('td',{staticClass:\"has-text-right\"},[_vm._v(_vm._s(_vm._f(\"number\")(_vm.library.albums)))])]),_vm._v(\" \"),_c('tr',[_c('th',[_vm._v(\"Tracks\")]),_vm._v(\" \"),_c('td',{staticClass:\"has-text-right\"},[_vm._v(_vm._s(_vm._f(\"number\")(_vm.library.songs)))])]),_vm._v(\" \"),_c('tr',[_c('th',[_vm._v(\"Total playtime\")]),_vm._v(\" \"),_c('td',{staticClass:\"has-text-right\"},[_vm._v(_vm._s(_vm._f(\"duration\")(_vm.library.db_playtime * 1000,'y [years], d [days], h [hours], m [minutes]')))])]),_vm._v(\" \"),_c('tr',[_c('th',[_vm._v(\"Library updated\")]),_vm._v(\" \"),_c('td',{staticClass:\"has-text-right\"},[_vm._v(_vm._s(_vm._f(\"timeFromNow\")(_vm.library.updated_at))+\" \"),_c('span',{staticClass:\"has-text-grey\"},[_vm._v(\"(\"+_vm._s(_vm._f(\"time\")(_vm.library.updated_at,'MMM Do, h:mm'))+\")\")])])]),_vm._v(\" \"),_c('tr',[_c('th',[_vm._v(\"Uptime\")]),_vm._v(\" \"),_c('td',{staticClass:\"has-text-right\"},[_vm._v(_vm._s(_vm._f(\"timeFromNow\")(_vm.library.started_at,true))+\" \"),_c('span',{staticClass:\"has-text-grey\"},[_vm._v(\"(\"+_vm._s(_vm._f(\"time\")(_vm.library.started_at,'MMM Do, h:mm'))+\")\")])])])])])])])])])]),_vm._v(\" \"),_c('section',{staticClass:\"section\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"columns is-centered\"},[_c('div',{staticClass:\"column is-four-fifths\"},[_c('div',{staticClass:\"content has-text-centered-mobile\"},[_c('p',{staticClass:\"is-size-7\"},[_vm._v(\"Compiled with support for \"+_vm._s(_vm._f(\"join\")(_vm.config.buildoptions))+\".\")]),_vm._v(\" \"),_c('p',{staticClass:\"is-size-7\"},[_c('a',{attrs:{\"href\":\"https://github.com/chme/forked-daapd-web\"}},[_vm._v(\"Web interface\")]),_vm._v(\" v\"+_vm._s(_vm.version)+\" built with \"),_c('a',{attrs:{\"href\":\"http://bulma.io\"}},[_vm._v(\"Bulma\")]),_vm._v(\", \"),_c('a',{attrs:{\"href\":\"https://materialdesignicons.com/\"}},[_vm._v(\"Material Design Icons\")]),_vm._v(\", \"),_c('a',{attrs:{\"href\":\"https://vuejs.org/\"}},[_vm._v(\"Vue.js\")]),_vm._v(\", \"),_c('a',{attrs:{\"href\":\"https://github.com/mzabriskie/axios\"}},[_vm._v(\"axios\")]),_vm._v(\" and \"),_c('a',{attrs:{\"href\":\"https://github.com/chme/forked-daapd-web/network/dependencies\"}},[_vm._v(\"more\")]),_vm._v(\".\")])])])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"level-left\"},[_c('div',{staticClass:\"level-item\"},[_c('h2',{staticClass:\"title is-5\"},[_vm._v(\"Library\")])])])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-222abd22\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/PageAbout.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-222abd22\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PageAbout.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageAbout.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./PageAbout.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-222abd22\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./PageAbout.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/PageAbout.vue\n// module id = null\n// module chunks = ","<template>\n <div class=\"media\">\n <div class=\"media-content fd-has-action is-clipped\" v-on:click=\"open_album\">\n <h1 class=\"title is-6\">{{ album.name }}</h1>\n <h2 class=\"subtitle is-7 has-text-grey\"><b>{{ album.artists[0].name }}</b></h2>\n </div>\n <div class=\"media-right\">\n <a @click=\"show_details\">\n <span class=\"icon has-text-dark\"><i class=\"mdi mdi-dots-vertical mdi-18px\"></i></span>\n </a>\n <transition name=\"fade\">\n <div class=\"modal is-active\" v-if=\"show_details_modal\">\n <div class=\"modal-background\" @click=\"hide_details\"></div>\n <div class=\"modal-content\">\n <div class=\"card\">\n <div class=\"card-content\">\n <p class=\"title is-4\">\n <a class=\"has-text-link\" @click=\"open_album\">{{ album.name }}</a>\n </p>\n <div class=\"content is-small\">\n <p>\n <span class=\"heading\">Album artist</span>\n <a class=\"title is-6 has-text-link\" @click=\"open_artist\">{{ album.artists[0].name }}</a>\n </p>\n <p>\n <span class=\"heading\">Release date</span>\n <span class=\"title is-6\">{{ album.release_date }}</span>\n </p>\n <p>\n <span class=\"heading\">Type</span>\n <span class=\"title is-6\">{{ album.album_type }}</span>\n </p>\n </div>\n </div>\n <footer class=\"card-footer\">\n <a class=\"card-footer-item has-text-dark\" @click=\"queue_add\">\n <span class=\"icon\"><i class=\"mdi mdi-playlist-plus mdi-18px\"></i></span> <span>Add</span>\n </a>\n <a class=\"card-footer-item has-text-dark\" @click=\"play\">\n <span class=\"icon\"><i class=\"mdi mdi-play mdi-18px\"></i></span> <span>Play</span>\n </a>\n </footer>\n </div>\n </div>\n <button class=\"modal-close is-large\" aria-label=\"close\" @click=\"hide_details\"></button>\n </div>\n </transition>\n </div>\n </div>\n</template>\n\n<script>\nimport webapi from '@/webapi'\n\nexport default {\n name: 'SpotifyListItemAlbum',\n\n props: ['album'],\n\n data () {\n return {\n show_details_modal: false\n }\n },\n\n methods: {\n play: function () {\n webapi.queue_clear().then(() =>\n webapi.queue_add(this.album.uri).then(() =>\n webapi.player_play()\n )\n )\n this.show_details_modal = false\n },\n\n queue_add: function () {\n webapi.queue_add(this.album.uri).then(\n // this.$store.commit(types.ADD_NOTIFICATION, { text: 'Album tracks appended to queue', timeout: 0 })\n this.$store.dispatch('add_notification', { text: 'Album tracks appended to queue', type: 'info', timeout: 3000 })\n )\n this.show_details_modal = false\n },\n\n show_details: function () {\n this.show_details_modal = true\n },\n\n hide_details: function () {\n this.show_details_modal = false\n },\n\n open_album: function () {\n this.$router.push({ path: '/music/spotify/albums/' + this.album.id })\n },\n\n open_artist: function () {\n this.show_details_modal = false\n this.$router.push({ path: '/music/spotify/artists/' + this.album.artists[0].id })\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/SpotifyListItemAlbum.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"media\"},[_c('div',{staticClass:\"media-content fd-has-action is-clipped\",on:{\"click\":_vm.open_album}},[_c('h1',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.album.name))]),_vm._v(\" \"),_c('h2',{staticClass:\"subtitle is-7 has-text-grey\"},[_c('b',[_vm._v(_vm._s(_vm.album.artists[0].name))])])]),_vm._v(\" \"),_c('div',{staticClass:\"media-right\"},[_c('a',{on:{\"click\":_vm.show_details}},[_vm._m(0)]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.show_details_modal)?_c('div',{staticClass:\"modal is-active\"},[_c('div',{staticClass:\"modal-background\",on:{\"click\":_vm.hide_details}}),_vm._v(\" \"),_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-content\"},[_c('p',{staticClass:\"title is-4\"},[_c('a',{staticClass:\"has-text-link\",on:{\"click\":_vm.open_album}},[_vm._v(_vm._s(_vm.album.name))])]),_vm._v(\" \"),_c('div',{staticClass:\"content is-small\"},[_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Album artist\")]),_vm._v(\" \"),_c('a',{staticClass:\"title is-6 has-text-link\",on:{\"click\":_vm.open_artist}},[_vm._v(_vm._s(_vm.album.artists[0].name))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Release date\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.album.release_date))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Type\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.album.album_type))])])])]),_vm._v(\" \"),_c('footer',{staticClass:\"card-footer\"},[_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.queue_add}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-playlist-plus mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Add\")])]),_vm._v(\" \"),_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.play}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-play mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Play\")])])])])]),_vm._v(\" \"),_c('button',{staticClass:\"modal-close is-large\",attrs:{\"aria-label\":\"close\"},on:{\"click\":_vm.hide_details}})]):_vm._e()])],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon has-text-dark\"},[_c('i',{staticClass:\"mdi mdi-dots-vertical mdi-18px\"})])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-7e1e9382\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/SpotifyListItemAlbum.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7e1e9382\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./SpotifyListItemAlbum.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyListItemAlbum.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyListItemAlbum.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7e1e9382\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./SpotifyListItemAlbum.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/SpotifyListItemAlbum.vue\n// module id = null\n// module chunks = ","<template>\n <div class=\"media\">\n <div class=\"media-content fd-has-action is-clipped\" v-on:click=\"open_playlist\">\n <h1 class=\"title is-6\">{{ playlist.name }}</h1>\n <h2 class=\"subtitle is-7\">{{ playlist.owner.display_name }}</h2>\n </div>\n <div class=\"media-right\">\n <a @click=\"show_details\">\n <span class=\"icon has-text-dark\"><i class=\"mdi mdi-dots-vertical mdi-18px\"></i></span>\n </a>\n <transition name=\"fade\">\n <div class=\"modal is-active\" v-if=\"show_details_modal\">\n <div class=\"modal-background\" @click=\"hide_details\"></div>\n <div class=\"modal-content\">\n <div class=\"card\">\n <div class=\"card-content\">\n <p class=\"title is-4\">\n <a class=\"has-text-link\" @click=\"open_playlist\">{{ playlist.name }}</a>\n </p>\n <div class=\"content is-small\">\n <p>\n <span class=\"heading\">Owner</span>\n <span class=\"title is-6\">{{ playlist.owner.display_name }}</span>\n </p>\n <p>\n <span class=\"heading\">Tracks</span>\n <span class=\"title is-6\">{{ playlist.tracks.total }}</span>\n </p>\n <p>\n <span class=\"heading\">Path</span>\n <span class=\"title is-6\">{{ playlist.uri }}</span>\n </p>\n </div>\n </div>\n <footer class=\"card-footer\">\n <a class=\"card-footer-item has-text-dark\" @click=\"queue_add\">\n <span class=\"icon\"><i class=\"mdi mdi-playlist-plus mdi-18px\"></i></span> <span>Add</span>\n </a>\n <a class=\"card-footer-item has-text-dark\" @click=\"play\">\n <span class=\"icon\"><i class=\"mdi mdi-play mdi-18px\"></i></span> <span>Play</span>\n </a>\n </footer>\n </div>\n </div>\n <button class=\"modal-close is-large\" aria-label=\"close\" @click=\"hide_details\"></button>\n </div>\n </transition>\n </div>\n </div>\n</template>\n\n<script>\nimport webapi from '@/webapi'\n\nexport default {\n name: 'SpotifyListItemPlaylist',\n\n props: ['playlist'],\n\n data () {\n return {\n show_details_modal: false\n }\n },\n\n methods: {\n play: function () {\n webapi.queue_clear().then(() =>\n webapi.queue_add(this.playlist.uri).then(() =>\n webapi.player_play()\n )\n )\n this.show_details_modal = false\n },\n\n queue_add: function () {\n webapi.queue_add(this.playlist.uri).then(() =>\n this.$store.dispatch('add_notification', { text: 'Playlist appended to queue', type: 'info', timeout: 2000 })\n )\n this.show_details_modal = false\n },\n\n show_details: function () {\n this.show_details_modal = true\n },\n\n hide_details: function () {\n this.show_details_modal = false\n },\n\n open_playlist: function () {\n this.show_details_modal = false\n this.$router.push({ path: '/music/spotify/playlists/' + this.playlist.owner.id + '/' + this.playlist.id })\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/SpotifyListItemPlaylist.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"media\"},[_c('div',{staticClass:\"media-content fd-has-action is-clipped\",on:{\"click\":_vm.open_playlist}},[_c('h1',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.playlist.name))]),_vm._v(\" \"),_c('h2',{staticClass:\"subtitle is-7\"},[_vm._v(_vm._s(_vm.playlist.owner.display_name))])]),_vm._v(\" \"),_c('div',{staticClass:\"media-right\"},[_c('a',{on:{\"click\":_vm.show_details}},[_vm._m(0)]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.show_details_modal)?_c('div',{staticClass:\"modal is-active\"},[_c('div',{staticClass:\"modal-background\",on:{\"click\":_vm.hide_details}}),_vm._v(\" \"),_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-content\"},[_c('p',{staticClass:\"title is-4\"},[_c('a',{staticClass:\"has-text-link\",on:{\"click\":_vm.open_playlist}},[_vm._v(_vm._s(_vm.playlist.name))])]),_vm._v(\" \"),_c('div',{staticClass:\"content is-small\"},[_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Owner\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.playlist.owner.display_name))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Tracks\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.playlist.tracks.total))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Path\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.playlist.uri))])])])]),_vm._v(\" \"),_c('footer',{staticClass:\"card-footer\"},[_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.queue_add}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-playlist-plus mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Add\")])]),_vm._v(\" \"),_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.play}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-play mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Play\")])])])])]),_vm._v(\" \"),_c('button',{staticClass:\"modal-close is-large\",attrs:{\"aria-label\":\"close\"},on:{\"click\":_vm.hide_details}})]):_vm._e()])],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon has-text-dark\"},[_c('i',{staticClass:\"mdi mdi-dots-vertical mdi-18px\"})])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-509e5237\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/SpotifyListItemPlaylist.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-509e5237\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./SpotifyListItemPlaylist.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyListItemPlaylist.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyListItemPlaylist.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-509e5237\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./SpotifyListItemPlaylist.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/SpotifyListItemPlaylist.vue\n// module id = null\n// module chunks = ","<template>\n <div>\n <tabs-music></tabs-music>\n\n <!-- New Releases -->\n <content-with-heading>\n <template slot=\"heading-left\">\n <p class=\"title is-4\">New Releases</p>\n </template>\n <template slot=\"content\">\n <spotify-list-item-album v-for=\"album in new_releases\" :key=\"album.id\" :album=\"album\"></spotify-list-item-album>\n </template>\n <template slot=\"footer\">\n <nav class=\"level\">\n <p class=\"level-item\">\n <router-link to=\"/music/spotify/new-releases\" class=\"button is-light is-small is-rounded\">\n Show more\n </router-link>\n </p>\n </nav>\n </template>\n </content-with-heading>\n\n <!-- Featured Playlists -->\n <content-with-heading>\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Featured Playlists</p>\n </template>\n <template slot=\"content\">\n <spotify-list-item-playlist v-for=\"playlist in featured_playlists\" :key=\"playlist.id\" :playlist=\"playlist\"></spotify-list-item-playlist>\n </template>\n <template slot=\"footer\">\n <nav class=\"level\">\n <p class=\"level-item\">\n <router-link to=\"/music/spotify/featured-playlists\" class=\"button is-light is-small is-rounded\">\n Show more\n </router-link>\n </p>\n </nav>\n </template>\n </content-with-heading>\n </div>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport TabsMusic from '@/components/TabsMusic'\nimport SpotifyListItemAlbum from '@/components/SpotifyListItemAlbum'\nimport SpotifyListItemPlaylist from '@/components/SpotifyListItemPlaylist'\nimport store from '@/store'\nimport * as types from '@/store/mutation_types'\nimport SpotifyWebApi from 'spotify-web-api-js'\n\nconst browseData = {\n load: function (to) {\n if (store.state.spotify_new_releases.length > 0 && store.state.spotify_featured_playlists.length > 0) {\n return Promise.resolve()\n }\n\n const spotifyApi = new SpotifyWebApi()\n spotifyApi.setAccessToken(store.state.spotify.webapi_token)\n return Promise.all([\n spotifyApi.getNewReleases({ country: store.state.spotify.webapi_country, limit: 50 }),\n spotifyApi.getFeaturedPlaylists({ country: store.state.spotify.webapi_country, limit: 50 })\n ])\n },\n\n set: function (vm, response) {\n if (response) {\n store.commit(types.SPOTIFY_NEW_RELEASES, response[0].albums.items)\n store.commit(types.SPOTIFY_FEATURED_PLAYLISTS, response[1].playlists.items)\n }\n }\n}\n\nexport default {\n name: 'SpotifyPageBrowse',\n mixins: [ LoadDataBeforeEnterMixin(browseData) ],\n components: { ContentWithHeading, TabsMusic, SpotifyListItemAlbum, SpotifyListItemPlaylist },\n\n computed: {\n new_releases () {\n return this.$store.state.spotify_new_releases.slice(0, 3)\n },\n\n featured_playlists () {\n return this.$store.state.spotify_featured_playlists.slice(0, 3)\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/SpotifyPageBrowse.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('tabs-music'),_vm._v(\" \"),_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"New Releases\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},_vm._l((_vm.new_releases),function(album){return _c('spotify-list-item-album',{key:album.id,attrs:{\"album\":album}})})),_vm._v(\" \"),_c('template',{slot:\"footer\"},[_c('nav',{staticClass:\"level\"},[_c('p',{staticClass:\"level-item\"},[_c('router-link',{staticClass:\"button is-light is-small is-rounded\",attrs:{\"to\":\"/music/spotify/new-releases\"}},[_vm._v(\"\\n Show more\\n \")])],1)])])],2),_vm._v(\" \"),_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Featured Playlists\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},_vm._l((_vm.featured_playlists),function(playlist){return _c('spotify-list-item-playlist',{key:playlist.id,attrs:{\"playlist\":playlist}})})),_vm._v(\" \"),_c('template',{slot:\"footer\"},[_c('nav',{staticClass:\"level\"},[_c('p',{staticClass:\"level-item\"},[_c('router-link',{staticClass:\"button is-light is-small is-rounded\",attrs:{\"to\":\"/music/spotify/featured-playlists\"}},[_vm._v(\"\\n Show more\\n \")])],1)])])],2)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-15bec1d8\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/SpotifyPageBrowse.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-15bec1d8\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./SpotifyPageBrowse.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyPageBrowse.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyPageBrowse.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-15bec1d8\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./SpotifyPageBrowse.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/SpotifyPageBrowse.vue\n// module id = null\n// module chunks = ","<template>\n <div>\n <tabs-music></tabs-music>\n\n <content-with-heading>\n <template slot=\"heading-left\">\n <p class=\"title is-4\">New Releases</p>\n </template>\n <template slot=\"content\">\n <spotify-list-item-album v-for=\"album in new_releases\" :key=\"album.id\" :album=\"album\"></spotify-list-item-album>\n </template>\n </content-with-heading>\n </div>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport TabsMusic from '@/components/TabsMusic'\nimport SpotifyListItemAlbum from '@/components/SpotifyListItemAlbum'\nimport store from '@/store'\nimport * as types from '@/store/mutation_types'\nimport SpotifyWebApi from 'spotify-web-api-js'\n\nconst browseData = {\n load: function (to) {\n if (store.state.spotify_new_releases.length > 0) {\n return Promise.resolve()\n }\n\n const spotifyApi = new SpotifyWebApi()\n spotifyApi.setAccessToken(store.state.spotify.webapi_token)\n return spotifyApi.getNewReleases({ country: store.state.spotify.webapi_country, limit: 50 })\n },\n\n set: function (vm, response) {\n if (response) {\n store.commit(types.SPOTIFY_NEW_RELEASES, response.albums.items)\n }\n }\n}\n\nexport default {\n name: 'SpotifyPageBrowseNewReleases',\n mixins: [ LoadDataBeforeEnterMixin(browseData) ],\n components: { ContentWithHeading, TabsMusic, SpotifyListItemAlbum },\n\n computed: {\n new_releases () {\n return this.$store.state.spotify_new_releases\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/SpotifyPageBrowseNewReleases.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('tabs-music'),_vm._v(\" \"),_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"New Releases\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},_vm._l((_vm.new_releases),function(album){return _c('spotify-list-item-album',{key:album.id,attrs:{\"album\":album}})}))],2)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-60266332\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/SpotifyPageBrowseNewReleases.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-60266332\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./SpotifyPageBrowseNewReleases.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyPageBrowseNewReleases.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyPageBrowseNewReleases.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-60266332\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./SpotifyPageBrowseNewReleases.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/SpotifyPageBrowseNewReleases.vue\n// module id = null\n// module chunks = ","<template>\n <div>\n <tabs-music></tabs-music>\n\n <content-with-heading>\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Featured Playlists</p>\n </template>\n <template slot=\"content\">\n <spotify-list-item-playlist v-for=\"playlist in featured_playlists\" :key=\"playlist.id\" :playlist=\"playlist\"></spotify-list-item-playlist>\n </template>\n </content-with-heading>\n </div>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport TabsMusic from '@/components/TabsMusic'\nimport SpotifyListItemPlaylist from '@/components/SpotifyListItemPlaylist'\nimport store from '@/store'\nimport * as types from '@/store/mutation_types'\nimport SpotifyWebApi from 'spotify-web-api-js'\n\nconst browseData = {\n load: function (to) {\n if (store.state.spotify_featured_playlists.length > 0) {\n return Promise.resolve()\n }\n\n const spotifyApi = new SpotifyWebApi()\n spotifyApi.setAccessToken(store.state.spotify.webapi_token)\n spotifyApi.getFeaturedPlaylists({ country: store.state.spotify.webapi_country, limit: 50 })\n },\n\n set: function (vm, response) {\n if (response) {\n store.commit(types.SPOTIFY_FEATURED_PLAYLISTS, response.playlists.items)\n }\n }\n}\n\nexport default {\n name: 'SpotifyPageBrowseFeaturedPlaylists',\n mixins: [ LoadDataBeforeEnterMixin(browseData) ],\n components: { ContentWithHeading, TabsMusic, SpotifyListItemPlaylist },\n\n computed: {\n featured_playlists () {\n return this.$store.state.spotify_featured_playlists\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/SpotifyPageBrowseFeaturedPlaylists.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('tabs-music'),_vm._v(\" \"),_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Featured Playlists\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},_vm._l((_vm.featured_playlists),function(playlist){return _c('spotify-list-item-playlist',{key:playlist.id,attrs:{\"playlist\":playlist}})}))],2)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-32beae8f\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/SpotifyPageBrowseFeaturedPlaylists.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-32beae8f\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./SpotifyPageBrowseFeaturedPlaylists.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyPageBrowseFeaturedPlaylists.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyPageBrowseFeaturedPlaylists.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-32beae8f\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./SpotifyPageBrowseFeaturedPlaylists.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/SpotifyPageBrowseFeaturedPlaylists.vue\n// module id = null\n// module chunks = ","<template>\n <content-with-heading>\n <template slot=\"heading-left\">\n <p class=\"title is-4\">{{ artist.name }}</p>\n </template>\n <template slot=\"content\">\n <p class=\"heading has-text-centered-mobile\">{{ total }} albums</p>\n <spotify-list-item-album v-for=\"album in albums\" :key=\"album.id\" :album=\"album\"></spotify-list-item-album>\n <infinite-loading v-if=\"offset < total\" @infinite=\"load_next\"><span slot=\"no-more\">.</span></infinite-loading>\n </template>\n </content-with-heading>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport SpotifyListItemAlbum from '@/components/SpotifyListItemAlbum'\nimport store from '@/store'\nimport SpotifyWebApi from 'spotify-web-api-js'\nimport InfiniteLoading from 'vue-infinite-loading'\n\nconst artistData = {\n load: function (to) {\n const spotifyApi = new SpotifyWebApi()\n spotifyApi.setAccessToken(store.state.spotify.webapi_token)\n return Promise.all([\n spotifyApi.getArtist(to.params.artist_id),\n spotifyApi.getArtistAlbums(to.params.artist_id, { limit: 50, offset: 0, include_groups: 'album,single' })\n ])\n },\n\n set: function (vm, response) {\n vm.artist = response[0]\n\n vm.albums = []\n vm.total = 0\n vm.offset = 0\n vm.append_albums(response[1])\n }\n}\n\nexport default {\n name: 'SpotifyPageArtist',\n mixins: [ LoadDataBeforeEnterMixin(artistData) ],\n components: { ContentWithHeading, SpotifyListItemAlbum, InfiniteLoading },\n\n data () {\n return {\n artist: {},\n albums: [],\n total: 0,\n offset: 0\n }\n },\n\n methods: {\n load_next: function ($state) {\n const spotifyApi = new SpotifyWebApi()\n spotifyApi.setAccessToken(this.$store.state.spotify.webapi_token)\n spotifyApi.getArtistAlbums(this.artist.id, { limit: 50, offset: this.offset, include_groups: 'album,single' }).then(data => {\n this.append_albums(data, $state)\n })\n },\n\n append_albums: function (data, $state) {\n this.albums = this.albums.concat(data.items)\n this.total = data.total\n this.offset += data.limit\n\n if ($state) {\n $state.loaded()\n if (this.offset >= this.total) {\n $state.complete()\n }\n }\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/SpotifyPageArtist.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(_vm._s(_vm.artist.name))])]),_vm._v(\" \"),_c('template',{slot:\"content\"},[_c('p',{staticClass:\"heading has-text-centered-mobile\"},[_vm._v(_vm._s(_vm.total)+\" albums\")]),_vm._v(\" \"),_vm._l((_vm.albums),function(album){return _c('spotify-list-item-album',{key:album.id,attrs:{\"album\":album}})}),_vm._v(\" \"),(_vm.offset < _vm.total)?_c('infinite-loading',{on:{\"infinite\":_vm.load_next}},[_c('span',{attrs:{\"slot\":\"no-more\"},slot:\"no-more\"},[_vm._v(\".\")])]):_vm._e()],2)],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-2663600b\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/SpotifyPageArtist.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2663600b\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./SpotifyPageArtist.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyPageArtist.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyPageArtist.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2663600b\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./SpotifyPageArtist.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/SpotifyPageArtist.vue\n// module id = null\n// module chunks = ","<template>\n <div class=\"media\">\n <div class=\"media-content fd-has-action is-clipped\" v-on:click=\"play\">\n <h1 class=\"title is-6\">{{ track.name }}</h1>\n <h2 class=\"subtitle is-7 has-text-grey\"><b>{{ track.artists[0].name }}</b></h2>\n </div>\n <div class=\"media-right\">\n <a @click=\"show_details\">\n <span class=\"icon has-text-dark\"><i class=\"mdi mdi-dots-vertical mdi-18px\"></i></span>\n </a>\n <transition name=\"fade\">\n <div class=\"modal is-active\" v-if=\"show_details_modal\">\n <div class=\"modal-background\" @click=\"hide_details\"></div>\n <div class=\"modal-content\">\n <div class=\"card\">\n <div class=\"card-content\">\n <p class=\"title is-4\">\n {{ track.name }}\n </p>\n <p class=\"subtitle\">\n {{ track.artists[0].name }}\n </p>\n <div class=\"content is-small\">\n <p>\n <span class=\"heading\">Album</span>\n <a class=\"title is-6 has-text-link\" @click=\"open_album\">{{ album.name }}</a>\n </p>\n <p>\n <span class=\"heading\">Album artist</span>\n <a class=\"title is-6 has-text-link\" @click=\"open_artist\">{{ album.artists[0].name }}</a>\n </p>\n <p>\n <span class=\"heading\">Release date</span>\n <span class=\"title is-6\">{{ album.release_date }}</span>\n </p>\n <p>\n <span class=\"heading\">Track / Disc</span>\n <span class=\"title is-6\">{{ track.track_number }} / {{ track.disc_number }}</span>\n </p>\n <p>\n <span class=\"heading\">Length</span>\n <span class=\"title is-6\">{{ track.duration_ms | duration }}</span>\n </p>\n <p>\n <span class=\"heading\">Path</span>\n <span class=\"title is-6\">{{ track.uri }}</span>\n </p>\n </div>\n </div>\n <footer class=\"card-footer\">\n <a class=\"card-footer-item has-text-dark\" @click=\"queue_add\">\n <span class=\"icon\"><i class=\"mdi mdi-playlist-plus mdi-18px\"></i></span> <span>Add</span>\n </a>\n <a class=\"card-footer-item has-text-dark\" @click=\"play\">\n <span class=\"icon\"><i class=\"mdi mdi-play mdi-18px\"></i></span> <span>Play</span>\n </a>\n </footer>\n </div>\n </div>\n <button class=\"modal-close is-large\" aria-label=\"close\" @click=\"hide_details\"></button>\n </div>\n </transition>\n </div>\n </div>\n</template>\n\n<script>\nimport webapi from '@/webapi'\n\nexport default {\n name: 'SpotifyListItemTrack',\n\n props: ['track', 'position', 'album', 'context_uri'],\n\n data () {\n return {\n show_details_modal: false\n }\n },\n\n methods: {\n play: function () {\n webapi.queue_clear().then(() =>\n webapi.queue_add(this.context_uri).then(() =>\n webapi.player_playpos(this.position)\n )\n )\n this.show_details_modal = false\n },\n\n queue_add: function () {\n webapi.queue_add(this.track.uri).then(() =>\n this.$store.dispatch('add_notification', { text: 'Track appended to queue', type: 'info', timeout: 2000 })\n )\n this.show_details_modal = false\n },\n\n show_details: function () {\n this.show_details_modal = true\n },\n\n hide_details: function () {\n this.show_details_modal = false\n },\n\n open_album: function () {\n this.show_details_modal = false\n this.$router.push({ path: '/music/spotify/albums/' + this.album.id })\n },\n\n open_artist: function () {\n this.show_details_modal = false\n this.$router.push({ path: '/music/spotify/artists/' + this.album.artists[0].id })\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/SpotifyListItemTrack.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"media\"},[_c('div',{staticClass:\"media-content fd-has-action is-clipped\",on:{\"click\":_vm.play}},[_c('h1',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.track.name))]),_vm._v(\" \"),_c('h2',{staticClass:\"subtitle is-7 has-text-grey\"},[_c('b',[_vm._v(_vm._s(_vm.track.artists[0].name))])])]),_vm._v(\" \"),_c('div',{staticClass:\"media-right\"},[_c('a',{on:{\"click\":_vm.show_details}},[_vm._m(0)]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.show_details_modal)?_c('div',{staticClass:\"modal is-active\"},[_c('div',{staticClass:\"modal-background\",on:{\"click\":_vm.hide_details}}),_vm._v(\" \"),_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-content\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"\\n \"+_vm._s(_vm.track.name)+\"\\n \")]),_vm._v(\" \"),_c('p',{staticClass:\"subtitle\"},[_vm._v(\"\\n \"+_vm._s(_vm.track.artists[0].name)+\"\\n \")]),_vm._v(\" \"),_c('div',{staticClass:\"content is-small\"},[_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Album\")]),_vm._v(\" \"),_c('a',{staticClass:\"title is-6 has-text-link\",on:{\"click\":_vm.open_album}},[_vm._v(_vm._s(_vm.album.name))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Album artist\")]),_vm._v(\" \"),_c('a',{staticClass:\"title is-6 has-text-link\",on:{\"click\":_vm.open_artist}},[_vm._v(_vm._s(_vm.album.artists[0].name))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Release date\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.album.release_date))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Track / Disc\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.track.track_number)+\" / \"+_vm._s(_vm.track.disc_number))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Length\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm._f(\"duration\")(_vm.track.duration_ms)))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Path\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.track.uri))])])])]),_vm._v(\" \"),_c('footer',{staticClass:\"card-footer\"},[_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.queue_add}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-playlist-plus mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Add\")])]),_vm._v(\" \"),_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.play}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-play mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Play\")])])])])]),_vm._v(\" \"),_c('button',{staticClass:\"modal-close is-large\",attrs:{\"aria-label\":\"close\"},on:{\"click\":_vm.hide_details}})]):_vm._e()])],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon has-text-dark\"},[_c('i',{staticClass:\"mdi mdi-dots-vertical mdi-18px\"})])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-e7346ae6\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/SpotifyListItemTrack.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-e7346ae6\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./SpotifyListItemTrack.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyListItemTrack.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyListItemTrack.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-e7346ae6\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./SpotifyListItemTrack.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/SpotifyListItemTrack.vue\n// module id = null\n// module chunks = ","<template>\n <content-with-heading>\n <template slot=\"heading-left\">\n <div class=\"title is-4\">{{ album.name }}</div>\n <a class=\"title is-4 has-text-link has-text-weight-normal\" @click=\"open_artist\">{{ album.artists[0].name }}</a>\n </template>\n <template slot=\"heading-right\">\n <a class=\"button is-small is-dark is-rounded\" @click=\"play\">\n <span class=\"icon\">\n <i class=\"mdi mdi-play\"></i>\n </span>\n <span>Play</span>\n </a>\n </template>\n <template slot=\"content\">\n <p class=\"heading has-text-centered-mobile\">{{ album.tracks.total }} tracks</p>\n <spotify-list-item-track v-for=\"(track, index) in album.tracks.items\" :key=\"track.id\" :track=\"track\" :position=\"index\" :album=\"album\" :context_uri=\"album.uri\"></spotify-list-item-track>\n </template>\n </content-with-heading>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport SpotifyListItemTrack from '@/components/SpotifyListItemTrack'\nimport store from '@/store'\nimport webapi from '@/webapi'\nimport SpotifyWebApi from 'spotify-web-api-js'\n\nconst albumData = {\n load: function (to) {\n const spotifyApi = new SpotifyWebApi()\n spotifyApi.setAccessToken(store.state.spotify.webapi_token)\n return spotifyApi.getAlbum(to.params.album_id)\n },\n\n set: function (vm, response) {\n vm.album = response\n }\n}\n\nexport default {\n name: 'PageAlbum',\n mixins: [ LoadDataBeforeEnterMixin(albumData) ],\n components: { ContentWithHeading, SpotifyListItemTrack },\n\n data () {\n return {\n album: {}\n }\n },\n\n methods: {\n open_artist: function () {\n this.$router.push({ path: '/music/spotify/artists/' + this.album.artists[0].id })\n },\n\n play: function () {\n webapi.queue_clear().then(() =>\n webapi.queue_add(this.album.uri).then(() =>\n webapi.player_play()\n )\n )\n this.show_details_modal = false\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/SpotifyPageAlbum.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('div',{staticClass:\"title is-4\"},[_vm._v(_vm._s(_vm.album.name))]),_vm._v(\" \"),_c('a',{staticClass:\"title is-4 has-text-link has-text-weight-normal\",on:{\"click\":_vm.open_artist}},[_vm._v(_vm._s(_vm.album.artists[0].name))])]),_vm._v(\" \"),_c('template',{slot:\"heading-right\"},[_c('a',{staticClass:\"button is-small is-dark is-rounded\",on:{\"click\":_vm.play}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-play\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Play\")])])]),_vm._v(\" \"),_c('template',{slot:\"content\"},[_c('p',{staticClass:\"heading has-text-centered-mobile\"},[_vm._v(_vm._s(_vm.album.tracks.total)+\" tracks\")]),_vm._v(\" \"),_vm._l((_vm.album.tracks.items),function(track,index){return _c('spotify-list-item-track',{key:track.id,attrs:{\"track\":track,\"position\":index,\"album\":_vm.album,\"context_uri\":_vm.album.uri}})})],2)],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-352bee93\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/SpotifyPageAlbum.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-352bee93\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./SpotifyPageAlbum.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyPageAlbum.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyPageAlbum.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-352bee93\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./SpotifyPageAlbum.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/SpotifyPageAlbum.vue\n// module id = null\n// module chunks = ","<template>\n <content-with-heading>\n <template slot=\"heading-left\">\n <div class=\"title is-4\">{{ playlist.name }}</div>\n </template>\n <template slot=\"heading-right\">\n <a class=\"button is-small is-dark is-rounded\" @click=\"play\">\n <span class=\"icon\">\n <i class=\"mdi mdi-play\"></i>\n </span>\n <span>Play</span>\n </a>\n </template>\n <template slot=\"content\">\n <p class=\"heading has-text-centered-mobile\">{{ playlist.tracks.total }} tracks</p>\n <spotify-list-item-track v-for=\"(item, index) in tracks\" :key=\"item.track.id\" :track=\"item.track\" :album=\"item.track.album\" :position=\"index\" :context_uri=\"playlist.uri\"></spotify-list-item-track>\n <infinite-loading v-if=\"offset < total\" @infinite=\"load_next\"><span slot=\"no-more\">.</span></infinite-loading>\n </template>\n </content-with-heading>\n</template>\n\n<script>\nimport { LoadDataBeforeEnterMixin } from './mixin'\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport SpotifyListItemTrack from '@/components/SpotifyListItemTrack'\nimport store from '@/store'\nimport webapi from '@/webapi'\nimport SpotifyWebApi from 'spotify-web-api-js'\nimport InfiniteLoading from 'vue-infinite-loading'\n\nconst playlistData = {\n load: function (to) {\n const spotifyApi = new SpotifyWebApi()\n spotifyApi.setAccessToken(store.state.spotify.webapi_token)\n return Promise.all([\n spotifyApi.getPlaylist(to.params.user_id, to.params.playlist_id),\n spotifyApi.getPlaylistTracks(to.params.user_id, to.params.playlist_id, { limit: 50, offset: 0 })\n ])\n },\n\n set: function (vm, response) {\n vm.playlist = response[0]\n vm.tracks = []\n vm.total = 0\n vm.offset = 0\n vm.append_tracks(response[1])\n }\n}\n\nexport default {\n name: 'SpotifyPagePlaylist',\n mixins: [ LoadDataBeforeEnterMixin(playlistData) ],\n components: { ContentWithHeading, SpotifyListItemTrack, InfiniteLoading },\n\n data () {\n return {\n playlist: {},\n tracks: [],\n total: 0,\n offset: 0\n }\n },\n\n methods: {\n load_next: function ($state) {\n const spotifyApi = new SpotifyWebApi()\n spotifyApi.setAccessToken(this.$store.state.spotify.webapi_token)\n spotifyApi.getPlaylistTracks(this.playlist.owner.id, this.playlist.id, { limit: 50, offset: this.offset }).then(data => {\n this.append_tracks(data, $state)\n })\n },\n\n append_tracks: function (data, $state) {\n this.tracks = this.tracks.concat(data.items)\n this.total = data.total\n this.offset += data.limit\n\n if ($state) {\n $state.loaded()\n if (this.offset >= this.total) {\n $state.complete()\n }\n }\n },\n\n play: function () {\n webapi.queue_clear().then(() =>\n webapi.queue_add(this.playlist.uri).then(() =>\n webapi.player_play()\n )\n )\n this.show_details_modal = false\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/SpotifyPagePlaylist.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('div',{staticClass:\"title is-4\"},[_vm._v(_vm._s(_vm.playlist.name))])]),_vm._v(\" \"),_c('template',{slot:\"heading-right\"},[_c('a',{staticClass:\"button is-small is-dark is-rounded\",on:{\"click\":_vm.play}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-play\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Play\")])])]),_vm._v(\" \"),_c('template',{slot:\"content\"},[_c('p',{staticClass:\"heading has-text-centered-mobile\"},[_vm._v(_vm._s(_vm.playlist.tracks.total)+\" tracks\")]),_vm._v(\" \"),_vm._l((_vm.tracks),function(item,index){return _c('spotify-list-item-track',{key:item.track.id,attrs:{\"track\":item.track,\"album\":item.track.album,\"position\":index,\"context_uri\":_vm.playlist.uri}})}),_vm._v(\" \"),(_vm.offset < _vm.total)?_c('infinite-loading',{on:{\"infinite\":_vm.load_next}},[_c('span',{attrs:{\"slot\":\"no-more\"},slot:\"no-more\"},[_vm._v(\".\")])]):_vm._e()],2)],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-e1309a56\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/SpotifyPagePlaylist.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-e1309a56\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./SpotifyPagePlaylist.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyPagePlaylist.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyPagePlaylist.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-e1309a56\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./SpotifyPagePlaylist.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/SpotifyPagePlaylist.vue\n// module id = null\n// module chunks = ","<template>\n <div class=\"media\">\n <div class=\"media-content fd-has-action is-clipped\" v-on:click=\"open_artist\">\n <h1 class=\"title is-6\">{{ artist.name }}</h1>\n </div>\n <div class=\"media-right\">\n <a @click=\"show_details\">\n <span class=\"icon has-text-dark\"><i class=\"mdi mdi-dots-vertical mdi-18px\"></i></span>\n </a>\n <transition name=\"fade\">\n <div class=\"modal is-active\" v-if=\"show_details_modal\">\n <div class=\"modal-background\" @click=\"hide_details\"></div>\n <div class=\"modal-content\">\n <div class=\"card\">\n <div class=\"card-content\">\n <p class=\"title is-4\">\n <a class=\"has-text-link\" @click=\"open_artist\">{{ artist.name }}</a>\n </p>\n <div class=\"content is-small\">\n <p>\n <span class=\"heading\">Popularity / Followers</span>\n <span class=\"title is-6\">{{ artist.popularity }} / {{ artist.followers.total }}</span>\n </p>\n <p>\n <span class=\"heading\">Genres</span>\n <span class=\"title is-6\">{{ artist.genres.join(', ') }}</span>\n </p>\n </div>\n </div>\n <footer class=\"card-footer\">\n <a class=\"card-footer-item has-text-dark\" @click=\"queue_add\">\n <span class=\"icon\"><i class=\"mdi mdi-playlist-plus mdi-18px\"></i></span> <span>Add</span>\n </a>\n <a class=\"card-footer-item has-text-dark\" @click=\"play\">\n <span class=\"icon\"><i class=\"mdi mdi-play mdi-18px\"></i></span> <span>Play</span>\n </a>\n </footer>\n </div>\n </div>\n <button class=\"modal-close is-large\" aria-label=\"close\" @click=\"hide_details\"></button>\n </div>\n </transition>\n </div>\n </div>\n</template>\n\n<script>\nimport webapi from '@/webapi'\n\nexport default {\n name: 'SpotifyListItemArtist',\n\n props: ['artist'],\n\n data () {\n return {\n show_details_modal: false\n }\n },\n\n methods: {\n play: function () {\n webapi.queue_clear().then(() =>\n webapi.queue_add(this.artist.uri).then(() =>\n webapi.player_play()\n )\n )\n this.show_details_modal = false\n },\n\n queue_add: function () {\n webapi.queue_add(this.artist.uri).then(() =>\n this.$store.dispatch('add_notification', { text: 'Artist tracks appended to queue', type: 'info', timeout: 2000 })\n )\n this.show_details_modal = false\n },\n\n show_details: function () {\n this.show_details_modal = true\n },\n\n hide_details: function () {\n this.show_details_modal = false\n },\n\n open_artist: function () {\n this.show_details_modal = false\n this.$router.push({ path: '/music/spotify/artists/' + this.artist.id })\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/SpotifyListItemArtist.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"media\"},[_c('div',{staticClass:\"media-content fd-has-action is-clipped\",on:{\"click\":_vm.open_artist}},[_c('h1',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.artist.name))])]),_vm._v(\" \"),_c('div',{staticClass:\"media-right\"},[_c('a',{on:{\"click\":_vm.show_details}},[_vm._m(0)]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[(_vm.show_details_modal)?_c('div',{staticClass:\"modal is-active\"},[_c('div',{staticClass:\"modal-background\",on:{\"click\":_vm.hide_details}}),_vm._v(\" \"),_c('div',{staticClass:\"modal-content\"},[_c('div',{staticClass:\"card\"},[_c('div',{staticClass:\"card-content\"},[_c('p',{staticClass:\"title is-4\"},[_c('a',{staticClass:\"has-text-link\",on:{\"click\":_vm.open_artist}},[_vm._v(_vm._s(_vm.artist.name))])]),_vm._v(\" \"),_c('div',{staticClass:\"content is-small\"},[_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Popularity / Followers\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.artist.popularity)+\" / \"+_vm._s(_vm.artist.followers.total))])]),_vm._v(\" \"),_c('p',[_c('span',{staticClass:\"heading\"},[_vm._v(\"Genres\")]),_vm._v(\" \"),_c('span',{staticClass:\"title is-6\"},[_vm._v(_vm._s(_vm.artist.genres.join(', ')))])])])]),_vm._v(\" \"),_c('footer',{staticClass:\"card-footer\"},[_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.queue_add}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-playlist-plus mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Add\")])]),_vm._v(\" \"),_c('a',{staticClass:\"card-footer-item has-text-dark\",on:{\"click\":_vm.play}},[_c('span',{staticClass:\"icon\"},[_c('i',{staticClass:\"mdi mdi-play mdi-18px\"})]),_vm._v(\" \"),_c('span',[_vm._v(\"Play\")])])])])]),_vm._v(\" \"),_c('button',{staticClass:\"modal-close is-large\",attrs:{\"aria-label\":\"close\"},on:{\"click\":_vm.hide_details}})]):_vm._e()])],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon has-text-dark\"},[_c('i',{staticClass:\"mdi mdi-dots-vertical mdi-18px\"})])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-9e78b812\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/SpotifyListItemArtist.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-9e78b812\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./SpotifyListItemArtist.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyListItemArtist.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyListItemArtist.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-9e78b812\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./SpotifyListItemArtist.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/SpotifyListItemArtist.vue\n// module id = null\n// module chunks = ","<template>\n <div>\n <!-- Search field + recent searches -->\n <section class=\"section fd-tabs-section\">\n <div class=\"container\">\n <div class=\"columns is-centered\">\n <div class=\"column is-four-fifths\">\n <form v-on:submit.prevent=\"new_search\">\n <div class=\"field\">\n <p class=\"control is-expanded has-icons-left\">\n <input class=\"input is-rounded is-shadowless\" type=\"text\" placeholder=\"Search\" v-model=\"search_query\" ref=\"search_field\">\n <span class=\"icon is-left\">\n <i class=\"mdi mdi-magnify\"></i>\n </span>\n </p>\n </div>\n </form>\n <div class=\"tags\" style=\"margin-top: 16px;\">\n <a class=\"tag\" v-for=\"recent_search in recent_searches\" :key=\"recent_search\" @click=\"open_recent_search(recent_search)\">{{ recent_search }}</a>\n </div>\n </div>\n </div>\n </div>\n </section>\n\n <tabs-search></tabs-search>\n\n <!-- Tracks -->\n <content-with-heading v-if=\"show_tracks\">\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Tracks</p>\n </template>\n <template slot=\"content\">\n <spotify-list-item-track v-for=\"track in tracks.items\" :key=\"track.id\" :track=\"track\" :album=\"track.album\" :position=\"0\" :context_uri=\"track.uri\"></spotify-list-item-track>\n <infinite-loading v-if=\"query.type === 'track'\" @infinite=\"search_tracks_next\"><span slot=\"no-more\">.</span></infinite-loading>\n </template>\n <template slot=\"footer\">\n <nav v-if=\"show_all_tracks_button\" class=\"level\">\n <p class=\"level-item\">\n <a class=\"button is-light is-small is-rounded\" v-on:click=\"open_search_tracks\">Show all {{ tracks.total }} tracks</a>\n </p>\n </nav>\n <p v-if=\"!tracks.total\">No results</p>\n </template>\n </content-with-heading>\n\n <!-- Artists -->\n <content-with-heading v-if=\"show_artists\">\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Artists</p>\n </template>\n <template slot=\"content\">\n <spotify-list-item-artist v-for=\"artist in artists.items\" :key=\"artist.id\" :artist=\"artist\"></spotify-list-item-artist>\n <infinite-loading v-if=\"query.type === 'artist'\" @infinite=\"search_artists_next\"><span slot=\"no-more\">.</span></infinite-loading>\n </template>\n <template slot=\"footer\">\n <nav v-if=\"show_all_artists_button\" class=\"level\">\n <p class=\"level-item\">\n <a class=\"button is-light is-small is-rounded\" v-on:click=\"open_search_artists\">Show all {{ artists.total }} artists</a>\n </p>\n </nav>\n <p v-if=\"!artists.total\">No results</p>\n </template>\n </content-with-heading>\n\n <!-- Albums -->\n <content-with-heading v-if=\"show_albums\">\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Albums</p>\n </template>\n <template slot=\"content\">\n <spotify-list-item-album v-for=\"album in albums.items\" :key=\"album.id\" :album=\"album\"></spotify-list-item-album>\n <infinite-loading v-if=\"query.type === 'album'\" @infinite=\"search_albums_next\"><span slot=\"no-more\">.</span></infinite-loading>\n </template>\n <template slot=\"footer\">\n <nav v-if=\"show_all_albums_button\" class=\"level\">\n <p class=\"level-item\">\n <a class=\"button is-light is-small is-rounded\" v-on:click=\"open_search_albums\">Show all {{ albums.total }} albums</a>\n </p>\n </nav>\n <p v-if=\"!albums.total\">No results</p>\n </template>\n </content-with-heading>\n\n <!-- Playlists -->\n <content-with-heading v-if=\"show_playlists\">\n <template slot=\"heading-left\">\n <p class=\"title is-4\">Playlists</p>\n </template>\n <template slot=\"content\">\n <spotify-list-item-playlist v-for=\"playlist in playlists.items\" :key=\"playlist.id\" :playlist=\"playlist\"></spotify-list-item-playlist>\n <infinite-loading v-if=\"query.type === 'playlist'\" @infinite=\"search_playlists_next\"><span slot=\"no-more\">.</span></infinite-loading>\n </template>\n <template slot=\"footer\">\n <nav v-if=\"show_all_playlists_button\" class=\"level\">\n <p class=\"level-item\">\n <a class=\"button is-light is-small is-rounded\" v-on:click=\"open_search_playlists\">Show all {{ playlists.total }} playlists</a>\n </p>\n </nav>\n <p v-if=\"!playlists.total\">No results</p>\n </template>\n </content-with-heading>\n </div>\n</template>\n\n<script>\nimport ContentWithHeading from '@/templates/ContentWithHeading'\nimport TabsSearch from '@/components/TabsSearch'\nimport SpotifyListItemTrack from '@/components/SpotifyListItemTrack'\nimport SpotifyListItemArtist from '@/components/SpotifyListItemArtist'\nimport SpotifyListItemAlbum from '@/components/SpotifyListItemAlbum'\nimport SpotifyListItemPlaylist from '@/components/SpotifyListItemPlaylist'\nimport SpotifyWebApi from 'spotify-web-api-js'\nimport webapi from '@/webapi'\nimport * as types from '@/store/mutation_types'\nimport InfiniteLoading from 'vue-infinite-loading'\n\nexport default {\n name: 'SpotifyPageSearch',\n components: { ContentWithHeading, TabsSearch, SpotifyListItemTrack, SpotifyListItemArtist, SpotifyListItemAlbum, SpotifyListItemPlaylist, InfiniteLoading },\n\n data () {\n return {\n search_query: '',\n tracks: { items: [], total: 0 },\n artists: { items: [], total: 0 },\n albums: { items: [], total: 0 },\n playlists: { items: [], total: 0 },\n\n query: {},\n search_param: {}\n }\n },\n\n computed: {\n recent_searches () {\n return this.$store.state.recent_searches\n },\n\n show_tracks () {\n return this.$route.query.type && this.$route.query.type.includes('track')\n },\n show_all_tracks_button () {\n return this.tracks.total > this.tracks.items.length\n },\n\n show_artists () {\n return this.$route.query.type && this.$route.query.type.includes('artist')\n },\n show_all_artists_button () {\n return this.artists.total > this.artists.items.length\n },\n\n show_albums () {\n return this.$route.query.type && this.$route.query.type.includes('album')\n },\n show_all_albums_button () {\n return this.albums.total > this.albums.items.length\n },\n\n show_playlists () {\n return this.$route.query.type && this.$route.query.type.includes('playlist')\n },\n show_all_playlists_button () {\n return this.playlists.total > this.playlists.items.length\n }\n },\n\n methods: {\n reset: function () {\n this.tracks = { items: [], total: 0 }\n this.artists = { items: [], total: 0 }\n this.albums = { items: [], total: 0 }\n this.playlists = { items: [], total: 0 }\n },\n\n search: function () {\n this.reset()\n\n // If no search query present reset and focus search field\n if (!this.query.query || this.query.query === '') {\n this.search_query = ''\n this.$refs.search_field.focus()\n return\n }\n\n this.search_param.limit = this.query.limit ? this.query.limit : 50\n this.search_param.offset = this.query.offset ? this.query.offset : 0\n\n this.$store.commit(types.ADD_RECENT_SEARCH, this.query.query)\n\n if (this.query.type.includes(',')) {\n this.search_all()\n }\n },\n\n spotify_search: function () {\n return webapi.spotify().then(({ data }) => {\n this.search_param.market = data.webapi_country\n\n var spotifyApi = new SpotifyWebApi()\n spotifyApi.setAccessToken(data.webapi_token)\n\n return spotifyApi.search(this.query.query, this.query.type.split(','), this.search_param)\n })\n },\n\n search_all: function () {\n this.spotify_search().then(data => {\n this.tracks = data.tracks ? data.tracks : { items: [], total: 0 }\n this.artists = data.artists ? data.artists : { items: [], total: 0 }\n this.albums = data.albums ? data.albums : { items: [], total: 0 }\n this.playlists = data.playlists ? data.playlists : { items: [], total: 0 }\n })\n },\n\n search_tracks_next: function ($state) {\n this.spotify_search().then(data => {\n this.tracks.items = this.tracks.items.concat(data.tracks.items)\n this.tracks.total = data.tracks.total\n this.search_param.offset += data.tracks.limit\n\n $state.loaded()\n if (this.search_param.offset >= this.tracks.total) {\n $state.complete()\n }\n })\n },\n\n search_artists_next: function ($state) {\n this.spotify_search().then(data => {\n this.artists.items = this.artists.items.concat(data.artists.items)\n this.artists.total = data.artists.total\n this.search_param.offset += data.artists.limit\n\n $state.loaded()\n if (this.search_param.offset >= this.artists.total) {\n $state.complete()\n }\n })\n },\n\n search_albums_next: function ($state) {\n this.spotify_search().then(data => {\n this.albums.items = this.albums.items.concat(data.albums.items)\n this.albums.total = data.albums.total\n this.search_param.offset += data.albums.limit\n\n $state.loaded()\n if (this.search_param.offset >= this.albums.total) {\n $state.complete()\n }\n })\n },\n\n search_playlists_next: function ($state) {\n this.spotify_search().then(data => {\n this.playlists.items = this.playlists.items.concat(data.playlists.items)\n this.playlists.total = data.playlists.total\n this.search_param.offset += data.playlists.limit\n\n $state.loaded()\n if (this.search_param.offset >= this.playlists.total) {\n $state.complete()\n }\n })\n },\n\n new_search: function () {\n if (!this.search_query) {\n return\n }\n\n this.$router.push({ path: '/search/spotify',\n query: {\n type: 'track,artist,album,playlist',\n query: this.search_query,\n limit: 3,\n offset: 0\n }\n })\n this.$refs.search_field.blur()\n },\n\n open_search_tracks: function () {\n this.$router.push({ path: '/search/spotify',\n query: {\n type: 'track',\n query: this.$route.query.query\n }\n })\n },\n\n open_search_artists: function () {\n this.$router.push({ path: '/search/spotify',\n query: {\n type: 'artist',\n query: this.$route.query.query\n }\n })\n },\n\n open_search_albums: function () {\n this.$router.push({ path: '/search/spotify',\n query: {\n type: 'album',\n query: this.$route.query.query\n }\n })\n },\n\n open_search_playlists: function () {\n this.$router.push({ path: '/search/spotify',\n query: {\n type: 'playlist',\n query: this.$route.query.query\n }\n })\n },\n\n open_recent_search: function (query) {\n this.search_query = query\n this.new_search()\n }\n },\n\n mounted: function () {\n this.query = this.$route.query\n this.search()\n },\n\n watch: {\n '$route' (to, from) {\n this.query = to.query\n this.search()\n }\n }\n}\n</script>\n\n<style>\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/pages/SpotifyPageSearch.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('section',{staticClass:\"section fd-tabs-section\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"columns is-centered\"},[_c('div',{staticClass:\"column is-four-fifths\"},[_c('form',{on:{\"submit\":function($event){$event.preventDefault();return _vm.new_search($event)}}},[_c('div',{staticClass:\"field\"},[_c('p',{staticClass:\"control is-expanded has-icons-left\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.search_query),expression:\"search_query\"}],ref:\"search_field\",staticClass:\"input is-rounded is-shadowless\",attrs:{\"type\":\"text\",\"placeholder\":\"Search\"},domProps:{\"value\":(_vm.search_query)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.search_query=$event.target.value}}}),_vm._v(\" \"),_vm._m(0)])])]),_vm._v(\" \"),_c('div',{staticClass:\"tags\",staticStyle:{\"margin-top\":\"16px\"}},_vm._l((_vm.recent_searches),function(recent_search){return _c('a',{key:recent_search,staticClass:\"tag\",on:{\"click\":function($event){_vm.open_recent_search(recent_search)}}},[_vm._v(_vm._s(recent_search))])}))])])])]),_vm._v(\" \"),_c('tabs-search'),_vm._v(\" \"),(_vm.show_tracks)?_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Tracks\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},[_vm._l((_vm.tracks.items),function(track){return _c('spotify-list-item-track',{key:track.id,attrs:{\"track\":track,\"album\":track.album,\"position\":0,\"context_uri\":track.uri}})}),_vm._v(\" \"),(_vm.query.type === 'track')?_c('infinite-loading',{on:{\"infinite\":_vm.search_tracks_next}},[_c('span',{attrs:{\"slot\":\"no-more\"},slot:\"no-more\"},[_vm._v(\".\")])]):_vm._e()],2),_vm._v(\" \"),_c('template',{slot:\"footer\"},[(_vm.show_all_tracks_button)?_c('nav',{staticClass:\"level\"},[_c('p',{staticClass:\"level-item\"},[_c('a',{staticClass:\"button is-light is-small is-rounded\",on:{\"click\":_vm.open_search_tracks}},[_vm._v(\"Show all \"+_vm._s(_vm.tracks.total)+\" tracks\")])])]):_vm._e(),_vm._v(\" \"),(!_vm.tracks.total)?_c('p',[_vm._v(\"No results\")]):_vm._e()])],2):_vm._e(),_vm._v(\" \"),(_vm.show_artists)?_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Artists\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},[_vm._l((_vm.artists.items),function(artist){return _c('spotify-list-item-artist',{key:artist.id,attrs:{\"artist\":artist}})}),_vm._v(\" \"),(_vm.query.type === 'artist')?_c('infinite-loading',{on:{\"infinite\":_vm.search_artists_next}},[_c('span',{attrs:{\"slot\":\"no-more\"},slot:\"no-more\"},[_vm._v(\".\")])]):_vm._e()],2),_vm._v(\" \"),_c('template',{slot:\"footer\"},[(_vm.show_all_artists_button)?_c('nav',{staticClass:\"level\"},[_c('p',{staticClass:\"level-item\"},[_c('a',{staticClass:\"button is-light is-small is-rounded\",on:{\"click\":_vm.open_search_artists}},[_vm._v(\"Show all \"+_vm._s(_vm.artists.total)+\" artists\")])])]):_vm._e(),_vm._v(\" \"),(!_vm.artists.total)?_c('p',[_vm._v(\"No results\")]):_vm._e()])],2):_vm._e(),_vm._v(\" \"),(_vm.show_albums)?_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Albums\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},[_vm._l((_vm.albums.items),function(album){return _c('spotify-list-item-album',{key:album.id,attrs:{\"album\":album}})}),_vm._v(\" \"),(_vm.query.type === 'album')?_c('infinite-loading',{on:{\"infinite\":_vm.search_albums_next}},[_c('span',{attrs:{\"slot\":\"no-more\"},slot:\"no-more\"},[_vm._v(\".\")])]):_vm._e()],2),_vm._v(\" \"),_c('template',{slot:\"footer\"},[(_vm.show_all_albums_button)?_c('nav',{staticClass:\"level\"},[_c('p',{staticClass:\"level-item\"},[_c('a',{staticClass:\"button is-light is-small is-rounded\",on:{\"click\":_vm.open_search_albums}},[_vm._v(\"Show all \"+_vm._s(_vm.albums.total)+\" albums\")])])]):_vm._e(),_vm._v(\" \"),(!_vm.albums.total)?_c('p',[_vm._v(\"No results\")]):_vm._e()])],2):_vm._e(),_vm._v(\" \"),(_vm.show_playlists)?_c('content-with-heading',[_c('template',{slot:\"heading-left\"},[_c('p',{staticClass:\"title is-4\"},[_vm._v(\"Playlists\")])]),_vm._v(\" \"),_c('template',{slot:\"content\"},[_vm._l((_vm.playlists.items),function(playlist){return _c('spotify-list-item-playlist',{key:playlist.id,attrs:{\"playlist\":playlist}})}),_vm._v(\" \"),(_vm.query.type === 'playlist')?_c('infinite-loading',{on:{\"infinite\":_vm.search_playlists_next}},[_c('span',{attrs:{\"slot\":\"no-more\"},slot:\"no-more\"},[_vm._v(\".\")])]):_vm._e()],2),_vm._v(\" \"),_c('template',{slot:\"footer\"},[(_vm.show_all_playlists_button)?_c('nav',{staticClass:\"level\"},[_c('p',{staticClass:\"level-item\"},[_c('a',{staticClass:\"button is-light is-small is-rounded\",on:{\"click\":_vm.open_search_playlists}},[_vm._v(\"Show all \"+_vm._s(_vm.playlists.total)+\" playlists\")])])]):_vm._e(),_vm._v(\" \"),(!_vm.playlists.total)?_c('p',[_vm._v(\"No results\")]):_vm._e()])],2):_vm._e()],1)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"icon is-left\"},[_c('i',{staticClass:\"mdi mdi-magnify\"})])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-783d5222\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/pages/SpotifyPageSearch.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-783d5222\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./SpotifyPageSearch.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyPageSearch.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./SpotifyPageSearch.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-783d5222\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./SpotifyPageSearch.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/pages/SpotifyPageSearch.vue\n// module id = null\n// module chunks = ","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport store from '@/store'\nimport * as types from '@/store/mutation_types'\nimport PageQueue from '@/pages/PageQueue'\nimport PageNowPlaying from '@/pages/PageNowPlaying'\nimport PageBrowse from '@/pages/PageBrowse'\nimport PageBrowseRecentlyAdded from '@/pages/PageBrowseRecentlyAdded'\nimport PageBrowseRecentlyPlayed from '@/pages/PageBrowseRecentlyPlayed'\nimport PageArtists from '@/pages/PageArtists'\nimport PageArtist from '@/pages/PageArtist'\nimport PageAlbums from '@/pages/PageAlbums'\nimport PageAlbum from '@/pages/PageAlbum'\nimport PagePodcasts from '@/pages/PagePodcasts'\nimport PagePodcast from '@/pages/PagePodcast'\nimport PageAudiobooks from '@/pages/PageAudiobooks'\nimport PageAudiobook from '@/pages/PageAudiobook'\nimport PagePlaylists from '@/pages/PagePlaylists'\nimport PagePlaylist from '@/pages/PagePlaylist'\nimport PageSearch from '@/pages/PageSearch'\nimport PageAbout from '@/pages/PageAbout'\nimport SpotifyPageBrowse from '@/pages/SpotifyPageBrowse'\nimport SpotifyPageBrowseNewReleases from '@/pages/SpotifyPageBrowseNewReleases'\nimport SpotifyPageBrowseFeaturedPlaylists from '@/pages/SpotifyPageBrowseFeaturedPlaylists'\nimport SpotifyPageArtist from '@/pages/SpotifyPageArtist'\nimport SpotifyPageAlbum from '@/pages/SpotifyPageAlbum'\nimport SpotifyPagePlaylist from '@/pages/SpotifyPagePlaylist'\nimport SpotifyPageSearch from '@/pages/SpotifyPageSearch'\n\nVue.use(VueRouter)\n\nexport const router = new VueRouter({\n routes: [\n {\n path: '/',\n name: 'PageQueue',\n component: PageQueue\n },\n {\n path: '/about',\n name: 'About',\n component: PageAbout\n },\n {\n path: '/now-playing',\n name: 'Now playing',\n component: PageNowPlaying\n },\n {\n path: '/music',\n redirect: '/music/browse'\n },\n {\n path: '/music/browse',\n name: 'Browse',\n component: PageBrowse,\n meta: { show_progress: true }\n },\n {\n path: '/music/browse/recently_added',\n name: 'Browse Recently Added',\n component: PageBrowseRecentlyAdded,\n meta: { show_progress: true }\n },\n {\n path: '/music/browse/recently_played',\n name: 'Browse Recently Played',\n component: PageBrowseRecentlyPlayed,\n meta: { show_progress: true }\n },\n {\n path: '/music/artists',\n name: 'Artists',\n component: PageArtists,\n meta: { show_progress: true }\n },\n {\n path: '/music/artists/:artist_id',\n name: 'Artist',\n component: PageArtist,\n meta: { show_progress: true }\n },\n {\n path: '/music/albums',\n name: 'Albums',\n component: PageAlbums,\n meta: { show_progress: true }\n },\n {\n path: '/music/albums/:album_id',\n name: 'Album',\n component: PageAlbum,\n meta: { show_progress: true }\n },\n {\n path: '/podcasts',\n name: 'Podcasts',\n component: PagePodcasts,\n meta: { show_progress: true }\n },\n {\n path: '/podcasts/:album_id',\n name: 'Podcast',\n component: PagePodcast,\n meta: { show_progress: true }\n },\n {\n path: '/audiobooks',\n name: 'Audiobooks',\n component: PageAudiobooks,\n meta: { show_progress: true }\n },\n {\n path: '/audiobooks/:album_id',\n name: 'Audiobook',\n component: PageAudiobook,\n meta: { show_progress: true }\n },\n {\n path: '/playlists',\n name: 'Playlists',\n component: PagePlaylists,\n meta: { show_progress: true }\n },\n {\n path: '/playlists/:playlist_id',\n name: 'Playlist',\n component: PagePlaylist,\n meta: { show_progress: true }\n },\n {\n path: '/search',\n redirect: '/search/library'\n },\n {\n path: '/search/library',\n name: 'Search Library',\n component: PageSearch\n },\n {\n path: '/music/spotify',\n name: 'Spotify',\n component: SpotifyPageBrowse,\n meta: { show_progress: true }\n },\n {\n path: '/music/spotify/new-releases',\n name: 'Spotify Browse New Releases',\n component: SpotifyPageBrowseNewReleases,\n meta: { show_progress: true }\n },\n {\n path: '/music/spotify/featured-playlists',\n name: 'Spotify Browse Featured Playlists',\n component: SpotifyPageBrowseFeaturedPlaylists,\n meta: { show_progress: true }\n },\n {\n path: '/music/spotify/artists/:artist_id',\n name: 'Spotify Artist',\n component: SpotifyPageArtist,\n meta: { show_progress: true }\n },\n {\n path: '/music/spotify/albums/:album_id',\n name: 'Spotify Album',\n component: SpotifyPageAlbum,\n meta: { show_progress: true }\n },\n {\n path: '/music/spotify/playlists/:user_id/:playlist_id',\n name: 'Spotify Playlist',\n component: SpotifyPagePlaylist,\n meta: { show_progress: true }\n },\n {\n path: '/search/spotify',\n name: 'Spotify Search',\n component: SpotifyPageSearch\n }\n ],\n scrollBehavior (to, from, savedPosition) {\n if (savedPosition) {\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n resolve(savedPosition)\n }, 500)\n })\n } else {\n return { x: 0, y: 0 }\n }\n }\n})\n\nrouter.beforeEach((to, from, next) => {\n if (store.state.show_burger_menu) {\n store.commit(types.SHOW_BURGER_MENU, false)\n next(false)\n } else {\n next()\n }\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js","import Vue from 'vue'\nimport moment from 'moment'\nimport momentDurationFormatSetup from 'moment-duration-format'\n\nmomentDurationFormatSetup(moment)\nVue.filter('duration', function (value, format) {\n if (format) {\n return moment.duration(value).format(format)\n }\n return moment.duration(value).format('hh:*mm:ss')\n})\n\nVue.filter('time', function (value, format) {\n if (format) {\n return moment(value).format(format)\n }\n return moment(value).format()\n})\n\nVue.filter('timeFromNow', function (value, withoutSuffix) {\n return moment(value).fromNow(withoutSuffix)\n})\n\nVue.filter('number', function (value) {\n return value.toLocaleString()\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/filter/index.js","import Vue from 'vue'\nimport VueProgressBar from 'vue-progressbar'\n\nVue.use(VueProgressBar, {\n color: 'hsl(204, 86%, 53%)',\n failedColor: 'red',\n height: '1px'\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/progress/index.js","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue'\nimport App from './App'\nimport { router } from './router'\nimport store from './store'\nimport './filter'\nimport './progress'\nimport 'bulma/css/bulma.css'\nimport 'mdi/css/materialdesignicons.css'\nimport 'vue-range-slider/dist/vue-range-slider.css'\nimport './mystyles.css'\n\nVue.config.productionTip = false\n\n/* eslint-disable no-new */\nnew Vue({\n el: '#app',\n router,\n store,\n components: { App },\n template: '<App/>'\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","var map = {\n\t\"./af\": \"3CJN\",\n\t\"./af.js\": \"3CJN\",\n\t\"./ar\": \"3MVc\",\n\t\"./ar-dz\": \"tkWw\",\n\t\"./ar-dz.js\": \"tkWw\",\n\t\"./ar-kw\": \"j8cJ\",\n\t\"./ar-kw.js\": \"j8cJ\",\n\t\"./ar-ly\": \"wPpW\",\n\t\"./ar-ly.js\": \"wPpW\",\n\t\"./ar-ma\": \"dURR\",\n\t\"./ar-ma.js\": \"dURR\",\n\t\"./ar-sa\": \"7OnE\",\n\t\"./ar-sa.js\": \"7OnE\",\n\t\"./ar-tn\": \"BEem\",\n\t\"./ar-tn.js\": \"BEem\",\n\t\"./ar.js\": \"3MVc\",\n\t\"./az\": \"eHwN\",\n\t\"./az.js\": \"eHwN\",\n\t\"./be\": \"3hfc\",\n\t\"./be.js\": \"3hfc\",\n\t\"./bg\": \"lOED\",\n\t\"./bg.js\": \"lOED\",\n\t\"./bm\": \"hng5\",\n\t\"./bm.js\": \"hng5\",\n\t\"./bn\": \"aM0x\",\n\t\"./bn.js\": \"aM0x\",\n\t\"./bo\": \"w2Hs\",\n\t\"./bo.js\": \"w2Hs\",\n\t\"./br\": \"OSsP\",\n\t\"./br.js\": \"OSsP\",\n\t\"./bs\": \"aqvp\",\n\t\"./bs.js\": \"aqvp\",\n\t\"./ca\": \"wIgY\",\n\t\"./ca.js\": \"wIgY\",\n\t\"./cs\": \"ssxj\",\n\t\"./cs.js\": \"ssxj\",\n\t\"./cv\": \"N3vo\",\n\t\"./cv.js\": \"N3vo\",\n\t\"./cy\": \"ZFGz\",\n\t\"./cy.js\": \"ZFGz\",\n\t\"./da\": \"YBA/\",\n\t\"./da.js\": \"YBA/\",\n\t\"./de\": \"DOkx\",\n\t\"./de-at\": \"8v14\",\n\t\"./de-at.js\": \"8v14\",\n\t\"./de-ch\": \"Frex\",\n\t\"./de-ch.js\": \"Frex\",\n\t\"./de.js\": \"DOkx\",\n\t\"./dv\": \"rIuo\",\n\t\"./dv.js\": \"rIuo\",\n\t\"./el\": \"CFqe\",\n\t\"./el.js\": \"CFqe\",\n\t\"./en-au\": \"Sjoy\",\n\t\"./en-au.js\": \"Sjoy\",\n\t\"./en-ca\": \"Tqun\",\n\t\"./en-ca.js\": \"Tqun\",\n\t\"./en-gb\": \"hPuz\",\n\t\"./en-gb.js\": \"hPuz\",\n\t\"./en-ie\": \"ALEw\",\n\t\"./en-ie.js\": \"ALEw\",\n\t\"./en-il\": \"QZk1\",\n\t\"./en-il.js\": \"QZk1\",\n\t\"./en-nz\": \"dyB6\",\n\t\"./en-nz.js\": \"dyB6\",\n\t\"./eo\": \"Nd3h\",\n\t\"./eo.js\": \"Nd3h\",\n\t\"./es\": \"LT9G\",\n\t\"./es-do\": \"7MHZ\",\n\t\"./es-do.js\": \"7MHZ\",\n\t\"./es-us\": \"INcR\",\n\t\"./es-us.js\": \"INcR\",\n\t\"./es.js\": \"LT9G\",\n\t\"./et\": \"XlWM\",\n\t\"./et.js\": \"XlWM\",\n\t\"./eu\": \"sqLM\",\n\t\"./eu.js\": \"sqLM\",\n\t\"./fa\": \"2pmY\",\n\t\"./fa.js\": \"2pmY\",\n\t\"./fi\": \"nS2h\",\n\t\"./fi.js\": \"nS2h\",\n\t\"./fo\": \"OVPi\",\n\t\"./fo.js\": \"OVPi\",\n\t\"./fr\": \"tzHd\",\n\t\"./fr-ca\": \"bXQP\",\n\t\"./fr-ca.js\": \"bXQP\",\n\t\"./fr-ch\": \"VK9h\",\n\t\"./fr-ch.js\": \"VK9h\",\n\t\"./fr.js\": \"tzHd\",\n\t\"./fy\": \"g7KF\",\n\t\"./fy.js\": \"g7KF\",\n\t\"./gd\": \"nLOz\",\n\t\"./gd.js\": \"nLOz\",\n\t\"./gl\": \"FuaP\",\n\t\"./gl.js\": \"FuaP\",\n\t\"./gom-latn\": \"+27R\",\n\t\"./gom-latn.js\": \"+27R\",\n\t\"./gu\": \"rtsW\",\n\t\"./gu.js\": \"rtsW\",\n\t\"./he\": \"Nzt2\",\n\t\"./he.js\": \"Nzt2\",\n\t\"./hi\": \"ETHv\",\n\t\"./hi.js\": \"ETHv\",\n\t\"./hr\": \"V4qH\",\n\t\"./hr.js\": \"V4qH\",\n\t\"./hu\": \"xne+\",\n\t\"./hu.js\": \"xne+\",\n\t\"./hy-am\": \"GrS7\",\n\t\"./hy-am.js\": \"GrS7\",\n\t\"./id\": \"yRTJ\",\n\t\"./id.js\": \"yRTJ\",\n\t\"./is\": \"upln\",\n\t\"./is.js\": \"upln\",\n\t\"./it\": \"FKXc\",\n\t\"./it.js\": \"FKXc\",\n\t\"./ja\": \"ORgI\",\n\t\"./ja.js\": \"ORgI\",\n\t\"./jv\": \"JwiF\",\n\t\"./jv.js\": \"JwiF\",\n\t\"./ka\": \"RnJI\",\n\t\"./ka.js\": \"RnJI\",\n\t\"./kk\": \"j+vx\",\n\t\"./kk.js\": \"j+vx\",\n\t\"./km\": \"5j66\",\n\t\"./km.js\": \"5j66\",\n\t\"./kn\": \"gEQe\",\n\t\"./kn.js\": \"gEQe\",\n\t\"./ko\": \"eBB/\",\n\t\"./ko.js\": \"eBB/\",\n\t\"./ky\": \"6cf8\",\n\t\"./ky.js\": \"6cf8\",\n\t\"./lb\": \"z3hR\",\n\t\"./lb.js\": \"z3hR\",\n\t\"./lo\": \"nE8X\",\n\t\"./lo.js\": \"nE8X\",\n\t\"./lt\": \"/6P1\",\n\t\"./lt.js\": \"/6P1\",\n\t\"./lv\": \"jxEH\",\n\t\"./lv.js\": \"jxEH\",\n\t\"./me\": \"svD2\",\n\t\"./me.js\": \"svD2\",\n\t\"./mi\": \"gEU3\",\n\t\"./mi.js\": \"gEU3\",\n\t\"./mk\": \"Ab7C\",\n\t\"./mk.js\": \"Ab7C\",\n\t\"./ml\": \"oo1B\",\n\t\"./ml.js\": \"oo1B\",\n\t\"./mn\": \"CqHt\",\n\t\"./mn.js\": \"CqHt\",\n\t\"./mr\": \"5vPg\",\n\t\"./mr.js\": \"5vPg\",\n\t\"./ms\": \"ooba\",\n\t\"./ms-my\": \"G++c\",\n\t\"./ms-my.js\": \"G++c\",\n\t\"./ms.js\": \"ooba\",\n\t\"./mt\": \"oCzW\",\n\t\"./mt.js\": \"oCzW\",\n\t\"./my\": \"F+2e\",\n\t\"./my.js\": \"F+2e\",\n\t\"./nb\": \"FlzV\",\n\t\"./nb.js\": \"FlzV\",\n\t\"./ne\": \"/mhn\",\n\t\"./ne.js\": \"/mhn\",\n\t\"./nl\": \"3K28\",\n\t\"./nl-be\": \"Bp2f\",\n\t\"./nl-be.js\": \"Bp2f\",\n\t\"./nl.js\": \"3K28\",\n\t\"./nn\": \"C7av\",\n\t\"./nn.js\": \"C7av\",\n\t\"./pa-in\": \"pfs9\",\n\t\"./pa-in.js\": \"pfs9\",\n\t\"./pl\": \"7LV+\",\n\t\"./pl.js\": \"7LV+\",\n\t\"./pt\": \"ZoSI\",\n\t\"./pt-br\": \"AoDM\",\n\t\"./pt-br.js\": \"AoDM\",\n\t\"./pt.js\": \"ZoSI\",\n\t\"./ro\": \"wT5f\",\n\t\"./ro.js\": \"wT5f\",\n\t\"./ru\": \"ulq9\",\n\t\"./ru.js\": \"ulq9\",\n\t\"./sd\": \"fW1y\",\n\t\"./sd.js\": \"fW1y\",\n\t\"./se\": \"5Omq\",\n\t\"./se.js\": \"5Omq\",\n\t\"./si\": \"Lgqo\",\n\t\"./si.js\": \"Lgqo\",\n\t\"./sk\": \"OUMt\",\n\t\"./sk.js\": \"OUMt\",\n\t\"./sl\": \"2s1U\",\n\t\"./sl.js\": \"2s1U\",\n\t\"./sq\": \"V0td\",\n\t\"./sq.js\": \"V0td\",\n\t\"./sr\": \"f4W3\",\n\t\"./sr-cyrl\": \"c1x4\",\n\t\"./sr-cyrl.js\": \"c1x4\",\n\t\"./sr.js\": \"f4W3\",\n\t\"./ss\": \"7Q8x\",\n\t\"./ss.js\": \"7Q8x\",\n\t\"./sv\": \"Fpqq\",\n\t\"./sv.js\": \"Fpqq\",\n\t\"./sw\": \"DSXN\",\n\t\"./sw.js\": \"DSXN\",\n\t\"./ta\": \"+7/x\",\n\t\"./ta.js\": \"+7/x\",\n\t\"./te\": \"Nlnz\",\n\t\"./te.js\": \"Nlnz\",\n\t\"./tet\": \"gUgh\",\n\t\"./tet.js\": \"gUgh\",\n\t\"./tg\": \"5SNd\",\n\t\"./tg.js\": \"5SNd\",\n\t\"./th\": \"XzD+\",\n\t\"./th.js\": \"XzD+\",\n\t\"./tl-ph\": \"3LKG\",\n\t\"./tl-ph.js\": \"3LKG\",\n\t\"./tlh\": \"m7yE\",\n\t\"./tlh.js\": \"m7yE\",\n\t\"./tr\": \"k+5o\",\n\t\"./tr.js\": \"k+5o\",\n\t\"./tzl\": \"iNtv\",\n\t\"./tzl.js\": \"iNtv\",\n\t\"./tzm\": \"FRPF\",\n\t\"./tzm-latn\": \"krPU\",\n\t\"./tzm-latn.js\": \"krPU\",\n\t\"./tzm.js\": \"FRPF\",\n\t\"./ug-cn\": \"To0v\",\n\t\"./ug-cn.js\": \"To0v\",\n\t\"./uk\": \"ntHu\",\n\t\"./uk.js\": \"ntHu\",\n\t\"./ur\": \"uSe8\",\n\t\"./ur.js\": \"uSe8\",\n\t\"./uz\": \"XU1s\",\n\t\"./uz-latn\": \"/bsm\",\n\t\"./uz-latn.js\": \"/bsm\",\n\t\"./uz.js\": \"XU1s\",\n\t\"./vi\": \"0X8Q\",\n\t\"./vi.js\": \"0X8Q\",\n\t\"./x-pseudo\": \"e/KL\",\n\t\"./x-pseudo.js\": \"e/KL\",\n\t\"./yo\": \"YXlc\",\n\t\"./yo.js\": \"YXlc\",\n\t\"./zh-cn\": \"Vz2w\",\n\t\"./zh-cn.js\": \"Vz2w\",\n\t\"./zh-hk\": \"ZUyn\",\n\t\"./zh-hk.js\": \"ZUyn\",\n\t\"./zh-tw\": \"BbgG\",\n\t\"./zh-tw.js\": \"BbgG\"\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"uslO\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/moment/locale ^\\.\\/.*$\n// module id = uslO\n// module chunks = 1"],"sourceRoot":""} |