Greasy Fork is available in English.

MAL-Sync

Integrates MyAnimeList/AniList/Kitsu/Simkl into various sites, with auto episode tracking.

Version vom 18.02.2020. Aktuellste Version

// ==UserScript==
// @name MAL-Sync
// @namespace https://greasyfork.org/users/92233
// @description Integrates MyAnimeList/AniList/Kitsu/Simkl into various sites, with auto episode tracking.
// @version 0.7.0
// @author lolamtisch@gmail.com
// @license GPL-3.0
// @iconURL https://raw.githubusercontent.com/lolamtisch/MALSync/master/assets/icons/icon128.png
// @grant GM_xmlhttpRequest
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_deleteValue
// @grant GM_listValues
// @grant GM_addStyle
// @grant GM_getResourceText
// @grant GM.xmlHttpRequest
// @grant GM.getValue
// @grant GM.setValue
// @match *://myanimelist.net/anime/*
// @match *://myanimelist.net/manga/*
// @match *://myanimelist.net/animelist/*
// @match *://myanimelist.net/mangalist/*
// @match *://myanimelist.net/anime.php?id=*
// @match *://myanimelist.net/manga.php?id=*
// @match *://myanimelist.net/character/*
// @match *://myanimelist.net/people/*
// @match *://myanimelist.net/search/*
// @match *://anilist.co/*
// @match *://kitsu.io/*
// @match *://simkl.com/*
// @match *://kissanime.ru/Anime/*
// @match *://kissanime.to/Anime/*
// @match *://kissmanga.com/Manga/*
// @match *://*.9anime.to/watch/*
// @match *://*.9anime.is/watch/*
// @match *://*.9anime.ru/watch/*
// @match *://*.9anime.ch/watch/*
// @match *://*.9anime.nl/watch/*
// @match *://*.9anime.live/watch/*
// @match *://*.9anime.one/watch/*
// @match *://*.9anime.page/watch/*
// @match *://*.9anime.video/watch/*
// @match *://*.9anime.life/watch/*
// @match *://*.9anime.love/watch/*
// @match *://*.9anime.tv/watch/*
// @match *://*.crunchyroll.com/*
// @match *://*.mangadex.org/manga/*
// @match *://*.mangadex.org/title/*
// @match *://*.mangadex.org/chapter/*
// @match *://*.mangadex.cc/manga/*
// @match *://*.mangadex.cc/title/*
// @match *://*.mangadex.cc/chapter/*
// @match *://*.gogoanime.tv/*
// @match *://*.gogoanime.io/*
// @match *://*.gogoanime.in/*
// @match *://*.gogoanime.se/*
// @match *://*.gogoanime.sh/*
// @match *://*.gogoanime.video/*
// @match *://*.gogoanime.movie/*
// @match *://*.gogoanimes.co/*
// @match *://*.animego.to/*
// @match *://*.anime4you.one/show/1/aid/*
// @match *://*.branitube.net/watch/*
// @match *://*.branitube.net/animes/*
// @match *://*.www.turkanime.tv/video/*
// @match *://*.www.turkanime.tv/anime/*
// @match *://*.www.turkanime.net/video/*
// @match *://*.www.turkanime.net/anime/*
// @match *://twist.moe/*
// @match *://app.emby.media/*
// @match *://app.plex.tv/*
// @match *://www.netflix.com/*
// @match *://animepahe.com/play/*
// @match *://animepahe.com/anime/*
// @match *://animeflv.net/anime/*
// @match *://animeflv.net/ver/*
// @match *://jkanime.net/*
// @match *://vrv.co/*
// @match *://proxer.me/*
// @match *://novelplanet.com/Novel/*
// @match *://4anime.to/*
// @match *://www.dreamanimes.com.br/*
// @match *://*.animeultima.eu/a/*
// @match *://*.aniflix.tv/*
// @match *://animedaisuki.moe/watch/*
// @match *://animedaisuki.moe/anime/*
// @match *://www.animefreak.tv/watch/*
// @match *://www.anime-planet.com/anime/*
// @match *://*.kickassanime.io/anime/*
// @match *://*.kickassanime.ru/anime/*
// @match *://*.kickassanime.rs/anime/*
// @match *://www.riie.net/*
// @match *://animekisa.tv/*
// @match *://*.wakanim.tv/*
// @match *://animeindo.moe/*
// @match *://shinden.pl/episode/*
// @match *://shinden.pl/series/*
// @match *://www.funimation.com/shows/*
// @match *://voiranime.com/*
// @match *://*.dubbedanime.net/*
// @match *://www.viz.com/*
// @match *://manganelo.com/*
// @match *://mangakakalot.com/*
// @match *://*.neko-sama.fr/*
// @match *://www.animezone.pl/odcinki/*
// @match *://www.animezone.pl/odcinek/*
// @match *://www.animezone.pl/anime/*
// @match *://anime-odcinki.pl/anime/*
// @match *://animeflix.io/*
// @match *://*.animefever.tv/*
// @match *://serimanga.com/*
// @match *://mangadenizi.com/*
// @match *://moeclip.com/*
// @match *://mangalivre.com/*
// @match *://tmofans.com/*
// @match *://unionleitor.top/*
// @match *://unionmangas.top/*
// @match *://myanime.moe/*
// @match *://mangaplus.shueisha.co.jp/*
// @match *://*.japscan.co/*
// @match *://mangakisa.com/*
// @match *://goyabu.com/*
// @match *://*.animesvision.com.br/*
// @match *://www.hulu.com/*
// @match *://aniwatch.me/*
// @match *://www.hidive.com/*
// @match *://jaiminisbox.com/reader/series/*
// @match *://jaiminisbox.com/reader/read/*
// @match *://manga.fascans.com/manga/*
// @match *://*.animestrue.net/anime/*/temporada*
// @match *://*.openload.co/*
// @match *://*.openload.pw/*
// @match *://*.streamango.com/*
// @match *://*.mp4upload.com/*
// @match *://*.mcloud.to/*
// @match *://*.prettyfast.to/*
// @match *://*.rapidvideo.com/*
// @match *://*.rapidvid.to/*
// @match *://*.static.crunchyroll.com/*
// @match *://*.static.vrv.co/*
// @match *://*.vidstreaming.io/*
// @match *://*.vidstreaming.me/*
// @match *://*.xstreamcdn.com/*
// @match *://*.gcloud.live/*
// @match *://*.oload.tv/*
// @match *://*.mail.ru/*
// @match *://*.myvi.ru/*
// @match *://*.sibnet.ru/*
// @match *://*.tune.pk/*
// @match *://*.vimple.ru/*
// @match *://*.href.li/*
// @match *://*.vk.com/*
// @match *://*.cloudvideo.tv/*
// @match *://*.fembed.net/*
// @match *://*.fembed.com/*
// @match *://*.animeproxy.info/*
// @match *://*.feurl.com/*
// @match *://*.youpload.co/*
// @match *://*.yourupload.com/*
// @match *://*.vidlox.me/*
// @match *://*.kwik.cx/*
// @match *://*.mega.nz/*
// @match *://*.animeflv.net/*
// @match *://*.hqq.tv/*
// @match *://*.jkanime.net/*
// @match *://*.ok.ru/*
// @match *://*.novelplanet.me/*
// @match *://*.stream.proxer.me/*
// @match *://verystream.com/*
// @match *://*.animeultima.eu/e/*
// @match *://*.animeultima.eu/faststream/*
// @match *://*.vidoza.net/*
// @match *://crazyload.co/*
// @match *://gounlimited.to/*
// @match *://www.ani-stream.com/*
// @match *://flex.aniflex.org/public/dist/*
// @match *://animedaisuki.moe/embed/*
// @match *://wakanim.tv/*/*/*/embeddedplayer/*
// @match *://superitu.com/embed/*
// @match *://www.dailymotion.com/embed/*
// @match *://vev.io/embed/*
// @match *://vev.red/embed/*
// @match *://www.funimation.com/player/*
// @match *://jwpstream.com/jwps/yplayer.php*
// @match *://www.vaplayer.xyz/v/*
// @match *://mp4.sh/embed/*
// @match *://embed.mystream.to/*
// @match *://*.bitchute.com/embed/*
// @match *://*.streamcherry.com/embed/*
// @match *://*.clipwatching.com/*
// @match *://*.flix555.com/*
// @match *://*.vshare.io/v/*
// @match *://*.replay.watch/*
// @match *://hydrax.net/*
// @match *://*.streamium.xyz/*
// @match *://animo-pace-stream.io/*
// @match *://*.pstream.net/e/*
// @match *://*.animefever.tv/embed/*
// @match *://*.haloani.ru/*
// @match *://*.moeclip.com/v/*
// @exclude *myanimelist.net/anime/season*
// @exclude *crunchyroll.com/
// @exclude *crunchyroll.com
// @exclude *crunchyroll.com/acct*
// @exclude *crunchyroll.com/anime*
// @exclude *crunchyroll.com/comics*
// @exclude *crunchyroll.com/edit*
// @exclude *crunchyroll.com/email*
// @exclude *crunchyroll.com/forum*
// @exclude *crunchyroll.com/home*
// @exclude *crunchyroll.com/inbox*
// @exclude *crunchyroll.com/library*
// @exclude *crunchyroll.com/login*
// @exclude *crunchyroll.com/manga*
// @exclude *crunchyroll.com/newprivate*
// @exclude *crunchyroll.com/news*
// @exclude *crunchyroll.com/notifications*
// @exclude *crunchyroll.com/order*
// @exclude *crunchyroll.com/outbox*
// @exclude *crunchyroll.com/pm*
// @exclude *crunchyroll.com/search*
// @exclude *crunchyroll.com/store*
// @exclude *crunchyroll.com/user*
// @exclude *crunchyroll.com/videos*
// @exclude *crunchyroll.com/affiliate_iframeplayer*
// @exclude *gogoanime*.*/
// @exclude *gogoanime*.*/*.html
// @exclude *gogoanime*.*/anime-List*
// @exclude *gogoanime*.*/user*
// @exclude *animego*.*/
// @exclude *animego*.*/*.html
// @exclude *animego*.*/anime-List*
// @exclude *animego*.*/user*
// @exclude *://jkanime.net/
// @exclude *://jkanime.net/letra/*
// @exclude *://jkanime.net/buscar/*
// @exclude *://jkanime.net/terminos-condiciones/
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @resource material.css https://code.getmdl.io/1.3.0/material.indigo-pink.min.css
// @resource materialFont.css https://fonts.googleapis.com/icon?family=Material+Icons
// @resource material.js https://greasyfork.org/scripts/377924-material-design-lite-mal-sync/code/material-design-lite%20MAL-Sync.js?version=671593
// @run-at document_start
// @connect myanimelist.net
// @connect kissanimelist.firebaseio.com
// @connect graphql.anilist.co
// @connect media.kitsu.io
// @connect api.simkl.com
// @connect api.malsync.moe
// @connect *
// ==/UserScript==

var i18n = {"Search":"Search","Show":"Show","Help":"Help","Update":"Update","Reset":"Reset","Remove":"Remove","Loading":"Loading","Select":"Select","Yes":"Yes","No":"No","NothingFound":"Nothing Found","Not_Found":"Not Found!","NoEntries":"No Entries","fullscreen":"fullscreen","close":"close","All":"All","Package_Description":"Integrates MyAnimeList/AniList/Kitsu/Simkl into various sites, with auto episode tracking.","UI_Status":"Status:","UI_Status_watching_anime":"Watching","UI_Status_watching_manga":"Reading","UI_Status_Completed":"Completed","UI_Status_OnHold":"On-Hold","UI_Status_Dropped":"Dropped","UI_Status_planTo_anime":"Plan to Watch","UI_Status_planTo_manga":"Plan to Read","UI_Episode":"Episode:","UI_Volume":"Volume:","UI_Chapter":"Chapter:","UI_Score":"Your Score:","UI_Score_Not_Rated":"Not rated","UI_Score_Masterpiece":"(10) Masterpiece","UI_Score_Great":"(9) Great","UI_Score_VeryGood":"(8) Very Good","UI_Score_Good":"(7) Good","UI_Score_Fine":"(6) Fine","UI_Score_Average":"(5) Average","UI_Score_Bad":"(4) Bad","UI_Score_VeryBad":"(3) Very Bad","UI_Score_Horrible":"(2) Horrible","UI_Score_Appalling":"(1) Appalling","syncPage_flashm_resumeMsg":"Resume at $1","syncPage_flashm_sync_anime":"Update $1 to episode $2","syncPage_flashm_sync_manga":"Update $1 to chapter $2","syncPage_flashm_sync_undefined_undo":"Undo","syncPage_flashm_sync_undefined_wrong":"Wrong?","syncPage_flashm_failded":"Update failed","syncPage_flashConfirm_complete":"Set as completed?","syncPage_flashConfirm_start_anime":"Start watching?","syncPage_flashConfirm_start_manga":"Start reading?","syncPage_flashConfirm_Anime_Correct":"Is \"$1\" correct?","syncPage_malObj_addAnime":"Add to $1","syncPage_malObj_nextEp_anime":"Episode $1","syncPage_malObj_nextEp_manga":"Chapter $1","syncPage_flashConfirm_offsetHandler_1":"A possible Episode offset of $1 was detected. Is that correct? ","anilistClass_authentication":"Token saved you can close this page now","kitsuClass_authentication_text":"To login with Kitsu, you need to enter your account's e-mail and password.<br>Your credentials are not stored on your computer or anywhere else.<br>They are directly sent to Kitsu. Only the returned access token is saved.<br>","kitsuClass_authentication_Password":"Password","kitsuClass_authentication_Login":"Login","kitsuClass_authentication_Success":"Token saved you can close this page now","kitsuClass_authentication_Wrong":"Credentials wrong","bookmarksItem_Days":"Days","bookmarksItem_Day":"Day","bookmarksItem_Hours":"Hours","bookmarksItem_Hour":"Hour","bookmarksItem_mins":"mins","prediction_Episode":"Next episode estimated in $1","prediction_Airing":"Airing in $1","correction_Offset":"Episode Offset","correction_Offset_text":"Input the episode offset, if an anime has 12 episodes, but uses the numbers 0-11 rather than 1-12, you simply type \" +1 \" in the episode offset.","correction_WrongUrl":"Only change this URL if it points to the wrong anime page on MAL.","correction_Search":"Correction Search","correction_Search_text":"This field is for finding an anime, when you need to correct the \"MyAnimeList URL\" shown above.<br>To make a search, simply begin typing the name of an anime, and a list with results will automatically appear as you type.","correction_NoMal":"If the Anime/Manga can't be found on MAL","correction_NoEntry":"No entry on MyAnimeList","correction_NewOffset":"New Offset ($1) set.","correction_OffsetReset":"Offset reset","correction_NewUrl":"New URL '$1' set.","correction_NewUrlReset":"MyAnimeList URL reset","correction_DBRequest":"Submit database correction request?","overview_Continue_anime":"Continue watching","overview_Continue_manga":"Continue reading","overview_Next_Episode_anime":"Next Episode","overview_Next_Episode_manga":"Next Chapter","overview_Resume_Episode_anime":"Resume Episode","overview_Resume_Episode_manga":"Resume Chapter","overview_EditDetails":"Edit Details","overview_Characters":"Characters","overview_OpeningTheme":"Opening Theme:","overview_EndingTheme":"Ending Theme:","search_Type":"Type:","search_Score":"Score:","search_Year":"Year:","settings_General":"General","settings_Mode":"Mode","settings_Authenticate":"Authenticate","settings_LocalSync":"Local storage fallback","settings_LocalSync_Import":"Import","settings_LocalSync_Export":"Export","settings_Animesync":"Anime sync","settings_Animesync_Video":"Video","settings_Animesync_Instant":"Instant","settings_Animesync_Manual":"Manual","settings_Mangasync":"Manga sync","settings_AutoTracking_Video":"Update on $1% of video progress","settings_AutoTracking_Instant":"Delay instant autotracking by $1 seconds","settings_StreamingSite":"Streaming Site Links","settings_StreamingSite_text":"If disabled, the streaming site will no longer appear in an animes sidebar on MyAnimeList/AniList/Kitsu.","settings_Thumbnails":"Thumbnails","settings_Thumbnails_text":"The option is for resizing the thumbnails on MyAnimeList.<br>Like thumbnails for characters, people, recommendations, etc.","settings_Thumbnails_Large":"Large","settings_Thumbnails_Medium":"Medium","settings_Thumbnails_Small":"Small","settings_Thumbnails_Default":"MAL Default","settings_FriendScore":"Friend scores on detail page","settings_epPredictions":"Estimate episode number","settings_malTags":"Use Tags/Notes","settings_malTags_Text":"If enabled: On your MyAnimeList/Anilist Anime List and the bookmark list in miniMAL, an icon-link will be added to the last used streaming site you were using to watch an anime.<br>Simply click the icon to continue watching the anime.","settings_malContinue":"Continue watching links","settings_malResume":"Resume watching links","settings_miniMAL_floatButtonStealth":"Stealth UI mode","settings_miniMAL_floatButtonHide":"Hide miniMAL floating menu button","settings_miniMAL_autoCloseMinimal":"Clicking outside closes miniMAL","settings_miniMAL_Display":"Display to the","settings_miniMAL_window":"Open in separate window","settings_miniMAL_Display_Left":"Left","settings_miniMAL_Display_Right":"Right","settings_miniMAL_Height":"Height (px / %)","settings_miniMAL_Width":"Width (px / %)","settings_Shortcuts":"Shortcuts","settings_miniMAL_Open":"Open miniMAL","settings_miniMAL_NotSet":"Not Set","settings_Video_Player":"Video Player","settings_Video_Fullscreen":"Auto fullscreen","settings_Video_Resume":"Auto resume","settings_autoNextEp":"Autoplay next episode","settings_Shortcuts_Correction":"Open anime relation correction popup","settings_Shortcuts_Next_Episode":"Open next episode shortcut","settings_Shortcuts_Skip_Forward":"Skips the opening","settings_Shortcuts_Skip_Backward":"Jump back to opening's beginning","settings_Shortcuts_Click":"Click to enter shortcut","settings_introSkip":"Set opening skip length ($1 seconds)","settings_UpdateCheck":"Update Check","settings_UpdateCheck_Text":"Checks for new episodes in the background.","settings_Interval":"Interval","settings_Interval_Off":"Off","settings_Notifications":"Notifications","settings_Debugging":"Debugging","settings_ETC":"ETC","settings_Userscriptmode":"Userscript mode","settings_Userscriptmode_Text":"Disables the content script. This makes it possible to have the extension and userscript enabled at the same time.","settings_StrictCookies":"Strict Cookies","settings_StrictCookies_Text":"This option adds Firefox Multi-Account Containers support. Make sure to restart the browser after enabling this option","settings_highlightAllEp":"Highlight all Episodes/Chapters","settings_highlightAllEp_Text":"This option will highlight all watched chapters/episodes in the list you can find on some Anime/Manga sites","settings_ClearCache":"Clear Cache","settings_presenceHidePage":"Show MAL-Sync icon instead of page icon","settings_shortcut_tooltip":"It is not recommended to set the shortcut to a single key","updateCheck_Refresh":"Refresh","updateCheck_StartCheck":"Start Check","updateCheck_NotificationCheck":"Notification Check","updateCheck_Episode":"Episode","updateCheck_Message":"Message","updateCheck_NotificationHistory":"Notification History","minimalApp_Overview":"Overview","minimalApp_Reviews":"Reviews","minimalApp_Recommendations":"Recommendations","minimalApp_Settings":"Settings","minimalClass_Popup":"Please allow pop-ups for this website","minimalClass_versionMsg":"Updated to version $1 $2CHANGELOG</a>]","minimalClass_versionMsg_Text_1":"Thank you for installing MAL-Sync","minimalClass_versionMsg_Text_2":"Having Questions?","minimalClass_versionMsg_Text_3":"Open Source Code:","minimalClass_versionMsg_Text_4":"uBlock users please subscribe to this filter list! This fixes some problems like broken images","installPage_Mode":"Please select which Anime database you want use:","installPage_Howto":"How to use?","installPage_Howto_Description":"Just open an episode or chapter on any of the <a target=\"_blank\" href=\"https://github.com/lolamtisch/MALSync#supported-pages-\">supported pages</a>. The sync waits until 85% of the video is watched. For mangas it syncs on page load. This can be changed in the <a class=\"open-settings\" href=\"#\">settings</a>.","installPage_Wrong":"It syncs to the wrong MAL entry?","installPage_Wrong_Description":"You can easily change the relation like shown in the gif below. An episode offset can be set on that page too.","Anilist_Authenticate":"Please Authenticate <a target=\"_blank\" href=\"https://anilist.co/api/v2/oauth/authorize?client_id=1487&response_type=token\">Here</a>","Emby_Authenticate":"MAL-Sync needs an Emby API key to work. More infos <a href=\"https://github.com/MediaBrowser/Emby/wiki/Api-Key-Authentication#creating-an-api-key\" target=\"_blank\">Here</a>","Error_Authenticate":"Please Authenticate <a target=\"_blank\" href=\"$1\">Here</a>","Discord_rpc_browsing":"Browsing $1","nextEpShort_no_support":"This page doesn't support opening the next episode","nextEpShort_no_nextEp":"Couldn't find the next episode"}
/*! For license information please see malsync.user.js.LICENSE */
!function(modules) {
    var installedModules = {};
    function __webpack_require__(moduleId) {
        if (installedModules[moduleId]) return installedModules[moduleId].exports;
        var module = installedModules[moduleId] = {
            i: moduleId,
            l: !1,
            exports: {}
        };
        return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), 
        module.l = !0, module.exports;
    }
    __webpack_require__.m = modules, __webpack_require__.c = installedModules, __webpack_require__.d = function(exports, name, getter) {
        __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {
            enumerable: !0,
            get: getter
        });
    }, __webpack_require__.r = function(exports) {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(exports, Symbol.toStringTag, {
            value: "Module"
        }), Object.defineProperty(exports, "__esModule", {
            value: !0
        });
    }, __webpack_require__.t = function(value, mode) {
        if (1 & mode && (value = __webpack_require__(value)), 8 & mode) return value;
        if (4 & mode && "object" == typeof value && value && value.__esModule) return value;
        var ns = Object.create(null);
        if (__webpack_require__.r(ns), Object.defineProperty(ns, "default", {
            enumerable: !0,
            value: value
        }), 2 & mode && "string" != typeof value) for (var key in value) __webpack_require__.d(ns, key, function(key) {
            return value[key];
        }.bind(null, key));
        return ns;
    }, __webpack_require__.n = function(module) {
        var getter = module && module.__esModule ? function() {
            return module.default;
        } : function() {
            return module;
        };
        return __webpack_require__.d(getter, "a", getter), getter;
    }, __webpack_require__.o = function(object, property) {
        return Object.prototype.hasOwnProperty.call(object, property);
    }, __webpack_require__.p = "", __webpack_require__(__webpack_require__.s = 179);
}([ function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    __webpack_require__.r(__webpack_exports__);
    var userscriptLegacy = __webpack_require__(69), __awaiter = function(thisArg, _arguments, P, generator) {
        return new (P || (P = Promise))((function(resolve, reject) {
            function fulfilled(value) {
                try {
                    step(generator.next(value));
                } catch (e) {
                    reject(e);
                }
            }
            function rejected(value) {
                try {
                    step(generator.throw(value));
                } catch (e) {
                    reject(e);
                }
            }
            function step(result) {
                var value;
                result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                    resolve(value);
                }))).then(fulfilled, rejected);
            }
            step((generator = generator.apply(thisArg, _arguments || [])).next());
        }));
    };
    const requestUserscriptLegacy = {
        xhr(method, url) {
            return __awaiter(this, void 0, void 0, (function*() {
                return new Promise((resolve, reject) => {
                    var request = {
                        method: method,
                        url: url,
                        synchronous: !1,
                        headers: [],
                        data: null,
                        onload: function(response) {
                            console.log(response);
                            var responseObj = {
                                finalUrl: response.finalUrl,
                                responseText: response.responseText,
                                status: response.status
                            };
                            resolve(responseObj);
                        }
                    };
                    "object" == typeof url && (request.url = url.url, request.headers = url.headers, 
                    request.data = url.data), GM_xmlhttpRequest(request);
                });
            }));
        }
    };
    var settings = __webpack_require__(70);
    __webpack_require__.d(__webpack_exports__, "storage", (function() {
        return storage;
    })), __webpack_require__.d(__webpack_exports__, "request", (function() {
        return request;
    })), __webpack_require__.d(__webpack_exports__, "settings", (function() {
        return userscript_settings;
    })), __webpack_require__.d(__webpack_exports__, "type", (function() {
        return type;
    }));
    var storage = userscriptLegacy.a, request = requestUserscriptLegacy, userscript_settings = settings.a, type = "userscript";
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    __webpack_require__.r(__webpack_exports__), __webpack_require__.d(__webpack_exports__, "log", (function() {
        return log;
    })), __webpack_require__.d(__webpack_exports__, "error", (function() {
        return error;
    })), __webpack_require__.d(__webpack_exports__, "info", (function() {
        return info;
    }));
    var log = Function.prototype.bind.call(console.log, console, "%cMAL-Sync", "background-color: #2e51a2; color: white; padding: 2px 10px; border-radius: 3px;"), error = Function.prototype.bind.call(console.error, console, "%cMAL-Sync", "background-color: #8f0000; color: white; padding: 2px 10px; border-radius: 3px;"), info = Function.prototype.bind.call(console.info, console, "%cMAL-Sync", "background-color: wheat; color: black; padding: 2px 10px; border-radius: 3px;");
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    __webpack_require__.r(__webpack_exports__), function(j, api, con, utils) {
        __webpack_require__.d(__webpack_exports__, "urlPart", (function() {
            return urlPart;
        })), __webpack_require__.d(__webpack_exports__, "urlParam", (function() {
            return urlParam;
        })), __webpack_require__.d(__webpack_exports__, "getBaseText", (function() {
            return getBaseText;
        })), __webpack_require__.d(__webpack_exports__, "favicon", (function() {
            return favicon;
        })), __webpack_require__.d(__webpack_exports__, "watching", (function() {
            return watching;
        })), __webpack_require__.d(__webpack_exports__, "planTo", (function() {
            return planTo;
        })), __webpack_require__.d(__webpack_exports__, "episode", (function() {
            return episode;
        })), __webpack_require__.d(__webpack_exports__, "syncRegex", (function() {
            return syncRegex;
        })), __webpack_require__.d(__webpack_exports__, "status", (function() {
            return status;
        })), __webpack_require__.d(__webpack_exports__, "getselect", (function() {
            return getselect;
        })), __webpack_require__.d(__webpack_exports__, "absoluteLink", (function() {
            return absoluteLink;
        })), __webpack_require__.d(__webpack_exports__, "parseHtml", (function() {
            return parseHtml;
        })), __webpack_require__.d(__webpack_exports__, "urlChangeDetect", (function() {
            return urlChangeDetect;
        })), __webpack_require__.d(__webpack_exports__, "changeDetect", (function() {
            return changeDetect;
        })), __webpack_require__.d(__webpack_exports__, "waitUntilTrue", (function() {
            return waitUntilTrue;
        })), __webpack_require__.d(__webpack_exports__, "checkDoubleExecution", (function() {
            return checkDoubleExecution;
        })), __webpack_require__.d(__webpack_exports__, "getUrlFromTags", (function() {
            return getUrlFromTags;
        })), __webpack_require__.d(__webpack_exports__, "setUrlInTags", (function() {
            return setUrlInTags;
        })), __webpack_require__.d(__webpack_exports__, "setResumeWaching", (function() {
            return setResumeWaching;
        })), __webpack_require__.d(__webpack_exports__, "getResumeWaching", (function() {
            return getResumeWaching;
        })), __webpack_require__.d(__webpack_exports__, "setContinueWaching", (function() {
            return setContinueWaching;
        })), __webpack_require__.d(__webpack_exports__, "getContinueWaching", (function() {
            return getContinueWaching;
        })), __webpack_require__.d(__webpack_exports__, "handleMalImages", (function() {
            return handleMalImages;
        })), __webpack_require__.d(__webpack_exports__, "getMalToKissArray", (function() {
            return getMalToKissArray;
        })), __webpack_require__.d(__webpack_exports__, "getMalToKissApi", (function() {
            return getMalToKissApi;
        })), __webpack_require__.d(__webpack_exports__, "getMalToKissFirebase", (function() {
            return getMalToKissFirebase;
        })), __webpack_require__.d(__webpack_exports__, "getTooltip", (function() {
            return getTooltip;
        })), __webpack_require__.d(__webpack_exports__, "epPredictionUI", (function() {
            return epPredictionUI;
        })), __webpack_require__.d(__webpack_exports__, "timeDiffToText", (function() {
            return timeDiffToText;
        })), __webpack_require__.d(__webpack_exports__, "canHideTabs", (function() {
            return canHideTabs;
        })), __webpack_require__.d(__webpack_exports__, "epPrediction", (function() {
            return epPrediction;
        })), __webpack_require__.d(__webpack_exports__, "statusTag", (function() {
            return statusTag;
        })), __webpack_require__.d(__webpack_exports__, "notifications", (function() {
            return notifications;
        })), __webpack_require__.d(__webpack_exports__, "timeCache", (function() {
            return timeCache;
        })), __webpack_require__.d(__webpack_exports__, "flashm", (function() {
            return flashm;
        })), __webpack_require__.d(__webpack_exports__, "flashConfirm", (function() {
            return flashConfirm;
        })), __webpack_require__.d(__webpack_exports__, "lazyload", (function() {
            return lazyload;
        })), __webpack_require__.d(__webpack_exports__, "elementInViewport", (function() {
            return elementInViewport;
        }));
        var __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        function urlPart(url, part) {
            try {
                return url.split("/")[part].split("?")[0].split("#")[0];
            } catch (e) {
                return;
            }
        }
        function urlParam(url, name) {
            var results = new RegExp("[?&]" + name + "=([^&#]*)").exec(url);
            return null == results ? null : decodeURI(results[1]) || 0;
        }
        function getBaseText(element) {
            var text = element.text();
            return element.children().each((function() {
                text = text.replace(j.$(this).text(), "");
            })), text;
        }
        function favicon(domain) {
            return -1 !== domain.indexOf("animeheaven") ? "http://animeheaven.eu/favicon.ico" : "https://www.google.com/s2/favicons?domain=" + domain;
        }
        function watching(type) {
            return "manga" === type ? "Reading" : "Watching";
        }
        function planTo(type) {
            return "manga" === type ? "Plan to Read" : "Plan to Watch";
        }
        function episode(type) {
            return "manga" === type ? api.storage.lang("UI_Chapter") : api.storage.lang("UI_Episode");
        }
        var status, syncRegex = /(^settings\/.*|^updateCheckTime$|^tempVersion$|^local:\/\/)/;
        function getselect(data, name) {
            var temp = data.split('name="' + name + '"')[1].split("</select>")[0];
            if (!(temp.indexOf('selected="selected"') > -1)) return "";
            temp = temp.split("<option");
            for (var i = 0; i < temp.length; ++i) if (temp[i].indexOf('selected="selected"') > -1) return temp[i].split('value="')[1].split('"')[0];
        }
        function absoluteLink(url, domain) {
            return void 0 === url ? url : (url.startsWith("http") || ("/" !== url.charAt(0) && (url = "/" + url), 
            url = domain + url), url);
        }
        function parseHtml(text) {
            return (new DOMParser).parseFromString("<!doctype html><body>" + text, "text/html").body.textContent;
        }
        function urlChangeDetect(callback) {
            var currentPage = window.location.href;
            return setInterval((function() {
                currentPage != window.location.href && (currentPage = window.location.href, callback());
            }), 100);
        }
        function changeDetect(callback, func) {
            var currentPage = func();
            return setInterval((function() {
                var temp = func();
                void 0 !== temp && currentPage != temp && (currentPage = func(), callback());
            }), 500);
        }
        function waitUntilTrue(condition, callback) {
            var Interval = null;
            return Interval = setInterval((function() {
                condition() && (clearInterval(Interval), callback());
            }), 100);
        }
        !function(status) {
            status[status.watching = 1] = "watching", status[status.completed = 2] = "completed", 
            status[status.onhold = 3] = "onhold", status[status.dropped = 4] = "dropped", status[status.planToWatch = 6] = "planToWatch";
        }(status || (status = {}));
        var doubleId = Math.random();
        function checkDoubleExecution() {
            $(".mal-sync-double-detect").length && $(".mal-sync-double-detect").each((function(index) {
                $(this).text() !== doubleId.toString() && alert("Double execution detected! Please run MAL-Sync once only.");
            })), $("body").after('<div class="mal-sync-double-detect" style="display: none;">' + doubleId.toString() + "</div>");
        }
        function getUrlFromTags(tags) {
            if (api.settings.get("malTags")) return /malSync::[\d\D]+::/.test(tags) ? atobURL(tags.split("malSync::")[1].split("::")[0]) : /last::[\d\D]+::/.test(tags) ? atobURL(tags.split("last::")[1].split("::")[0]) : void 0;
            function atobURL(encoded) {
                try {
                    return atob(encoded);
                } catch (e) {
                    return encoded;
                }
            }
        }
        function setUrlInTags(url, tags) {
            if ("" === url) return tags = tags.replace(/,?(malSync|last)::[^ \n]+?::/, "");
            if (!api.settings.get("malTags")) return tags;
            var addition = "malSync::" + btoa(url) + "::";
            return tags = /(last|malSync)::[\d\D]+::/.test(tags) ? tags.replace(/(last|malSync)::[^\^]*?::/, addition) : tags + "," + addition;
        }
        function setResumeWaching(url, ep, type, id) {
            return __awaiter(this, void 0, void 0, (function*() {
                return api.storage.set("resume/" + type + "/" + id, {
                    url: url,
                    ep: ep
                });
            }));
        }
        function getResumeWaching(type, id) {
            return __awaiter(this, void 0, void 0, (function*() {
                if (api.settings.get("malResume")) return api.storage.get("resume/" + type + "/" + id);
            }));
        }
        function setContinueWaching(url, ep, type, id) {
            return __awaiter(this, void 0, void 0, (function*() {
                return api.storage.set("continue/" + type + "/" + id, {
                    url: url,
                    ep: ep
                });
            }));
        }
        function getContinueWaching(type, id) {
            return __awaiter(this, void 0, void 0, (function*() {
                if (api.settings.get("malContinue")) return api.storage.get("continue/" + type + "/" + id);
            }));
        }
        function handleMalImages(url) {
            return -1 !== url.indexOf("questionmark") ? api.storage.assetUrl("questionmark.gif") : url;
        }
        function getMalToKissArray(type, id) {
            return __awaiter(this, void 0, void 0, (function*() {
                return getMalToKissApi(type, id).catch(e => (con.error(e), getMalToKissFirebase(type, id)));
            }));
        }
        function getMalToKissApi(type, id) {
            return __awaiter(this, void 0, void 0, (function*() {
                var url = "https://api.malsync.moe/mal/" + type + "/" + id;
                return api.request.xhr("GET", url).then(response => __awaiter(this, void 0, void 0, (function*() {
                    if (con.log("malSync response", response), 400 === response.status) return {};
                    if (200 === response.status) {
                        var data = JSON.parse(response.responseText);
                        for (var pageKey in data.Sites) api.settings.get(pageKey) || (con.log(pageKey + " is deactivated"), 
                        delete data.Sites[pageKey]);
                        return data && data.Sites ? data.Sites : {};
                    }
                    throw "malsync offline";
                })));
            }));
        }
        function getMalToKissFirebase(type, id) {
            return __awaiter(this, void 0, void 0, (function*() {
                return new Promise((resolve, reject) => {
                    var url = "https://kissanimelist.firebaseio.com/Data2/Mal" + type + "/" + id + "/Sites.json";
                    api.request.xhr("GET", url).then(response => __awaiter(this, void 0, void 0, (function*() {
                        var json = j.$.parseJSON(response.responseText);
                        for (var pageKey in json) {
                            var page = json[pageKey];
                            if (api.settings.get(pageKey)) for (var streamKey in page) {
                                var stream = page[streamKey], streamUrl = "https://kissanimelist.firebaseio.com/Data2/" + stream + "/" + encodeURIComponent(streamKey) + ".json", cache = yield api.storage.get("MalToKiss/" + stream + "/" + encodeURIComponent(streamKey), null);
                                if (null != cache && cache.constructor === Object && 0 !== Object.keys(cache).length) var streamJson = cache; else {
                                    var streamRespose = yield api.request.xhr("GET", streamUrl);
                                    streamJson = j.$.parseJSON(streamRespose.responseText);
                                    api.storage.set("MalToKiss/" + stream + "/" + encodeURIComponent(streamKey), streamJson);
                                }
                                streamJson ? id in streamJson.Mal ? ("Crunchyroll" === pageKey && (streamJson.url = streamJson.url + "?season=" + streamKey), 
                                json[pageKey][streamKey] = streamJson) : (con.error("[K2M] Wrong mal id", streamJson), 
                                delete json[pageKey][streamKey]) : (con.error("[K2M] " + pageKey + "/" + streamKey + " not found"), 
                                delete json[pageKey][streamKey]);
                            } else con.log(pageKey + " is deactivated"), delete json[pageKey];
                        }
                        con.log("Mal2Kiss", json), resolve(json);
                    })));
                });
            }));
        }
        function getTooltip(text, style = "", direction = "top") {
            var rNumber = Math.floor(1e3 * Math.random() + 1);
            return '<div id="tt' + rNumber + '" class="icon material-icons" style="font-size:16px; line-height: 0; color: #7f7f7f; padding-bottom: 20px; padding-left: 3px; ' + style + '">contact_support</div>  <div class="mdl-tooltip mdl-tooltip--' + direction + ' mdl-tooltip--large" for="tt' + rNumber + '">' + text + "</div>";
        }
        function epPredictionUI(malid, cacheKey, type = "anime", callback) {
            return __awaiter(this, void 0, void 0, (function*() {
                utils.epPrediction(malid, (function(pre) {
                    return __awaiter(this, void 0, void 0, (function*() {
                        pre || callback(!1);
                        var updateCheckTime = yield api.storage.get("updateCheckTime"), aniCache = yield api.storage.get("mal/" + malid + "/aniSch"), elCache = void 0;
                        if (void 0 !== updateCheckTime && updateCheckTime && "0" !== updateCheckTime && (elCache = yield api.storage.get("updateCheck/" + type + "/" + cacheKey)), 
                        !1 !== pre || void 0 !== elCache) {
                            var UI = {
                                tag: "",
                                text: "",
                                color: "",
                                colorStyle: "",
                                tagEpisode: !1,
                                prediction: pre,
                                aniCache: aniCache,
                                elCache: elCache
                            }, airing = pre.airing, episode = pre.episode;
                            if (void 0 !== aniCache) {
                                var timestamp = 1e3 * aniCache.nextEpTime;
                                if (Date.now() < timestamp) {
                                    episode = aniCache.currentEp;
                                    var delta = (timestamp - Date.now()) / 1e3;
                                    pre.diffDays = Math.floor(delta / 86400), delta -= 86400 * pre.diffDays, pre.diffHours = Math.floor(delta / 3600) % 24, 
                                    delta -= 3600 * pre.diffHours, pre.diffMinutes = Math.floor(delta / 60) % 60, delta -= 60 * pre.diffMinutes;
                                } else Date.now() - timestamp < 864e5 && (episode = aniCache.currentEp + 1);
                            }
                            void 0 !== elCache && void 0 === elCache.error && (elCache.finished || (airing = !0), 
                            elCache.newestEp && "" !== elCache.newestEp && void 0 !== elCache.newestEp && (episode = elCache.newestEp, 
                            UI.color = "red")), "" !== UI.color && (UI.colorStyle = "background-color: #00ff0057;"), 
                            airing ? (pre.airing && (UI.text = api.storage.lang("prediction_Episode", [ pre.diffDays + "d " + pre.diffHours + "h " + pre.diffMinutes + "m" ])), 
                            episode && (UI.tag = '<span class="mal-sync-ep-pre" title="' + UI.text + '">[<span style="' + UI.colorStyle + ';">' + episode + "</span>]</span>", 
                            UI.tagEpisode = episode)) : pre && (UI.text = '<span class="mal-sync-ep-pre">', 
                            UI.text += api.storage.lang("prediction_Airing", [ 7 * pre.diffWeeks + pre.diffDays + "d " + pre.diffHours + "h " + pre.diffMinutes + "m " ]), 
                            UI.text += "</span>"), callback(UI);
                        }
                    }));
                }));
            }));
        }
        function timeDiffToText(delta) {
            var text = "";
            delta /= 1e3;
            var diffDays = Math.floor(delta / 86400);
            delta -= 86400 * diffDays, diffDays && (text += diffDays + "d ");
            var diffHours = Math.floor(delta / 3600) % 24;
            delta -= 3600 * diffHours, diffHours && diffDays < 2 && (text += diffHours + "h ");
            var diffMinutes = Math.floor(delta / 60) % 60;
            return delta -= 60 * diffMinutes, diffMinutes && !diffDays && diffHours < 3 && (text += diffMinutes + "min "), 
            text;
        }
        function canHideTabs() {
            return "undefined" != typeof browser && void 0 !== browser.tabs.hide;
        }
        function epPrediction(malId, callback) {
            return __awaiter(this, void 0, void 0, (function*() {
                if (api.settings.get("epPredictions")) {
                    var timestamp = yield api.storage.get("mal/" + malId + "/release");
                    if (void 0 !== timestamp) {
                        var airing = 1, episode = 0;
                        if (Date.now() < timestamp && (airing = 0), airing) var delta = Math.abs(Date.now() - timestamp) / 1e3; else delta = Math.abs(timestamp - Date.now()) / 1e3;
                        var diffWeeks = Math.floor(delta / 604800);
                        delta -= 604800 * diffWeeks, airing && (delta = 604800 - delta);
                        var diffDays = Math.floor(delta / 86400);
                        delta -= 86400 * diffDays;
                        var diffHours = Math.floor(delta / 3600) % 24;
                        delta -= 3600 * diffHours;
                        var diffMinutes = Math.floor(delta / 60) % 60;
                        delta -= 60 * diffMinutes, airing && (episode = diffWeeks - ((new Date).getFullYear() - new Date(timestamp).getFullYear()), 
                        ++episode > 50 && (episode = 0));
                        var maxEp = yield api.storage.get("mal/" + malId + "/release");
                        if (void 0 === maxEp || episode < maxEp) return void callback({
                            timestamp: timestamp,
                            airing: airing,
                            diffWeeks: diffWeeks,
                            diffDays: diffDays,
                            diffHours: diffHours,
                            diffMinutes: diffMinutes,
                            episode: episode
                        });
                    }
                    callback(!1);
                }
            }));
        }
        function statusTag(status, type, id) {
            var info = {
                anime: {
                    1: {
                        class: "watching",
                        text: "CW",
                        title: "Watching"
                    },
                    2: {
                        class: "completed",
                        text: "CMPL",
                        title: "Completed"
                    },
                    3: {
                        class: "on-hold",
                        text: " HOLD",
                        title: "On-Hold"
                    },
                    4: {
                        class: "dropped",
                        text: "DROP",
                        title: "Dropped"
                    },
                    6: {
                        class: "plantowatch",
                        text: "PTW",
                        title: "Plan to Watch"
                    }
                },
                manga: {
                    1: {
                        class: "reading",
                        text: "CR",
                        title: "Reading"
                    },
                    2: {
                        class: "completed",
                        text: "CMPL",
                        title: "Completed"
                    },
                    3: {
                        class: "on-hold",
                        text: " HOLD",
                        title: "On-Hold"
                    },
                    4: {
                        class: "dropped",
                        text: "DROP",
                        title: "Dropped"
                    },
                    6: {
                        class: "plantoread",
                        text: "PTR",
                        title: "Plan to Read"
                    }
                }
            };
            if ($.each([ 1, 2, 3, 4, 6 ], (function(i, el) {
                info.anime[info.anime[el].title] = info.anime[el], info.manga[info.manga[el].title] = info.manga[el];
            })), status) {
                var tempInfo = info[type][status];
                return ` <a href="https://myanimelist.net/ownlist/${type}/${id}/edit?hideLayout=1" title="${tempInfo.title}" class="Lightbox_AddEdit button_edit ${tempInfo.class}">${tempInfo.text}</a>`;
            }
            return !1;
        }
        function notifications(url, title, message, iconUrl = "") {
            var messageObj = {
                type: "basic",
                title: title,
                message: message,
                iconUrl: iconUrl
            };
            con.log("Notification", url, messageObj), api.storage.get("notificationHistory").then(history => {
                void 0 === history && (history = []), history.length >= 10 && history.shift(), history.push({
                    url: url,
                    title: messageObj.title,
                    message: messageObj.message,
                    iconUrl: messageObj.iconUrl,
                    timestamp: Date.now()
                }), api.storage.set("notificationHistory", history);
            });
            try {
                return chrome.notifications.create(url, messageObj);
            } catch (e) {
                con.error(e);
            }
        }
        function timeCache(key, dataFunction, ttl) {
            return __awaiter(this, void 0, void 0, (function*() {
                return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, (function*() {
                    var value = yield api.storage.get(key);
                    if (void 0 !== value && (new Date).getTime() < value.timestamp) resolve(value.data); else {
                        var result = yield dataFunction();
                        api.storage.set(key, {
                            data: result,
                            timestamp: (new Date).getTime() + ttl
                        }).then(() => {
                            resolve(result);
                        });
                    }
                })));
            }));
        }
        function flashm(text, options) {
            j.$("#flash-div-top").length || function() {
                api.storage.addStyle('.flashinfo{                    transition: max-height 2s, opacity 2s 2s;                 }                 .mini-stealth .flashinfo{                    opacity: 0;                 }                 .flashinfo:hover, #flashinfo-div.hover .flashinfo{                    max-height:5000px !important;                    z-index: 2147483647;                    opacity: 1;                    transition: max-height 2s;                 }                 .flashinfo .synopsis{                    transition: max-height 2s, max-width 2s ease 2s;                 }                 .flashinfo:hover .synopsis{                    max-height:9999px !important;                    max-width: 500px !important;                    transition: max-height 2s;                 }                 #flashinfo-div{                  z-index: 2;                  transition: 2s;                 }                 #flashinfo-div:hover, #flashinfo-div.hover{                  z-index: 2147483647;                 }                                  #flash-div-top, #flash-div-bottom, #flashinfo-div{                    font-family: "Helvetica","Arial",sans-serif;                    color: white;                    font-size: 14px;                    font-weight: 400;                    line-height: 17px;                 }                 #flash-div-top h2, #flash-div-bottom h2, #flashinfo-div h2{                    font-family: "Helvetica","Arial",sans-serif;                    color: white;                    font-size: 14px;                    font-weight: 700;                    line-height: 17px;                    padding: 0;                    margin: 0;                 }                 #flash-div-top a, #flash-div-bottom a, #flashinfo-div a{                    color: #DF6300;                 }');
                var extraClass = "";
                api.settings.get("floatButtonStealth") && (extraClass = "mini-stealth");
                j.$("body").after('<div id="flash-div-top" style="text-align: center;pointer-events: none;position: fixed;top:-5px;width:100%;z-index: 2147483647;left: 0;"></div>        <div id="flash-div-bottom" style="text-align: center;pointer-events: none;position: fixed;bottom:0px;width:100%;z-index: 2147483647;left: 0;"><div id="flash" style="display:none;  background-color: red;padding: 20px; margin: 0 auto;max-width: 60%;          -webkit-border-radius: 20px;-moz-border-radius: 20px;border-radius: 20px;background:rgba(227,0,0,0.6);"></div></div>        <div id="flashinfo-div" class="' + extraClass + '" style="text-align: center;pointer-events: none;position: fixed;bottom:0px;width:100%;left: 0;">');
            }(), con.log("[Flash] Message:", text);
            var colorF = "#323232";
            if (void 0 !== options && void 0 !== options.error && options.error) colorF = "#3e0808";
            var flashdiv = "#flash-div-bottom";
            void 0 !== options && void 0 !== options.position && options.position && (flashdiv = "#flash-div-" + options.position);
            var messClass = "flash";
            if (void 0 !== options && void 0 !== options.type && options.type) {
                var tempClass = "type-" + options.type;
                j.$(flashdiv + " ." + tempClass + ", #flashinfo-div ." + tempClass).removeClass(tempClass).fadeOut({
                    duration: 1e3,
                    queue: !1,
                    complete: function() {
                        j.$(this).remove();
                    }
                }), messClass += " " + tempClass;
            }
            var mess = '<div class="' + messClass + '" style="display:none;">        <div style="display:table; pointer-events: all; padding: 14px 24px 14px 24px; margin: 0 auto; margin-top: 5px; max-width: 60%; -webkit-border-radius: 20px;-moz-border-radius: 20px;border-radius: 2px;color: white;background:' + colorF + '; ">          ' + text + "        </div>      </div>";
            if (void 0 !== options && void 0 !== options.hoverInfo && options.hoverInfo) {
                mess = '<div class="' + (messClass += " flashinfo") + '" style="display:none; max-height: 5000px; overflow: hidden;"><div style="display:table; pointer-events: all; margin: 0 auto; margin-top: -2px; max-width: 60%; -webkit-border-radius: 20px;-moz-border-radius: 20px;border-radius: 2px;color: white;background:' + colorF + '; position: relative;"><div style="max-height: 60vh; overflow-y: auto; padding: 14px 24px 14px 24px;">' + text + "</div></div></div>", 
                j.$("#flashinfo-div").addClass("hover");
                var flashm = j.$(mess).appendTo("#flashinfo-div");
                void 0 !== options && void 0 !== options.minimized && options.minimized && flashm.css("max-height", "8px");
            } else flashm = j.$(mess).appendTo(flashdiv);
            return void 0 !== options && void 0 !== options.permanent && options.permanent ? flashm.slideDown(800) : void 0 !== options && void 0 !== options.hoverInfo && options.hoverInfo ? flashm.slideDown(800).delay(4e3).queue((function() {
                j.$("#flashinfo-div").removeClass("hover"), flashm.css("max-height", "8px");
            })) : flashm.slideDown(800).delay(4e3).slideUp(800, () => {
                j.$(this).remove();
            }), flashm;
        }
        function flashConfirm(message, type, yesCall = (() => {}), cancelCall = (() => {})) {
            return __awaiter(this, void 0, void 0, (function*() {
                return new Promise((function(resolve, reject) {
                    var flasmessage = flashm(message = '<div style="text-align: center;">' + message + '</div><div style="display: flex; justify-content: space-around;"><button class="Yes" style="background-color: transparent; border: none; color: rgb(255,64,129);margin-top: 10px; cursor:pointer;">OK</button><button class="Cancel" style="background-color: transparent; border: none; color: rgb(255,64,129);margin-top: 10px; cursor:pointer;">CANCEL</button></div>', {
                        permanent: !0,
                        position: "top",
                        type: type
                    });
                    flasmessage.find(".Yes").click((function(evt) {
                        resolve(!0), j.$(evt.target).parentsUntil(".flash").fadeOut(300, (function() {
                            j.$(this).remove();
                        })), yesCall();
                    })), flasmessage.find(".Cancel").click((function(evt) {
                        resolve(!1), j.$(evt.target).parentsUntil(".flash").fadeOut(300, (function() {
                            j.$(this).remove();
                        })), cancelCall();
                    }));
                }));
            }));
        }
        var lazyloaded = !1, lazyimages = new Array;
        function lazyload(doc, scrollElement = ".mdl-layout__content") {
            function loadImage(el, fn) {
                if (!j.$(el).is(":visible")) return !1;
                if (j.$(el).hasClass("lazyBack")) j.$(el).css("background-image", "url(" + el.getAttribute("data-src") + ")").removeClass("lazyBack"); else {
                    var img = new Image, src = el.getAttribute("data-src");
                    img.onload = function() {
                        el.parent ? el.parent.replaceChild(img, el) : el.src = src, fn && fn();
                    }, img.src = src;
                }
            }
            for (var i = 0; i < lazyimages.length; i++) $(lazyimages[i]).addClass("init");
            lazyimages = new Array;
            var query = doc.find("img.lazy.init, .lazyBack.init"), processScroll = function() {
                for (var i = 0; i < lazyimages.length; i++) utils.elementInViewport(lazyimages[i], 600) && loadImage(lazyimages[i], (function() {
                    lazyimages.splice(i, i);
                })), $(lazyimages[i]).length || lazyimages.splice(i, i);
            };
            for (i = 0; i < query.length; i++) lazyimages.push(query[i]), $(query[i]).removeClass("init");
            processScroll(), lazyloaded || (lazyloaded = !0, doc.find(scrollElement).scroll((function() {
                processScroll();
            })));
        }
        function elementInViewport(el, horizontalOffset = 0) {
            var rect = el.getBoundingClientRect();
            return rect.top >= 0 && rect.left >= 0 && rect.top - horizontalOffset <= (window.innerHeight || document.documentElement.clientHeight);
        }
    }.call(this, __webpack_require__(3), __webpack_require__(0), __webpack_require__(1), __webpack_require__(2));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    __webpack_require__.r(__webpack_exports__), __webpack_require__.d(__webpack_exports__, "$", (function() {
        return $;
    }));
    var $ = jQuery;
}, function(module, exports) {
    module.exports = function(useSourceMap) {
        var list = [];
        return list.toString = function() {
            return this.map((function(item) {
                var content = function(item, useSourceMap) {
                    var content = item[1] || "", cssMapping = item[3];
                    if (!cssMapping) return content;
                    if (useSourceMap && "function" == typeof btoa) {
                        var sourceMapping = (sourceMap = cssMapping, "/*# sourceMappingURL=data:application/json;charset=utf-8;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */"), sourceURLs = cssMapping.sources.map((function(source) {
                            return "/*# sourceURL=" + cssMapping.sourceRoot + source + " */";
                        }));
                        return [ content ].concat(sourceURLs).concat([ sourceMapping ]).join("\n");
                    }
                    var sourceMap;
                    return [ content ].join("\n");
                }(item, useSourceMap);
                return item[2] ? "@media " + item[2] + "{" + content + "}" : content;
            })).join("");
        }, list.i = function(modules, mediaQuery) {
            "string" == typeof modules && (modules = [ [ null, modules, "" ] ]);
            for (var alreadyImportedModules = {}, i = 0; i < this.length; i++) {
                var id = this[i][0];
                "number" == typeof id && (alreadyImportedModules[id] = !0);
            }
            for (i = 0; i < modules.length; i++) {
                var item = modules[i];
                "number" == typeof item[0] && alreadyImportedModules[item[0]] || (mediaQuery && !item[2] ? item[2] = mediaQuery : mediaQuery && (item[2] = "(" + item[2] + ") and (" + mediaQuery + ")"), 
                list.push(item));
            }
        }, list;
    };
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    function normalizeComponent(scriptExports, render, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {
        var hook, options = "function" == typeof scriptExports ? scriptExports.options : scriptExports;
        if (render && (options.render = render, options.staticRenderFns = staticRenderFns, 
        options._compiled = !0), functionalTemplate && (options.functional = !0), scopeId && (options._scopeId = "data-v-" + scopeId), 
        moduleIdentifier ? (hook = function(context) {
            (context = context || this.$vnode && this.$vnode.ssrContext || this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) || "undefined" == typeof __VUE_SSR_CONTEXT__ || (context = __VUE_SSR_CONTEXT__), 
            injectStyles && injectStyles.call(this, context), context && context._registeredComponents && context._registeredComponents.add(moduleIdentifier);
        }, options._ssrRegister = hook) : injectStyles && (hook = shadowMode ? function() {
            injectStyles.call(this, this.$root.$options.shadowRoot);
        } : injectStyles), hook) if (options.functional) {
            options._injectStyles = hook;
            var originalRender = options.render;
            options.render = function(h, context) {
                return hook.call(context), originalRender(h, context);
            };
        } else {
            var existing = options.beforeCreate;
            options.beforeCreate = existing ? [].concat(existing, hook) : [ hook ];
        }
        return {
            exports: scriptExports,
            options: options
        };
    }
    __webpack_require__.d(__webpack_exports__, "a", (function() {
        return normalizeComponent;
    }));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, utils, con) {
        __webpack_require__.d(__webpack_exports__, "h", (function() {
            return translateList;
        })), __webpack_require__.d(__webpack_exports__, "a", (function() {
            return accessToken;
        })), __webpack_require__.d(__webpack_exports__, "b", (function() {
            return errorHandling;
        })), __webpack_require__.d(__webpack_exports__, "g", (function() {
            return malToKitsu;
        })), __webpack_require__.d(__webpack_exports__, "f", (function() {
            return kitsuToMal;
        })), __webpack_require__.d(__webpack_exports__, "e", (function() {
            return kitsuSlugtoKitsu;
        })), __webpack_require__.d(__webpack_exports__, "i", (function() {
            return userId;
        })), __webpack_require__.d(__webpack_exports__, "d", (function() {
            return getTitle;
        })), __webpack_require__.d(__webpack_exports__, "c", (function() {
            return getCacheKey;
        }));
        var _templates__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        function translateList(aniStatus, malStatus = null) {
            var list = {
                current: 1,
                planned: 6,
                completed: 2,
                dropped: 4,
                on_hold: 3
            };
            return null != malStatus ? Object.keys(list).find(key => list[key] === malStatus) : list[aniStatus];
        }
        function accessToken() {
            return api.settings.get("kitsuToken");
        }
        function errorHandling(res, silent = !1) {
            void 0 !== res.errors && res.errors.forEach(error => {
                switch (parseInt(error.status)) {
                  case 401:
                  case 403:
                    throw silent || utils.flashm(_templates__WEBPACK_IMPORTED_MODULE_0__.a.noLogin, {
                        error: !0,
                        type: "error"
                    }), error.message;

                  case 404:
                    silent || utils.flashm("kitsu: " + error.title, {
                        error: !0,
                        type: "error"
                    });
                    break;

                  default:
                    throw silent || utils.flashm("kitsu: " + error.title, {
                        error: !0,
                        type: "error"
                    }), error.message;
                }
            });
        }
        function malToKitsu(malid, type) {
            return api.request.xhr("Get", {
                url: "https://kitsu.io/api/edge/mappings?filter[externalSite]=myanimelist/" + type + "&filter[externalId]=" + malid + "&include=item&fields[item]=id",
                headers: {
                    "Content-Type": "application/vnd.api+json",
                    Accept: "application/vnd.api+json"
                }
            }).then(response => {
                return JSON.parse(response.responseText);
            });
        }
        function kitsuToMal(kitsuId, type) {
            return api.request.xhr("Get", {
                url: "https://kitsu.io/api/edge/" + type + "/" + kitsuId + "/mappings?filter[externalSite]=myanimelist/" + type,
                headers: {
                    "Content-Type": "application/vnd.api+json",
                    Accept: "application/vnd.api+json"
                }
            }).then(response => {
                var res = JSON.parse(response.responseText);
                return con.log("[KtoM]", res), void 0 !== res.data && res.data.length ? res.data[0].attributes.externalId : null;
            });
        }
        function kitsuSlugtoKitsu(kitsuSlug, type) {
            var headers = {
                "Content-Type": "application/vnd.api+json",
                Accept: "application/vnd.api+json"
            };
            return accessToken() && (headers.Authorization = "Bearer " + accessToken()), api.request.xhr("Get", {
                url: "https://kitsu.io/api/edge/" + type + "?filter[slug]=" + kitsuSlug + "&page[limit]=1&include=mappings",
                headers: headers
            }).then(response => {
                var res = JSON.parse(response.responseText), malId = NaN;
                if (void 0 !== res && void 0 !== res.included) for (var k = 0; k < res.included.length; k++) {
                    var mapping = res.included[k];
                    if ("mappings" == mapping.type && mapping.attributes.externalSite === "myanimelist/" + type) {
                        malId = mapping.attributes.externalId, res.included.splice(k, 1);
                        break;
                    }
                }
                return {
                    res: res,
                    malId: malId
                };
            });
        }
        function userId() {
            return __awaiter(this, void 0, void 0, (function*() {
                var userId = yield api.storage.get("kitsuUserId");
                return void 0 !== userId ? userId : api.request.xhr("Get", {
                    url: "https://kitsu.io/api/edge/users?filter[self]=true",
                    headers: {
                        Authorization: "Bearer " + accessToken(),
                        "Content-Type": "application/vnd.api+json",
                        Accept: "application/vnd.api+json"
                    }
                }).then(response => {
                    var res = JSON.parse(response.responseText);
                    if (con.log(res), void 0 === res.data || !res.data.length || void 0 === res.data[0]) throw utils.flashm(_templates__WEBPACK_IMPORTED_MODULE_0__.a.noLogin, {
                        error: !0,
                        type: "error"
                    }), "Not authentificated";
                    return api.storage.set("kitsuUserId", res.data[0].id), res.data[0].id;
                });
            }));
        }
        function getTitle(titles) {
            var title = titles.en;
            if (void 0 !== title && title || (title = titles.en_jp), void 0 !== title && title || (title = titles.ja_jp), 
            void 0 === title || !title) {
                var keys = Object.values(titles).filter(obj => obj);
                if (!keys.length) return "No Title";
                title = keys[0];
            }
            return title;
        }
        function getCacheKey(id, kitsuId) {
            return isNaN(id) || !id ? "kitsu:" + kitsuId : id;
        }
    }).call(this, __webpack_require__(0), __webpack_require__(2), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, con, j, utils) {
        __webpack_require__.d(__webpack_exports__, "b", (function() {
            return client_id;
        })), __webpack_require__.d(__webpack_exports__, "h", (function() {
            return translateList;
        })), __webpack_require__.d(__webpack_exports__, "c", (function() {
            return getCacheKey;
        })), __webpack_require__.d(__webpack_exports__, "d", (function() {
            return getEpisode;
        })), __webpack_require__.d(__webpack_exports__, "f", (function() {
            return simklIdToMal;
        })), __webpack_require__.d(__webpack_exports__, "g", (function() {
            return syncList;
        })), __webpack_require__.d(__webpack_exports__, "e", (function() {
            return getSingle;
        })), __webpack_require__.d(__webpack_exports__, "a", (function() {
            return call;
        }));
        var cacheList, _templates__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(59), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        }, client_id = "39e8640b6f1a60aaf60f3f3313475e830517badab8048a4e52ff2d10deb2b9b0";
        function translateList(simklStatus, malStatus = null) {
            var list = {
                watching: 1,
                plantowatch: 6,
                completed: 2,
                notinteresting: 4,
                hold: 3
            };
            return null != malStatus ? Object.keys(list).find(key => list[key] === malStatus) : list[simklStatus];
        }
        function getCacheKey(id, simklId) {
            return isNaN(id) || !id ? "simkl:" + simklId : id;
        }
        function getEpisode(episode) {
            if ("number" == typeof episode) return episode;
            if (episode) {
                var temp = episode.match(/e\d+/i);
                if (null !== temp) {
                    var episodePart = parseInt(temp[0].replace(/\D/, ""));
                    return isNaN(episodePart) ? 0 : episodePart;
                }
            }
            return 0;
        }
        function simklIdToMal(simklId) {
            return call("https://api.simkl.com/anime/" + simklId, {
                extended: "full"
            }, !0).then(res => void 0 === res.ids.mal ? null : res.ids.mal);
        }
        function syncList(lazy = !1) {
            return __awaiter(this, void 0, void 0, (function*() {
                if (void 0 === cacheList) cacheList = yield api.storage.get("simklList"); else if (lazy) return cacheList;
                var lastCheck = yield api.storage.get("simklLastCheck"), activity = yield call("https://api.simkl.com/sync/activities");
                if (con.log("Activity", lastCheck, activity.anime), lastCheck && lastCheck.removed_from_list !== activity.anime.removed_from_list) {
                    var checkRemoveList = yield call("https://api.simkl.com/sync/all-items/anime"), newCacheList = {};
                    if (checkRemoveList) for (var i = 0; i < checkRemoveList.anime.length; i++) {
                        const el = checkRemoveList.anime[i];
                        null != cacheList[el.show.ids.simkl] && (newCacheList[el.show.ids.simkl] = cacheList[el.show.ids.simkl]);
                    }
                    cacheList = newCacheList, con.log("remove", cacheList);
                }
                var dateFrom = "";
                if (lastCheck && cacheList && (dateFrom = "date_from=" + lastCheck.all, lastCheck.all === activity.anime.all)) return con.log("Up to date"), 
                cacheList;
                if (cacheList || (cacheList = {}), lastCheck && lastCheck.rated_at !== activity.anime.rated_at) {
                    var rated = yield call("https://api.simkl.com/sync/ratings/anime?" + dateFrom);
                    if (con.log("ratedUpdate", rated), rated) for (i = 0; i < rated.anime.length; i++) {
                        const el = rated.anime[i];
                        cacheList[el.show.ids.simkl] = el;
                    }
                }
                var list = yield call("https://api.simkl.com/sync/all-items/anime?" + dateFrom);
                if (con.log("listUpdate", list), list) for (i = 0; i < list.anime.length; i++) {
                    const el = list.anime[i];
                    cacheList[el.show.ids.simkl] = el;
                }
                return con.log("totalList", cacheList), yield api.storage.set("simklList", cacheList), 
                yield api.storage.set("simklLastCheck", activity.anime), cacheList;
            }));
        }
        function getSingle(ids, lazy = !1) {
            return __awaiter(this, void 0, void 0, (function*() {
                var list = yield syncList(lazy);
                if (ids.simkl) {
                    if (null != list[ids.simkl]) return list[ids.simkl];
                } else {
                    if (!ids.mal) throw "No id passed";
                    for (var listVal = Object.values(list), i = 0; i < listVal.length; i++) {
                        var el = listVal[i];
                        if (void 0 !== el.show.ids.mal && el.show.ids.mal == ids.mal) return el;
                    }
                }
                return null;
            }));
        }
        function call(url, sData = {}, asParameter = !1, methode = "GET", login = !0) {
            return __awaiter(this, void 0, void 0, (function*() {
                asParameter && (url += "?" + j.$.param(sData)), con.log("call", methode, url, sData);
                var headers = {
                    Authorization: "Bearer " + api.settings.get("simklToken"),
                    "simkl-api-key": client_id,
                    Accept: "application/vnd.api+json",
                    "Content-Type": "application/json"
                };
                return login || (con.log("No login"), delete headers.Authorization), api.request.xhr(methode, {
                    url: url,
                    headers: headers,
                    data: sData
                }).then(response => __awaiter(this, void 0, void 0, (function*() {
                    switch (response.status) {
                      case 200:
                      case 201:
                      case 204:
                      case 302:
                        break;

                      case 401:
                        if (login) return call(url, sData, asParameter, methode, !1);
                        throw utils.flashm(_templates__WEBPACK_IMPORTED_MODULE_0__.a.noLogin, {
                            error: !0,
                            type: "error"
                        }), getThrowError();

                      default:
                        throw utils.flashm("Simkl: " + getErrorText(), {
                            error: !0,
                            type: "error"
                        }), getThrowError();
                    }
                    try {
                        return JSON.parse(response.responseText);
                    } catch (e) {
                        throw con.error(response), e;
                    }
                    function getErrorText() {
                        return JSON.parse(response.responseText).error;
                    }
                    function getThrowError() {
                        return {
                            status: response.status,
                            message: getErrorText()
                        };
                    }
                })));
            }));
        }
    }).call(this, __webpack_require__(0), __webpack_require__(1), __webpack_require__(3), __webpack_require__(2));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, utils, con) {
        function translateList(aniStatus, malStatus = null) {
            var list = {
                CURRENT: 1,
                PLANNING: 6,
                COMPLETED: 2,
                DROPPED: 4,
                PAUSED: 3,
                REPEATING: 1
            };
            return null != malStatus ? Object.keys(list).find(key => list[key] === malStatus) : list[aniStatus];
        }
        function accessToken() {
            return api.settings.get("anilistToken");
        }
        function errorHandling(res, silent = !1) {
            if (void 0 !== res.errors) for (var i = 0, len = res.errors.length; i < len; i++) {
                var error = res.errors[i];
                switch (error.status) {
                  case 400:
                    if (!silent) return utils.flashm(api.storage.lang("Anilist_Authenticate"), {
                        error: !0,
                        type: "error"
                    }), "noLogin";

                  case 404:
                    if (!silent) {
                        utils.flashm("anilist: " + error.message, {
                            error: !0,
                            type: "error"
                        });
                        break;
                    }

                  default:
                    throw silent || utils.flashm("anilist: " + error.message, {
                        error: !0,
                        type: "error"
                    }), error.message;
                }
            }
            return !0;
        }
        function aniListToMal(anilistId, type) {
            var variables = {
                id: anilistId,
                type: type.toUpperCase()
            };
            return api.request.xhr("POST", {
                url: "https://graphql.anilist.co",
                headers: {
                    "Content-Type": "application/json",
                    Accept: "application/json"
                },
                data: JSON.stringify({
                    query: "\n  query ($id: Int, $type: MediaType) {\n    Media (id: $id, type: $type) {\n      id\n      idMal\n    }\n  }\n  ",
                    variables: variables
                })
            }).then(response => {
                var res = JSON.parse(response.responseText);
                return con.log(res), errorHandling(res), res.data.Media.idMal;
            });
        }
        function getCacheKey(id, kitsuId) {
            return isNaN(id) || !id ? "anilist:" + kitsuId : id;
        }
        __webpack_require__.d(__webpack_exports__, "e", (function() {
            return translateList;
        })), __webpack_require__.d(__webpack_exports__, "a", (function() {
            return accessToken;
        })), __webpack_require__.d(__webpack_exports__, "c", (function() {
            return errorHandling;
        })), __webpack_require__.d(__webpack_exports__, "b", (function() {
            return aniListToMal;
        })), __webpack_require__.d(__webpack_exports__, "d", (function() {
            return getCacheKey;
        }));
    }).call(this, __webpack_require__(0), __webpack_require__(2), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, con) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return entryClass;
        })), __webpack_require__.d(__webpack_exports__, "b", (function() {
            return search;
        }));
        var _MyAnimeList_entryClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15), _AniList_entryClass__WEBPACK_IMPORTED_MODULE_2__ = (__webpack_require__(72), 
        __webpack_require__(21)), _Kitsu_entryClass__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_require__(73), 
        __webpack_require__(22)), _Simkl_entryClass__WEBPACK_IMPORTED_MODULE_6__ = (__webpack_require__(74), 
        __webpack_require__(23)), _Local_entryClass__WEBPACK_IMPORTED_MODULE_8__ = (__webpack_require__(75), 
        __webpack_require__(76)), _MyAnimeList_metadata__WEBPACK_IMPORTED_MODULE_10__ = (__webpack_require__(77), 
        __webpack_require__(60)), _AniList_metadata__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(61), _Kitsu_metadata__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(62), _Simkl_metadata__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(63);
        function getSyncMode(type = "") {
            var mode = api.settings.get("syncMode");
            return "SIMKL" !== mode || "manga" !== type && -1 === type.indexOf("/manga/") ? mode : api.settings.get("syncModeSimkl");
        }
        function entryClass(url, miniMAL = !1, silent = !1, state = null) {
            if (/^local:\/\//i.test(url)) return new _Local_entryClass__WEBPACK_IMPORTED_MODULE_8__.a(url, miniMAL, silent, state);
            var syncMode = getSyncMode(url);
            if (con.log("Entry", url, syncMode), "MAL" == syncMode) return new _MyAnimeList_entryClass__WEBPACK_IMPORTED_MODULE_0__.a(url, miniMAL);
            if ("ANILIST" == syncMode) return new _AniList_entryClass__WEBPACK_IMPORTED_MODULE_2__.a(url, miniMAL, silent);
            if ("KITSU" == syncMode) return new _Kitsu_entryClass__WEBPACK_IMPORTED_MODULE_4__.a(url, miniMAL, silent);
            if ("SIMKL" == syncMode) return new _Simkl_entryClass__WEBPACK_IMPORTED_MODULE_6__.a(url, miniMAL, silent);
            throw "Unknown sync mode";
        }
        function search(keyword, type, options = {}, sync = !1) {
            var syncMode = getSyncMode(type);
            return "KITSU" == syncMode ? Object(_Kitsu_metadata__WEBPACK_IMPORTED_MODULE_12__.b)(keyword, type, options, sync) : "ANILIST" == syncMode ? Object(_AniList_metadata__WEBPACK_IMPORTED_MODULE_11__.b)(keyword, type, options, sync) : "SIMKL" == syncMode ? Object(_Simkl_metadata__WEBPACK_IMPORTED_MODULE_13__.b)(keyword, type, options, sync) : Object(_MyAnimeList_metadata__WEBPACK_IMPORTED_MODULE_10__.b)(keyword, type, options, sync);
        }
    }).call(this, __webpack_require__(0), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    __webpack_require__.d(__webpack_exports__, "b", (function() {
        return pages;
    })), __webpack_require__.d(__webpack_exports__, "a", (function() {
        return pageSearch;
    }));
    var _Kissanime_main__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(90), _Kissmanga_main__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(91), _nineAnime_main__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(92), _Crunchyroll_main__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(93), _Mangadex_main__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(94), _Gogoanime_main__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(95), _Anime4you_main__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(96), _Branitube_main__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(97), _Turkanime_main__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(98), _Twistmoe_main__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(99), _Emby_main__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(100), _Plex_main__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(101), _Netflix_main__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(102), _animepahe_main__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(103), _Animeflv_main__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(104), _Jkanime_main__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(105), _Vrv_main__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(106), _Proxer_main__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(107), _Novelplanet_main__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(108), _fourAnime_main__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(109), _Dreamanimes_main__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(110), _animeultima_main__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(111), _Aniflix_main__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(112), _AnimeDaisuki_main__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(113), _Animefreak_main__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(114), _AnimePlanet_main__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(115), _KickAssAnime_main__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(116), _RiiE_main__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(117), _AnimeKisa_main__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(118), _Wakanim_main__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(119), _AnimeIndo_main__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(120), _Shinden_main__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(121), _Funimation_main__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(122), _Voiranime_main__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(123), _DubbedAnime_main__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(124), _VIZ_main__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(125), _MangaNelo_main__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(126), _Mangakakalot_main__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(127), _NekoSama_main__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(128), _AnimeZone_main__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(129), _AnimeOdcinki_main__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(130), _Animeflix_main__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(131), _AnimeFever_main__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(132), _serimanga_main__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(133), _mangadenizi_main__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(134), _moeclip_main__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(135), _mangalivre_main__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(136), _tmofans_main__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(137), _unionmangas_main__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(138), _myAnime_main__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(139), _MangaPlus_main__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(140), _JapScan_main__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(141), _MangaKisa_main__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(142), _Goyabu_main__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(143), _AnimesVision_main__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(144), _Hulu_main__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(145), _Aniwatch_main__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(146), _Hidive_main__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(147), _JaiminisBox_main__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(148), _FallenAngels_main__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(149), _animestrue_main__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(150);
    const pages = {
        Kissanime: _Kissanime_main__WEBPACK_IMPORTED_MODULE_0__.a,
        Kissmanga: _Kissmanga_main__WEBPACK_IMPORTED_MODULE_1__.a,
        nineAnime: _nineAnime_main__WEBPACK_IMPORTED_MODULE_2__.a,
        Crunchyroll: _Crunchyroll_main__WEBPACK_IMPORTED_MODULE_3__.a,
        Vrv: _Vrv_main__WEBPACK_IMPORTED_MODULE_16__.a,
        Mangadex: _Mangadex_main__WEBPACK_IMPORTED_MODULE_4__.a,
        Gogoanime: _Gogoanime_main__WEBPACK_IMPORTED_MODULE_5__.a,
        Twistmoe: _Twistmoe_main__WEBPACK_IMPORTED_MODULE_9__.a,
        Anime4you: _Anime4you_main__WEBPACK_IMPORTED_MODULE_6__.a,
        Branitube: _Branitube_main__WEBPACK_IMPORTED_MODULE_7__.a,
        Turkanime: _Turkanime_main__WEBPACK_IMPORTED_MODULE_8__.a,
        animepahe: _animepahe_main__WEBPACK_IMPORTED_MODULE_13__.a,
        Netflix: _Netflix_main__WEBPACK_IMPORTED_MODULE_12__.a,
        animeflv: _Animeflv_main__WEBPACK_IMPORTED_MODULE_14__.a,
        Jkanime: _Jkanime_main__WEBPACK_IMPORTED_MODULE_15__.a,
        Proxer: _Proxer_main__WEBPACK_IMPORTED_MODULE_17__.a,
        Wakanim: _Wakanim_main__WEBPACK_IMPORTED_MODULE_29__.a,
        Emby: _Emby_main__WEBPACK_IMPORTED_MODULE_10__.a,
        Plex: _Plex_main__WEBPACK_IMPORTED_MODULE_11__.a,
        Novelplanet: _Novelplanet_main__WEBPACK_IMPORTED_MODULE_18__.a,
        fourAnime: _fourAnime_main__WEBPACK_IMPORTED_MODULE_19__.a,
        Dreamanimes: _Dreamanimes_main__WEBPACK_IMPORTED_MODULE_20__.a,
        animeultima: _animeultima_main__WEBPACK_IMPORTED_MODULE_21__.a,
        Aniflix: _Aniflix_main__WEBPACK_IMPORTED_MODULE_22__.a,
        Animefreak: _Animefreak_main__WEBPACK_IMPORTED_MODULE_24__.a,
        AnimeDaisuki: _AnimeDaisuki_main__WEBPACK_IMPORTED_MODULE_23__.a,
        AnimePlanet: _AnimePlanet_main__WEBPACK_IMPORTED_MODULE_25__.a,
        KickAssAnime: _KickAssAnime_main__WEBPACK_IMPORTED_MODULE_26__.a,
        RiiE: _RiiE_main__WEBPACK_IMPORTED_MODULE_27__.a,
        AnimeKisa: _AnimeKisa_main__WEBPACK_IMPORTED_MODULE_28__.a,
        AnimeIndo: _AnimeIndo_main__WEBPACK_IMPORTED_MODULE_30__.a,
        Shinden: _Shinden_main__WEBPACK_IMPORTED_MODULE_31__.a,
        Funimation: _Funimation_main__WEBPACK_IMPORTED_MODULE_32__.a,
        Voiranime: _Voiranime_main__WEBPACK_IMPORTED_MODULE_33__.a,
        DubbedAnime: _DubbedAnime_main__WEBPACK_IMPORTED_MODULE_34__.a,
        MangaNelo: _MangaNelo_main__WEBPACK_IMPORTED_MODULE_36__.a,
        Mangakakalot: _Mangakakalot_main__WEBPACK_IMPORTED_MODULE_37__.a,
        VIZ: _VIZ_main__WEBPACK_IMPORTED_MODULE_35__.a,
        NekoSama: _NekoSama_main__WEBPACK_IMPORTED_MODULE_38__.a,
        AnimeOdcinki: _AnimeOdcinki_main__WEBPACK_IMPORTED_MODULE_40__.a,
        AnimeZone: _AnimeZone_main__WEBPACK_IMPORTED_MODULE_39__.a,
        Animeflix: _Animeflix_main__WEBPACK_IMPORTED_MODULE_41__.a,
        AnimeFever: _AnimeFever_main__WEBPACK_IMPORTED_MODULE_42__.a,
        serimanga: _serimanga_main__WEBPACK_IMPORTED_MODULE_43__.a,
        mangadenizi: _mangadenizi_main__WEBPACK_IMPORTED_MODULE_44__.a,
        moeclip: _moeclip_main__WEBPACK_IMPORTED_MODULE_45__.a,
        mangalivre: _mangalivre_main__WEBPACK_IMPORTED_MODULE_46__.a,
        tmofans: _tmofans_main__WEBPACK_IMPORTED_MODULE_47__.a,
        unionmangas: _unionmangas_main__WEBPACK_IMPORTED_MODULE_48__.a,
        myAnime: _myAnime_main__WEBPACK_IMPORTED_MODULE_49__.a,
        MangaPlus: _MangaPlus_main__WEBPACK_IMPORTED_MODULE_50__.a,
        JapScan: _JapScan_main__WEBPACK_IMPORTED_MODULE_51__.a,
        MangaKisa: _MangaKisa_main__WEBPACK_IMPORTED_MODULE_52__.a,
        Goyabu: _Goyabu_main__WEBPACK_IMPORTED_MODULE_53__.a,
        AnimesVision: _AnimesVision_main__WEBPACK_IMPORTED_MODULE_54__.a,
        Hulu: _Hulu_main__WEBPACK_IMPORTED_MODULE_55__.a,
        Aniwatch: _Aniwatch_main__WEBPACK_IMPORTED_MODULE_56__.a,
        Hidive: _Hidive_main__WEBPACK_IMPORTED_MODULE_57__.a,
        JaiminisBox: _JaiminisBox_main__WEBPACK_IMPORTED_MODULE_58__.a,
        FallenAngels: _FallenAngels_main__WEBPACK_IMPORTED_MODULE_59__.a,
        animestrue: _animestrue_main__WEBPACK_IMPORTED_MODULE_60__.a
    }, pageSearch = {
        Crunchyroll: {
            name: "Crunchyroll",
            type: "anime",
            domain: "www.crunchyroll.com",
            searchUrl: titleEncoded => "http://www.crunchyroll.com/search?q=" + titleEncoded
        },
        Netflix: {
            name: "Netflix",
            type: "anime",
            domain: "www.netflix.com",
            searchUrl: titleEncoded => "https://www.netflix.com/search?q=" + titleEncoded
        },
        nineAnime: {
            name: "9Anime",
            type: "anime",
            domain: "9anime.to",
            searchUrl: titleEncoded => "https://www1.9anime.to/search?keyword=" + titleEncoded
        },
        Kissanime: {
            name: "Kissanime",
            type: "anime",
            domain: "kissanime.ru",
            searchUrl: titleEncoded => "https://kissanime.ru/Search/Anime?keyword=" + titleEncoded
        },
        Gogoanime: {
            name: "Gogoanime",
            type: "anime",
            domain: "www.gogoanime.in",
            searchUrl: titleEncoded => "http://gogoanimes.co/search.html?keyword=" + titleEncoded
        },
        Turkanime: {
            name: "Turkanime",
            type: "anime",
            domain: "www.turkanime.tv/",
            searchUrl: titleEncoded => "https://www.google.com/search?q=" + titleEncoded + "+site:turkanime.tv/anime/ OR site:turkanime.net/anime/"
        },
        animeflv: {
            name: "animeflv",
            type: "anime",
            domain: "animeflv.net",
            searchUrl: titleEncoded => "https://animeflv.net/browse?q=" + titleEncoded
        },
        Jkanime: {
            name: "Jkanime",
            type: "anime",
            domain: "jkanime.net",
            searchUrl: titleEncoded => "https://jkanime.net/buscar/" + titleEncoded + "/1/"
        },
        Mangadex: {
            name: "Mangadex",
            type: "manga",
            domain: "mangadex.org",
            searchUrl: titleEncoded => "https://mangadex.org/quick_search/" + titleEncoded
        },
        Kissmanga: {
            name: "Kissmanga",
            type: "manga",
            domain: "kissmanga.com",
            searchUrl: titleEncoded => "https://kissmanga.com/Search/Manga?keyword=" + titleEncoded
        },
        Novelplanet: {
            name: "Novelplanet",
            type: "manga",
            domain: "novelplanet.com",
            searchUrl: titleEncoded => "https://novelplanet.com/NovelList?name=" + titleEncoded
        },
        Proxeranime: {
            name: "Proxer",
            type: "anime",
            domain: "proxer.me",
            searchUrl: titleEncoded => "https://proxer.me/search?s=search&name=" + titleEncoded + "&typ=all-anime&tags=&notags=#top"
        },
        Animeflix: {
            name: "Animeflix",
            type: "anime",
            domain: "animeflix.io",
            searchUrl: titleEncoded => "https://www.google.com/search?q=" + titleEncoded + "+site:animeflix.io/shows/"
        },
        Proxermanga: {
            name: "Proxer",
            type: "manga",
            domain: "proxer.me",
            searchUrl: titleEncoded => "https://proxer.me/search?s=search&name=" + titleEncoded + "&typ=all-manga&tags=&notags=#top"
        },
        MangaUpdates: {
            name: "Mangaupdates",
            type: "manga",
            domain: "mangaupdates.com",
            searchUrl: titleEncoded => "https://www.mangaupdates.com/series.html?search=" + titleEncoded
        },
        Novelupdates: {
            name: "Novel Updates [No Sync]",
            type: "manga",
            domain: "www.novelupdates.com",
            searchUrl: titleEncoded => "https://www.novelupdates.com/?s=" + titleEncoded
        },
        Doujinshi: {
            name: "Doujinshi",
            type: "manga",
            domain: "www.doujinshi.org",
            searchUrl: titleEncoded => "https://www.doujinshi.org/search/simple/?T=objects&sn=" + titleEncoded
        },
        AniDb: {
            name: "aniDB",
            type: "anime",
            domain: "anidb.net",
            searchUrl: titleEncoded => "https://anidb.net/anime/?do.search=1&adb.search=" + titleEncoded
        },
        AniList: {
            name: "AniList",
            type: "anime",
            domain: "anilist.co",
            searchUrl: titleEncoded => "https://anilist.co/search/anime?sort=SEARCH_MATCH&search=" + titleEncoded
        },
        AniListManga: {
            name: "AniList",
            type: "manga",
            domain: "anilist.co",
            searchUrl: titleEncoded => "https://anilist.co/search/manga?sort=SEARCH_MATCH&search=" + titleEncoded
        },
        Kitsu: {
            name: "Kitsu",
            type: "anime",
            domain: "kitsu.io",
            searchUrl: titleEncoded => "https://kitsu.io/anime?text=" + titleEncoded
        },
        KitsuManga: {
            name: "Kitsu",
            type: "manga",
            domain: "kitsu.io",
            searchUrl: titleEncoded => "https://kitsu.io/manga?text=" + titleEncoded
        },
        SimklAnime: {
            name: "Simkl",
            type: "anime",
            domain: "simkl.com",
            searchUrl: titleEncoded => "https://simkl.com/search/?type=anime&q=" + titleEncoded
        },
        MALManga: {
            name: "MyAnimeList",
            type: "manga",
            domain: "myanimelist.net",
            searchUrl: titleEncoded => "https://myanimelist.net/manga.php?q=" + titleEncoded
        },
        MALAnime: {
            name: "MyAnimeList",
            type: "anime",
            domain: "myanimelist.net",
            searchUrl: titleEncoded => "https://myanimelist.net/anime.php?q=" + titleEncoded
        },
        LiveChart: {
            name: "LiveChart",
            type: "anime",
            domain: "livechart.me",
            searchUrl: titleEncoded => "https://www.livechart.me/search?q=" + titleEncoded
        },
        AnimeNewsNetwork: {
            name: "AnimeNewsNetwork",
            type: "anime",
            domain: "animenewsnetwork.com",
            searchUrl: titleEncoded => "https://www.animenewsnetwork.com/encyclopedia/search/name?only=anime&q=" + titleEncoded
        },
        AnimeNewsNetworkManga: {
            name: "AnimeNewsNetwork",
            type: "manga",
            domain: "animenewsnetwork.com",
            searchUrl: titleEncoded => "https://www.animenewsnetwork.com/encyclopedia/search/name?only=manga&q=" + titleEncoded
        },
        AnimePlanetAnime: {
            name: "Anime-Planet",
            type: "anime",
            domain: "anime-planet.com",
            searchUrl: titleEncoded => "https://www.anime-planet.com/search.php?search_type=anime&search=" + titleEncoded
        },
        AnimePlanetManga: {
            name: "Anime-Planet",
            type: "manga",
            domain: "anime-planet.com",
            searchUrl: titleEncoded => "https://www.anime-planet.com/search.php?search_type=manga&search=" + titleEncoded
        },
        AniSeachAnime: {
            name: "AniSearch",
            type: "anime",
            domain: "anisearch.com",
            searchUrl: titleEncoded => "https://www.anisearch.com/anime/index?text=" + titleEncoded
        },
        AniSeachManga: {
            name: "AniSearch",
            type: "manga",
            domain: "anisearch.com",
            searchUrl: titleEncoded => "https://www.anisearch.com/manga/index?text=" + titleEncoded
        },
        Hidive: {
            name: "Hidive",
            type: "anime",
            domain: "www.hidive.com",
            searchUrl: titleEncoded => "http://www.hidive.com/search?q=" + titleEncoded
        }
    };
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(con, api) {
        __webpack_require__.d(__webpack_exports__, "b", (function() {
            return generateSync;
        })), __webpack_require__.d(__webpack_exports__, "e", (function() {
            return getType;
        })), __webpack_require__.d(__webpack_exports__, "g", (function() {
            return syncList;
        })), __webpack_require__.d(__webpack_exports__, "f", (function() {
            return retriveLists;
        })), __webpack_require__.d(__webpack_exports__, "d", (function() {
            return getListProvider;
        })), __webpack_require__.d(__webpack_exports__, "c", (function() {
            return getList;
        })), __webpack_require__.d(__webpack_exports__, "a", (function() {
            return background;
        }));
        var _provider_MyAnimeList_entryClass_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15), _provider_AniList_entryClass_ts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21), _provider_Kitsu_entryClass_ts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(22), _provider_Simkl_entryClass_ts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23), _provider_MyAnimeList_list__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(24), _provider_AniList_list__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(25), _provider_Kitsu_list__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(26), _provider_Simkl_list__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(16), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        function generateSync(masterList, slaveLists, mode, typeArray, list, missing) {
            for (var i in mapToArray(masterList, list, !0), slaveLists) mapToArray(slaveLists[i], list, !1);
            for (var i in list) changeCheck(list[i], mode), missingCheck(list[i], missing, typeArray, mode);
        }
        function getType(url) {
            if (-1 !== url.indexOf("anilist.co")) return "ANILIST";
            if (-1 !== url.indexOf("kitsu.io")) return "KITSU";
            if (-1 !== url.indexOf("myanimelist.net")) return "MAL";
            if (-1 !== url.indexOf("simkl.com")) return "SIMKL";
            throw "Type not found";
        }
        function mapToArray(provierList, resultList, masterM = !1) {
            for (var i = 0; i < provierList.length; i++) {
                var el = provierList[i], temp = resultList[el.malId];
                void 0 === temp && (temp = {
                    diff: !1,
                    master: {},
                    slaves: []
                }), masterM ? temp.master = el : (el.diff = {}, temp.slaves.push(el)), !isNaN(el.malId) && el.malId && (resultList[el.malId] = temp);
            }
        }
        function changeCheck(item, mode) {
            if (item.master && item.master.uid) for (var i = 0; i < item.slaves.length; i++) {
                var slave = item.slaves[i];
                slave.watchedEp !== item.master.watchedEp && (2 == item.master.status ? slave.watchedEp !== slave.totalEp && (item.diff = !0, 
                slave.diff.watchedEp = slave.totalEp) : (item.diff = !0, slave.diff.watchedEp = item.master.watchedEp)), 
                slave.status !== item.master.status && (item.diff = !0, slave.diff.status = item.master.status), 
                slave.score !== item.master.score && (item.diff = !0, slave.diff.score = item.master.score);
            }
        }
        function missingCheck(item, missing, types, mode) {
            if (item.master && item.master.uid) {
                var tempTypes = [];
                tempTypes.push(getType(item.master.url));
                for (var i = 0; i < item.slaves.length; i++) {
                    var slave = item.slaves[i];
                    tempTypes.push(getType(slave.url));
                }
                for (var t in types) {
                    var type = types[t];
                    tempTypes.includes(type) || missing.push({
                        title: item.master.title,
                        syncType: type,
                        malId: item.master.malId,
                        watchedEp: item.master.watchedEp,
                        score: item.master.score,
                        status: item.master.status,
                        url: "https://myanimelist.net/" + item.master.type + "/" + item.master.malId,
                        error: null
                    });
                }
            }
        }
        function syncList(list, thisMissing) {
            return __awaiter(this, void 0, void 0, (function*() {
                for (var i in list) {
                    var el = list[i];
                    if (el.diff) try {
                        yield syncListItem(el), el.diff = !1;
                    } catch (e) {
                        con.error(e);
                    }
                }
                var missing = thisMissing.slice();
                for (var i in missing) {
                    var miss = missing[i];
                    con.log("Sync missing", miss), yield syncMissing(miss).then(() => {
                        thisMissing.splice(thisMissing.indexOf(miss), 1);
                    }).catch(e => {
                        con.error("Error", e), miss.error = e;
                    });
                }
            }));
        }
        function syncListItem(item) {
            return __awaiter(this, void 0, void 0, (function*() {
                for (var i = 0; i < item.slaves.length; i++) {
                    var slave = item.slaves[i];
                    con.log("sync list item", slave), yield syncItem(slave, getType(slave.url));
                }
            }));
        }
        function syncMissing(item) {
            return __awaiter(this, void 0, void 0, (function*() {
                return item.diff = {
                    watchedEp: item.watchedEp,
                    status: item.status,
                    score: item.score
                }, syncItem(item, item.syncType);
            }));
        }
        function syncItem(slave, pageType) {
            if (0 !== Object.keys(slave.diff).length) {
                if ("MAL" == pageType) var entryClass = new _provider_MyAnimeList_entryClass_ts__WEBPACK_IMPORTED_MODULE_0__.a(slave.url, !0, !0); else if ("ANILIST" == pageType) entryClass = new _provider_AniList_entryClass_ts__WEBPACK_IMPORTED_MODULE_1__.a(slave.url, !0, !0); else if ("KITSU" == pageType) entryClass = new _provider_Kitsu_entryClass_ts__WEBPACK_IMPORTED_MODULE_2__.a(slave.url, !0, !0); else {
                    if ("SIMKL" != pageType) throw "No sync type";
                    entryClass = new _provider_Simkl_entryClass_ts__WEBPACK_IMPORTED_MODULE_3__.a(slave.url, !0, !0);
                }
                return entryClass.init().then(() => (void 0 !== slave.diff.watchedEp && entryClass.setEpisode(slave.diff.watchedEp), 
                void 0 !== slave.diff.status && entryClass.setStatus(slave.diff.status), void 0 !== slave.diff.score && entryClass.setScore(slave.diff.score), 
                entryClass.sync()));
            }
        }
        function retriveLists(providerList, type, apiTemp, getListF) {
            return __awaiter(this, void 0, void 0, (function*() {
                var typeArray = [], masterMode = apiTemp.settings.get("syncMode"), listP = [];
                providerList.forEach(pi => {
                    pi.providerSettings.text = "Loading", listP.push(getListF(pi.listProvider, type).then(list => {
                        pi.providerSettings.list = list, pi.providerSettings.text = "Done", masterMode == pi.providerType && (pi.providerSettings.master = !0), 
                        typeArray.push(pi.providerType);
                    }).catch(e => {
                        pi.providerSettings.text = e;
                    }));
                }), yield Promise.all(listP);
                var master = !1, slaves = [];
                return providerList.forEach((function(pi) {
                    pi.providerSettings.master ? master = pi.providerSettings.list : null !== pi.providerSettings.list && slaves.push(pi.providerSettings.list);
                })), {
                    master: master,
                    slaves: slaves,
                    typeArray: typeArray
                };
            }));
        }
        function getListProvider(providerSettingList) {
            return [ {
                providerType: "MAL",
                providerSettings: providerSettingList.mal,
                listProvider: _provider_MyAnimeList_list__WEBPACK_IMPORTED_MODULE_4__.a
            }, {
                providerType: "ANILIST",
                providerSettings: providerSettingList.anilist,
                listProvider: _provider_AniList_list__WEBPACK_IMPORTED_MODULE_5__.a
            }, {
                providerType: "KITSU",
                providerSettings: providerSettingList.kitsu,
                listProvider: _provider_Kitsu_list__WEBPACK_IMPORTED_MODULE_6__.a
            }, {
                providerType: "SIMKL",
                providerSettings: providerSettingList.simkl,
                listProvider: _provider_Simkl_list__WEBPACK_IMPORTED_MODULE_7__.a
            } ];
        }
        function getList(prov, type) {
            var listProvider = new prov(7, type);
            return listProvider.get().then(list => list).catch(e => {
                throw con.error(e), listProvider.errorMessage(e);
            });
        }
        var background = {
            isEnabled: function() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return api.storage.get("backgroundListSync").then((function(state) {
                        return __awaiter(this, void 0, void 0, (function*() {
                            return con.info("background list sync state", state), !(!state || state.mode !== (yield api.settings.getAsync("syncMode"))) || (background.disable(), 
                            !1);
                        }));
                    }));
                }));
            },
            enable: function() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return api.storage.set("backgroundListSync", {
                        mode: yield api.settings.getAsync("syncMode")
                    });
                }));
            },
            disable: function() {
                return api.storage.remove("backgroundListSync");
            },
            sync: function() {
                return __awaiter(this, void 0, void 0, (function*() {
                    if (yield background.isEnabled()) return con.log("Start Background list Sync"), 
                    syncLists("anime").then(() => syncLists("manga"));
                    function syncLists(type) {
                        return __awaiter(this, void 0, void 0, (function*() {
                            var list = {}, missing = [], providerList = getListProvider({
                                mal: {
                                    text: "Init",
                                    list: null,
                                    master: !1
                                },
                                anilist: {
                                    text: "Init",
                                    list: null,
                                    master: !1
                                },
                                kitsu: {
                                    text: "Init",
                                    list: null,
                                    master: !1
                                },
                                simkl: {
                                    text: "Init",
                                    list: null,
                                    master: !1
                                }
                            }), listOptions = yield retriveLists(providerList, type, api, getList);
                            generateSync(listOptions.master, listOptions.slaves, "mirror", listOptions.typeArray, list, missing), 
                            con.log("Start syncing", list, missing), syncList(list, missing);
                        }));
                    }
                    con.error("Background list Sync not allowed");
                }));
            }
        };
    }).call(this, __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, utils) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return ListAbstract;
        }));
        var _utils_epPrediction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81), _utils_Cache__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class ListAbstract {
            constructor(status = 1, listType = "anime", callbacks = {}, username = null, offset = 0, templist = []) {
                return this.status = status, this.listType = listType, this.callbacks = callbacks, 
                this.username = username, this.offset = offset, this.templist = templist, this.done = !1, 
                this.modes = {
                    sortAiring: !1,
                    cached: !1
                }, this.api = api, this.cacheObj = void 0, this;
            }
            setTemplist(list) {
                return this.templist = list, this;
            }
            isDone() {
                return this.done;
            }
            get() {
                return __awaiter(this, void 0, void 0, (function*() {
                    var retList = [];
                    do {
                        if (retList = yield this.getPart(), void 0 !== this.callbacks.singleCallback) {
                            retList.length || this.callbacks.singleCallback(!1, 0, 0);
                            for (var i = 0; i < retList.length; i++) this.callbacks.singleCallback(retList[i]);
                        }
                        this.templist = this.templist.concat(retList), void 0 !== this.callbacks.continueCall && (this.modes.cached && this.getCache().setValue(this.templist.slice(0, 18)), 
                        yield this.callbacks.continueCall(this.templist));
                    } while (!this.done);
                    return this.modes.sortAiring && (yield this.sortAiringList()), this.modes.cached && this.getCache().setValue(this.templist.slice(0, 18)), 
                    void 0 !== this.callbacks.continueCall && this.callbacks.continueCall(this.templist), 
                    this.templist;
                }));
            }
            getCached() {
                return __awaiter(this, void 0, void 0, (function*() {
                    if (this.getCache().hasValue()) {
                        var cachelist = yield this.getCache().getValue();
                        return cachelist.forEach(item => {
                            (item = this.fn(item)).watchedEp = "", item.score = "";
                        }), cachelist;
                    }
                    return [];
                }));
            }
            jsonParse(response) {
                if ("" === response.responseText) throw {
                    code: 444,
                    message: "No Response"
                };
                try {
                    return JSON.parse(response.responseText);
                } catch (e) {
                    throw {
                        code: 406,
                        message: "Not Acceptable",
                        error: e
                    };
                }
            }
            flashmError(error) {
                utils.flashm(this.errorMessage(error), {
                    error: !0,
                    type: "error"
                });
            }
            errorMessage(error) {
                if (void 0 === error.code) return error;
                switch (error.code) {
                  case 400:
                  case 401:
                    return api.storage.lang("Error_Authenticate", [ this.authenticationUrl ]);

                  default:
                    return error.message;
                }
            }
            fn(item) {
                var continueUrlTemp = null, predictionsObj = null;
                return item.fn = {
                    continueUrl: () => null !== continueUrlTemp ? continueUrlTemp : utils.getContinueWaching(item.type, item.cacheKey).then(obj => {
                        var res = void 0, curEp = parseInt(item.watchedEp.toString());
                        return void 0 !== obj && obj.ep === curEp + 1 && (res = obj.url), continueUrlTemp = res;
                    }),
                    predictions: () => null !== predictionsObj ? predictionsObj : new _utils_epPrediction__WEBPACK_IMPORTED_MODULE_0__.a(item.malId, item.cacheKey, item.type).init().then(obj => predictionsObj = obj)
                }, item;
            }
            sortAiringList() {
                return __awaiter(this, void 0, void 0, (function*() {
                    var listP = [];
                    this.templist.forEach(item => {
                        listP.push(item.fn.predictions());
                    }), yield Promise.all(listP);
                    var normalItems = [], preItems = [], watchedItems = [];
                    function sortItems(a, b) {
                        var valA = a.fn.predictions().getNextEpTimestamp(), valB = b.fn.predictions().getNextEpTimestamp();
                        return valA || (valA = 999999999999), valB || (valB = valA), valA - valB;
                    }
                    this.templist.forEach(item => {
                        var prediction = item.fn.predictions();
                        prediction.getAiring() && prediction.getNextEpTimestamp() ? item.watchedEp < prediction.getEp().ep ? preItems.push(item) : watchedItems.push(item) : normalItems.push(item);
                    }), preItems = preItems.sort(sortItems).reverse(), watchedItems = watchedItems.sort(sortItems), 
                    this.templist = preItems.concat(watchedItems, normalItems);
                }));
            }
            getCache() {
                return this.cacheObj ? this.cacheObj : (this.cacheObj = new _utils_Cache__WEBPACK_IMPORTED_MODULE_1__.a("list/" + this.name + "/" + this.listType + "/" + this.status, 1728e5), 
                this.cacheObj);
            }
        }
    }).call(this, __webpack_require__(0), __webpack_require__(2));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return getCacheKey;
        })), __webpack_require__.d(__webpack_exports__, "c", (function() {
            return getSyncList;
        })), __webpack_require__.d(__webpack_exports__, "b", (function() {
            return getRegex;
        }));
        var __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        function getCacheKey(id, page) {
            return "local:" + id + ":" + page;
        }
        function getSyncList() {
            return __awaiter(this, void 0, void 0, (function*() {
                if ("userscript" == api.type) {
                    var list = yield api.storage.list("sync");
                    for (var key in list) list[key] = yield api.storage.get(key);
                    var data = list;
                } else data = api.storage.list("sync");
                return data;
            }));
        }
        function getRegex(listType) {
            return new RegExp("^local://[^/]*/" + listType, "i");
        }
    }).call(this, __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return getList;
        })), __webpack_require__.d(__webpack_exports__, "c", (function() {
            return getOnlyList;
        })), __webpack_require__.d(__webpack_exports__, "b", (function() {
            return getListbyType;
        }));
        var _helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80), _MyAnimeList_list__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24), _AniList_list__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25), _Kitsu_list__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26), _Simkl_list__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(16), _Local_list__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(83), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        function getList(...args) {
            return __awaiter(this, void 0, void 0, (function*() {
                var tempList = [];
                api.settings.get("localSync") && (tempList = yield new _Local_list__WEBPACK_IMPORTED_MODULE_5__.a(...args).get());
                var list = getListObj(args);
                return list.setTemplist(tempList), list;
            }));
        }
        function getOnlyList(...args) {
            return getListObj(args);
        }
        function getListbyType(syncMode, args = []) {
            return getListObj(args, syncMode);
        }
        function getListObj(args, syncMode = "") {
            if (syncMode || (syncMode = _helper__WEBPACK_IMPORTED_MODULE_0__.a(args[1] ? args[1] : "anime")), 
            "MAL" == syncMode) return new _MyAnimeList_list__WEBPACK_IMPORTED_MODULE_1__.a(...args);
            if ("ANILIST" == syncMode) return new _AniList_list__WEBPACK_IMPORTED_MODULE_2__.a(...args);
            if ("KITSU" == syncMode) return new _Kitsu_list__WEBPACK_IMPORTED_MODULE_3__.a(...args);
            if ("SIMKL" == syncMode) return new _Simkl_list__WEBPACK_IMPORTED_MODULE_4__.a(...args);
            throw "Unknown sync mode";
        }
    }).call(this, __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, con, api, j) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return entryClass;
        }));
        var __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class entryClass {
            constructor(url, miniMAL = !1, silent = !1) {
                this.url = url, this.miniMAL = miniMAL, this.silent = silent, this.name = "", this.totalEp = NaN, 
                this.addAnime = !1, this.login = !1, this.wrong = !1, this.pending = !1, this.renderNoImage = !0, 
                this.id = utils.urlPart(url, 4), this.type = utils.urlPart(url, 3);
            }
            init() {
                return this.update();
            }
            getDisplayUrl() {
                return this.url;
            }
            getMalUrl() {
                return this.getDisplayUrl();
            }
            getDetailUrl() {
                return `https://myanimelist.net/ownlist/${this.type}/${this.id}/edit`;
            }
            update() {
                var editUrl = "https://myanimelist.net/ownlist/" + this.type + "/" + this.id + "/edit?hideLayout";
                return con.log("Update MAL info", editUrl), api.request.xhr("GET", editUrl).then(response => {
                    if (response.finalUrl.indexOf("myanimelist.net/login.php") > -1 || response.responseText.indexOf("Unauthorized") > -1) return this.login = !1, 
                    void con.error("User not logged in");
                    this.login = !0, this.animeInfo = this.getObject(response.responseText);
                });
            }
            getEpisode() {
                return "manga" == this.type ? this.animeInfo[".add_manga[num_read_chapters]"] : this.animeInfo[".add_anime[num_watched_episodes]"];
            }
            setEpisode(ep) {
                ep + "" == "" && (ep = 0), "manga" == this.type && (this.animeInfo[".add_manga[num_read_chapters]"] = parseInt(ep + "")), 
                this.animeInfo[".add_anime[num_watched_episodes]"] = parseInt(ep + "");
            }
            getVolume() {
                return "manga" == this.type && this.animeInfo[".add_manga[num_read_volumes]"];
            }
            setVolume(ep) {
                "manga" != this.type ? con.error("You cant set Volumes for animes") : this.animeInfo[".add_manga[num_read_volumes]"] = ep;
            }
            getStatus() {
                return "manga" == this.type ? this.animeInfo[".add_manga[status]"] : this.animeInfo[".add_anime[status]"];
            }
            setStatus(status) {
                "manga" == this.type && (this.animeInfo[".add_manga[status]"] = status), this.animeInfo[".add_anime[status]"] = status;
            }
            getScore() {
                return "manga" == this.type ? this.animeInfo[".add_manga[score]"] : this.animeInfo[".add_anime[score]"];
            }
            setScore(score) {
                0 === score && (score = ""), "manga" == this.type && (this.animeInfo[".add_manga[score]"] = score), 
                this.animeInfo[".add_anime[score]"] = score;
            }
            getRewatching() {
                return "manga" == this.type ? this.animeInfo[".add_manga[is_rereading]"] : this.animeInfo[".add_anime[is_rewatching]"];
            }
            setRewatching(rewatching) {
                "manga" == this.type && (this.animeInfo[".add_manga[is_rereading]"] = rewatching), 
                this.animeInfo[".add_anime[is_rewatching]"] = rewatching;
            }
            setCompletionDateToNow() {
                var Datec = new Date;
                "" === this.animeInfo[".add_anime[finish_date][day]"] || "" === this.animeInfo[".add_manga[finish_date][day]"] ? ("manga" == this.type && (this.animeInfo[".add_manga[finish_date][year]"] = Datec.getFullYear(), 
                this.animeInfo[".add_manga[finish_date][month]"] = Datec.getMonth() + 1, this.animeInfo[".add_manga[finish_date][day]"] = Datec.getDate()), 
                this.animeInfo[".add_anime[finish_date][year]"] = Datec.getFullYear(), this.animeInfo[".add_anime[finish_date][month]"] = Datec.getMonth() + 1, 
                this.animeInfo[".add_anime[finish_date][day]"] = Datec.getDate()) : con.error("Completion date already set");
            }
            setStartingDateToNow() {
                var Datec = new Date;
                "" === this.animeInfo[".add_anime[start_date][day]"] || "" === this.animeInfo[".add_manga[start_date][day]"] ? ("manga" == this.type && (this.animeInfo[".add_manga[start_date][year]"] = Datec.getFullYear(), 
                this.animeInfo[".add_manga[start_date][month]"] = Datec.getMonth() + 1, this.animeInfo[".add_manga[start_date][day]"] = Datec.getDate()), 
                this.animeInfo[".add_anime[start_date][year]"] = Datec.getFullYear(), this.animeInfo[".add_anime[start_date][month]"] = Datec.getMonth() + 1, 
                this.animeInfo[".add_anime[start_date][day]"] = Datec.getDate()) : con.info("Start date already set");
            }
            getStreamingUrl() {
                var tags = this.animeInfo[".add_anime[tags]"];
                return "manga" == this.type && (tags = this.animeInfo[".add_manga[tags]"]), utils.getUrlFromTags(tags);
            }
            setStreamingUrl(url) {
                var tags = this.animeInfo[".add_anime[tags]"];
                "manga" == this.type && (tags = this.animeInfo[".add_manga[tags]"]), tags = utils.setUrlInTags(url, tags), 
                "manga" != this.type ? this.animeInfo[".add_anime[tags]"] = tags : this.animeInfo[".add_manga[tags]"] = tags;
            }
            getRating() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return new Promise((resolve, reject) => {
                        var url = "";
                        url = "anime" == this.type ? "https://myanimelist.net/includes/ajax.inc.php?t=64&id=" + this.id : "https://myanimelist.net/includes/ajax.inc.php?t=65&id=" + this.id, 
                        api.request.xhr("GET", url).then(response => {
                            try {
                                resolve(response.responseText.split("Score:</span>")[1].split("<")[0]);
                            } catch (e) {
                                con.error("Could not get rating", e), reject();
                            }
                        });
                    });
                }));
            }
            getCacheKey() {
                return this.id;
            }
            setResumeWaching(url, ep) {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.setResumeWaching(url, ep, this.type, this.getCacheKey());
                }));
            }
            getResumeWaching() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.getResumeWaching(this.type, this.getCacheKey());
                }));
            }
            setContinueWaching(url, ep) {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.setContinueWaching(url, ep, this.type, this.getCacheKey());
                }));
            }
            getContinueWaching() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.getContinueWaching(this.type, this.getCacheKey());
                }));
            }
            getImage() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return api.request.xhr("GET", this.url).then(response => {
                        var data = response.responseText, image = "";
                        try {
                            image = data.split("js-scrollfix-bottom")[1].split('data-src="')[1].split('"')[0];
                        } catch (e) {
                            console.log("[mal.ts] Error:", e);
                        }
                        return image;
                    });
                }));
            }
            clone() {
                const copy = new this.constructor;
                return Object.assign(copy, this), copy.animeInfo = Object.assign({}, this.animeInfo), 
                copy;
            }
            sync() {
                var status = utils.status;
                return new Promise((resolve, reject) => {
                    var This = this, url = "https://myanimelist.net/ownlist/" + this.type + "/" + this.id + "/edit";
                    if (this.pending) utils.flashm("This " + this.type + " is currently pending approval. It can´t be saved to mal for now"); else {
                        if (this.addAnime) return this.silent ? (url = "anime" == this.type ? "https://myanimelist.net/ownlist/anime/add?selected_series_id=" + this.id : "https://myanimelist.net/ownlist/manga/add?selected_manga_id=" + this.id, 
                        void continueCall()) : void ("anime" == this.type ? (url = "https://myanimelist.net/ownlist/anime/add?selected_series_id=" + this.id, 
                        continueCall()) : (url = "https://myanimelist.net/ownlist/manga/add?selected_manga_id=" + this.id, 
                        continueCall()));
                        var watchCounter = ".add_anime[num_watched_times]", rewatchText = "Rewatch Anime?", rewatchFinishText = "Finish rewatching?";
                        "manga" === this.type && (watchCounter = ".add_manga[num_read_times]", rewatchText = "Reread Manga?", 
                        rewatchFinishText = "Finish rereading?"), this.getStatus() != status.completed || 1 !== this.getEpisode() || 1 === this.totalEp || 1 === this.getRewatching() ? this.getStatus() !== status.completed || this.getEpisode() !== this.totalEp || 1 !== this.getRewatching() ? continueCall() : utils.flashConfirm(rewatchFinishText, "add", () => {
                            this.setRewatching(0), "" === this.animeInfo[watchCounter] ? this.animeInfo[watchCounter] = 1 : this.animeInfo[watchCounter] = parseInt(this.animeInfo[watchCounter]) + 1, 
                            continueCall();
                        }, (function() {
                            continueCall();
                        })) : utils.flashConfirm(rewatchText, "add", () => {
                            this.setRewatching(1), continueCall();
                        }, (function() {
                            con.log("Rewatching denial");
                        }));
                    }
                    function continueCall() {
                        var parameter = "";
                        j.$.each(This.animeInfo, (function(index, value) {
                            "." === index.toString().charAt(0) && (".add_anime[is_rewatching]" !== index && ".add_manga[is_rereading]" !== index || 0 !== parseInt(value)) && (parameter += encodeURIComponent(index.toString().substring(1)) + "=" + encodeURIComponent(value) + "&");
                        })), con.log("[SET] URL:", url), con.log("[SET] Object:", This.animeInfo), api.request.xhr("POST", {
                            url: url,
                            data: parameter,
                            headers: {
                                "Content-Type": "application/x-www-form-urlencoded"
                            }
                        }).then(response => {
                            response.responseText.indexOf("Successfully") >= 0 ? (con.log("Update Succeeded"), 
                            resolve()) : (con.error("Update failed"), reject());
                        });
                    }
                });
            }
            getObject(data) {
                var anime, getselect = utils.getselect;
                if (void 0 === data.split('<form name="')[1] && (-1 !== this.url.indexOf("/manga/") || -1 !== this.url.indexOf("/anime/"))) throw new Error("MAL is down or otherwise giving bad data");
                return this.addAnime = !1, this.pending = !1, "anime" === this.type ? ((anime = {})[".csrf_token"] = data.split("'csrf_token'")[1].split("'")[1].split("'")[0], 
                data.indexOf("Add Anime") > -1 && (this.addAnime = !0), data.indexOf("pending approval") > -1 && (this.pending = !0), 
                data = data.split('<form name="')[1].split("</form>")[0], this.totalEp = parseInt(data.split('id="totalEpisodes">')[1].split("<")[0]), 
                this.name = data.split('<a href="')[1].split('">')[1].split("<")[0], anime[".anime_id"] = parseInt(data.split('name="anime_id"')[1].split('value="')[1].split('"')[0]), 
                anime[".aeps"] = parseInt(data.split('name="aeps"')[1].split('value="')[1].split('"')[0]), 
                anime[".astatus"] = parseInt(data.split('name="astatus"')[1].split('value="')[1].split('"')[0]), 
                anime[".add_anime[status]"] = parseInt(getselect(data, "add_anime[status]")), data.split('name="add_anime[is_rewatching]"')[1].split(">")[0].indexOf('checked="checked"') >= 0 && (anime[".add_anime[is_rewatching]"] = 1), 
                anime[".add_anime[num_watched_episodes]"] = parseInt(data.split('name="add_anime[num_watched_episodes]"')[1].split('value="')[1].split('"')[0]), 
                isNaN(anime[".add_anime[num_watched_episodes]"]) && (anime[".add_anime[num_watched_episodes]"] = ""), 
                anime[".add_anime[score]"] = getselect(data, "add_anime[score]"), anime[".add_anime[start_date][month]"] = getselect(data, "add_anime[start_date][month]"), 
                anime[".add_anime[start_date][day]"] = getselect(data, "add_anime[start_date][day]"), 
                anime[".add_anime[start_date][year]"] = getselect(data, "add_anime[start_date][year]"), 
                anime[".add_anime[finish_date][month]"] = getselect(data, "add_anime[finish_date][month]"), 
                anime[".add_anime[finish_date][day]"] = getselect(data, "add_anime[finish_date][day]"), 
                anime[".add_anime[finish_date][year]"] = getselect(data, "add_anime[finish_date][year]"), 
                anime[".add_anime[tags]"] = utils.parseHtml(data.split('name="add_anime[tags]"')[1].split(">")[1].split("<")[0]), 
                anime[".add_anime[priority]"] = getselect(data, "add_anime[priority]"), anime[".add_anime[storage_type]"] = getselect(data, "add_anime[storage_type]"), 
                anime[".add_anime[storage_value]"] = data.split('name="add_anime[storage_value]"')[1].split('value="')[1].split('"')[0], 
                anime[".add_anime[num_watched_times]"] = data.split('name="add_anime[num_watched_times]"')[1].split('value="')[1].split('"')[0], 
                anime[".add_anime[rewatch_value]"] = getselect(data, "add_anime[rewatch_value]"), 
                anime[".add_anime[comments]"] = utils.parseHtml(data.split('name="add_anime[comments]"')[1].split(">")[1].split("<")[0]), 
                anime[".add_anime[is_asked_to_discuss]"] = getselect(data, "add_anime[is_asked_to_discuss]"), 
                "" === anime[".add_anime[is_asked_to_discuss]"] && (anime[".add_anime[is_asked_to_discuss]"] = 0), 
                anime[".add_anime[sns_post_type]"] = getselect(data, "add_anime[sns_post_type]"), 
                anime[".submitIt"] = data.split('name="submitIt"')[1].split('value="')[1].split('"')[0], 
                con.log("[GET] Object:", anime), anime) : ((anime = {})[".csrf_token"] = data.split("'csrf_token'")[1].split("'")[1].split("'")[0], 
                data.indexOf("Add Manga") > -1 && (this.addAnime = !0), data.indexOf("pending approval") > -1 && (this.pending = !0), 
                data = data.split('<form name="')[1].split("</form>")[0], this.totalEp = parseInt(data.split('id="totalChap">')[1].split("<")[0]), 
                this.totalVol = parseInt(data.split('id="totalVol">')[1].split("<")[0]), this.name = data.split('<a href="')[1].split('">')[1].split("<")[0], 
                anime[".entry_id"] = parseInt(data.split('name="entry_id"')[1].split('value="')[1].split('"')[0]), 
                anime[".manga_id"] = parseInt(data.split('name="manga_id"')[1].split('value="')[1].split('"')[0]), 
                anime.volumes = parseInt(data.split('id="volumes"')[1].split('value="')[1].split('"')[0]), 
                anime.mstatus = parseInt(data.split('id="mstatus"')[1].split('value="')[1].split('"')[0]), 
                anime[".add_manga[status]"] = parseInt(getselect(data, "add_manga[status]")), data.split('name="add_manga[is_rereading]"')[1].split(">")[0].indexOf('checked="checked"') >= 0 && (anime[".add_manga[is_rereading]"] = 1), 
                anime[".add_manga[num_read_volumes]"] = parseInt(data.split('name="add_manga[num_read_volumes]"')[1].split('value="')[1].split('"')[0]), 
                isNaN(anime[".add_manga[num_read_volumes]"]) && (anime[".add_manga[num_read_volumes]"] = ""), 
                anime[".add_manga[num_read_chapters]"] = parseInt(data.split('name="add_manga[num_read_chapters]"')[1].split('value="')[1].split('"')[0]), 
                isNaN(anime[".add_manga[num_read_chapters]"]) && (anime[".add_manga[num_read_chapters]"] = ""), 
                anime[".add_manga[score]"] = getselect(data, "add_manga[score]"), anime[".add_manga[start_date][month]"] = getselect(data, "add_manga[start_date][month]"), 
                anime[".add_manga[start_date][day]"] = getselect(data, "add_manga[start_date][day]"), 
                anime[".add_manga[start_date][year]"] = getselect(data, "add_manga[start_date][year]"), 
                anime[".add_manga[finish_date][month]"] = getselect(data, "add_manga[finish_date][month]"), 
                anime[".add_manga[finish_date][day]"] = getselect(data, "add_manga[finish_date][day]"), 
                anime[".add_manga[finish_date][year]"] = getselect(data, "add_manga[finish_date][year]"), 
                anime[".add_manga[tags]"] = utils.parseHtml(data.split('name="add_manga[tags]"')[1].split(">")[1].split("<")[0]), 
                anime[".add_manga[priority]"] = getselect(data, "add_manga[priority]"), anime[".add_manga[storage_type]"] = getselect(data, "add_manga[storage_type]"), 
                anime[".add_manga[num_retail_volumes]"] = data.split('name="add_manga[num_retail_volumes]"')[1].split('value="')[1].split('"')[0], 
                anime[".add_manga[num_read_times]"] = data.split('name="add_manga[num_read_times]"')[1].split('value="')[1].split('"')[0], 
                anime[".add_manga[reread_value]"] = getselect(data, "add_manga[reread_value]"), 
                anime[".add_manga[comments]"] = utils.parseHtml(data.split('name="add_manga[comments]"')[1].split(">")[1].split("<")[0]), 
                anime[".add_manga[is_asked_to_discuss]"] = getselect(data, "add_manga[is_asked_to_discuss]"), 
                "" == anime[".add_manga[is_asked_to_discuss]"] && (anime[".add_manga[is_asked_to_discuss]"] = 0), 
                anime[".add_manga[sns_post_type]"] = getselect(data, "add_manga[sns_post_type]"), 
                anime[".submitIt"] = data.split('name="submitIt"')[1].split('value="')[1].split('"')[0], 
                con.log("[GET] Object:", anime), anime);
            }
        }
    }).call(this, __webpack_require__(2), __webpack_require__(1), __webpack_require__(0), __webpack_require__(3));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(con) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return userlist;
        }));
        var _listAbstract__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12), _helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(28), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class userlist extends _listAbstract__WEBPACK_IMPORTED_MODULE_0__.a {
            constructor() {
                super(...arguments), this.name = "Simkl", this.authenticationUrl = "https://simkl.com/oauth/authorize?response_type=code&client_id=39e8640b6f1a60aaf60f3f3313475e830517badab8048a4e52ff2d10deb2b9b0&redirect_uri=https://simkl.com/apps/chrome/mal-sync/connected/", 
                this.syncList = _helper__WEBPACK_IMPORTED_MODULE_1__.d, this.translateList = _helper__WEBPACK_IMPORTED_MODULE_1__.e, 
                this.getCacheKey = _helper__WEBPACK_IMPORTED_MODULE_1__.b, this.getEpisode = _helper__WEBPACK_IMPORTED_MODULE_1__.c, 
                this.call = _helper__WEBPACK_IMPORTED_MODULE_1__.a;
            }
            getUsername() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return this.call("https://api.simkl.com/users/settings").then(res => {
                        if (con.log(res), res && res.user && void 0 !== res.user.name) return res.user.name;
                        throw {
                            code: 400,
                            message: "Not Authenticated"
                        };
                    });
                }));
            }
            errorHandling(res, code) {
                if (void 0 !== res.error) throw con.error(res.error), {
                    code: code,
                    message: res.error
                };
                switch (code) {
                  case 200:
                  case 201:
                  case 204:
                  case 302:
                    break;

                  default:
                    throw {
                        code: code,
                        message: "Code: " + code
                    };
                }
            }
            getPart() {
                return __awaiter(this, void 0, void 0, (function*() {
                    if (con.log("[UserList][Simkl]", "status: " + this.status), "manga" === this.listType) throw {
                        code: 415,
                        message: "Does not support manga"
                    };
                    return this.syncList().then(list => {
                        this.done = !0;
                        var data = this.prepareData(Object.values(list), this.listType, this.status);
                        return con.log(data), data;
                    });
                }));
            }
            prepareData(data, listType, status) {
                for (var newData = [], i = 0; i < data.length; i++) {
                    var el = data[i], st = this.translateList(el.status);
                    if ((7 === status || parseInt(st) === status) && "anime" === listType) {
                        var tempData = this.fn({
                            malId: el.show.ids.mal,
                            uid: el.show.ids.simkl,
                            cacheKey: this.getCacheKey(el.show.ids.mal, el.show.ids.simkl),
                            type: listType,
                            title: el.show.title,
                            url: "https://simkl.com/" + listType + "/" + el.show.ids.simkl,
                            watchedEp: this.getEpisode(el.last_watched),
                            totalEp: el.total_episodes_count,
                            status: st,
                            score: el.user_rating ? el.user_rating : 0,
                            image: "https://simkl.in/posters/" + el.show.poster + "_ca.jpg",
                            tags: el.private_memo,
                            airingState: el.anime_airing_status
                        });
                        newData.push(tempData);
                    }
                }
                return newData;
            }
        }
    }).call(this, __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(global, setImmediate) {
        var emptyObject = Object.freeze({});
        function isUndef(v) {
            return null == v;
        }
        function isDef(v) {
            return null != v;
        }
        function isTrue(v) {
            return !0 === v;
        }
        function isPrimitive(value) {
            return "string" == typeof value || "number" == typeof value || "symbol" == typeof value || "boolean" == typeof value;
        }
        function isObject(obj) {
            return null !== obj && "object" == typeof obj;
        }
        var _toString = Object.prototype.toString;
        function isPlainObject(obj) {
            return "[object Object]" === _toString.call(obj);
        }
        function isRegExp(v) {
            return "[object RegExp]" === _toString.call(v);
        }
        function isValidArrayIndex(val) {
            var n = parseFloat(String(val));
            return n >= 0 && Math.floor(n) === n && isFinite(val);
        }
        function isPromise(val) {
            return isDef(val) && "function" == typeof val.then && "function" == typeof val.catch;
        }
        function toString(val) {
            return null == val ? "" : Array.isArray(val) || isPlainObject(val) && val.toString === _toString ? JSON.stringify(val, null, 2) : String(val);
        }
        function toNumber(val) {
            var n = parseFloat(val);
            return isNaN(n) ? val : n;
        }
        function makeMap(str, expectsLowerCase) {
            for (var map = Object.create(null), list = str.split(","), i = 0; i < list.length; i++) map[list[i]] = !0;
            return expectsLowerCase ? function(val) {
                return map[val.toLowerCase()];
            } : function(val) {
                return map[val];
            };
        }
        var isBuiltInTag = makeMap("slot,component", !0), isReservedAttribute = makeMap("key,ref,slot,slot-scope,is");
        function remove(arr, item) {
            if (arr.length) {
                var index = arr.indexOf(item);
                if (index > -1) return arr.splice(index, 1);
            }
        }
        var hasOwnProperty = Object.prototype.hasOwnProperty;
        function hasOwn(obj, key) {
            return hasOwnProperty.call(obj, key);
        }
        function cached(fn) {
            var cache = Object.create(null);
            return function(str) {
                return cache[str] || (cache[str] = fn(str));
            };
        }
        var camelizeRE = /-(\w)/g, camelize = cached((function(str) {
            return str.replace(camelizeRE, (function(_, c) {
                return c ? c.toUpperCase() : "";
            }));
        })), capitalize = cached((function(str) {
            return str.charAt(0).toUpperCase() + str.slice(1);
        })), hyphenateRE = /\B([A-Z])/g, hyphenate = cached((function(str) {
            return str.replace(hyphenateRE, "-$1").toLowerCase();
        }));
        var bind = Function.prototype.bind ? function(fn, ctx) {
            return fn.bind(ctx);
        } : function(fn, ctx) {
            function boundFn(a) {
                var l = arguments.length;
                return l ? l > 1 ? fn.apply(ctx, arguments) : fn.call(ctx, a) : fn.call(ctx);
            }
            return boundFn._length = fn.length, boundFn;
        };
        function toArray(list, start) {
            start = start || 0;
            for (var i = list.length - start, ret = new Array(i); i--; ) ret[i] = list[i + start];
            return ret;
        }
        function extend(to, _from) {
            for (var key in _from) to[key] = _from[key];
            return to;
        }
        function toObject(arr) {
            for (var res = {}, i = 0; i < arr.length; i++) arr[i] && extend(res, arr[i]);
            return res;
        }
        function noop(a, b, c) {}
        var no = function(a, b, c) {
            return !1;
        }, identity = function(_) {
            return _;
        };
        function looseEqual(a, b) {
            if (a === b) return !0;
            var isObjectA = isObject(a), isObjectB = isObject(b);
            if (!isObjectA || !isObjectB) return !isObjectA && !isObjectB && String(a) === String(b);
            try {
                var isArrayA = Array.isArray(a), isArrayB = Array.isArray(b);
                if (isArrayA && isArrayB) return a.length === b.length && a.every((function(e, i) {
                    return looseEqual(e, b[i]);
                }));
                if (a instanceof Date && b instanceof Date) return a.getTime() === b.getTime();
                if (isArrayA || isArrayB) return !1;
                var keysA = Object.keys(a), keysB = Object.keys(b);
                return keysA.length === keysB.length && keysA.every((function(key) {
                    return looseEqual(a[key], b[key]);
                }));
            } catch (e) {
                return !1;
            }
        }
        function looseIndexOf(arr, val) {
            for (var i = 0; i < arr.length; i++) if (looseEqual(arr[i], val)) return i;
            return -1;
        }
        function once(fn) {
            var called = !1;
            return function() {
                called || (called = !0, fn.apply(this, arguments));
            };
        }
        var SSR_ATTR = "data-server-rendered", ASSET_TYPES = [ "component", "directive", "filter" ], LIFECYCLE_HOOKS = [ "beforeCreate", "created", "beforeMount", "mounted", "beforeUpdate", "updated", "beforeDestroy", "destroyed", "activated", "deactivated", "errorCaptured", "serverPrefetch" ], config = {
            optionMergeStrategies: Object.create(null),
            silent: !1,
            productionTip: !1,
            devtools: !1,
            performance: !1,
            errorHandler: null,
            warnHandler: null,
            ignoredElements: [],
            keyCodes: Object.create(null),
            isReservedTag: no,
            isReservedAttr: no,
            isUnknownElement: no,
            getTagNamespace: noop,
            parsePlatformTagName: identity,
            mustUseProp: no,
            async: !0,
            _lifecycleHooks: LIFECYCLE_HOOKS
        }, unicodeRegExp = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;
        function isReserved(str) {
            var c = (str + "").charCodeAt(0);
            return 36 === c || 95 === c;
        }
        function def(obj, key, val, enumerable) {
            Object.defineProperty(obj, key, {
                value: val,
                enumerable: !!enumerable,
                writable: !0,
                configurable: !0
            });
        }
        var bailRE = new RegExp("[^" + unicodeRegExp.source + ".$_\\d]");
        var _isServer, hasProto = "__proto__" in {}, inBrowser = "undefined" != typeof window, inWeex = "undefined" != typeof WXEnvironment && !!WXEnvironment.platform, weexPlatform = inWeex && WXEnvironment.platform.toLowerCase(), UA = inBrowser && window.navigator.userAgent.toLowerCase(), isIE = UA && /msie|trident/.test(UA), isIE9 = UA && UA.indexOf("msie 9.0") > 0, isEdge = UA && UA.indexOf("edge/") > 0, isIOS = (UA && UA.indexOf("android"), 
        UA && /iphone|ipad|ipod|ios/.test(UA) || "ios" === weexPlatform), isFF = (UA && /chrome\/\d+/.test(UA), 
        UA && /phantomjs/.test(UA), UA && UA.match(/firefox\/(\d+)/)), nativeWatch = {}.watch, supportsPassive = !1;
        if (inBrowser) try {
            var opts = {};
            Object.defineProperty(opts, "passive", {
                get: function() {
                    supportsPassive = !0;
                }
            }), window.addEventListener("test-passive", null, opts);
        } catch (e) {}
        var isServerRendering = function() {
            return void 0 === _isServer && (_isServer = !inBrowser && !inWeex && void 0 !== global && (global.process && "server" === global.process.env.VUE_ENV)), 
            _isServer;
        }, devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
        function isNative(Ctor) {
            return "function" == typeof Ctor && /native code/.test(Ctor.toString());
        }
        var _Set, hasSymbol = "undefined" != typeof Symbol && isNative(Symbol) && "undefined" != typeof Reflect && isNative(Reflect.ownKeys);
        _Set = "undefined" != typeof Set && isNative(Set) ? Set : function() {
            function Set() {
                this.set = Object.create(null);
            }
            return Set.prototype.has = function(key) {
                return !0 === this.set[key];
            }, Set.prototype.add = function(key) {
                this.set[key] = !0;
            }, Set.prototype.clear = function() {
                this.set = Object.create(null);
            }, Set;
        }();
        var warn = noop, uid = 0, Dep = function() {
            this.id = uid++, this.subs = [];
        };
        Dep.prototype.addSub = function(sub) {
            this.subs.push(sub);
        }, Dep.prototype.removeSub = function(sub) {
            remove(this.subs, sub);
        }, Dep.prototype.depend = function() {
            Dep.target && Dep.target.addDep(this);
        }, Dep.prototype.notify = function() {
            var subs = this.subs.slice();
            for (var i = 0, l = subs.length; i < l; i++) subs[i].update();
        }, Dep.target = null;
        var targetStack = [];
        function pushTarget(target) {
            targetStack.push(target), Dep.target = target;
        }
        function popTarget() {
            targetStack.pop(), Dep.target = targetStack[targetStack.length - 1];
        }
        var VNode = function(tag, data, children, text, elm, context, componentOptions, asyncFactory) {
            this.tag = tag, this.data = data, this.children = children, this.text = text, this.elm = elm, 
            this.ns = void 0, this.context = context, this.fnContext = void 0, this.fnOptions = void 0, 
            this.fnScopeId = void 0, this.key = data && data.key, this.componentOptions = componentOptions, 
            this.componentInstance = void 0, this.parent = void 0, this.raw = !1, this.isStatic = !1, 
            this.isRootInsert = !0, this.isComment = !1, this.isCloned = !1, this.isOnce = !1, 
            this.asyncFactory = asyncFactory, this.asyncMeta = void 0, this.isAsyncPlaceholder = !1;
        }, prototypeAccessors = {
            child: {
                configurable: !0
            }
        };
        prototypeAccessors.child.get = function() {
            return this.componentInstance;
        }, Object.defineProperties(VNode.prototype, prototypeAccessors);
        var createEmptyVNode = function(text) {
            void 0 === text && (text = "");
            var node = new VNode;
            return node.text = text, node.isComment = !0, node;
        };
        function createTextVNode(val) {
            return new VNode(void 0, void 0, void 0, String(val));
        }
        function cloneVNode(vnode) {
            var cloned = new VNode(vnode.tag, vnode.data, vnode.children && vnode.children.slice(), vnode.text, vnode.elm, vnode.context, vnode.componentOptions, vnode.asyncFactory);
            return cloned.ns = vnode.ns, cloned.isStatic = vnode.isStatic, cloned.key = vnode.key, 
            cloned.isComment = vnode.isComment, cloned.fnContext = vnode.fnContext, cloned.fnOptions = vnode.fnOptions, 
            cloned.fnScopeId = vnode.fnScopeId, cloned.asyncMeta = vnode.asyncMeta, cloned.isCloned = !0, 
            cloned;
        }
        var arrayProto = Array.prototype, arrayMethods = Object.create(arrayProto);
        [ "push", "pop", "shift", "unshift", "splice", "sort", "reverse" ].forEach((function(method) {
            var original = arrayProto[method];
            def(arrayMethods, method, (function() {
                for (var args = [], len = arguments.length; len--; ) args[len] = arguments[len];
                var inserted, result = original.apply(this, args), ob = this.__ob__;
                switch (method) {
                  case "push":
                  case "unshift":
                    inserted = args;
                    break;

                  case "splice":
                    inserted = args.slice(2);
                }
                return inserted && ob.observeArray(inserted), ob.dep.notify(), result;
            }));
        }));
        var arrayKeys = Object.getOwnPropertyNames(arrayMethods), shouldObserve = !0;
        function toggleObserving(value) {
            shouldObserve = value;
        }
        var Observer = function(value) {
            this.value = value, this.dep = new Dep, this.vmCount = 0, def(value, "__ob__", this), 
            Array.isArray(value) ? (hasProto ? function(target, src) {
                target.__proto__ = src;
            }(value, arrayMethods) : function(target, src, keys) {
                for (var i = 0, l = keys.length; i < l; i++) {
                    var key = keys[i];
                    def(target, key, src[key]);
                }
            }(value, arrayMethods, arrayKeys), this.observeArray(value)) : this.walk(value);
        };
        function observe(value, asRootData) {
            var ob;
            if (isObject(value) && !(value instanceof VNode)) return hasOwn(value, "__ob__") && value.__ob__ instanceof Observer ? ob = value.__ob__ : shouldObserve && !isServerRendering() && (Array.isArray(value) || isPlainObject(value)) && Object.isExtensible(value) && !value._isVue && (ob = new Observer(value)), 
            asRootData && ob && ob.vmCount++, ob;
        }
        function defineReactive$$1(obj, key, val, customSetter, shallow) {
            var dep = new Dep, property = Object.getOwnPropertyDescriptor(obj, key);
            if (!property || !1 !== property.configurable) {
                var getter = property && property.get, setter = property && property.set;
                getter && !setter || 2 !== arguments.length || (val = obj[key]);
                var childOb = !shallow && observe(val);
                Object.defineProperty(obj, key, {
                    enumerable: !0,
                    configurable: !0,
                    get: function() {
                        var value = getter ? getter.call(obj) : val;
                        return Dep.target && (dep.depend(), childOb && (childOb.dep.depend(), Array.isArray(value) && function dependArray(value) {
                            for (var e = void 0, i = 0, l = value.length; i < l; i++) (e = value[i]) && e.__ob__ && e.__ob__.dep.depend(), 
                            Array.isArray(e) && dependArray(e);
                        }(value))), value;
                    },
                    set: function(newVal) {
                        var value = getter ? getter.call(obj) : val;
                        newVal === value || newVal != newVal && value != value || getter && !setter || (setter ? setter.call(obj, newVal) : val = newVal, 
                        childOb = !shallow && observe(newVal), dep.notify());
                    }
                });
            }
        }
        function set(target, key, val) {
            if (Array.isArray(target) && isValidArrayIndex(key)) return target.length = Math.max(target.length, key), 
            target.splice(key, 1, val), val;
            if (key in target && !(key in Object.prototype)) return target[key] = val, val;
            var ob = target.__ob__;
            return target._isVue || ob && ob.vmCount ? val : ob ? (defineReactive$$1(ob.value, key, val), 
            ob.dep.notify(), val) : (target[key] = val, val);
        }
        function del(target, key) {
            if (Array.isArray(target) && isValidArrayIndex(key)) target.splice(key, 1); else {
                var ob = target.__ob__;
                target._isVue || ob && ob.vmCount || hasOwn(target, key) && (delete target[key], 
                ob && ob.dep.notify());
            }
        }
        Observer.prototype.walk = function(obj) {
            for (var keys = Object.keys(obj), i = 0; i < keys.length; i++) defineReactive$$1(obj, keys[i]);
        }, Observer.prototype.observeArray = function(items) {
            for (var i = 0, l = items.length; i < l; i++) observe(items[i]);
        };
        var strats = config.optionMergeStrategies;
        function mergeData(to, from) {
            if (!from) return to;
            for (var key, toVal, fromVal, keys = hasSymbol ? Reflect.ownKeys(from) : Object.keys(from), i = 0; i < keys.length; i++) "__ob__" !== (key = keys[i]) && (toVal = to[key], 
            fromVal = from[key], hasOwn(to, key) ? toVal !== fromVal && isPlainObject(toVal) && isPlainObject(fromVal) && mergeData(toVal, fromVal) : set(to, key, fromVal));
            return to;
        }
        function mergeDataOrFn(parentVal, childVal, vm) {
            return vm ? function() {
                var instanceData = "function" == typeof childVal ? childVal.call(vm, vm) : childVal, defaultData = "function" == typeof parentVal ? parentVal.call(vm, vm) : parentVal;
                return instanceData ? mergeData(instanceData, defaultData) : defaultData;
            } : childVal ? parentVal ? function() {
                return mergeData("function" == typeof childVal ? childVal.call(this, this) : childVal, "function" == typeof parentVal ? parentVal.call(this, this) : parentVal);
            } : childVal : parentVal;
        }
        function mergeHook(parentVal, childVal) {
            var res = childVal ? parentVal ? parentVal.concat(childVal) : Array.isArray(childVal) ? childVal : [ childVal ] : parentVal;
            return res ? function(hooks) {
                for (var res = [], i = 0; i < hooks.length; i++) -1 === res.indexOf(hooks[i]) && res.push(hooks[i]);
                return res;
            }(res) : res;
        }
        function mergeAssets(parentVal, childVal, vm, key) {
            var res = Object.create(parentVal || null);
            return childVal ? extend(res, childVal) : res;
        }
        strats.data = function(parentVal, childVal, vm) {
            return vm ? mergeDataOrFn(parentVal, childVal, vm) : childVal && "function" != typeof childVal ? parentVal : mergeDataOrFn(parentVal, childVal);
        }, LIFECYCLE_HOOKS.forEach((function(hook) {
            strats[hook] = mergeHook;
        })), ASSET_TYPES.forEach((function(type) {
            strats[type + "s"] = mergeAssets;
        })), strats.watch = function(parentVal, childVal, vm, key) {
            if (parentVal === nativeWatch && (parentVal = void 0), childVal === nativeWatch && (childVal = void 0), 
            !childVal) return Object.create(parentVal || null);
            if (!parentVal) return childVal;
            var ret = {};
            for (var key$1 in extend(ret, parentVal), childVal) {
                var parent = ret[key$1], child = childVal[key$1];
                parent && !Array.isArray(parent) && (parent = [ parent ]), ret[key$1] = parent ? parent.concat(child) : Array.isArray(child) ? child : [ child ];
            }
            return ret;
        }, strats.props = strats.methods = strats.inject = strats.computed = function(parentVal, childVal, vm, key) {
            if (!parentVal) return childVal;
            var ret = Object.create(null);
            return extend(ret, parentVal), childVal && extend(ret, childVal), ret;
        }, strats.provide = mergeDataOrFn;
        var defaultStrat = function(parentVal, childVal) {
            return void 0 === childVal ? parentVal : childVal;
        };
        function mergeOptions(parent, child, vm) {
            if ("function" == typeof child && (child = child.options), function(options, vm) {
                var props = options.props;
                if (props) {
                    var i, val, res = {};
                    if (Array.isArray(props)) for (i = props.length; i--; ) "string" == typeof (val = props[i]) && (res[camelize(val)] = {
                        type: null
                    }); else if (isPlainObject(props)) for (var key in props) val = props[key], res[camelize(key)] = isPlainObject(val) ? val : {
                        type: val
                    }; else 0;
                    options.props = res;
                }
            }(child), function(options, vm) {
                var inject = options.inject;
                if (inject) {
                    var normalized = options.inject = {};
                    if (Array.isArray(inject)) for (var i = 0; i < inject.length; i++) normalized[inject[i]] = {
                        from: inject[i]
                    }; else if (isPlainObject(inject)) for (var key in inject) {
                        var val = inject[key];
                        normalized[key] = isPlainObject(val) ? extend({
                            from: key
                        }, val) : {
                            from: val
                        };
                    } else 0;
                }
            }(child), function(options) {
                var dirs = options.directives;
                if (dirs) for (var key in dirs) {
                    var def$$1 = dirs[key];
                    "function" == typeof def$$1 && (dirs[key] = {
                        bind: def$$1,
                        update: def$$1
                    });
                }
            }(child), !child._base && (child.extends && (parent = mergeOptions(parent, child.extends, vm)), 
            child.mixins)) for (var i = 0, l = child.mixins.length; i < l; i++) parent = mergeOptions(parent, child.mixins[i], vm);
            var key, options = {};
            for (key in parent) mergeField(key);
            for (key in child) hasOwn(parent, key) || mergeField(key);
            function mergeField(key) {
                var strat = strats[key] || defaultStrat;
                options[key] = strat(parent[key], child[key], vm, key);
            }
            return options;
        }
        function resolveAsset(options, type, id, warnMissing) {
            if ("string" == typeof id) {
                var assets = options[type];
                if (hasOwn(assets, id)) return assets[id];
                var camelizedId = camelize(id);
                if (hasOwn(assets, camelizedId)) return assets[camelizedId];
                var PascalCaseId = capitalize(camelizedId);
                return hasOwn(assets, PascalCaseId) ? assets[PascalCaseId] : assets[id] || assets[camelizedId] || assets[PascalCaseId];
            }
        }
        function validateProp(key, propOptions, propsData, vm) {
            var prop = propOptions[key], absent = !hasOwn(propsData, key), value = propsData[key], booleanIndex = getTypeIndex(Boolean, prop.type);
            if (booleanIndex > -1) if (absent && !hasOwn(prop, "default")) value = !1; else if ("" === value || value === hyphenate(key)) {
                var stringIndex = getTypeIndex(String, prop.type);
                (stringIndex < 0 || booleanIndex < stringIndex) && (value = !0);
            }
            if (void 0 === value) {
                value = function(vm, prop, key) {
                    if (!hasOwn(prop, "default")) return;
                    var def = prop.default;
                    0;
                    if (vm && vm.$options.propsData && void 0 === vm.$options.propsData[key] && void 0 !== vm._props[key]) return vm._props[key];
                    return "function" == typeof def && "Function" !== getType(prop.type) ? def.call(vm) : def;
                }(vm, prop, key);
                var prevShouldObserve = shouldObserve;
                toggleObserving(!0), observe(value), toggleObserving(prevShouldObserve);
            }
            return value;
        }
        function getType(fn) {
            var match = fn && fn.toString().match(/^\s*function (\w+)/);
            return match ? match[1] : "";
        }
        function isSameType(a, b) {
            return getType(a) === getType(b);
        }
        function getTypeIndex(type, expectedTypes) {
            if (!Array.isArray(expectedTypes)) return isSameType(expectedTypes, type) ? 0 : -1;
            for (var i = 0, len = expectedTypes.length; i < len; i++) if (isSameType(expectedTypes[i], type)) return i;
            return -1;
        }
        function handleError(err, vm, info) {
            pushTarget();
            try {
                if (vm) for (var cur = vm; cur = cur.$parent; ) {
                    var hooks = cur.$options.errorCaptured;
                    if (hooks) for (var i = 0; i < hooks.length; i++) try {
                        if (!1 === hooks[i].call(cur, err, vm, info)) return;
                    } catch (e) {
                        globalHandleError(e, cur, "errorCaptured hook");
                    }
                }
                globalHandleError(err, vm, info);
            } finally {
                popTarget();
            }
        }
        function invokeWithErrorHandling(handler, context, args, vm, info) {
            var res;
            try {
                (res = args ? handler.apply(context, args) : handler.call(context)) && !res._isVue && isPromise(res) && !res._handled && (res.catch((function(e) {
                    return handleError(e, vm, info + " (Promise/async)");
                })), res._handled = !0);
            } catch (e) {
                handleError(e, vm, info);
            }
            return res;
        }
        function globalHandleError(err, vm, info) {
            if (config.errorHandler) try {
                return config.errorHandler.call(null, err, vm, info);
            } catch (e) {
                e !== err && logError(e, null, "config.errorHandler");
            }
            logError(err, vm, info);
        }
        function logError(err, vm, info) {
            if (!inBrowser && !inWeex || "undefined" == typeof console) throw err;
            console.error(err);
        }
        var timerFunc, isUsingMicroTask = !1, callbacks = [], pending = !1;
        function flushCallbacks() {
            pending = !1;
            var copies = callbacks.slice(0);
            callbacks.length = 0;
            for (var i = 0; i < copies.length; i++) copies[i]();
        }
        if ("undefined" != typeof Promise && isNative(Promise)) {
            var p = Promise.resolve();
            timerFunc = function() {
                p.then(flushCallbacks), isIOS && setTimeout(noop);
            }, isUsingMicroTask = !0;
        } else if (isIE || "undefined" == typeof MutationObserver || !isNative(MutationObserver) && "[object MutationObserverConstructor]" !== MutationObserver.toString()) timerFunc = void 0 !== setImmediate && isNative(setImmediate) ? function() {
            setImmediate(flushCallbacks);
        } : function() {
            setTimeout(flushCallbacks, 0);
        }; else {
            var counter = 1, observer = new MutationObserver(flushCallbacks), textNode = document.createTextNode(String(counter));
            observer.observe(textNode, {
                characterData: !0
            }), timerFunc = function() {
                counter = (counter + 1) % 2, textNode.data = String(counter);
            }, isUsingMicroTask = !0;
        }
        function nextTick(cb, ctx) {
            var _resolve;
            if (callbacks.push((function() {
                if (cb) try {
                    cb.call(ctx);
                } catch (e) {
                    handleError(e, ctx, "nextTick");
                } else _resolve && _resolve(ctx);
            })), pending || (pending = !0, timerFunc()), !cb && "undefined" != typeof Promise) return new Promise((function(resolve) {
                _resolve = resolve;
            }));
        }
        var seenObjects = new _Set;
        function traverse(val) {
            !function _traverse(val, seen) {
                var i, keys, isA = Array.isArray(val);
                if (!isA && !isObject(val) || Object.isFrozen(val) || val instanceof VNode) return;
                if (val.__ob__) {
                    var depId = val.__ob__.dep.id;
                    if (seen.has(depId)) return;
                    seen.add(depId);
                }
                if (isA) for (i = val.length; i--; ) _traverse(val[i], seen); else for (keys = Object.keys(val), 
                i = keys.length; i--; ) _traverse(val[keys[i]], seen);
            }(val, seenObjects), seenObjects.clear();
        }
        var normalizeEvent = cached((function(name) {
            var passive = "&" === name.charAt(0), once$$1 = "~" === (name = passive ? name.slice(1) : name).charAt(0), capture = "!" === (name = once$$1 ? name.slice(1) : name).charAt(0);
            return {
                name: name = capture ? name.slice(1) : name,
                once: once$$1,
                capture: capture,
                passive: passive
            };
        }));
        function createFnInvoker(fns, vm) {
            function invoker() {
                var arguments$1 = arguments, fns = invoker.fns;
                if (!Array.isArray(fns)) return invokeWithErrorHandling(fns, null, arguments, vm, "v-on handler");
                for (var cloned = fns.slice(), i = 0; i < cloned.length; i++) invokeWithErrorHandling(cloned[i], null, arguments$1, vm, "v-on handler");
            }
            return invoker.fns = fns, invoker;
        }
        function updateListeners(on, oldOn, add, remove$$1, createOnceHandler, vm) {
            var name, cur, old, event;
            for (name in on) cur = on[name], old = oldOn[name], event = normalizeEvent(name), 
            isUndef(cur) || (isUndef(old) ? (isUndef(cur.fns) && (cur = on[name] = createFnInvoker(cur, vm)), 
            isTrue(event.once) && (cur = on[name] = createOnceHandler(event.name, cur, event.capture)), 
            add(event.name, cur, event.capture, event.passive, event.params)) : cur !== old && (old.fns = cur, 
            on[name] = old));
            for (name in oldOn) isUndef(on[name]) && remove$$1((event = normalizeEvent(name)).name, oldOn[name], event.capture);
        }
        function mergeVNodeHook(def, hookKey, hook) {
            var invoker;
            def instanceof VNode && (def = def.data.hook || (def.data.hook = {}));
            var oldHook = def[hookKey];
            function wrappedHook() {
                hook.apply(this, arguments), remove(invoker.fns, wrappedHook);
            }
            isUndef(oldHook) ? invoker = createFnInvoker([ wrappedHook ]) : isDef(oldHook.fns) && isTrue(oldHook.merged) ? (invoker = oldHook).fns.push(wrappedHook) : invoker = createFnInvoker([ oldHook, wrappedHook ]), 
            invoker.merged = !0, def[hookKey] = invoker;
        }
        function checkProp(res, hash, key, altKey, preserve) {
            if (isDef(hash)) {
                if (hasOwn(hash, key)) return res[key] = hash[key], preserve || delete hash[key], 
                !0;
                if (hasOwn(hash, altKey)) return res[key] = hash[altKey], preserve || delete hash[altKey], 
                !0;
            }
            return !1;
        }
        function normalizeChildren(children) {
            return isPrimitive(children) ? [ createTextVNode(children) ] : Array.isArray(children) ? function normalizeArrayChildren(children, nestedIndex) {
                var i, c, lastIndex, last, res = [];
                for (i = 0; i < children.length; i++) isUndef(c = children[i]) || "boolean" == typeof c || (lastIndex = res.length - 1, 
                last = res[lastIndex], Array.isArray(c) ? c.length > 0 && (isTextNode((c = normalizeArrayChildren(c, (nestedIndex || "") + "_" + i))[0]) && isTextNode(last) && (res[lastIndex] = createTextVNode(last.text + c[0].text), 
                c.shift()), res.push.apply(res, c)) : isPrimitive(c) ? isTextNode(last) ? res[lastIndex] = createTextVNode(last.text + c) : "" !== c && res.push(createTextVNode(c)) : isTextNode(c) && isTextNode(last) ? res[lastIndex] = createTextVNode(last.text + c.text) : (isTrue(children._isVList) && isDef(c.tag) && isUndef(c.key) && isDef(nestedIndex) && (c.key = "__vlist" + nestedIndex + "_" + i + "__"), 
                res.push(c)));
                return res;
            }(children) : void 0;
        }
        function isTextNode(node) {
            return isDef(node) && isDef(node.text) && !1 === node.isComment;
        }
        function resolveInject(inject, vm) {
            if (inject) {
                for (var result = Object.create(null), keys = hasSymbol ? Reflect.ownKeys(inject) : Object.keys(inject), i = 0; i < keys.length; i++) {
                    var key = keys[i];
                    if ("__ob__" !== key) {
                        for (var provideKey = inject[key].from, source = vm; source; ) {
                            if (source._provided && hasOwn(source._provided, provideKey)) {
                                result[key] = source._provided[provideKey];
                                break;
                            }
                            source = source.$parent;
                        }
                        if (!source) if ("default" in inject[key]) {
                            var provideDefault = inject[key].default;
                            result[key] = "function" == typeof provideDefault ? provideDefault.call(vm) : provideDefault;
                        } else 0;
                    }
                }
                return result;
            }
        }
        function resolveSlots(children, context) {
            if (!children || !children.length) return {};
            for (var slots = {}, i = 0, l = children.length; i < l; i++) {
                var child = children[i], data = child.data;
                if (data && data.attrs && data.attrs.slot && delete data.attrs.slot, child.context !== context && child.fnContext !== context || !data || null == data.slot) (slots.default || (slots.default = [])).push(child); else {
                    var name = data.slot, slot = slots[name] || (slots[name] = []);
                    "template" === child.tag ? slot.push.apply(slot, child.children || []) : slot.push(child);
                }
            }
            for (var name$1 in slots) slots[name$1].every(isWhitespace) && delete slots[name$1];
            return slots;
        }
        function isWhitespace(node) {
            return node.isComment && !node.asyncFactory || " " === node.text;
        }
        function normalizeScopedSlots(slots, normalSlots, prevSlots) {
            var res, hasNormalSlots = Object.keys(normalSlots).length > 0, isStable = slots ? !!slots.$stable : !hasNormalSlots, key = slots && slots.$key;
            if (slots) {
                if (slots._normalized) return slots._normalized;
                if (isStable && prevSlots && prevSlots !== emptyObject && key === prevSlots.$key && !hasNormalSlots && !prevSlots.$hasNormal) return prevSlots;
                for (var key$1 in res = {}, slots) slots[key$1] && "$" !== key$1[0] && (res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]));
            } else res = {};
            for (var key$2 in normalSlots) key$2 in res || (res[key$2] = proxyNormalSlot(normalSlots, key$2));
            return slots && Object.isExtensible(slots) && (slots._normalized = res), def(res, "$stable", isStable), 
            def(res, "$key", key), def(res, "$hasNormal", hasNormalSlots), res;
        }
        function normalizeScopedSlot(normalSlots, key, fn) {
            var normalized = function() {
                var res = arguments.length ? fn.apply(null, arguments) : fn({});
                return (res = res && "object" == typeof res && !Array.isArray(res) ? [ res ] : normalizeChildren(res)) && (0 === res.length || 1 === res.length && res[0].isComment) ? void 0 : res;
            };
            return fn.proxy && Object.defineProperty(normalSlots, key, {
                get: normalized,
                enumerable: !0,
                configurable: !0
            }), normalized;
        }
        function proxyNormalSlot(slots, key) {
            return function() {
                return slots[key];
            };
        }
        function renderList(val, render) {
            var ret, i, l, keys, key;
            if (Array.isArray(val) || "string" == typeof val) for (ret = new Array(val.length), 
            i = 0, l = val.length; i < l; i++) ret[i] = render(val[i], i); else if ("number" == typeof val) for (ret = new Array(val), 
            i = 0; i < val; i++) ret[i] = render(i + 1, i); else if (isObject(val)) if (hasSymbol && val[Symbol.iterator]) {
                ret = [];
                for (var iterator = val[Symbol.iterator](), result = iterator.next(); !result.done; ) ret.push(render(result.value, ret.length)), 
                result = iterator.next();
            } else for (keys = Object.keys(val), ret = new Array(keys.length), i = 0, l = keys.length; i < l; i++) key = keys[i], 
            ret[i] = render(val[key], key, i);
            return isDef(ret) || (ret = []), ret._isVList = !0, ret;
        }
        function renderSlot(name, fallback, props, bindObject) {
            var nodes, scopedSlotFn = this.$scopedSlots[name];
            scopedSlotFn ? (props = props || {}, bindObject && (props = extend(extend({}, bindObject), props)), 
            nodes = scopedSlotFn(props) || fallback) : nodes = this.$slots[name] || fallback;
            var target = props && props.slot;
            return target ? this.$createElement("template", {
                slot: target
            }, nodes) : nodes;
        }
        function resolveFilter(id) {
            return resolveAsset(this.$options, "filters", id) || identity;
        }
        function isKeyNotMatch(expect, actual) {
            return Array.isArray(expect) ? -1 === expect.indexOf(actual) : expect !== actual;
        }
        function checkKeyCodes(eventKeyCode, key, builtInKeyCode, eventKeyName, builtInKeyName) {
            var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;
            return builtInKeyName && eventKeyName && !config.keyCodes[key] ? isKeyNotMatch(builtInKeyName, eventKeyName) : mappedKeyCode ? isKeyNotMatch(mappedKeyCode, eventKeyCode) : eventKeyName ? hyphenate(eventKeyName) !== key : void 0;
        }
        function bindObjectProps(data, tag, value, asProp, isSync) {
            if (value) if (isObject(value)) {
                var hash;
                Array.isArray(value) && (value = toObject(value));
                var loop = function(key) {
                    if ("class" === key || "style" === key || isReservedAttribute(key)) hash = data; else {
                        var type = data.attrs && data.attrs.type;
                        hash = asProp || config.mustUseProp(tag, type, key) ? data.domProps || (data.domProps = {}) : data.attrs || (data.attrs = {});
                    }
                    var camelizedKey = camelize(key), hyphenatedKey = hyphenate(key);
                    camelizedKey in hash || hyphenatedKey in hash || (hash[key] = value[key], isSync && ((data.on || (data.on = {}))["update:" + key] = function($event) {
                        value[key] = $event;
                    }));
                };
                for (var key in value) loop(key);
            } else ;
            return data;
        }
        function renderStatic(index, isInFor) {
            var cached = this._staticTrees || (this._staticTrees = []), tree = cached[index];
            return tree && !isInFor ? tree : (markStatic(tree = cached[index] = this.$options.staticRenderFns[index].call(this._renderProxy, null, this), "__static__" + index, !1), 
            tree);
        }
        function markOnce(tree, index, key) {
            return markStatic(tree, "__once__" + index + (key ? "_" + key : ""), !0), tree;
        }
        function markStatic(tree, key, isOnce) {
            if (Array.isArray(tree)) for (var i = 0; i < tree.length; i++) tree[i] && "string" != typeof tree[i] && markStaticNode(tree[i], key + "_" + i, isOnce); else markStaticNode(tree, key, isOnce);
        }
        function markStaticNode(node, key, isOnce) {
            node.isStatic = !0, node.key = key, node.isOnce = isOnce;
        }
        function bindObjectListeners(data, value) {
            if (value) if (isPlainObject(value)) {
                var on = data.on = data.on ? extend({}, data.on) : {};
                for (var key in value) {
                    var existing = on[key], ours = value[key];
                    on[key] = existing ? [].concat(existing, ours) : ours;
                }
            } else ;
            return data;
        }
        function resolveScopedSlots(fns, res, hasDynamicKeys, contentHashKey) {
            res = res || {
                $stable: !hasDynamicKeys
            };
            for (var i = 0; i < fns.length; i++) {
                var slot = fns[i];
                Array.isArray(slot) ? resolveScopedSlots(slot, res, hasDynamicKeys) : slot && (slot.proxy && (slot.fn.proxy = !0), 
                res[slot.key] = slot.fn);
            }
            return contentHashKey && (res.$key = contentHashKey), res;
        }
        function bindDynamicKeys(baseObj, values) {
            for (var i = 0; i < values.length; i += 2) {
                var key = values[i];
                "string" == typeof key && key && (baseObj[values[i]] = values[i + 1]);
            }
            return baseObj;
        }
        function prependModifier(value, symbol) {
            return "string" == typeof value ? symbol + value : value;
        }
        function installRenderHelpers(target) {
            target._o = markOnce, target._n = toNumber, target._s = toString, target._l = renderList, 
            target._t = renderSlot, target._q = looseEqual, target._i = looseIndexOf, target._m = renderStatic, 
            target._f = resolveFilter, target._k = checkKeyCodes, target._b = bindObjectProps, 
            target._v = createTextVNode, target._e = createEmptyVNode, target._u = resolveScopedSlots, 
            target._g = bindObjectListeners, target._d = bindDynamicKeys, target._p = prependModifier;
        }
        function FunctionalRenderContext(data, props, children, parent, Ctor) {
            var contextVm, this$1 = this, options = Ctor.options;
            hasOwn(parent, "_uid") ? (contextVm = Object.create(parent))._original = parent : (contextVm = parent, 
            parent = parent._original);
            var isCompiled = isTrue(options._compiled), needNormalization = !isCompiled;
            this.data = data, this.props = props, this.children = children, this.parent = parent, 
            this.listeners = data.on || emptyObject, this.injections = resolveInject(options.inject, parent), 
            this.slots = function() {
                return this$1.$slots || normalizeScopedSlots(data.scopedSlots, this$1.$slots = resolveSlots(children, parent)), 
                this$1.$slots;
            }, Object.defineProperty(this, "scopedSlots", {
                enumerable: !0,
                get: function() {
                    return normalizeScopedSlots(data.scopedSlots, this.slots());
                }
            }), isCompiled && (this.$options = options, this.$slots = this.slots(), this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots)), 
            options._scopeId ? this._c = function(a, b, c, d) {
                var vnode = createElement(contextVm, a, b, c, d, needNormalization);
                return vnode && !Array.isArray(vnode) && (vnode.fnScopeId = options._scopeId, vnode.fnContext = parent), 
                vnode;
            } : this._c = function(a, b, c, d) {
                return createElement(contextVm, a, b, c, d, needNormalization);
            };
        }
        function cloneAndMarkFunctionalResult(vnode, data, contextVm, options, renderContext) {
            var clone = cloneVNode(vnode);
            return clone.fnContext = contextVm, clone.fnOptions = options, data.slot && ((clone.data || (clone.data = {})).slot = data.slot), 
            clone;
        }
        function mergeProps(to, from) {
            for (var key in from) to[camelize(key)] = from[key];
        }
        installRenderHelpers(FunctionalRenderContext.prototype);
        var componentVNodeHooks = {
            init: function(vnode, hydrating) {
                if (vnode.componentInstance && !vnode.componentInstance._isDestroyed && vnode.data.keepAlive) {
                    var mountedNode = vnode;
                    componentVNodeHooks.prepatch(mountedNode, mountedNode);
                } else {
                    (vnode.componentInstance = function(vnode, parent) {
                        var options = {
                            _isComponent: !0,
                            _parentVnode: vnode,
                            parent: parent
                        }, inlineTemplate = vnode.data.inlineTemplate;
                        isDef(inlineTemplate) && (options.render = inlineTemplate.render, options.staticRenderFns = inlineTemplate.staticRenderFns);
                        return new vnode.componentOptions.Ctor(options);
                    }(vnode, activeInstance)).$mount(hydrating ? vnode.elm : void 0, hydrating);
                }
            },
            prepatch: function(oldVnode, vnode) {
                var options = vnode.componentOptions;
                !function(vm, propsData, listeners, parentVnode, renderChildren) {
                    0;
                    var newScopedSlots = parentVnode.data.scopedSlots, oldScopedSlots = vm.$scopedSlots, hasDynamicScopedSlot = !!(newScopedSlots && !newScopedSlots.$stable || oldScopedSlots !== emptyObject && !oldScopedSlots.$stable || newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key), needsForceUpdate = !!(renderChildren || vm.$options._renderChildren || hasDynamicScopedSlot);
                    vm.$options._parentVnode = parentVnode, vm.$vnode = parentVnode, vm._vnode && (vm._vnode.parent = parentVnode);
                    if (vm.$options._renderChildren = renderChildren, vm.$attrs = parentVnode.data.attrs || emptyObject, 
                    vm.$listeners = listeners || emptyObject, propsData && vm.$options.props) {
                        toggleObserving(!1);
                        for (var props = vm._props, propKeys = vm.$options._propKeys || [], i = 0; i < propKeys.length; i++) {
                            var key = propKeys[i], propOptions = vm.$options.props;
                            props[key] = validateProp(key, propOptions, propsData, vm);
                        }
                        toggleObserving(!0), vm.$options.propsData = propsData;
                    }
                    listeners = listeners || emptyObject;
                    var oldListeners = vm.$options._parentListeners;
                    vm.$options._parentListeners = listeners, updateComponentListeners(vm, listeners, oldListeners), 
                    needsForceUpdate && (vm.$slots = resolveSlots(renderChildren, parentVnode.context), 
                    vm.$forceUpdate());
                    0;
                }(vnode.componentInstance = oldVnode.componentInstance, options.propsData, options.listeners, vnode, options.children);
            },
            insert: function(vnode) {
                var vm, context = vnode.context, componentInstance = vnode.componentInstance;
                componentInstance._isMounted || (componentInstance._isMounted = !0, callHook(componentInstance, "mounted")), 
                vnode.data.keepAlive && (context._isMounted ? ((vm = componentInstance)._inactive = !1, 
                activatedChildren.push(vm)) : activateChildComponent(componentInstance, !0));
            },
            destroy: function(vnode) {
                var componentInstance = vnode.componentInstance;
                componentInstance._isDestroyed || (vnode.data.keepAlive ? function deactivateChildComponent(vm, direct) {
                    if (direct && (vm._directInactive = !0, isInInactiveTree(vm))) return;
                    if (!vm._inactive) {
                        vm._inactive = !0;
                        for (var i = 0; i < vm.$children.length; i++) deactivateChildComponent(vm.$children[i]);
                        callHook(vm, "deactivated");
                    }
                }(componentInstance, !0) : componentInstance.$destroy());
            }
        }, hooksToMerge = Object.keys(componentVNodeHooks);
        function createComponent(Ctor, data, context, children, tag) {
            if (!isUndef(Ctor)) {
                var baseCtor = context.$options._base;
                if (isObject(Ctor) && (Ctor = baseCtor.extend(Ctor)), "function" == typeof Ctor) {
                    var asyncFactory;
                    if (isUndef(Ctor.cid) && void 0 === (Ctor = function(factory, baseCtor) {
                        if (isTrue(factory.error) && isDef(factory.errorComp)) return factory.errorComp;
                        if (isDef(factory.resolved)) return factory.resolved;
                        var owner = currentRenderingInstance;
                        owner && isDef(factory.owners) && -1 === factory.owners.indexOf(owner) && factory.owners.push(owner);
                        if (isTrue(factory.loading) && isDef(factory.loadingComp)) return factory.loadingComp;
                        if (owner && !isDef(factory.owners)) {
                            var owners = factory.owners = [ owner ], sync = !0, timerLoading = null, timerTimeout = null;
                            owner.$on("hook:destroyed", (function() {
                                return remove(owners, owner);
                            }));
                            var forceRender = function(renderCompleted) {
                                for (var i = 0, l = owners.length; i < l; i++) owners[i].$forceUpdate();
                                renderCompleted && (owners.length = 0, null !== timerLoading && (clearTimeout(timerLoading), 
                                timerLoading = null), null !== timerTimeout && (clearTimeout(timerTimeout), timerTimeout = null));
                            }, resolve = once((function(res) {
                                factory.resolved = ensureCtor(res, baseCtor), sync ? owners.length = 0 : forceRender(!0);
                            })), reject = once((function(reason) {
                                isDef(factory.errorComp) && (factory.error = !0, forceRender(!0));
                            })), res = factory(resolve, reject);
                            return isObject(res) && (isPromise(res) ? isUndef(factory.resolved) && res.then(resolve, reject) : isPromise(res.component) && (res.component.then(resolve, reject), 
                            isDef(res.error) && (factory.errorComp = ensureCtor(res.error, baseCtor)), isDef(res.loading) && (factory.loadingComp = ensureCtor(res.loading, baseCtor), 
                            0 === res.delay ? factory.loading = !0 : timerLoading = setTimeout((function() {
                                timerLoading = null, isUndef(factory.resolved) && isUndef(factory.error) && (factory.loading = !0, 
                                forceRender(!1));
                            }), res.delay || 200)), isDef(res.timeout) && (timerTimeout = setTimeout((function() {
                                timerTimeout = null, isUndef(factory.resolved) && reject(null);
                            }), res.timeout)))), sync = !1, factory.loading ? factory.loadingComp : factory.resolved;
                        }
                    }(asyncFactory = Ctor, baseCtor))) return function(factory, data, context, children, tag) {
                        var node = createEmptyVNode();
                        return node.asyncFactory = factory, node.asyncMeta = {
                            data: data,
                            context: context,
                            children: children,
                            tag: tag
                        }, node;
                    }(asyncFactory, data, context, children, tag);
                    data = data || {}, resolveConstructorOptions(Ctor), isDef(data.model) && function(options, data) {
                        var prop = options.model && options.model.prop || "value", event = options.model && options.model.event || "input";
                        (data.attrs || (data.attrs = {}))[prop] = data.model.value;
                        var on = data.on || (data.on = {}), existing = on[event], callback = data.model.callback;
                        isDef(existing) ? (Array.isArray(existing) ? -1 === existing.indexOf(callback) : existing !== callback) && (on[event] = [ callback ].concat(existing)) : on[event] = callback;
                    }(Ctor.options, data);
                    var propsData = function(data, Ctor, tag) {
                        var propOptions = Ctor.options.props;
                        if (!isUndef(propOptions)) {
                            var res = {}, attrs = data.attrs, props = data.props;
                            if (isDef(attrs) || isDef(props)) for (var key in propOptions) {
                                var altKey = hyphenate(key);
                                checkProp(res, props, key, altKey, !0) || checkProp(res, attrs, key, altKey, !1);
                            }
                            return res;
                        }
                    }(data, Ctor);
                    if (isTrue(Ctor.options.functional)) return function(Ctor, propsData, data, contextVm, children) {
                        var options = Ctor.options, props = {}, propOptions = options.props;
                        if (isDef(propOptions)) for (var key in propOptions) props[key] = validateProp(key, propOptions, propsData || emptyObject); else isDef(data.attrs) && mergeProps(props, data.attrs), 
                        isDef(data.props) && mergeProps(props, data.props);
                        var renderContext = new FunctionalRenderContext(data, props, children, contextVm, Ctor), vnode = options.render.call(null, renderContext._c, renderContext);
                        if (vnode instanceof VNode) return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext);
                        if (Array.isArray(vnode)) {
                            for (var vnodes = normalizeChildren(vnode) || [], res = new Array(vnodes.length), i = 0; i < vnodes.length; i++) res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);
                            return res;
                        }
                    }(Ctor, propsData, data, context, children);
                    var listeners = data.on;
                    if (data.on = data.nativeOn, isTrue(Ctor.options.abstract)) {
                        var slot = data.slot;
                        data = {}, slot && (data.slot = slot);
                    }
                    !function(data) {
                        for (var hooks = data.hook || (data.hook = {}), i = 0; i < hooksToMerge.length; i++) {
                            var key = hooksToMerge[i], existing = hooks[key], toMerge = componentVNodeHooks[key];
                            existing === toMerge || existing && existing._merged || (hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge);
                        }
                    }(data);
                    var name = Ctor.options.name || tag;
                    return new VNode("vue-component-" + Ctor.cid + (name ? "-" + name : ""), data, void 0, void 0, void 0, context, {
                        Ctor: Ctor,
                        propsData: propsData,
                        listeners: listeners,
                        tag: tag,
                        children: children
                    }, asyncFactory);
                }
            }
        }
        function mergeHook$1(f1, f2) {
            var merged = function(a, b) {
                f1(a, b), f2(a, b);
            };
            return merged._merged = !0, merged;
        }
        var SIMPLE_NORMALIZE = 1, ALWAYS_NORMALIZE = 2;
        function createElement(context, tag, data, children, normalizationType, alwaysNormalize) {
            return (Array.isArray(data) || isPrimitive(data)) && (normalizationType = children, 
            children = data, data = void 0), isTrue(alwaysNormalize) && (normalizationType = ALWAYS_NORMALIZE), 
            function(context, tag, data, children, normalizationType) {
                if (isDef(data) && isDef(data.__ob__)) return createEmptyVNode();
                isDef(data) && isDef(data.is) && (tag = data.is);
                if (!tag) return createEmptyVNode();
                0;
                Array.isArray(children) && "function" == typeof children[0] && ((data = data || {}).scopedSlots = {
                    default: children[0]
                }, children.length = 0);
                normalizationType === ALWAYS_NORMALIZE ? children = normalizeChildren(children) : normalizationType === SIMPLE_NORMALIZE && (children = function(children) {
                    for (var i = 0; i < children.length; i++) if (Array.isArray(children[i])) return Array.prototype.concat.apply([], children);
                    return children;
                }(children));
                var vnode, ns;
                if ("string" == typeof tag) {
                    var Ctor;
                    ns = context.$vnode && context.$vnode.ns || config.getTagNamespace(tag), vnode = config.isReservedTag(tag) ? new VNode(config.parsePlatformTagName(tag), data, children, void 0, void 0, context) : data && data.pre || !isDef(Ctor = resolveAsset(context.$options, "components", tag)) ? new VNode(tag, data, children, void 0, void 0, context) : createComponent(Ctor, data, context, children, tag);
                } else vnode = createComponent(tag, data, context, children);
                return Array.isArray(vnode) ? vnode : isDef(vnode) ? (isDef(ns) && function applyNS(vnode, ns, force) {
                    vnode.ns = ns, "foreignObject" === vnode.tag && (ns = void 0, force = !0);
                    if (isDef(vnode.children)) for (var i = 0, l = vnode.children.length; i < l; i++) {
                        var child = vnode.children[i];
                        isDef(child.tag) && (isUndef(child.ns) || isTrue(force) && "svg" !== child.tag) && applyNS(child, ns, force);
                    }
                }(vnode, ns), isDef(data) && function(data) {
                    isObject(data.style) && traverse(data.style);
                    isObject(data.class) && traverse(data.class);
                }(data), vnode) : createEmptyVNode();
            }(context, tag, data, children, normalizationType);
        }
        var target, currentRenderingInstance = null;
        function ensureCtor(comp, base) {
            return (comp.__esModule || hasSymbol && "Module" === comp[Symbol.toStringTag]) && (comp = comp.default), 
            isObject(comp) ? base.extend(comp) : comp;
        }
        function isAsyncPlaceholder(node) {
            return node.isComment && node.asyncFactory;
        }
        function getFirstComponentChild(children) {
            if (Array.isArray(children)) for (var i = 0; i < children.length; i++) {
                var c = children[i];
                if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) return c;
            }
        }
        function add(event, fn) {
            target.$on(event, fn);
        }
        function remove$1(event, fn) {
            target.$off(event, fn);
        }
        function createOnceHandler(event, fn) {
            var _target = target;
            return function onceHandler() {
                var res = fn.apply(null, arguments);
                null !== res && _target.$off(event, onceHandler);
            };
        }
        function updateComponentListeners(vm, listeners, oldListeners) {
            target = vm, updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm), 
            target = void 0;
        }
        var activeInstance = null;
        function setActiveInstance(vm) {
            var prevActiveInstance = activeInstance;
            return activeInstance = vm, function() {
                activeInstance = prevActiveInstance;
            };
        }
        function isInInactiveTree(vm) {
            for (;vm && (vm = vm.$parent); ) if (vm._inactive) return !0;
            return !1;
        }
        function activateChildComponent(vm, direct) {
            if (direct) {
                if (vm._directInactive = !1, isInInactiveTree(vm)) return;
            } else if (vm._directInactive) return;
            if (vm._inactive || null === vm._inactive) {
                vm._inactive = !1;
                for (var i = 0; i < vm.$children.length; i++) activateChildComponent(vm.$children[i]);
                callHook(vm, "activated");
            }
        }
        function callHook(vm, hook) {
            pushTarget();
            var handlers = vm.$options[hook], info = hook + " hook";
            if (handlers) for (var i = 0, j = handlers.length; i < j; i++) invokeWithErrorHandling(handlers[i], vm, null, vm, info);
            vm._hasHookEvent && vm.$emit("hook:" + hook), popTarget();
        }
        var queue = [], activatedChildren = [], has = {}, waiting = !1, flushing = !1, index = 0;
        var currentFlushTimestamp = 0, getNow = Date.now;
        if (inBrowser && !isIE) {
            var performance = window.performance;
            performance && "function" == typeof performance.now && getNow() > document.createEvent("Event").timeStamp && (getNow = function() {
                return performance.now();
            });
        }
        function flushSchedulerQueue() {
            var watcher, id;
            for (currentFlushTimestamp = getNow(), flushing = !0, queue.sort((function(a, b) {
                return a.id - b.id;
            })), index = 0; index < queue.length; index++) (watcher = queue[index]).before && watcher.before(), 
            id = watcher.id, has[id] = null, watcher.run();
            var activatedQueue = activatedChildren.slice(), updatedQueue = queue.slice();
            index = queue.length = activatedChildren.length = 0, has = {}, waiting = flushing = !1, 
            function(queue) {
                for (var i = 0; i < queue.length; i++) queue[i]._inactive = !0, activateChildComponent(queue[i], !0);
            }(activatedQueue), function(queue) {
                var i = queue.length;
                for (;i--; ) {
                    var watcher = queue[i], vm = watcher.vm;
                    vm._watcher === watcher && vm._isMounted && !vm._isDestroyed && callHook(vm, "updated");
                }
            }(updatedQueue), devtools && config.devtools && devtools.emit("flush");
        }
        var uid$2 = 0, Watcher = function(vm, expOrFn, cb, options, isRenderWatcher) {
            this.vm = vm, isRenderWatcher && (vm._watcher = this), vm._watchers.push(this), 
            options ? (this.deep = !!options.deep, this.user = !!options.user, this.lazy = !!options.lazy, 
            this.sync = !!options.sync, this.before = options.before) : this.deep = this.user = this.lazy = this.sync = !1, 
            this.cb = cb, this.id = ++uid$2, this.active = !0, this.dirty = this.lazy, this.deps = [], 
            this.newDeps = [], this.depIds = new _Set, this.newDepIds = new _Set, this.expression = "", 
            "function" == typeof expOrFn ? this.getter = expOrFn : (this.getter = function(path) {
                if (!bailRE.test(path)) {
                    var segments = path.split(".");
                    return function(obj) {
                        for (var i = 0; i < segments.length; i++) {
                            if (!obj) return;
                            obj = obj[segments[i]];
                        }
                        return obj;
                    };
                }
            }(expOrFn), this.getter || (this.getter = noop)), this.value = this.lazy ? void 0 : this.get();
        };
        Watcher.prototype.get = function() {
            var value;
            pushTarget(this);
            var vm = this.vm;
            try {
                value = this.getter.call(vm, vm);
            } catch (e) {
                if (!this.user) throw e;
                handleError(e, vm, 'getter for watcher "' + this.expression + '"');
            } finally {
                this.deep && traverse(value), popTarget(), this.cleanupDeps();
            }
            return value;
        }, Watcher.prototype.addDep = function(dep) {
            var id = dep.id;
            this.newDepIds.has(id) || (this.newDepIds.add(id), this.newDeps.push(dep), this.depIds.has(id) || dep.addSub(this));
        }, Watcher.prototype.cleanupDeps = function() {
            for (var i = this.deps.length; i--; ) {
                var dep = this.deps[i];
                this.newDepIds.has(dep.id) || dep.removeSub(this);
            }
            var tmp = this.depIds;
            this.depIds = this.newDepIds, this.newDepIds = tmp, this.newDepIds.clear(), tmp = this.deps, 
            this.deps = this.newDeps, this.newDeps = tmp, this.newDeps.length = 0;
        }, Watcher.prototype.update = function() {
            this.lazy ? this.dirty = !0 : this.sync ? this.run() : function(watcher) {
                var id = watcher.id;
                if (null == has[id]) {
                    if (has[id] = !0, flushing) {
                        for (var i = queue.length - 1; i > index && queue[i].id > watcher.id; ) i--;
                        queue.splice(i + 1, 0, watcher);
                    } else queue.push(watcher);
                    waiting || (waiting = !0, nextTick(flushSchedulerQueue));
                }
            }(this);
        }, Watcher.prototype.run = function() {
            if (this.active) {
                var value = this.get();
                if (value !== this.value || isObject(value) || this.deep) {
                    var oldValue = this.value;
                    if (this.value = value, this.user) try {
                        this.cb.call(this.vm, value, oldValue);
                    } catch (e) {
                        handleError(e, this.vm, 'callback for watcher "' + this.expression + '"');
                    } else this.cb.call(this.vm, value, oldValue);
                }
            }
        }, Watcher.prototype.evaluate = function() {
            this.value = this.get(), this.dirty = !1;
        }, Watcher.prototype.depend = function() {
            for (var i = this.deps.length; i--; ) this.deps[i].depend();
        }, Watcher.prototype.teardown = function() {
            if (this.active) {
                this.vm._isBeingDestroyed || remove(this.vm._watchers, this);
                for (var i = this.deps.length; i--; ) this.deps[i].removeSub(this);
                this.active = !1;
            }
        };
        var sharedPropertyDefinition = {
            enumerable: !0,
            configurable: !0,
            get: noop,
            set: noop
        };
        function proxy(target, sourceKey, key) {
            sharedPropertyDefinition.get = function() {
                return this[sourceKey][key];
            }, sharedPropertyDefinition.set = function(val) {
                this[sourceKey][key] = val;
            }, Object.defineProperty(target, key, sharedPropertyDefinition);
        }
        function initState(vm) {
            vm._watchers = [];
            var opts = vm.$options;
            opts.props && function(vm, propsOptions) {
                var propsData = vm.$options.propsData || {}, props = vm._props = {}, keys = vm.$options._propKeys = [];
                vm.$parent && toggleObserving(!1);
                var loop = function(key) {
                    keys.push(key);
                    var value = validateProp(key, propsOptions, propsData, vm);
                    defineReactive$$1(props, key, value), key in vm || proxy(vm, "_props", key);
                };
                for (var key in propsOptions) loop(key);
                toggleObserving(!0);
            }(vm, opts.props), opts.methods && function(vm, methods) {
                vm.$options.props;
                for (var key in methods) vm[key] = "function" != typeof methods[key] ? noop : bind(methods[key], vm);
            }(vm, opts.methods), opts.data ? function(vm) {
                var data = vm.$options.data;
                isPlainObject(data = vm._data = "function" == typeof data ? function(data, vm) {
                    pushTarget();
                    try {
                        return data.call(vm, vm);
                    } catch (e) {
                        return handleError(e, vm, "data()"), {};
                    } finally {
                        popTarget();
                    }
                }(data, vm) : data || {}) || (data = {});
                var keys = Object.keys(data), props = vm.$options.props, i = (vm.$options.methods, 
                keys.length);
                for (;i--; ) {
                    var key = keys[i];
                    0, props && hasOwn(props, key) || isReserved(key) || proxy(vm, "_data", key);
                }
                observe(data, !0);
            }(vm) : observe(vm._data = {}, !0), opts.computed && function(vm, computed) {
                var watchers = vm._computedWatchers = Object.create(null), isSSR = isServerRendering();
                for (var key in computed) {
                    var userDef = computed[key], getter = "function" == typeof userDef ? userDef : userDef.get;
                    0, isSSR || (watchers[key] = new Watcher(vm, getter || noop, noop, computedWatcherOptions)), 
                    key in vm || defineComputed(vm, key, userDef);
                }
            }(vm, opts.computed), opts.watch && opts.watch !== nativeWatch && function(vm, watch) {
                for (var key in watch) {
                    var handler = watch[key];
                    if (Array.isArray(handler)) for (var i = 0; i < handler.length; i++) createWatcher(vm, key, handler[i]); else createWatcher(vm, key, handler);
                }
            }(vm, opts.watch);
        }
        var computedWatcherOptions = {
            lazy: !0
        };
        function defineComputed(target, key, userDef) {
            var shouldCache = !isServerRendering();
            "function" == typeof userDef ? (sharedPropertyDefinition.get = shouldCache ? createComputedGetter(key) : createGetterInvoker(userDef), 
            sharedPropertyDefinition.set = noop) : (sharedPropertyDefinition.get = userDef.get ? shouldCache && !1 !== userDef.cache ? createComputedGetter(key) : createGetterInvoker(userDef.get) : noop, 
            sharedPropertyDefinition.set = userDef.set || noop), Object.defineProperty(target, key, sharedPropertyDefinition);
        }
        function createComputedGetter(key) {
            return function() {
                var watcher = this._computedWatchers && this._computedWatchers[key];
                if (watcher) return watcher.dirty && watcher.evaluate(), Dep.target && watcher.depend(), 
                watcher.value;
            };
        }
        function createGetterInvoker(fn) {
            return function() {
                return fn.call(this, this);
            };
        }
        function createWatcher(vm, expOrFn, handler, options) {
            return isPlainObject(handler) && (options = handler, handler = handler.handler), 
            "string" == typeof handler && (handler = vm[handler]), vm.$watch(expOrFn, handler, options);
        }
        var uid$3 = 0;
        function resolveConstructorOptions(Ctor) {
            var options = Ctor.options;
            if (Ctor.super) {
                var superOptions = resolveConstructorOptions(Ctor.super);
                if (superOptions !== Ctor.superOptions) {
                    Ctor.superOptions = superOptions;
                    var modifiedOptions = function(Ctor) {
                        var modified, latest = Ctor.options, sealed = Ctor.sealedOptions;
                        for (var key in latest) latest[key] !== sealed[key] && (modified || (modified = {}), 
                        modified[key] = latest[key]);
                        return modified;
                    }(Ctor);
                    modifiedOptions && extend(Ctor.extendOptions, modifiedOptions), (options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions)).name && (options.components[options.name] = Ctor);
                }
            }
            return options;
        }
        function Vue(options) {
            this._init(options);
        }
        function initExtend(Vue) {
            Vue.cid = 0;
            var cid = 1;
            Vue.extend = function(extendOptions) {
                extendOptions = extendOptions || {};
                var Super = this, SuperId = Super.cid, cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});
                if (cachedCtors[SuperId]) return cachedCtors[SuperId];
                var name = extendOptions.name || Super.options.name;
                var Sub = function(options) {
                    this._init(options);
                };
                return (Sub.prototype = Object.create(Super.prototype)).constructor = Sub, Sub.cid = cid++, 
                Sub.options = mergeOptions(Super.options, extendOptions), Sub.super = Super, Sub.options.props && function(Comp) {
                    var props = Comp.options.props;
                    for (var key in props) proxy(Comp.prototype, "_props", key);
                }(Sub), Sub.options.computed && function(Comp) {
                    var computed = Comp.options.computed;
                    for (var key in computed) defineComputed(Comp.prototype, key, computed[key]);
                }(Sub), Sub.extend = Super.extend, Sub.mixin = Super.mixin, Sub.use = Super.use, 
                ASSET_TYPES.forEach((function(type) {
                    Sub[type] = Super[type];
                })), name && (Sub.options.components[name] = Sub), Sub.superOptions = Super.options, 
                Sub.extendOptions = extendOptions, Sub.sealedOptions = extend({}, Sub.options), 
                cachedCtors[SuperId] = Sub, Sub;
            };
        }
        function getComponentName(opts) {
            return opts && (opts.Ctor.options.name || opts.tag);
        }
        function matches(pattern, name) {
            return Array.isArray(pattern) ? pattern.indexOf(name) > -1 : "string" == typeof pattern ? pattern.split(",").indexOf(name) > -1 : !!isRegExp(pattern) && pattern.test(name);
        }
        function pruneCache(keepAliveInstance, filter) {
            var cache = keepAliveInstance.cache, keys = keepAliveInstance.keys, _vnode = keepAliveInstance._vnode;
            for (var key in cache) {
                var cachedNode = cache[key];
                if (cachedNode) {
                    var name = getComponentName(cachedNode.componentOptions);
                    name && !filter(name) && pruneCacheEntry(cache, key, keys, _vnode);
                }
            }
        }
        function pruneCacheEntry(cache, key, keys, current) {
            var cached$$1 = cache[key];
            !cached$$1 || current && cached$$1.tag === current.tag || cached$$1.componentInstance.$destroy(), 
            cache[key] = null, remove(keys, key);
        }
        !function(Vue) {
            Vue.prototype._init = function(options) {
                var vm = this;
                vm._uid = uid$3++, vm._isVue = !0, options && options._isComponent ? function(vm, options) {
                    var opts = vm.$options = Object.create(vm.constructor.options), parentVnode = options._parentVnode;
                    opts.parent = options.parent, opts._parentVnode = parentVnode;
                    var vnodeComponentOptions = parentVnode.componentOptions;
                    opts.propsData = vnodeComponentOptions.propsData, opts._parentListeners = vnodeComponentOptions.listeners, 
                    opts._renderChildren = vnodeComponentOptions.children, opts._componentTag = vnodeComponentOptions.tag, 
                    options.render && (opts.render = options.render, opts.staticRenderFns = options.staticRenderFns);
                }(vm, options) : vm.$options = mergeOptions(resolveConstructorOptions(vm.constructor), options || {}, vm), 
                vm._renderProxy = vm, vm._self = vm, function(vm) {
                    var options = vm.$options, parent = options.parent;
                    if (parent && !options.abstract) {
                        for (;parent.$options.abstract && parent.$parent; ) parent = parent.$parent;
                        parent.$children.push(vm);
                    }
                    vm.$parent = parent, vm.$root = parent ? parent.$root : vm, vm.$children = [], vm.$refs = {}, 
                    vm._watcher = null, vm._inactive = null, vm._directInactive = !1, vm._isMounted = !1, 
                    vm._isDestroyed = !1, vm._isBeingDestroyed = !1;
                }(vm), function(vm) {
                    vm._events = Object.create(null), vm._hasHookEvent = !1;
                    var listeners = vm.$options._parentListeners;
                    listeners && updateComponentListeners(vm, listeners);
                }(vm), function(vm) {
                    vm._vnode = null, vm._staticTrees = null;
                    var options = vm.$options, parentVnode = vm.$vnode = options._parentVnode, renderContext = parentVnode && parentVnode.context;
                    vm.$slots = resolveSlots(options._renderChildren, renderContext), vm.$scopedSlots = emptyObject, 
                    vm._c = function(a, b, c, d) {
                        return createElement(vm, a, b, c, d, !1);
                    }, vm.$createElement = function(a, b, c, d) {
                        return createElement(vm, a, b, c, d, !0);
                    };
                    var parentData = parentVnode && parentVnode.data;
                    defineReactive$$1(vm, "$attrs", parentData && parentData.attrs || emptyObject, null, !0), 
                    defineReactive$$1(vm, "$listeners", options._parentListeners || emptyObject, null, !0);
                }(vm), callHook(vm, "beforeCreate"), function(vm) {
                    var result = resolveInject(vm.$options.inject, vm);
                    result && (toggleObserving(!1), Object.keys(result).forEach((function(key) {
                        defineReactive$$1(vm, key, result[key]);
                    })), toggleObserving(!0));
                }(vm), initState(vm), function(vm) {
                    var provide = vm.$options.provide;
                    provide && (vm._provided = "function" == typeof provide ? provide.call(vm) : provide);
                }(vm), callHook(vm, "created"), vm.$options.el && vm.$mount(vm.$options.el);
            };
        }(Vue), function(Vue) {
            var dataDef = {
                get: function() {
                    return this._data;
                }
            }, propsDef = {
                get: function() {
                    return this._props;
                }
            };
            Object.defineProperty(Vue.prototype, "$data", dataDef), Object.defineProperty(Vue.prototype, "$props", propsDef), 
            Vue.prototype.$set = set, Vue.prototype.$delete = del, Vue.prototype.$watch = function(expOrFn, cb, options) {
                if (isPlainObject(cb)) return createWatcher(this, expOrFn, cb, options);
                (options = options || {}).user = !0;
                var watcher = new Watcher(this, expOrFn, cb, options);
                if (options.immediate) try {
                    cb.call(this, watcher.value);
                } catch (error) {
                    handleError(error, this, 'callback for immediate watcher "' + watcher.expression + '"');
                }
                return function() {
                    watcher.teardown();
                };
            };
        }(Vue), function(Vue) {
            var hookRE = /^hook:/;
            Vue.prototype.$on = function(event, fn) {
                var vm = this;
                if (Array.isArray(event)) for (var i = 0, l = event.length; i < l; i++) vm.$on(event[i], fn); else (vm._events[event] || (vm._events[event] = [])).push(fn), 
                hookRE.test(event) && (vm._hasHookEvent = !0);
                return vm;
            }, Vue.prototype.$once = function(event, fn) {
                var vm = this;
                function on() {
                    vm.$off(event, on), fn.apply(vm, arguments);
                }
                return on.fn = fn, vm.$on(event, on), vm;
            }, Vue.prototype.$off = function(event, fn) {
                var vm = this;
                if (!arguments.length) return vm._events = Object.create(null), vm;
                if (Array.isArray(event)) {
                    for (var i$1 = 0, l = event.length; i$1 < l; i$1++) vm.$off(event[i$1], fn);
                    return vm;
                }
                var cb, cbs = vm._events[event];
                if (!cbs) return vm;
                if (!fn) return vm._events[event] = null, vm;
                for (var i = cbs.length; i--; ) if ((cb = cbs[i]) === fn || cb.fn === fn) {
                    cbs.splice(i, 1);
                    break;
                }
                return vm;
            }, Vue.prototype.$emit = function(event) {
                var vm = this, cbs = vm._events[event];
                if (cbs) {
                    cbs = cbs.length > 1 ? toArray(cbs) : cbs;
                    for (var args = toArray(arguments, 1), info = 'event handler for "' + event + '"', i = 0, l = cbs.length; i < l; i++) invokeWithErrorHandling(cbs[i], vm, args, vm, info);
                }
                return vm;
            };
        }(Vue), function(Vue) {
            Vue.prototype._update = function(vnode, hydrating) {
                var vm = this, prevEl = vm.$el, prevVnode = vm._vnode, restoreActiveInstance = setActiveInstance(vm);
                vm._vnode = vnode, vm.$el = prevVnode ? vm.__patch__(prevVnode, vnode) : vm.__patch__(vm.$el, vnode, hydrating, !1), 
                restoreActiveInstance(), prevEl && (prevEl.__vue__ = null), vm.$el && (vm.$el.__vue__ = vm), 
                vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode && (vm.$parent.$el = vm.$el);
            }, Vue.prototype.$forceUpdate = function() {
                this._watcher && this._watcher.update();
            }, Vue.prototype.$destroy = function() {
                var vm = this;
                if (!vm._isBeingDestroyed) {
                    callHook(vm, "beforeDestroy"), vm._isBeingDestroyed = !0;
                    var parent = vm.$parent;
                    !parent || parent._isBeingDestroyed || vm.$options.abstract || remove(parent.$children, vm), 
                    vm._watcher && vm._watcher.teardown();
                    for (var i = vm._watchers.length; i--; ) vm._watchers[i].teardown();
                    vm._data.__ob__ && vm._data.__ob__.vmCount--, vm._isDestroyed = !0, vm.__patch__(vm._vnode, null), 
                    callHook(vm, "destroyed"), vm.$off(), vm.$el && (vm.$el.__vue__ = null), vm.$vnode && (vm.$vnode.parent = null);
                }
            };
        }(Vue), function(Vue) {
            installRenderHelpers(Vue.prototype), Vue.prototype.$nextTick = function(fn) {
                return nextTick(fn, this);
            }, Vue.prototype._render = function() {
                var vnode, vm = this, ref = vm.$options, render = ref.render, _parentVnode = ref._parentVnode;
                _parentVnode && (vm.$scopedSlots = normalizeScopedSlots(_parentVnode.data.scopedSlots, vm.$slots, vm.$scopedSlots)), 
                vm.$vnode = _parentVnode;
                try {
                    currentRenderingInstance = vm, vnode = render.call(vm._renderProxy, vm.$createElement);
                } catch (e) {
                    handleError(e, vm, "render"), vnode = vm._vnode;
                } finally {
                    currentRenderingInstance = null;
                }
                return Array.isArray(vnode) && 1 === vnode.length && (vnode = vnode[0]), vnode instanceof VNode || (vnode = createEmptyVNode()), 
                vnode.parent = _parentVnode, vnode;
            };
        }(Vue);
        var patternTypes = [ String, RegExp, Array ], builtInComponents = {
            KeepAlive: {
                name: "keep-alive",
                abstract: !0,
                props: {
                    include: patternTypes,
                    exclude: patternTypes,
                    max: [ String, Number ]
                },
                created: function() {
                    this.cache = Object.create(null), this.keys = [];
                },
                destroyed: function() {
                    for (var key in this.cache) pruneCacheEntry(this.cache, key, this.keys);
                },
                mounted: function() {
                    var this$1 = this;
                    this.$watch("include", (function(val) {
                        pruneCache(this$1, (function(name) {
                            return matches(val, name);
                        }));
                    })), this.$watch("exclude", (function(val) {
                        pruneCache(this$1, (function(name) {
                            return !matches(val, name);
                        }));
                    }));
                },
                render: function() {
                    var slot = this.$slots.default, vnode = getFirstComponentChild(slot), componentOptions = vnode && vnode.componentOptions;
                    if (componentOptions) {
                        var name = getComponentName(componentOptions), include = this.include, exclude = this.exclude;
                        if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) return vnode;
                        var cache = this.cache, keys = this.keys, key = null == vnode.key ? componentOptions.Ctor.cid + (componentOptions.tag ? "::" + componentOptions.tag : "") : vnode.key;
                        cache[key] ? (vnode.componentInstance = cache[key].componentInstance, remove(keys, key), 
                        keys.push(key)) : (cache[key] = vnode, keys.push(key), this.max && keys.length > parseInt(this.max) && pruneCacheEntry(cache, keys[0], keys, this._vnode)), 
                        vnode.data.keepAlive = !0;
                    }
                    return vnode || slot && slot[0];
                }
            }
        };
        !function(Vue) {
            var configDef = {
                get: function() {
                    return config;
                }
            };
            Object.defineProperty(Vue, "config", configDef), Vue.util = {
                warn: warn,
                extend: extend,
                mergeOptions: mergeOptions,
                defineReactive: defineReactive$$1
            }, Vue.set = set, Vue.delete = del, Vue.nextTick = nextTick, Vue.observable = function(obj) {
                return observe(obj), obj;
            }, Vue.options = Object.create(null), ASSET_TYPES.forEach((function(type) {
                Vue.options[type + "s"] = Object.create(null);
            })), Vue.options._base = Vue, extend(Vue.options.components, builtInComponents), 
            function(Vue) {
                Vue.use = function(plugin) {
                    var installedPlugins = this._installedPlugins || (this._installedPlugins = []);
                    if (installedPlugins.indexOf(plugin) > -1) return this;
                    var args = toArray(arguments, 1);
                    return args.unshift(this), "function" == typeof plugin.install ? plugin.install.apply(plugin, args) : "function" == typeof plugin && plugin.apply(null, args), 
                    installedPlugins.push(plugin), this;
                };
            }(Vue), function(Vue) {
                Vue.mixin = function(mixin) {
                    return this.options = mergeOptions(this.options, mixin), this;
                };
            }(Vue), initExtend(Vue), function(Vue) {
                ASSET_TYPES.forEach((function(type) {
                    Vue[type] = function(id, definition) {
                        return definition ? ("component" === type && isPlainObject(definition) && (definition.name = definition.name || id, 
                        definition = this.options._base.extend(definition)), "directive" === type && "function" == typeof definition && (definition = {
                            bind: definition,
                            update: definition
                        }), this.options[type + "s"][id] = definition, definition) : this.options[type + "s"][id];
                    };
                }));
            }(Vue);
        }(Vue), Object.defineProperty(Vue.prototype, "$isServer", {
            get: isServerRendering
        }), Object.defineProperty(Vue.prototype, "$ssrContext", {
            get: function() {
                return this.$vnode && this.$vnode.ssrContext;
            }
        }), Object.defineProperty(Vue, "FunctionalRenderContext", {
            value: FunctionalRenderContext
        }), Vue.version = "2.6.10";
        var isReservedAttr = makeMap("style,class"), acceptValue = makeMap("input,textarea,option,select,progress"), mustUseProp = function(tag, type, attr) {
            return "value" === attr && acceptValue(tag) && "button" !== type || "selected" === attr && "option" === tag || "checked" === attr && "input" === tag || "muted" === attr && "video" === tag;
        }, isEnumeratedAttr = makeMap("contenteditable,draggable,spellcheck"), isValidContentEditableValue = makeMap("events,caret,typing,plaintext-only"), convertEnumeratedValue = function(key, value) {
            return isFalsyAttrValue(value) || "false" === value ? "false" : "contenteditable" === key && isValidContentEditableValue(value) ? value : "true";
        }, isBooleanAttr = makeMap("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"), xlinkNS = "http://www.w3.org/1999/xlink", isXlink = function(name) {
            return ":" === name.charAt(5) && "xlink" === name.slice(0, 5);
        }, getXlinkProp = function(name) {
            return isXlink(name) ? name.slice(6, name.length) : "";
        }, isFalsyAttrValue = function(val) {
            return null == val || !1 === val;
        };
        function genClassForVnode(vnode) {
            for (var data = vnode.data, parentNode = vnode, childNode = vnode; isDef(childNode.componentInstance); ) (childNode = childNode.componentInstance._vnode) && childNode.data && (data = mergeClassData(childNode.data, data));
            for (;isDef(parentNode = parentNode.parent); ) parentNode && parentNode.data && (data = mergeClassData(data, parentNode.data));
            return function(staticClass, dynamicClass) {
                if (isDef(staticClass) || isDef(dynamicClass)) return concat(staticClass, stringifyClass(dynamicClass));
                return "";
            }(data.staticClass, data.class);
        }
        function mergeClassData(child, parent) {
            return {
                staticClass: concat(child.staticClass, parent.staticClass),
                class: isDef(child.class) ? [ child.class, parent.class ] : parent.class
            };
        }
        function concat(a, b) {
            return a ? b ? a + " " + b : a : b || "";
        }
        function stringifyClass(value) {
            return Array.isArray(value) ? function(value) {
                for (var stringified, res = "", i = 0, l = value.length; i < l; i++) isDef(stringified = stringifyClass(value[i])) && "" !== stringified && (res && (res += " "), 
                res += stringified);
                return res;
            }(value) : isObject(value) ? function(value) {
                var res = "";
                for (var key in value) value[key] && (res && (res += " "), res += key);
                return res;
            }(value) : "string" == typeof value ? value : "";
        }
        var namespaceMap = {
            svg: "http://www.w3.org/2000/svg",
            math: "http://www.w3.org/1998/Math/MathML"
        }, isHTMLTag = makeMap("html,body,base,head,link,meta,style,title,address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,menuitem,summary,content,element,shadow,template,blockquote,iframe,tfoot"), isSVG = makeMap("svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view", !0), isReservedTag = function(tag) {
            return isHTMLTag(tag) || isSVG(tag);
        };
        function getTagNamespace(tag) {
            return isSVG(tag) ? "svg" : "math" === tag ? "math" : void 0;
        }
        var unknownElementCache = Object.create(null);
        var isTextInputType = makeMap("text,number,password,search,email,tel,url");
        function query(el) {
            if ("string" == typeof el) {
                var selected = document.querySelector(el);
                return selected || document.createElement("div");
            }
            return el;
        }
        var nodeOps = Object.freeze({
            createElement: function(tagName, vnode) {
                var elm = document.createElement(tagName);
                return "select" !== tagName ? elm : (vnode.data && vnode.data.attrs && void 0 !== vnode.data.attrs.multiple && elm.setAttribute("multiple", "multiple"), 
                elm);
            },
            createElementNS: function(namespace, tagName) {
                return document.createElementNS(namespaceMap[namespace], tagName);
            },
            createTextNode: function(text) {
                return document.createTextNode(text);
            },
            createComment: function(text) {
                return document.createComment(text);
            },
            insertBefore: function(parentNode, newNode, referenceNode) {
                parentNode.insertBefore(newNode, referenceNode);
            },
            removeChild: function(node, child) {
                node.removeChild(child);
            },
            appendChild: function(node, child) {
                node.appendChild(child);
            },
            parentNode: function(node) {
                return node.parentNode;
            },
            nextSibling: function(node) {
                return node.nextSibling;
            },
            tagName: function(node) {
                return node.tagName;
            },
            setTextContent: function(node, text) {
                node.textContent = text;
            },
            setStyleScope: function(node, scopeId) {
                node.setAttribute(scopeId, "");
            }
        }), ref = {
            create: function(_, vnode) {
                registerRef(vnode);
            },
            update: function(oldVnode, vnode) {
                oldVnode.data.ref !== vnode.data.ref && (registerRef(oldVnode, !0), registerRef(vnode));
            },
            destroy: function(vnode) {
                registerRef(vnode, !0);
            }
        };
        function registerRef(vnode, isRemoval) {
            var key = vnode.data.ref;
            if (isDef(key)) {
                var vm = vnode.context, ref = vnode.componentInstance || vnode.elm, refs = vm.$refs;
                isRemoval ? Array.isArray(refs[key]) ? remove(refs[key], ref) : refs[key] === ref && (refs[key] = void 0) : vnode.data.refInFor ? Array.isArray(refs[key]) ? refs[key].indexOf(ref) < 0 && refs[key].push(ref) : refs[key] = [ ref ] : refs[key] = ref;
            }
        }
        var emptyNode = new VNode("", {}, []), hooks = [ "create", "activate", "update", "remove", "destroy" ];
        function sameVnode(a, b) {
            return a.key === b.key && (a.tag === b.tag && a.isComment === b.isComment && isDef(a.data) === isDef(b.data) && function(a, b) {
                if ("input" !== a.tag) return !0;
                var i, typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type, typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;
                return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB);
            }(a, b) || isTrue(a.isAsyncPlaceholder) && a.asyncFactory === b.asyncFactory && isUndef(b.asyncFactory.error));
        }
        function createKeyToOldIdx(children, beginIdx, endIdx) {
            var i, key, map = {};
            for (i = beginIdx; i <= endIdx; ++i) isDef(key = children[i].key) && (map[key] = i);
            return map;
        }
        var directives = {
            create: updateDirectives,
            update: updateDirectives,
            destroy: function(vnode) {
                updateDirectives(vnode, emptyNode);
            }
        };
        function updateDirectives(oldVnode, vnode) {
            (oldVnode.data.directives || vnode.data.directives) && function(oldVnode, vnode) {
                var key, oldDir, dir, isCreate = oldVnode === emptyNode, isDestroy = vnode === emptyNode, oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context), newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context), dirsWithInsert = [], dirsWithPostpatch = [];
                for (key in newDirs) oldDir = oldDirs[key], dir = newDirs[key], oldDir ? (dir.oldValue = oldDir.value, 
                dir.oldArg = oldDir.arg, callHook$1(dir, "update", vnode, oldVnode), dir.def && dir.def.componentUpdated && dirsWithPostpatch.push(dir)) : (callHook$1(dir, "bind", vnode, oldVnode), 
                dir.def && dir.def.inserted && dirsWithInsert.push(dir));
                if (dirsWithInsert.length) {
                    var callInsert = function() {
                        for (var i = 0; i < dirsWithInsert.length; i++) callHook$1(dirsWithInsert[i], "inserted", vnode, oldVnode);
                    };
                    isCreate ? mergeVNodeHook(vnode, "insert", callInsert) : callInsert();
                }
                dirsWithPostpatch.length && mergeVNodeHook(vnode, "postpatch", (function() {
                    for (var i = 0; i < dirsWithPostpatch.length; i++) callHook$1(dirsWithPostpatch[i], "componentUpdated", vnode, oldVnode);
                }));
                if (!isCreate) for (key in oldDirs) newDirs[key] || callHook$1(oldDirs[key], "unbind", oldVnode, oldVnode, isDestroy);
            }(oldVnode, vnode);
        }
        var emptyModifiers = Object.create(null);
        function normalizeDirectives$1(dirs, vm) {
            var i, dir, res = Object.create(null);
            if (!dirs) return res;
            for (i = 0; i < dirs.length; i++) (dir = dirs[i]).modifiers || (dir.modifiers = emptyModifiers), 
            res[getRawDirName(dir)] = dir, dir.def = resolveAsset(vm.$options, "directives", dir.name);
            return res;
        }
        function getRawDirName(dir) {
            return dir.rawName || dir.name + "." + Object.keys(dir.modifiers || {}).join(".");
        }
        function callHook$1(dir, hook, vnode, oldVnode, isDestroy) {
            var fn = dir.def && dir.def[hook];
            if (fn) try {
                fn(vnode.elm, dir, vnode, oldVnode, isDestroy);
            } catch (e) {
                handleError(e, vnode.context, "directive " + dir.name + " " + hook + " hook");
            }
        }
        var baseModules = [ ref, directives ];
        function updateAttrs(oldVnode, vnode) {
            var opts = vnode.componentOptions;
            if (!(isDef(opts) && !1 === opts.Ctor.options.inheritAttrs || isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs))) {
                var key, cur, elm = vnode.elm, oldAttrs = oldVnode.data.attrs || {}, attrs = vnode.data.attrs || {};
                for (key in isDef(attrs.__ob__) && (attrs = vnode.data.attrs = extend({}, attrs)), 
                attrs) cur = attrs[key], oldAttrs[key] !== cur && setAttr(elm, key, cur);
                for (key in (isIE || isEdge) && attrs.value !== oldAttrs.value && setAttr(elm, "value", attrs.value), 
                oldAttrs) isUndef(attrs[key]) && (isXlink(key) ? elm.removeAttributeNS(xlinkNS, getXlinkProp(key)) : isEnumeratedAttr(key) || elm.removeAttribute(key));
            }
        }
        function setAttr(el, key, value) {
            el.tagName.indexOf("-") > -1 ? baseSetAttr(el, key, value) : isBooleanAttr(key) ? isFalsyAttrValue(value) ? el.removeAttribute(key) : (value = "allowfullscreen" === key && "EMBED" === el.tagName ? "true" : key, 
            el.setAttribute(key, value)) : isEnumeratedAttr(key) ? el.setAttribute(key, convertEnumeratedValue(key, value)) : isXlink(key) ? isFalsyAttrValue(value) ? el.removeAttributeNS(xlinkNS, getXlinkProp(key)) : el.setAttributeNS(xlinkNS, key, value) : baseSetAttr(el, key, value);
        }
        function baseSetAttr(el, key, value) {
            if (isFalsyAttrValue(value)) el.removeAttribute(key); else {
                if (isIE && !isIE9 && "TEXTAREA" === el.tagName && "placeholder" === key && "" !== value && !el.__ieph) {
                    var blocker = function(e) {
                        e.stopImmediatePropagation(), el.removeEventListener("input", blocker);
                    };
                    el.addEventListener("input", blocker), el.__ieph = !0;
                }
                el.setAttribute(key, value);
            }
        }
        var attrs = {
            create: updateAttrs,
            update: updateAttrs
        };
        function updateClass(oldVnode, vnode) {
            var el = vnode.elm, data = vnode.data, oldData = oldVnode.data;
            if (!(isUndef(data.staticClass) && isUndef(data.class) && (isUndef(oldData) || isUndef(oldData.staticClass) && isUndef(oldData.class)))) {
                var cls = genClassForVnode(vnode), transitionClass = el._transitionClasses;
                isDef(transitionClass) && (cls = concat(cls, stringifyClass(transitionClass))), 
                cls !== el._prevClass && (el.setAttribute("class", cls), el._prevClass = cls);
            }
        }
        var len, str, chr, index$1, expressionPos, expressionEndPos, klass = {
            create: updateClass,
            update: updateClass
        }, validDivisionCharRE = /[\w).+\-_$\]]/;
        function parseFilters(exp) {
            var c, prev, i, expression, filters, inSingle = !1, inDouble = !1, inTemplateString = !1, inRegex = !1, curly = 0, square = 0, paren = 0, lastFilterIndex = 0;
            for (i = 0; i < exp.length; i++) if (prev = c, c = exp.charCodeAt(i), inSingle) 39 === c && 92 !== prev && (inSingle = !1); else if (inDouble) 34 === c && 92 !== prev && (inDouble = !1); else if (inTemplateString) 96 === c && 92 !== prev && (inTemplateString = !1); else if (inRegex) 47 === c && 92 !== prev && (inRegex = !1); else if (124 !== c || 124 === exp.charCodeAt(i + 1) || 124 === exp.charCodeAt(i - 1) || curly || square || paren) {
                switch (c) {
                  case 34:
                    inDouble = !0;
                    break;

                  case 39:
                    inSingle = !0;
                    break;

                  case 96:
                    inTemplateString = !0;
                    break;

                  case 40:
                    paren++;
                    break;

                  case 41:
                    paren--;
                    break;

                  case 91:
                    square++;
                    break;

                  case 93:
                    square--;
                    break;

                  case 123:
                    curly++;
                    break;

                  case 125:
                    curly--;
                }
                if (47 === c) {
                    for (var j = i - 1, p = void 0; j >= 0 && " " === (p = exp.charAt(j)); j--) ;
                    p && validDivisionCharRE.test(p) || (inRegex = !0);
                }
            } else void 0 === expression ? (lastFilterIndex = i + 1, expression = exp.slice(0, i).trim()) : pushFilter();
            function pushFilter() {
                (filters || (filters = [])).push(exp.slice(lastFilterIndex, i).trim()), lastFilterIndex = i + 1;
            }
            if (void 0 === expression ? expression = exp.slice(0, i).trim() : 0 !== lastFilterIndex && pushFilter(), 
            filters) for (i = 0; i < filters.length; i++) expression = wrapFilter(expression, filters[i]);
            return expression;
        }
        function wrapFilter(exp, filter) {
            var i = filter.indexOf("(");
            if (i < 0) return '_f("' + filter + '")(' + exp + ")";
            var name = filter.slice(0, i), args = filter.slice(i + 1);
            return '_f("' + name + '")(' + exp + (")" !== args ? "," + args : args);
        }
        function baseWarn(msg, range) {
            console.error("[Vue compiler]: " + msg);
        }
        function pluckModuleFunction(modules, key) {
            return modules ? modules.map((function(m) {
                return m[key];
            })).filter((function(_) {
                return _;
            })) : [];
        }
        function addProp(el, name, value, range, dynamic) {
            (el.props || (el.props = [])).push(rangeSetItem({
                name: name,
                value: value,
                dynamic: dynamic
            }, range)), el.plain = !1;
        }
        function addAttr(el, name, value, range, dynamic) {
            (dynamic ? el.dynamicAttrs || (el.dynamicAttrs = []) : el.attrs || (el.attrs = [])).push(rangeSetItem({
                name: name,
                value: value,
                dynamic: dynamic
            }, range)), el.plain = !1;
        }
        function addRawAttr(el, name, value, range) {
            el.attrsMap[name] = value, el.attrsList.push(rangeSetItem({
                name: name,
                value: value
            }, range));
        }
        function addDirective(el, name, rawName, value, arg, isDynamicArg, modifiers, range) {
            (el.directives || (el.directives = [])).push(rangeSetItem({
                name: name,
                rawName: rawName,
                value: value,
                arg: arg,
                isDynamicArg: isDynamicArg,
                modifiers: modifiers
            }, range)), el.plain = !1;
        }
        function prependModifierMarker(symbol, name, dynamic) {
            return dynamic ? "_p(" + name + ',"' + symbol + '")' : symbol + name;
        }
        function addHandler(el, name, value, modifiers, important, warn, range, dynamic) {
            var events;
            (modifiers = modifiers || emptyObject).right ? dynamic ? name = "(" + name + ")==='click'?'contextmenu':(" + name + ")" : "click" === name && (name = "contextmenu", 
            delete modifiers.right) : modifiers.middle && (dynamic ? name = "(" + name + ")==='click'?'mouseup':(" + name + ")" : "click" === name && (name = "mouseup")), 
            modifiers.capture && (delete modifiers.capture, name = prependModifierMarker("!", name, dynamic)), 
            modifiers.once && (delete modifiers.once, name = prependModifierMarker("~", name, dynamic)), 
            modifiers.passive && (delete modifiers.passive, name = prependModifierMarker("&", name, dynamic)), 
            modifiers.native ? (delete modifiers.native, events = el.nativeEvents || (el.nativeEvents = {})) : events = el.events || (el.events = {});
            var newHandler = rangeSetItem({
                value: value.trim(),
                dynamic: dynamic
            }, range);
            modifiers !== emptyObject && (newHandler.modifiers = modifiers);
            var handlers = events[name];
            Array.isArray(handlers) ? important ? handlers.unshift(newHandler) : handlers.push(newHandler) : events[name] = handlers ? important ? [ newHandler, handlers ] : [ handlers, newHandler ] : newHandler, 
            el.plain = !1;
        }
        function getBindingAttr(el, name, getStatic) {
            var dynamicValue = getAndRemoveAttr(el, ":" + name) || getAndRemoveAttr(el, "v-bind:" + name);
            if (null != dynamicValue) return parseFilters(dynamicValue);
            if (!1 !== getStatic) {
                var staticValue = getAndRemoveAttr(el, name);
                if (null != staticValue) return JSON.stringify(staticValue);
            }
        }
        function getAndRemoveAttr(el, name, removeFromMap) {
            var val;
            if (null != (val = el.attrsMap[name])) for (var list = el.attrsList, i = 0, l = list.length; i < l; i++) if (list[i].name === name) {
                list.splice(i, 1);
                break;
            }
            return removeFromMap && delete el.attrsMap[name], val;
        }
        function getAndRemoveAttrByRegex(el, name) {
            for (var list = el.attrsList, i = 0, l = list.length; i < l; i++) {
                var attr = list[i];
                if (name.test(attr.name)) return list.splice(i, 1), attr;
            }
        }
        function rangeSetItem(item, range) {
            return range && (null != range.start && (item.start = range.start), null != range.end && (item.end = range.end)), 
            item;
        }
        function genComponentModel(el, value, modifiers) {
            var ref = modifiers || {}, number = ref.number, valueExpression = "$$v";
            ref.trim && (valueExpression = "(typeof $$v === 'string'? $$v.trim(): $$v)"), number && (valueExpression = "_n(" + valueExpression + ")");
            var assignment = genAssignmentCode(value, valueExpression);
            el.model = {
                value: "(" + value + ")",
                expression: JSON.stringify(value),
                callback: "function ($$v) {" + assignment + "}"
            };
        }
        function genAssignmentCode(value, assignment) {
            var res = function(val) {
                if (val = val.trim(), len = val.length, val.indexOf("[") < 0 || val.lastIndexOf("]") < len - 1) return (index$1 = val.lastIndexOf(".")) > -1 ? {
                    exp: val.slice(0, index$1),
                    key: '"' + val.slice(index$1 + 1) + '"'
                } : {
                    exp: val,
                    key: null
                };
                str = val, index$1 = expressionPos = expressionEndPos = 0;
                for (;!eof(); ) isStringStart(chr = next()) ? parseString(chr) : 91 === chr && parseBracket(chr);
                return {
                    exp: val.slice(0, expressionPos),
                    key: val.slice(expressionPos + 1, expressionEndPos)
                };
            }(value);
            return null === res.key ? value + "=" + assignment : "$set(" + res.exp + ", " + res.key + ", " + assignment + ")";
        }
        function next() {
            return str.charCodeAt(++index$1);
        }
        function eof() {
            return index$1 >= len;
        }
        function isStringStart(chr) {
            return 34 === chr || 39 === chr;
        }
        function parseBracket(chr) {
            var inBracket = 1;
            for (expressionPos = index$1; !eof(); ) if (isStringStart(chr = next())) parseString(chr); else if (91 === chr && inBracket++, 
            93 === chr && inBracket--, 0 === inBracket) {
                expressionEndPos = index$1;
                break;
            }
        }
        function parseString(chr) {
            for (var stringQuote = chr; !eof() && (chr = next()) !== stringQuote; ) ;
        }
        var target$1, RANGE_TOKEN = "__r", CHECKBOX_RADIO_TOKEN = "__c";
        function createOnceHandler$1(event, handler, capture) {
            var _target = target$1;
            return function onceHandler() {
                var res = handler.apply(null, arguments);
                null !== res && remove$2(event, onceHandler, capture, _target);
            };
        }
        var useMicrotaskFix = isUsingMicroTask && !(isFF && Number(isFF[1]) <= 53);
        function add$1(name, handler, capture, passive) {
            if (useMicrotaskFix) {
                var attachedTimestamp = currentFlushTimestamp, original = handler;
                handler = original._wrapper = function(e) {
                    if (e.target === e.currentTarget || e.timeStamp >= attachedTimestamp || e.timeStamp <= 0 || e.target.ownerDocument !== document) return original.apply(this, arguments);
                };
            }
            target$1.addEventListener(name, handler, supportsPassive ? {
                capture: capture,
                passive: passive
            } : capture);
        }
        function remove$2(name, handler, capture, _target) {
            (_target || target$1).removeEventListener(name, handler._wrapper || handler, capture);
        }
        function updateDOMListeners(oldVnode, vnode) {
            if (!isUndef(oldVnode.data.on) || !isUndef(vnode.data.on)) {
                var on = vnode.data.on || {}, oldOn = oldVnode.data.on || {};
                target$1 = vnode.elm, function(on) {
                    if (isDef(on[RANGE_TOKEN])) {
                        var event = isIE ? "change" : "input";
                        on[event] = [].concat(on[RANGE_TOKEN], on[event] || []), delete on[RANGE_TOKEN];
                    }
                    isDef(on[CHECKBOX_RADIO_TOKEN]) && (on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []), 
                    delete on[CHECKBOX_RADIO_TOKEN]);
                }(on), updateListeners(on, oldOn, add$1, remove$2, createOnceHandler$1, vnode.context), 
                target$1 = void 0;
            }
        }
        var svgContainer, events = {
            create: updateDOMListeners,
            update: updateDOMListeners
        };
        function updateDOMProps(oldVnode, vnode) {
            if (!isUndef(oldVnode.data.domProps) || !isUndef(vnode.data.domProps)) {
                var key, cur, elm = vnode.elm, oldProps = oldVnode.data.domProps || {}, props = vnode.data.domProps || {};
                for (key in isDef(props.__ob__) && (props = vnode.data.domProps = extend({}, props)), 
                oldProps) key in props || (elm[key] = "");
                for (key in props) {
                    if (cur = props[key], "textContent" === key || "innerHTML" === key) {
                        if (vnode.children && (vnode.children.length = 0), cur === oldProps[key]) continue;
                        1 === elm.childNodes.length && elm.removeChild(elm.childNodes[0]);
                    }
                    if ("value" === key && "PROGRESS" !== elm.tagName) {
                        elm._value = cur;
                        var strCur = isUndef(cur) ? "" : String(cur);
                        shouldUpdateValue(elm, strCur) && (elm.value = strCur);
                    } else if ("innerHTML" === key && isSVG(elm.tagName) && isUndef(elm.innerHTML)) {
                        (svgContainer = svgContainer || document.createElement("div")).innerHTML = "<svg>" + cur + "</svg>";
                        for (var svg = svgContainer.firstChild; elm.firstChild; ) elm.removeChild(elm.firstChild);
                        for (;svg.firstChild; ) elm.appendChild(svg.firstChild);
                    } else if (cur !== oldProps[key]) try {
                        elm[key] = cur;
                    } catch (e) {}
                }
            }
        }
        function shouldUpdateValue(elm, checkVal) {
            return !elm.composing && ("OPTION" === elm.tagName || function(elm, checkVal) {
                var notInFocus = !0;
                try {
                    notInFocus = document.activeElement !== elm;
                } catch (e) {}
                return notInFocus && elm.value !== checkVal;
            }(elm, checkVal) || function(elm, newVal) {
                var value = elm.value, modifiers = elm._vModifiers;
                if (isDef(modifiers)) {
                    if (modifiers.number) return toNumber(value) !== toNumber(newVal);
                    if (modifiers.trim) return value.trim() !== newVal.trim();
                }
                return value !== newVal;
            }(elm, checkVal));
        }
        var domProps = {
            create: updateDOMProps,
            update: updateDOMProps
        }, parseStyleText = cached((function(cssText) {
            var res = {}, propertyDelimiter = /:(.+)/;
            return cssText.split(/;(?![^(]*\))/g).forEach((function(item) {
                if (item) {
                    var tmp = item.split(propertyDelimiter);
                    tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());
                }
            })), res;
        }));
        function normalizeStyleData(data) {
            var style = normalizeStyleBinding(data.style);
            return data.staticStyle ? extend(data.staticStyle, style) : style;
        }
        function normalizeStyleBinding(bindingStyle) {
            return Array.isArray(bindingStyle) ? toObject(bindingStyle) : "string" == typeof bindingStyle ? parseStyleText(bindingStyle) : bindingStyle;
        }
        var emptyStyle, cssVarRE = /^--/, importantRE = /\s*!important$/, setProp = function(el, name, val) {
            if (cssVarRE.test(name)) el.style.setProperty(name, val); else if (importantRE.test(val)) el.style.setProperty(hyphenate(name), val.replace(importantRE, ""), "important"); else {
                var normalizedName = normalize(name);
                if (Array.isArray(val)) for (var i = 0, len = val.length; i < len; i++) el.style[normalizedName] = val[i]; else el.style[normalizedName] = val;
            }
        }, vendorNames = [ "Webkit", "Moz", "ms" ], normalize = cached((function(prop) {
            if (emptyStyle = emptyStyle || document.createElement("div").style, "filter" !== (prop = camelize(prop)) && prop in emptyStyle) return prop;
            for (var capName = prop.charAt(0).toUpperCase() + prop.slice(1), i = 0; i < vendorNames.length; i++) {
                var name = vendorNames[i] + capName;
                if (name in emptyStyle) return name;
            }
        }));
        function updateStyle(oldVnode, vnode) {
            var data = vnode.data, oldData = oldVnode.data;
            if (!(isUndef(data.staticStyle) && isUndef(data.style) && isUndef(oldData.staticStyle) && isUndef(oldData.style))) {
                var cur, name, el = vnode.elm, oldStaticStyle = oldData.staticStyle, oldStyleBinding = oldData.normalizedStyle || oldData.style || {}, oldStyle = oldStaticStyle || oldStyleBinding, style = normalizeStyleBinding(vnode.data.style) || {};
                vnode.data.normalizedStyle = isDef(style.__ob__) ? extend({}, style) : style;
                var newStyle = function(vnode, checkChild) {
                    var styleData, res = {};
                    if (checkChild) for (var childNode = vnode; childNode.componentInstance; ) (childNode = childNode.componentInstance._vnode) && childNode.data && (styleData = normalizeStyleData(childNode.data)) && extend(res, styleData);
                    (styleData = normalizeStyleData(vnode.data)) && extend(res, styleData);
                    for (var parentNode = vnode; parentNode = parentNode.parent; ) parentNode.data && (styleData = normalizeStyleData(parentNode.data)) && extend(res, styleData);
                    return res;
                }(vnode, !0);
                for (name in oldStyle) isUndef(newStyle[name]) && setProp(el, name, "");
                for (name in newStyle) (cur = newStyle[name]) !== oldStyle[name] && setProp(el, name, null == cur ? "" : cur);
            }
        }
        var style = {
            create: updateStyle,
            update: updateStyle
        }, whitespaceRE = /\s+/;
        function addClass(el, cls) {
            if (cls && (cls = cls.trim())) if (el.classList) cls.indexOf(" ") > -1 ? cls.split(whitespaceRE).forEach((function(c) {
                return el.classList.add(c);
            })) : el.classList.add(cls); else {
                var cur = " " + (el.getAttribute("class") || "") + " ";
                cur.indexOf(" " + cls + " ") < 0 && el.setAttribute("class", (cur + cls).trim());
            }
        }
        function removeClass(el, cls) {
            if (cls && (cls = cls.trim())) if (el.classList) cls.indexOf(" ") > -1 ? cls.split(whitespaceRE).forEach((function(c) {
                return el.classList.remove(c);
            })) : el.classList.remove(cls), el.classList.length || el.removeAttribute("class"); else {
                for (var cur = " " + (el.getAttribute("class") || "") + " ", tar = " " + cls + " "; cur.indexOf(tar) >= 0; ) cur = cur.replace(tar, " ");
                (cur = cur.trim()) ? el.setAttribute("class", cur) : el.removeAttribute("class");
            }
        }
        function resolveTransition(def$$1) {
            if (def$$1) {
                if ("object" == typeof def$$1) {
                    var res = {};
                    return !1 !== def$$1.css && extend(res, autoCssTransition(def$$1.name || "v")), 
                    extend(res, def$$1), res;
                }
                return "string" == typeof def$$1 ? autoCssTransition(def$$1) : void 0;
            }
        }
        var autoCssTransition = cached((function(name) {
            return {
                enterClass: name + "-enter",
                enterToClass: name + "-enter-to",
                enterActiveClass: name + "-enter-active",
                leaveClass: name + "-leave",
                leaveToClass: name + "-leave-to",
                leaveActiveClass: name + "-leave-active"
            };
        })), hasTransition = inBrowser && !isIE9, TRANSITION = "transition", ANIMATION = "animation", transitionProp = "transition", transitionEndEvent = "transitionend", animationProp = "animation", animationEndEvent = "animationend";
        hasTransition && (void 0 === window.ontransitionend && void 0 !== window.onwebkittransitionend && (transitionProp = "WebkitTransition", 
        transitionEndEvent = "webkitTransitionEnd"), void 0 === window.onanimationend && void 0 !== window.onwebkitanimationend && (animationProp = "WebkitAnimation", 
        animationEndEvent = "webkitAnimationEnd"));
        var raf = inBrowser ? window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : setTimeout : function(fn) {
            return fn();
        };
        function nextFrame(fn) {
            raf((function() {
                raf(fn);
            }));
        }
        function addTransitionClass(el, cls) {
            var transitionClasses = el._transitionClasses || (el._transitionClasses = []);
            transitionClasses.indexOf(cls) < 0 && (transitionClasses.push(cls), addClass(el, cls));
        }
        function removeTransitionClass(el, cls) {
            el._transitionClasses && remove(el._transitionClasses, cls), removeClass(el, cls);
        }
        function whenTransitionEnds(el, expectedType, cb) {
            var ref = getTransitionInfo(el, expectedType), type = ref.type, timeout = ref.timeout, propCount = ref.propCount;
            if (!type) return cb();
            var event = type === TRANSITION ? transitionEndEvent : animationEndEvent, ended = 0, end = function() {
                el.removeEventListener(event, onEnd), cb();
            }, onEnd = function(e) {
                e.target === el && ++ended >= propCount && end();
            };
            setTimeout((function() {
                ended < propCount && end();
            }), timeout + 1), el.addEventListener(event, onEnd);
        }
        var transformRE = /\b(transform|all)(,|$)/;
        function getTransitionInfo(el, expectedType) {
            var type, styles = window.getComputedStyle(el), transitionDelays = (styles[transitionProp + "Delay"] || "").split(", "), transitionDurations = (styles[transitionProp + "Duration"] || "").split(", "), transitionTimeout = getTimeout(transitionDelays, transitionDurations), animationDelays = (styles[animationProp + "Delay"] || "").split(", "), animationDurations = (styles[animationProp + "Duration"] || "").split(", "), animationTimeout = getTimeout(animationDelays, animationDurations), timeout = 0, propCount = 0;
            return expectedType === TRANSITION ? transitionTimeout > 0 && (type = TRANSITION, 
            timeout = transitionTimeout, propCount = transitionDurations.length) : expectedType === ANIMATION ? animationTimeout > 0 && (type = ANIMATION, 
            timeout = animationTimeout, propCount = animationDurations.length) : propCount = (type = (timeout = Math.max(transitionTimeout, animationTimeout)) > 0 ? transitionTimeout > animationTimeout ? TRANSITION : ANIMATION : null) ? type === TRANSITION ? transitionDurations.length : animationDurations.length : 0, 
            {
                type: type,
                timeout: timeout,
                propCount: propCount,
                hasTransform: type === TRANSITION && transformRE.test(styles[transitionProp + "Property"])
            };
        }
        function getTimeout(delays, durations) {
            for (;delays.length < durations.length; ) delays = delays.concat(delays);
            return Math.max.apply(null, durations.map((function(d, i) {
                return toMs(d) + toMs(delays[i]);
            })));
        }
        function toMs(s) {
            return 1e3 * Number(s.slice(0, -1).replace(",", "."));
        }
        function enter(vnode, toggleDisplay) {
            var el = vnode.elm;
            isDef(el._leaveCb) && (el._leaveCb.cancelled = !0, el._leaveCb());
            var data = resolveTransition(vnode.data.transition);
            if (!isUndef(data) && !isDef(el._enterCb) && 1 === el.nodeType) {
                for (var css = data.css, type = data.type, enterClass = data.enterClass, enterToClass = data.enterToClass, enterActiveClass = data.enterActiveClass, appearClass = data.appearClass, appearToClass = data.appearToClass, appearActiveClass = data.appearActiveClass, beforeEnter = data.beforeEnter, enter = data.enter, afterEnter = data.afterEnter, enterCancelled = data.enterCancelled, beforeAppear = data.beforeAppear, appear = data.appear, afterAppear = data.afterAppear, appearCancelled = data.appearCancelled, duration = data.duration, context = activeInstance, transitionNode = activeInstance.$vnode; transitionNode && transitionNode.parent; ) context = transitionNode.context, 
                transitionNode = transitionNode.parent;
                var isAppear = !context._isMounted || !vnode.isRootInsert;
                if (!isAppear || appear || "" === appear) {
                    var startClass = isAppear && appearClass ? appearClass : enterClass, activeClass = isAppear && appearActiveClass ? appearActiveClass : enterActiveClass, toClass = isAppear && appearToClass ? appearToClass : enterToClass, beforeEnterHook = isAppear && beforeAppear || beforeEnter, enterHook = isAppear && "function" == typeof appear ? appear : enter, afterEnterHook = isAppear && afterAppear || afterEnter, enterCancelledHook = isAppear && appearCancelled || enterCancelled, explicitEnterDuration = toNumber(isObject(duration) ? duration.enter : duration);
                    0;
                    var expectsCSS = !1 !== css && !isIE9, userWantsControl = getHookArgumentsLength(enterHook), cb = el._enterCb = once((function() {
                        expectsCSS && (removeTransitionClass(el, toClass), removeTransitionClass(el, activeClass)), 
                        cb.cancelled ? (expectsCSS && removeTransitionClass(el, startClass), enterCancelledHook && enterCancelledHook(el)) : afterEnterHook && afterEnterHook(el), 
                        el._enterCb = null;
                    }));
                    vnode.data.show || mergeVNodeHook(vnode, "insert", (function() {
                        var parent = el.parentNode, pendingNode = parent && parent._pending && parent._pending[vnode.key];
                        pendingNode && pendingNode.tag === vnode.tag && pendingNode.elm._leaveCb && pendingNode.elm._leaveCb(), 
                        enterHook && enterHook(el, cb);
                    })), beforeEnterHook && beforeEnterHook(el), expectsCSS && (addTransitionClass(el, startClass), 
                    addTransitionClass(el, activeClass), nextFrame((function() {
                        removeTransitionClass(el, startClass), cb.cancelled || (addTransitionClass(el, toClass), 
                        userWantsControl || (isValidDuration(explicitEnterDuration) ? setTimeout(cb, explicitEnterDuration) : whenTransitionEnds(el, type, cb)));
                    }))), vnode.data.show && (toggleDisplay && toggleDisplay(), enterHook && enterHook(el, cb)), 
                    expectsCSS || userWantsControl || cb();
                }
            }
        }
        function leave(vnode, rm) {
            var el = vnode.elm;
            isDef(el._enterCb) && (el._enterCb.cancelled = !0, el._enterCb());
            var data = resolveTransition(vnode.data.transition);
            if (isUndef(data) || 1 !== el.nodeType) return rm();
            if (!isDef(el._leaveCb)) {
                var css = data.css, type = data.type, leaveClass = data.leaveClass, leaveToClass = data.leaveToClass, leaveActiveClass = data.leaveActiveClass, beforeLeave = data.beforeLeave, leave = data.leave, afterLeave = data.afterLeave, leaveCancelled = data.leaveCancelled, delayLeave = data.delayLeave, duration = data.duration, expectsCSS = !1 !== css && !isIE9, userWantsControl = getHookArgumentsLength(leave), explicitLeaveDuration = toNumber(isObject(duration) ? duration.leave : duration);
                0;
                var cb = el._leaveCb = once((function() {
                    el.parentNode && el.parentNode._pending && (el.parentNode._pending[vnode.key] = null), 
                    expectsCSS && (removeTransitionClass(el, leaveToClass), removeTransitionClass(el, leaveActiveClass)), 
                    cb.cancelled ? (expectsCSS && removeTransitionClass(el, leaveClass), leaveCancelled && leaveCancelled(el)) : (rm(), 
                    afterLeave && afterLeave(el)), el._leaveCb = null;
                }));
                delayLeave ? delayLeave(performLeave) : performLeave();
            }
            function performLeave() {
                cb.cancelled || (!vnode.data.show && el.parentNode && ((el.parentNode._pending || (el.parentNode._pending = {}))[vnode.key] = vnode), 
                beforeLeave && beforeLeave(el), expectsCSS && (addTransitionClass(el, leaveClass), 
                addTransitionClass(el, leaveActiveClass), nextFrame((function() {
                    removeTransitionClass(el, leaveClass), cb.cancelled || (addTransitionClass(el, leaveToClass), 
                    userWantsControl || (isValidDuration(explicitLeaveDuration) ? setTimeout(cb, explicitLeaveDuration) : whenTransitionEnds(el, type, cb)));
                }))), leave && leave(el, cb), expectsCSS || userWantsControl || cb());
            }
        }
        function isValidDuration(val) {
            return "number" == typeof val && !isNaN(val);
        }
        function getHookArgumentsLength(fn) {
            if (isUndef(fn)) return !1;
            var invokerFns = fn.fns;
            return isDef(invokerFns) ? getHookArgumentsLength(Array.isArray(invokerFns) ? invokerFns[0] : invokerFns) : (fn._length || fn.length) > 1;
        }
        function _enter(_, vnode) {
            !0 !== vnode.data.show && enter(vnode);
        }
        var patch = function(backend) {
            var i, j, cbs = {}, modules = backend.modules, nodeOps = backend.nodeOps;
            for (i = 0; i < hooks.length; ++i) for (cbs[hooks[i]] = [], j = 0; j < modules.length; ++j) isDef(modules[j][hooks[i]]) && cbs[hooks[i]].push(modules[j][hooks[i]]);
            function removeNode(el) {
                var parent = nodeOps.parentNode(el);
                isDef(parent) && nodeOps.removeChild(parent, el);
            }
            function createElm(vnode, insertedVnodeQueue, parentElm, refElm, nested, ownerArray, index) {
                if (isDef(vnode.elm) && isDef(ownerArray) && (vnode = ownerArray[index] = cloneVNode(vnode)), 
                vnode.isRootInsert = !nested, !function(vnode, insertedVnodeQueue, parentElm, refElm) {
                    var i = vnode.data;
                    if (isDef(i)) {
                        var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;
                        if (isDef(i = i.hook) && isDef(i = i.init) && i(vnode, !1), isDef(vnode.componentInstance)) return initComponent(vnode, insertedVnodeQueue), 
                        insert(parentElm, vnode.elm, refElm), isTrue(isReactivated) && function(vnode, insertedVnodeQueue, parentElm, refElm) {
                            var i, innerNode = vnode;
                            for (;innerNode.componentInstance; ) if (innerNode = innerNode.componentInstance._vnode, 
                            isDef(i = innerNode.data) && isDef(i = i.transition)) {
                                for (i = 0; i < cbs.activate.length; ++i) cbs.activate[i](emptyNode, innerNode);
                                insertedVnodeQueue.push(innerNode);
                                break;
                            }
                            insert(parentElm, vnode.elm, refElm);
                        }(vnode, insertedVnodeQueue, parentElm, refElm), !0;
                    }
                }(vnode, insertedVnodeQueue, parentElm, refElm)) {
                    var data = vnode.data, children = vnode.children, tag = vnode.tag;
                    isDef(tag) ? (vnode.elm = vnode.ns ? nodeOps.createElementNS(vnode.ns, tag) : nodeOps.createElement(tag, vnode), 
                    setScope(vnode), createChildren(vnode, children, insertedVnodeQueue), isDef(data) && invokeCreateHooks(vnode, insertedVnodeQueue), 
                    insert(parentElm, vnode.elm, refElm)) : isTrue(vnode.isComment) ? (vnode.elm = nodeOps.createComment(vnode.text), 
                    insert(parentElm, vnode.elm, refElm)) : (vnode.elm = nodeOps.createTextNode(vnode.text), 
                    insert(parentElm, vnode.elm, refElm));
                }
            }
            function initComponent(vnode, insertedVnodeQueue) {
                isDef(vnode.data.pendingInsert) && (insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert), 
                vnode.data.pendingInsert = null), vnode.elm = vnode.componentInstance.$el, isPatchable(vnode) ? (invokeCreateHooks(vnode, insertedVnodeQueue), 
                setScope(vnode)) : (registerRef(vnode), insertedVnodeQueue.push(vnode));
            }
            function insert(parent, elm, ref$$1) {
                isDef(parent) && (isDef(ref$$1) ? nodeOps.parentNode(ref$$1) === parent && nodeOps.insertBefore(parent, elm, ref$$1) : nodeOps.appendChild(parent, elm));
            }
            function createChildren(vnode, children, insertedVnodeQueue) {
                if (Array.isArray(children)) {
                    0;
                    for (var i = 0; i < children.length; ++i) createElm(children[i], insertedVnodeQueue, vnode.elm, null, !0, children, i);
                } else isPrimitive(vnode.text) && nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));
            }
            function isPatchable(vnode) {
                for (;vnode.componentInstance; ) vnode = vnode.componentInstance._vnode;
                return isDef(vnode.tag);
            }
            function invokeCreateHooks(vnode, insertedVnodeQueue) {
                for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) cbs.create[i$1](emptyNode, vnode);
                isDef(i = vnode.data.hook) && (isDef(i.create) && i.create(emptyNode, vnode), isDef(i.insert) && insertedVnodeQueue.push(vnode));
            }
            function setScope(vnode) {
                var i;
                if (isDef(i = vnode.fnScopeId)) nodeOps.setStyleScope(vnode.elm, i); else for (var ancestor = vnode; ancestor; ) isDef(i = ancestor.context) && isDef(i = i.$options._scopeId) && nodeOps.setStyleScope(vnode.elm, i), 
                ancestor = ancestor.parent;
                isDef(i = activeInstance) && i !== vnode.context && i !== vnode.fnContext && isDef(i = i.$options._scopeId) && nodeOps.setStyleScope(vnode.elm, i);
            }
            function addVnodes(parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {
                for (;startIdx <= endIdx; ++startIdx) createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, !1, vnodes, startIdx);
            }
            function invokeDestroyHook(vnode) {
                var i, j, data = vnode.data;
                if (isDef(data)) for (isDef(i = data.hook) && isDef(i = i.destroy) && i(vnode), 
                i = 0; i < cbs.destroy.length; ++i) cbs.destroy[i](vnode);
                if (isDef(i = vnode.children)) for (j = 0; j < vnode.children.length; ++j) invokeDestroyHook(vnode.children[j]);
            }
            function removeVnodes(parentElm, vnodes, startIdx, endIdx) {
                for (;startIdx <= endIdx; ++startIdx) {
                    var ch = vnodes[startIdx];
                    isDef(ch) && (isDef(ch.tag) ? (removeAndInvokeRemoveHook(ch), invokeDestroyHook(ch)) : removeNode(ch.elm));
                }
            }
            function removeAndInvokeRemoveHook(vnode, rm) {
                if (isDef(rm) || isDef(vnode.data)) {
                    var i, listeners = cbs.remove.length + 1;
                    for (isDef(rm) ? rm.listeners += listeners : rm = function(childElm, listeners) {
                        function remove$$1() {
                            0 == --remove$$1.listeners && removeNode(childElm);
                        }
                        return remove$$1.listeners = listeners, remove$$1;
                    }(vnode.elm, listeners), isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data) && removeAndInvokeRemoveHook(i, rm), 
                    i = 0; i < cbs.remove.length; ++i) cbs.remove[i](vnode, rm);
                    isDef(i = vnode.data.hook) && isDef(i = i.remove) ? i(vnode, rm) : rm();
                } else removeNode(vnode.elm);
            }
            function findIdxInOld(node, oldCh, start, end) {
                for (var i = start; i < end; i++) {
                    var c = oldCh[i];
                    if (isDef(c) && sameVnode(node, c)) return i;
                }
            }
            function patchVnode(oldVnode, vnode, insertedVnodeQueue, ownerArray, index, removeOnly) {
                if (oldVnode !== vnode) {
                    isDef(vnode.elm) && isDef(ownerArray) && (vnode = ownerArray[index] = cloneVNode(vnode));
                    var elm = vnode.elm = oldVnode.elm;
                    if (isTrue(oldVnode.isAsyncPlaceholder)) isDef(vnode.asyncFactory.resolved) ? hydrate(oldVnode.elm, vnode, insertedVnodeQueue) : vnode.isAsyncPlaceholder = !0; else if (isTrue(vnode.isStatic) && isTrue(oldVnode.isStatic) && vnode.key === oldVnode.key && (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))) vnode.componentInstance = oldVnode.componentInstance; else {
                        var i, data = vnode.data;
                        isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch) && i(oldVnode, vnode);
                        var oldCh = oldVnode.children, ch = vnode.children;
                        if (isDef(data) && isPatchable(vnode)) {
                            for (i = 0; i < cbs.update.length; ++i) cbs.update[i](oldVnode, vnode);
                            isDef(i = data.hook) && isDef(i = i.update) && i(oldVnode, vnode);
                        }
                        isUndef(vnode.text) ? isDef(oldCh) && isDef(ch) ? oldCh !== ch && function(parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {
                            var oldKeyToIdx, idxInOld, vnodeToMove, oldStartIdx = 0, newStartIdx = 0, oldEndIdx = oldCh.length - 1, oldStartVnode = oldCh[0], oldEndVnode = oldCh[oldEndIdx], newEndIdx = newCh.length - 1, newStartVnode = newCh[0], newEndVnode = newCh[newEndIdx], canMove = !removeOnly;
                            for (0; oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx; ) isUndef(oldStartVnode) ? oldStartVnode = oldCh[++oldStartIdx] : isUndef(oldEndVnode) ? oldEndVnode = oldCh[--oldEndIdx] : sameVnode(oldStartVnode, newStartVnode) ? (patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx), 
                            oldStartVnode = oldCh[++oldStartIdx], newStartVnode = newCh[++newStartIdx]) : sameVnode(oldEndVnode, newEndVnode) ? (patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx), 
                            oldEndVnode = oldCh[--oldEndIdx], newEndVnode = newCh[--newEndIdx]) : sameVnode(oldStartVnode, newEndVnode) ? (patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue, newCh, newEndIdx), 
                            canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm)), 
                            oldStartVnode = oldCh[++oldStartIdx], newEndVnode = newCh[--newEndIdx]) : sameVnode(oldEndVnode, newStartVnode) ? (patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue, newCh, newStartIdx), 
                            canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm), 
                            oldEndVnode = oldCh[--oldEndIdx], newStartVnode = newCh[++newStartIdx]) : (isUndef(oldKeyToIdx) && (oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx)), 
                            isUndef(idxInOld = isDef(newStartVnode.key) ? oldKeyToIdx[newStartVnode.key] : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx)) ? createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, !1, newCh, newStartIdx) : sameVnode(vnodeToMove = oldCh[idxInOld], newStartVnode) ? (patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue, newCh, newStartIdx), 
                            oldCh[idxInOld] = void 0, canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm)) : createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, !1, newCh, newStartIdx), 
                            newStartVnode = newCh[++newStartIdx]);
                            oldStartIdx > oldEndIdx ? addVnodes(parentElm, isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue) : newStartIdx > newEndIdx && removeVnodes(0, oldCh, oldStartIdx, oldEndIdx);
                        }(elm, oldCh, ch, insertedVnodeQueue, removeOnly) : isDef(ch) ? (isDef(oldVnode.text) && nodeOps.setTextContent(elm, ""), 
                        addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue)) : isDef(oldCh) ? removeVnodes(0, oldCh, 0, oldCh.length - 1) : isDef(oldVnode.text) && nodeOps.setTextContent(elm, "") : oldVnode.text !== vnode.text && nodeOps.setTextContent(elm, vnode.text), 
                        isDef(data) && isDef(i = data.hook) && isDef(i = i.postpatch) && i(oldVnode, vnode);
                    }
                }
            }
            function invokeInsertHook(vnode, queue, initial) {
                if (isTrue(initial) && isDef(vnode.parent)) vnode.parent.data.pendingInsert = queue; else for (var i = 0; i < queue.length; ++i) queue[i].data.hook.insert(queue[i]);
            }
            var isRenderedModule = makeMap("attrs,class,staticClass,staticStyle,key");
            function hydrate(elm, vnode, insertedVnodeQueue, inVPre) {
                var i, tag = vnode.tag, data = vnode.data, children = vnode.children;
                if (inVPre = inVPre || data && data.pre, vnode.elm = elm, isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) return vnode.isAsyncPlaceholder = !0, 
                !0;
                if (isDef(data) && (isDef(i = data.hook) && isDef(i = i.init) && i(vnode, !0), isDef(i = vnode.componentInstance))) return initComponent(vnode, insertedVnodeQueue), 
                !0;
                if (isDef(tag)) {
                    if (isDef(children)) if (elm.hasChildNodes()) if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {
                        if (i !== elm.innerHTML) return !1;
                    } else {
                        for (var childrenMatch = !0, childNode = elm.firstChild, i$1 = 0; i$1 < children.length; i$1++) {
                            if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {
                                childrenMatch = !1;
                                break;
                            }
                            childNode = childNode.nextSibling;
                        }
                        if (!childrenMatch || childNode) return !1;
                    } else createChildren(vnode, children, insertedVnodeQueue);
                    if (isDef(data)) {
                        var fullInvoke = !1;
                        for (var key in data) if (!isRenderedModule(key)) {
                            fullInvoke = !0, invokeCreateHooks(vnode, insertedVnodeQueue);
                            break;
                        }
                        !fullInvoke && data.class && traverse(data.class);
                    }
                } else elm.data !== vnode.text && (elm.data = vnode.text);
                return !0;
            }
            return function(oldVnode, vnode, hydrating, removeOnly) {
                if (!isUndef(vnode)) {
                    var elm, isInitialPatch = !1, insertedVnodeQueue = [];
                    if (isUndef(oldVnode)) isInitialPatch = !0, createElm(vnode, insertedVnodeQueue); else {
                        var isRealElement = isDef(oldVnode.nodeType);
                        if (!isRealElement && sameVnode(oldVnode, vnode)) patchVnode(oldVnode, vnode, insertedVnodeQueue, null, null, removeOnly); else {
                            if (isRealElement) {
                                if (1 === oldVnode.nodeType && oldVnode.hasAttribute(SSR_ATTR) && (oldVnode.removeAttribute(SSR_ATTR), 
                                hydrating = !0), isTrue(hydrating) && hydrate(oldVnode, vnode, insertedVnodeQueue)) return invokeInsertHook(vnode, insertedVnodeQueue, !0), 
                                oldVnode;
                                elm = oldVnode, oldVnode = new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], void 0, elm);
                            }
                            var oldElm = oldVnode.elm, parentElm = nodeOps.parentNode(oldElm);
                            if (createElm(vnode, insertedVnodeQueue, oldElm._leaveCb ? null : parentElm, nodeOps.nextSibling(oldElm)), 
                            isDef(vnode.parent)) for (var ancestor = vnode.parent, patchable = isPatchable(vnode); ancestor; ) {
                                for (var i = 0; i < cbs.destroy.length; ++i) cbs.destroy[i](ancestor);
                                if (ancestor.elm = vnode.elm, patchable) {
                                    for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) cbs.create[i$1](emptyNode, ancestor);
                                    var insert = ancestor.data.hook.insert;
                                    if (insert.merged) for (var i$2 = 1; i$2 < insert.fns.length; i$2++) insert.fns[i$2]();
                                } else registerRef(ancestor);
                                ancestor = ancestor.parent;
                            }
                            isDef(parentElm) ? removeVnodes(0, [ oldVnode ], 0, 0) : isDef(oldVnode.tag) && invokeDestroyHook(oldVnode);
                        }
                    }
                    return invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch), vnode.elm;
                }
                isDef(oldVnode) && invokeDestroyHook(oldVnode);
            };
        }({
            nodeOps: nodeOps,
            modules: [ attrs, klass, events, domProps, style, inBrowser ? {
                create: _enter,
                activate: _enter,
                remove: function(vnode, rm) {
                    !0 !== vnode.data.show ? leave(vnode, rm) : rm();
                }
            } : {} ].concat(baseModules)
        });
        isIE9 && document.addEventListener("selectionchange", (function() {
            var el = document.activeElement;
            el && el.vmodel && trigger(el, "input");
        }));
        var directive = {
            inserted: function(el, binding, vnode, oldVnode) {
                "select" === vnode.tag ? (oldVnode.elm && !oldVnode.elm._vOptions ? mergeVNodeHook(vnode, "postpatch", (function() {
                    directive.componentUpdated(el, binding, vnode);
                })) : setSelected(el, binding, vnode.context), el._vOptions = [].map.call(el.options, getValue)) : ("textarea" === vnode.tag || isTextInputType(el.type)) && (el._vModifiers = binding.modifiers, 
                binding.modifiers.lazy || (el.addEventListener("compositionstart", onCompositionStart), 
                el.addEventListener("compositionend", onCompositionEnd), el.addEventListener("change", onCompositionEnd), 
                isIE9 && (el.vmodel = !0)));
            },
            componentUpdated: function(el, binding, vnode) {
                if ("select" === vnode.tag) {
                    setSelected(el, binding, vnode.context);
                    var prevOptions = el._vOptions, curOptions = el._vOptions = [].map.call(el.options, getValue);
                    if (curOptions.some((function(o, i) {
                        return !looseEqual(o, prevOptions[i]);
                    }))) (el.multiple ? binding.value.some((function(v) {
                        return hasNoMatchingOption(v, curOptions);
                    })) : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions)) && trigger(el, "change");
                }
            }
        };
        function setSelected(el, binding, vm) {
            actuallySetSelected(el, binding, vm), (isIE || isEdge) && setTimeout((function() {
                actuallySetSelected(el, binding, vm);
            }), 0);
        }
        function actuallySetSelected(el, binding, vm) {
            var value = binding.value, isMultiple = el.multiple;
            if (!isMultiple || Array.isArray(value)) {
                for (var selected, option, i = 0, l = el.options.length; i < l; i++) if (option = el.options[i], 
                isMultiple) selected = looseIndexOf(value, getValue(option)) > -1, option.selected !== selected && (option.selected = selected); else if (looseEqual(getValue(option), value)) return void (el.selectedIndex !== i && (el.selectedIndex = i));
                isMultiple || (el.selectedIndex = -1);
            }
        }
        function hasNoMatchingOption(value, options) {
            return options.every((function(o) {
                return !looseEqual(o, value);
            }));
        }
        function getValue(option) {
            return "_value" in option ? option._value : option.value;
        }
        function onCompositionStart(e) {
            e.target.composing = !0;
        }
        function onCompositionEnd(e) {
            e.target.composing && (e.target.composing = !1, trigger(e.target, "input"));
        }
        function trigger(el, type) {
            var e = document.createEvent("HTMLEvents");
            e.initEvent(type, !0, !0), el.dispatchEvent(e);
        }
        function locateNode(vnode) {
            return !vnode.componentInstance || vnode.data && vnode.data.transition ? vnode : locateNode(vnode.componentInstance._vnode);
        }
        var platformDirectives = {
            model: directive,
            show: {
                bind: function(el, ref, vnode) {
                    var value = ref.value, transition$$1 = (vnode = locateNode(vnode)).data && vnode.data.transition, originalDisplay = el.__vOriginalDisplay = "none" === el.style.display ? "" : el.style.display;
                    value && transition$$1 ? (vnode.data.show = !0, enter(vnode, (function() {
                        el.style.display = originalDisplay;
                    }))) : el.style.display = value ? originalDisplay : "none";
                },
                update: function(el, ref, vnode) {
                    var value = ref.value;
                    !value != !ref.oldValue && ((vnode = locateNode(vnode)).data && vnode.data.transition ? (vnode.data.show = !0, 
                    value ? enter(vnode, (function() {
                        el.style.display = el.__vOriginalDisplay;
                    })) : leave(vnode, (function() {
                        el.style.display = "none";
                    }))) : el.style.display = value ? el.__vOriginalDisplay : "none");
                },
                unbind: function(el, binding, vnode, oldVnode, isDestroy) {
                    isDestroy || (el.style.display = el.__vOriginalDisplay);
                }
            }
        }, transitionProps = {
            name: String,
            appear: Boolean,
            css: Boolean,
            mode: String,
            type: String,
            enterClass: String,
            leaveClass: String,
            enterToClass: String,
            leaveToClass: String,
            enterActiveClass: String,
            leaveActiveClass: String,
            appearClass: String,
            appearActiveClass: String,
            appearToClass: String,
            duration: [ Number, String, Object ]
        };
        function getRealChild(vnode) {
            var compOptions = vnode && vnode.componentOptions;
            return compOptions && compOptions.Ctor.options.abstract ? getRealChild(getFirstComponentChild(compOptions.children)) : vnode;
        }
        function extractTransitionData(comp) {
            var data = {}, options = comp.$options;
            for (var key in options.propsData) data[key] = comp[key];
            var listeners = options._parentListeners;
            for (var key$1 in listeners) data[camelize(key$1)] = listeners[key$1];
            return data;
        }
        function placeholder(h, rawChild) {
            if (/\d-keep-alive$/.test(rawChild.tag)) return h("keep-alive", {
                props: rawChild.componentOptions.propsData
            });
        }
        var isNotTextNode = function(c) {
            return c.tag || isAsyncPlaceholder(c);
        }, isVShowDirective = function(d) {
            return "show" === d.name;
        }, Transition = {
            name: "transition",
            props: transitionProps,
            abstract: !0,
            render: function(h) {
                var this$1 = this, children = this.$slots.default;
                if (children && (children = children.filter(isNotTextNode)).length) {
                    0;
                    var mode = this.mode;
                    0;
                    var rawChild = children[0];
                    if (function(vnode) {
                        for (;vnode = vnode.parent; ) if (vnode.data.transition) return !0;
                    }(this.$vnode)) return rawChild;
                    var child = getRealChild(rawChild);
                    if (!child) return rawChild;
                    if (this._leaving) return placeholder(h, rawChild);
                    var id = "__transition-" + this._uid + "-";
                    child.key = null == child.key ? child.isComment ? id + "comment" : id + child.tag : isPrimitive(child.key) ? 0 === String(child.key).indexOf(id) ? child.key : id + child.key : child.key;
                    var data = (child.data || (child.data = {})).transition = extractTransitionData(this), oldRawChild = this._vnode, oldChild = getRealChild(oldRawChild);
                    if (child.data.directives && child.data.directives.some(isVShowDirective) && (child.data.show = !0), 
                    oldChild && oldChild.data && !function(child, oldChild) {
                        return oldChild.key === child.key && oldChild.tag === child.tag;
                    }(child, oldChild) && !isAsyncPlaceholder(oldChild) && (!oldChild.componentInstance || !oldChild.componentInstance._vnode.isComment)) {
                        var oldData = oldChild.data.transition = extend({}, data);
                        if ("out-in" === mode) return this._leaving = !0, mergeVNodeHook(oldData, "afterLeave", (function() {
                            this$1._leaving = !1, this$1.$forceUpdate();
                        })), placeholder(h, rawChild);
                        if ("in-out" === mode) {
                            if (isAsyncPlaceholder(child)) return oldRawChild;
                            var delayedLeave, performLeave = function() {
                                delayedLeave();
                            };
                            mergeVNodeHook(data, "afterEnter", performLeave), mergeVNodeHook(data, "enterCancelled", performLeave), 
                            mergeVNodeHook(oldData, "delayLeave", (function(leave) {
                                delayedLeave = leave;
                            }));
                        }
                    }
                    return rawChild;
                }
            }
        }, props = extend({
            tag: String,
            moveClass: String
        }, transitionProps);
        function callPendingCbs(c) {
            c.elm._moveCb && c.elm._moveCb(), c.elm._enterCb && c.elm._enterCb();
        }
        function recordPosition(c) {
            c.data.newPos = c.elm.getBoundingClientRect();
        }
        function applyTranslation(c) {
            var oldPos = c.data.pos, newPos = c.data.newPos, dx = oldPos.left - newPos.left, dy = oldPos.top - newPos.top;
            if (dx || dy) {
                c.data.moved = !0;
                var s = c.elm.style;
                s.transform = s.WebkitTransform = "translate(" + dx + "px," + dy + "px)", s.transitionDuration = "0s";
            }
        }
        delete props.mode;
        var platformComponents = {
            Transition: Transition,
            TransitionGroup: {
                props: props,
                beforeMount: function() {
                    var this$1 = this, update = this._update;
                    this._update = function(vnode, hydrating) {
                        var restoreActiveInstance = setActiveInstance(this$1);
                        this$1.__patch__(this$1._vnode, this$1.kept, !1, !0), this$1._vnode = this$1.kept, 
                        restoreActiveInstance(), update.call(this$1, vnode, hydrating);
                    };
                },
                render: function(h) {
                    for (var tag = this.tag || this.$vnode.data.tag || "span", map = Object.create(null), prevChildren = this.prevChildren = this.children, rawChildren = this.$slots.default || [], children = this.children = [], transitionData = extractTransitionData(this), i = 0; i < rawChildren.length; i++) {
                        var c = rawChildren[i];
                        if (c.tag) if (null != c.key && 0 !== String(c.key).indexOf("__vlist")) children.push(c), 
                        map[c.key] = c, (c.data || (c.data = {})).transition = transitionData; else ;
                    }
                    if (prevChildren) {
                        for (var kept = [], removed = [], i$1 = 0; i$1 < prevChildren.length; i$1++) {
                            var c$1 = prevChildren[i$1];
                            c$1.data.transition = transitionData, c$1.data.pos = c$1.elm.getBoundingClientRect(), 
                            map[c$1.key] ? kept.push(c$1) : removed.push(c$1);
                        }
                        this.kept = h(tag, null, kept), this.removed = removed;
                    }
                    return h(tag, null, children);
                },
                updated: function() {
                    var children = this.prevChildren, moveClass = this.moveClass || (this.name || "v") + "-move";
                    children.length && this.hasMove(children[0].elm, moveClass) && (children.forEach(callPendingCbs), 
                    children.forEach(recordPosition), children.forEach(applyTranslation), this._reflow = document.body.offsetHeight, 
                    children.forEach((function(c) {
                        if (c.data.moved) {
                            var el = c.elm, s = el.style;
                            addTransitionClass(el, moveClass), s.transform = s.WebkitTransform = s.transitionDuration = "", 
                            el.addEventListener(transitionEndEvent, el._moveCb = function cb(e) {
                                e && e.target !== el || e && !/transform$/.test(e.propertyName) || (el.removeEventListener(transitionEndEvent, cb), 
                                el._moveCb = null, removeTransitionClass(el, moveClass));
                            });
                        }
                    })));
                },
                methods: {
                    hasMove: function(el, moveClass) {
                        if (!hasTransition) return !1;
                        if (this._hasMove) return this._hasMove;
                        var clone = el.cloneNode();
                        el._transitionClasses && el._transitionClasses.forEach((function(cls) {
                            removeClass(clone, cls);
                        })), addClass(clone, moveClass), clone.style.display = "none", this.$el.appendChild(clone);
                        var info = getTransitionInfo(clone);
                        return this.$el.removeChild(clone), this._hasMove = info.hasTransform;
                    }
                }
            }
        };
        Vue.config.mustUseProp = mustUseProp, Vue.config.isReservedTag = isReservedTag, 
        Vue.config.isReservedAttr = isReservedAttr, Vue.config.getTagNamespace = getTagNamespace, 
        Vue.config.isUnknownElement = function(tag) {
            if (!inBrowser) return !0;
            if (isReservedTag(tag)) return !1;
            if (tag = tag.toLowerCase(), null != unknownElementCache[tag]) return unknownElementCache[tag];
            var el = document.createElement(tag);
            return tag.indexOf("-") > -1 ? unknownElementCache[tag] = el.constructor === window.HTMLUnknownElement || el.constructor === window.HTMLElement : unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString());
        }, extend(Vue.options.directives, platformDirectives), extend(Vue.options.components, platformComponents), 
        Vue.prototype.__patch__ = inBrowser ? patch : noop, Vue.prototype.$mount = function(el, hydrating) {
            return function(vm, el, hydrating) {
                var updateComponent;
                return vm.$el = el, vm.$options.render || (vm.$options.render = createEmptyVNode), 
                callHook(vm, "beforeMount"), updateComponent = function() {
                    vm._update(vm._render(), hydrating);
                }, new Watcher(vm, updateComponent, noop, {
                    before: function() {
                        vm._isMounted && !vm._isDestroyed && callHook(vm, "beforeUpdate");
                    }
                }, !0), hydrating = !1, null == vm.$vnode && (vm._isMounted = !0, callHook(vm, "mounted")), 
                vm;
            }(this, el = el && inBrowser ? query(el) : void 0, hydrating);
        }, inBrowser && setTimeout((function() {
            config.devtools && devtools && devtools.emit("init", Vue);
        }), 0);
        var defaultTagRE = /\{\{((?:.|\r?\n)+?)\}\}/g, regexEscapeRE = /[-.*+?^${}()|[\]\/\\]/g, buildRegex = cached((function(delimiters) {
            var open = delimiters[0].replace(regexEscapeRE, "\\$&"), close = delimiters[1].replace(regexEscapeRE, "\\$&");
            return new RegExp(open + "((?:.|\\n)+?)" + close, "g");
        }));
        var klass$1 = {
            staticKeys: [ "staticClass" ],
            transformNode: function(el, options) {
                options.warn;
                var staticClass = getAndRemoveAttr(el, "class");
                staticClass && (el.staticClass = JSON.stringify(staticClass));
                var classBinding = getBindingAttr(el, "class", !1);
                classBinding && (el.classBinding = classBinding);
            },
            genData: function(el) {
                var data = "";
                return el.staticClass && (data += "staticClass:" + el.staticClass + ","), el.classBinding && (data += "class:" + el.classBinding + ","), 
                data;
            }
        };
        var decoder, style$1 = {
            staticKeys: [ "staticStyle" ],
            transformNode: function(el, options) {
                options.warn;
                var staticStyle = getAndRemoveAttr(el, "style");
                staticStyle && (el.staticStyle = JSON.stringify(parseStyleText(staticStyle)));
                var styleBinding = getBindingAttr(el, "style", !1);
                styleBinding && (el.styleBinding = styleBinding);
            },
            genData: function(el) {
                var data = "";
                return el.staticStyle && (data += "staticStyle:" + el.staticStyle + ","), el.styleBinding && (data += "style:(" + el.styleBinding + "),"), 
                data;
            }
        }, he_decode = function(html) {
            return (decoder = decoder || document.createElement("div")).innerHTML = html, decoder.textContent;
        }, isUnaryTag = makeMap("area,base,br,col,embed,frame,hr,img,input,isindex,keygen,link,meta,param,source,track,wbr"), canBeLeftOpenTag = makeMap("colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr,source"), isNonPhrasingTag = makeMap("address,article,aside,base,blockquote,body,caption,col,colgroup,dd,details,dialog,div,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,head,header,hgroup,hr,html,legend,li,menuitem,meta,optgroup,option,param,rp,rt,source,style,summary,tbody,td,tfoot,th,thead,title,tr,track"), attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/, dynamicArgAttribute = /^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/, ncname = "[a-zA-Z_][\\-\\.0-9_a-zA-Z" + unicodeRegExp.source + "]*", qnameCapture = "((?:" + ncname + "\\:)?" + ncname + ")", startTagOpen = new RegExp("^<" + qnameCapture), startTagClose = /^\s*(\/?)>/, endTag = new RegExp("^<\\/" + qnameCapture + "[^>]*>"), doctype = /^<!DOCTYPE [^>]+>/i, comment = /^<!\--/, conditionalComment = /^<!\[/, isPlainTextElement = makeMap("script,style,textarea", !0), reCache = {}, decodingMap = {
            "&lt;": "<",
            "&gt;": ">",
            "&quot;": '"',
            "&amp;": "&",
            "&#10;": "\n",
            "&#9;": "\t",
            "&#39;": "'"
        }, encodedAttr = /&(?:lt|gt|quot|amp|#39);/g, encodedAttrWithNewLines = /&(?:lt|gt|quot|amp|#39|#10|#9);/g, isIgnoreNewlineTag = makeMap("pre,textarea", !0), shouldIgnoreFirstNewline = function(tag, html) {
            return tag && isIgnoreNewlineTag(tag) && "\n" === html[0];
        };
        function decodeAttr(value, shouldDecodeNewlines) {
            var re = shouldDecodeNewlines ? encodedAttrWithNewLines : encodedAttr;
            return value.replace(re, (function(match) {
                return decodingMap[match];
            }));
        }
        var warn$2, delimiters, transforms, preTransforms, postTransforms, platformIsPreTag, platformMustUseProp, platformGetTagNamespace, onRE = /^@|^v-on:/, dirRE = /^v-|^@|^:/, forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/, forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/, stripParensRE = /^\(|\)$/g, dynamicArgRE = /^\[.*\]$/, argRE = /:(.*)$/, bindRE = /^:|^\.|^v-bind:/, modifierRE = /\.[^.\]]+(?=[^\]]*$)/g, slotRE = /^v-slot(:|$)|^#/, lineBreakRE = /[\r\n]/, whitespaceRE$1 = /\s+/g, decodeHTMLCached = cached(he_decode), emptySlotScopeToken = "_empty_";
        function createASTElement(tag, attrs, parent) {
            return {
                type: 1,
                tag: tag,
                attrsList: attrs,
                attrsMap: makeAttrsMap(attrs),
                rawAttrsMap: {},
                parent: parent,
                children: []
            };
        }
        function parse(template, options) {
            warn$2 = options.warn || baseWarn, platformIsPreTag = options.isPreTag || no, platformMustUseProp = options.mustUseProp || no, 
            platformGetTagNamespace = options.getTagNamespace || no;
            var isReservedTag = options.isReservedTag || no;
            (function(el) {
                return !!el.component || !isReservedTag(el.tag);
            }), transforms = pluckModuleFunction(options.modules, "transformNode"), preTransforms = pluckModuleFunction(options.modules, "preTransformNode"), 
            postTransforms = pluckModuleFunction(options.modules, "postTransformNode"), delimiters = options.delimiters;
            var root, currentParent, stack = [], preserveWhitespace = !1 !== options.preserveWhitespace, whitespaceOption = options.whitespace, inVPre = !1, inPre = !1;
            function closeElement(element) {
                if (trimEndingWhitespace(element), inVPre || element.processed || (element = processElement(element, options)), 
                stack.length || element === root || root.if && (element.elseif || element.else) && addIfCondition(root, {
                    exp: element.elseif,
                    block: element
                }), currentParent && !element.forbidden) if (element.elseif || element.else) el = element, 
                (prev = function(children) {
                    for (var i = children.length; i--; ) {
                        if (1 === children[i].type) return children[i];
                        children.pop();
                    }
                }(currentParent.children)) && prev.if && addIfCondition(prev, {
                    exp: el.elseif,
                    block: el
                }); else {
                    if (element.slotScope) {
                        var name = element.slotTarget || '"default"';
                        (currentParent.scopedSlots || (currentParent.scopedSlots = {}))[name] = element;
                    }
                    currentParent.children.push(element), element.parent = currentParent;
                }
                var el, prev;
                element.children = element.children.filter((function(c) {
                    return !c.slotScope;
                })), trimEndingWhitespace(element), element.pre && (inVPre = !1), platformIsPreTag(element.tag) && (inPre = !1);
                for (var i = 0; i < postTransforms.length; i++) postTransforms[i](element, options);
            }
            function trimEndingWhitespace(el) {
                if (!inPre) for (var lastNode; (lastNode = el.children[el.children.length - 1]) && 3 === lastNode.type && " " === lastNode.text; ) el.children.pop();
            }
            return function(html, options) {
                for (var last, lastTag, stack = [], expectHTML = options.expectHTML, isUnaryTag$$1 = options.isUnaryTag || no, canBeLeftOpenTag$$1 = options.canBeLeftOpenTag || no, index = 0; html; ) {
                    if (last = html, lastTag && isPlainTextElement(lastTag)) {
                        var endTagLength = 0, stackedTag = lastTag.toLowerCase(), reStackedTag = reCache[stackedTag] || (reCache[stackedTag] = new RegExp("([\\s\\S]*?)(</" + stackedTag + "[^>]*>)", "i")), rest$1 = html.replace(reStackedTag, (function(all, text, endTag) {
                            return endTagLength = endTag.length, isPlainTextElement(stackedTag) || "noscript" === stackedTag || (text = text.replace(/<!\--([\s\S]*?)-->/g, "$1").replace(/<!\[CDATA\[([\s\S]*?)]]>/g, "$1")), 
                            shouldIgnoreFirstNewline(stackedTag, text) && (text = text.slice(1)), options.chars && options.chars(text), 
                            "";
                        }));
                        index += html.length - rest$1.length, html = rest$1, parseEndTag(stackedTag, index - endTagLength, index);
                    } else {
                        var textEnd = html.indexOf("<");
                        if (0 === textEnd) {
                            if (comment.test(html)) {
                                var commentEnd = html.indexOf("--\x3e");
                                if (commentEnd >= 0) {
                                    options.shouldKeepComment && options.comment(html.substring(4, commentEnd), index, index + commentEnd + 3), 
                                    advance(commentEnd + 3);
                                    continue;
                                }
                            }
                            if (conditionalComment.test(html)) {
                                var conditionalEnd = html.indexOf("]>");
                                if (conditionalEnd >= 0) {
                                    advance(conditionalEnd + 2);
                                    continue;
                                }
                            }
                            var doctypeMatch = html.match(doctype);
                            if (doctypeMatch) {
                                advance(doctypeMatch[0].length);
                                continue;
                            }
                            var endTagMatch = html.match(endTag);
                            if (endTagMatch) {
                                var curIndex = index;
                                advance(endTagMatch[0].length), parseEndTag(endTagMatch[1], curIndex, index);
                                continue;
                            }
                            var startTagMatch = parseStartTag();
                            if (startTagMatch) {
                                handleStartTag(startTagMatch), shouldIgnoreFirstNewline(startTagMatch.tagName, html) && advance(1);
                                continue;
                            }
                        }
                        var text = void 0, rest = void 0, next = void 0;
                        if (textEnd >= 0) {
                            for (rest = html.slice(textEnd); !(endTag.test(rest) || startTagOpen.test(rest) || comment.test(rest) || conditionalComment.test(rest) || (next = rest.indexOf("<", 1)) < 0); ) textEnd += next, 
                            rest = html.slice(textEnd);
                            text = html.substring(0, textEnd);
                        }
                        textEnd < 0 && (text = html), text && advance(text.length), options.chars && text && options.chars(text, index - text.length, index);
                    }
                    if (html === last) {
                        options.chars && options.chars(html);
                        break;
                    }
                }
                function advance(n) {
                    index += n, html = html.substring(n);
                }
                function parseStartTag() {
                    var start = html.match(startTagOpen);
                    if (start) {
                        var end, attr, match = {
                            tagName: start[1],
                            attrs: [],
                            start: index
                        };
                        for (advance(start[0].length); !(end = html.match(startTagClose)) && (attr = html.match(dynamicArgAttribute) || html.match(attribute)); ) attr.start = index, 
                        advance(attr[0].length), attr.end = index, match.attrs.push(attr);
                        if (end) return match.unarySlash = end[1], advance(end[0].length), match.end = index, 
                        match;
                    }
                }
                function handleStartTag(match) {
                    var tagName = match.tagName, unarySlash = match.unarySlash;
                    expectHTML && ("p" === lastTag && isNonPhrasingTag(tagName) && parseEndTag(lastTag), 
                    canBeLeftOpenTag$$1(tagName) && lastTag === tagName && parseEndTag(tagName));
                    for (var unary = isUnaryTag$$1(tagName) || !!unarySlash, l = match.attrs.length, attrs = new Array(l), i = 0; i < l; i++) {
                        var args = match.attrs[i], value = args[3] || args[4] || args[5] || "", shouldDecodeNewlines = "a" === tagName && "href" === args[1] ? options.shouldDecodeNewlinesForHref : options.shouldDecodeNewlines;
                        attrs[i] = {
                            name: args[1],
                            value: decodeAttr(value, shouldDecodeNewlines)
                        };
                    }
                    unary || (stack.push({
                        tag: tagName,
                        lowerCasedTag: tagName.toLowerCase(),
                        attrs: attrs,
                        start: match.start,
                        end: match.end
                    }), lastTag = tagName), options.start && options.start(tagName, attrs, unary, match.start, match.end);
                }
                function parseEndTag(tagName, start, end) {
                    var pos, lowerCasedTagName;
                    if (null == start && (start = index), null == end && (end = index), tagName) for (lowerCasedTagName = tagName.toLowerCase(), 
                    pos = stack.length - 1; pos >= 0 && stack[pos].lowerCasedTag !== lowerCasedTagName; pos--) ; else pos = 0;
                    if (pos >= 0) {
                        for (var i = stack.length - 1; i >= pos; i--) options.end && options.end(stack[i].tag, start, end);
                        stack.length = pos, lastTag = pos && stack[pos - 1].tag;
                    } else "br" === lowerCasedTagName ? options.start && options.start(tagName, [], !0, start, end) : "p" === lowerCasedTagName && (options.start && options.start(tagName, [], !1, start, end), 
                    options.end && options.end(tagName, start, end));
                }
                parseEndTag();
            }(template, {
                warn: warn$2,
                expectHTML: options.expectHTML,
                isUnaryTag: options.isUnaryTag,
                canBeLeftOpenTag: options.canBeLeftOpenTag,
                shouldDecodeNewlines: options.shouldDecodeNewlines,
                shouldDecodeNewlinesForHref: options.shouldDecodeNewlinesForHref,
                shouldKeepComment: options.comments,
                outputSourceRange: options.outputSourceRange,
                start: function(tag, attrs, unary, start$1, end) {
                    var ns = currentParent && currentParent.ns || platformGetTagNamespace(tag);
                    isIE && "svg" === ns && (attrs = function(attrs) {
                        for (var res = [], i = 0; i < attrs.length; i++) {
                            var attr = attrs[i];
                            ieNSBug.test(attr.name) || (attr.name = attr.name.replace(ieNSPrefix, ""), res.push(attr));
                        }
                        return res;
                    }(attrs));
                    var el, element = createASTElement(tag, attrs, currentParent);
                    ns && (element.ns = ns), "style" !== (el = element).tag && ("script" !== el.tag || el.attrsMap.type && "text/javascript" !== el.attrsMap.type) || isServerRendering() || (element.forbidden = !0);
                    for (var i = 0; i < preTransforms.length; i++) element = preTransforms[i](element, options) || element;
                    inVPre || (!function(el) {
                        null != getAndRemoveAttr(el, "v-pre") && (el.pre = !0);
                    }(element), element.pre && (inVPre = !0)), platformIsPreTag(element.tag) && (inPre = !0), 
                    inVPre ? function(el) {
                        var list = el.attrsList, len = list.length;
                        if (len) for (var attrs = el.attrs = new Array(len), i = 0; i < len; i++) attrs[i] = {
                            name: list[i].name,
                            value: JSON.stringify(list[i].value)
                        }, null != list[i].start && (attrs[i].start = list[i].start, attrs[i].end = list[i].end); else el.pre || (el.plain = !0);
                    }(element) : element.processed || (processFor(element), function(el) {
                        var exp = getAndRemoveAttr(el, "v-if");
                        if (exp) el.if = exp, addIfCondition(el, {
                            exp: exp,
                            block: el
                        }); else {
                            null != getAndRemoveAttr(el, "v-else") && (el.else = !0);
                            var elseif = getAndRemoveAttr(el, "v-else-if");
                            elseif && (el.elseif = elseif);
                        }
                    }(element), function(el) {
                        null != getAndRemoveAttr(el, "v-once") && (el.once = !0);
                    }(element)), root || (root = element), unary ? closeElement(element) : (currentParent = element, 
                    stack.push(element));
                },
                end: function(tag, start, end$1) {
                    var element = stack[stack.length - 1];
                    stack.length -= 1, currentParent = stack[stack.length - 1], closeElement(element);
                },
                chars: function(text, start, end) {
                    if (currentParent && (!isIE || "textarea" !== currentParent.tag || currentParent.attrsMap.placeholder !== text)) {
                        var el, res, child, children = currentParent.children;
                        if (text = inPre || text.trim() ? "script" === (el = currentParent).tag || "style" === el.tag ? text : decodeHTMLCached(text) : children.length ? whitespaceOption ? "condense" === whitespaceOption && lineBreakRE.test(text) ? "" : " " : preserveWhitespace ? " " : "" : "") inPre || "condense" !== whitespaceOption || (text = text.replace(whitespaceRE$1, " ")), 
                        !inVPre && " " !== text && (res = function(text, delimiters) {
                            var tagRE = delimiters ? buildRegex(delimiters) : defaultTagRE;
                            if (tagRE.test(text)) {
                                for (var match, index, tokenValue, tokens = [], rawTokens = [], lastIndex = tagRE.lastIndex = 0; match = tagRE.exec(text); ) {
                                    (index = match.index) > lastIndex && (rawTokens.push(tokenValue = text.slice(lastIndex, index)), 
                                    tokens.push(JSON.stringify(tokenValue)));
                                    var exp = parseFilters(match[1].trim());
                                    tokens.push("_s(" + exp + ")"), rawTokens.push({
                                        "@binding": exp
                                    }), lastIndex = index + match[0].length;
                                }
                                return lastIndex < text.length && (rawTokens.push(tokenValue = text.slice(lastIndex)), 
                                tokens.push(JSON.stringify(tokenValue))), {
                                    expression: tokens.join("+"),
                                    tokens: rawTokens
                                };
                            }
                        }(text, delimiters)) ? child = {
                            type: 2,
                            expression: res.expression,
                            tokens: res.tokens,
                            text: text
                        } : " " === text && children.length && " " === children[children.length - 1].text || (child = {
                            type: 3,
                            text: text
                        }), child && children.push(child);
                    }
                },
                comment: function(text, start, end) {
                    if (currentParent) {
                        var child = {
                            type: 3,
                            text: text,
                            isComment: !0
                        };
                        0, currentParent.children.push(child);
                    }
                }
            }), root;
        }
        function processElement(element, options) {
            var el;
            !function(el) {
                var exp = getBindingAttr(el, "key");
                if (exp) {
                    el.key = exp;
                }
            }(element), element.plain = !element.key && !element.scopedSlots && !element.attrsList.length, 
            function(el) {
                var ref = getBindingAttr(el, "ref");
                ref && (el.ref = ref, el.refInFor = function(el) {
                    var parent = el;
                    for (;parent; ) {
                        if (void 0 !== parent.for) return !0;
                        parent = parent.parent;
                    }
                    return !1;
                }(el));
            }(element), function(el) {
                var slotScope;
                "template" === el.tag ? (slotScope = getAndRemoveAttr(el, "scope"), el.slotScope = slotScope || getAndRemoveAttr(el, "slot-scope")) : (slotScope = getAndRemoveAttr(el, "slot-scope")) && (el.slotScope = slotScope);
                var slotTarget = getBindingAttr(el, "slot");
                slotTarget && (el.slotTarget = '""' === slotTarget ? '"default"' : slotTarget, el.slotTargetDynamic = !(!el.attrsMap[":slot"] && !el.attrsMap["v-bind:slot"]), 
                "template" === el.tag || el.slotScope || addAttr(el, "slot", slotTarget, function(el, name) {
                    return el.rawAttrsMap[":" + name] || el.rawAttrsMap["v-bind:" + name] || el.rawAttrsMap[name];
                }(el, "slot")));
                if ("template" === el.tag) {
                    var slotBinding = getAndRemoveAttrByRegex(el, slotRE);
                    if (slotBinding) {
                        0;
                        var ref = getSlotName(slotBinding), name = ref.name, dynamic = ref.dynamic;
                        el.slotTarget = name, el.slotTargetDynamic = dynamic, el.slotScope = slotBinding.value || emptySlotScopeToken;
                    }
                } else {
                    var slotBinding$1 = getAndRemoveAttrByRegex(el, slotRE);
                    if (slotBinding$1) {
                        0;
                        var slots = el.scopedSlots || (el.scopedSlots = {}), ref$1 = getSlotName(slotBinding$1), name$1 = ref$1.name, dynamic$1 = ref$1.dynamic, slotContainer = slots[name$1] = createASTElement("template", [], el);
                        slotContainer.slotTarget = name$1, slotContainer.slotTargetDynamic = dynamic$1, 
                        slotContainer.children = el.children.filter((function(c) {
                            if (!c.slotScope) return c.parent = slotContainer, !0;
                        })), slotContainer.slotScope = slotBinding$1.value || emptySlotScopeToken, el.children = [], 
                        el.plain = !1;
                    }
                }
            }(element), "slot" === (el = element).tag && (el.slotName = getBindingAttr(el, "name")), 
            function(el) {
                var binding;
                (binding = getBindingAttr(el, "is")) && (el.component = binding);
                null != getAndRemoveAttr(el, "inline-template") && (el.inlineTemplate = !0);
            }(element);
            for (var i = 0; i < transforms.length; i++) element = transforms[i](element, options) || element;
            return function(el) {
                var i, l, name, rawName, value, modifiers, syncGen, isDynamic, list = el.attrsList;
                for (i = 0, l = list.length; i < l; i++) {
                    if (name = rawName = list[i].name, value = list[i].value, dirRE.test(name)) if (el.hasBindings = !0, 
                    (modifiers = parseModifiers(name.replace(dirRE, ""))) && (name = name.replace(modifierRE, "")), 
                    bindRE.test(name)) name = name.replace(bindRE, ""), value = parseFilters(value), 
                    (isDynamic = dynamicArgRE.test(name)) && (name = name.slice(1, -1)), modifiers && (modifiers.prop && !isDynamic && "innerHtml" === (name = camelize(name)) && (name = "innerHTML"), 
                    modifiers.camel && !isDynamic && (name = camelize(name)), modifiers.sync && (syncGen = genAssignmentCode(value, "$event"), 
                    isDynamic ? addHandler(el, '"update:"+(' + name + ")", syncGen, null, !1, 0, list[i], !0) : (addHandler(el, "update:" + camelize(name), syncGen, null, !1, 0, list[i]), 
                    hyphenate(name) !== camelize(name) && addHandler(el, "update:" + hyphenate(name), syncGen, null, !1, 0, list[i])))), 
                    modifiers && modifiers.prop || !el.component && platformMustUseProp(el.tag, el.attrsMap.type, name) ? addProp(el, name, value, list[i], isDynamic) : addAttr(el, name, value, list[i], isDynamic); else if (onRE.test(name)) name = name.replace(onRE, ""), 
                    (isDynamic = dynamicArgRE.test(name)) && (name = name.slice(1, -1)), addHandler(el, name, value, modifiers, !1, 0, list[i], isDynamic); else {
                        var argMatch = (name = name.replace(dirRE, "")).match(argRE), arg = argMatch && argMatch[1];
                        isDynamic = !1, arg && (name = name.slice(0, -(arg.length + 1)), dynamicArgRE.test(arg) && (arg = arg.slice(1, -1), 
                        isDynamic = !0)), addDirective(el, name, rawName, value, arg, isDynamic, modifiers, list[i]);
                    } else addAttr(el, name, JSON.stringify(value), list[i]), !el.component && "muted" === name && platformMustUseProp(el.tag, el.attrsMap.type, name) && addProp(el, name, "true", list[i]);
                }
            }(element), element;
        }
        function processFor(el) {
            var exp;
            if (exp = getAndRemoveAttr(el, "v-for")) {
                var res = function(exp) {
                    var inMatch = exp.match(forAliasRE);
                    if (!inMatch) return;
                    var res = {};
                    res.for = inMatch[2].trim();
                    var alias = inMatch[1].trim().replace(stripParensRE, ""), iteratorMatch = alias.match(forIteratorRE);
                    iteratorMatch ? (res.alias = alias.replace(forIteratorRE, "").trim(), res.iterator1 = iteratorMatch[1].trim(), 
                    iteratorMatch[2] && (res.iterator2 = iteratorMatch[2].trim())) : res.alias = alias;
                    return res;
                }(exp);
                res && extend(el, res);
            }
        }
        function addIfCondition(el, condition) {
            el.ifConditions || (el.ifConditions = []), el.ifConditions.push(condition);
        }
        function getSlotName(binding) {
            var name = binding.name.replace(slotRE, "");
            return name || "#" !== binding.name[0] && (name = "default"), dynamicArgRE.test(name) ? {
                name: name.slice(1, -1),
                dynamic: !0
            } : {
                name: '"' + name + '"',
                dynamic: !1
            };
        }
        function parseModifiers(name) {
            var match = name.match(modifierRE);
            if (match) {
                var ret = {};
                return match.forEach((function(m) {
                    ret[m.slice(1)] = !0;
                })), ret;
            }
        }
        function makeAttrsMap(attrs) {
            for (var map = {}, i = 0, l = attrs.length; i < l; i++) map[attrs[i].name] = attrs[i].value;
            return map;
        }
        var ieNSBug = /^xmlns:NS\d+/, ieNSPrefix = /^NS\d+:/;
        function cloneASTElement(el) {
            return createASTElement(el.tag, el.attrsList.slice(), el.parent);
        }
        var modules$1 = [ klass$1, style$1, {
            preTransformNode: function(el, options) {
                if ("input" === el.tag) {
                    var typeBinding, map = el.attrsMap;
                    if (!map["v-model"]) return;
                    if ((map[":type"] || map["v-bind:type"]) && (typeBinding = getBindingAttr(el, "type")), 
                    map.type || typeBinding || !map["v-bind"] || (typeBinding = "(" + map["v-bind"] + ").type"), 
                    typeBinding) {
                        var ifCondition = getAndRemoveAttr(el, "v-if", !0), ifConditionExtra = ifCondition ? "&&(" + ifCondition + ")" : "", hasElse = null != getAndRemoveAttr(el, "v-else", !0), elseIfCondition = getAndRemoveAttr(el, "v-else-if", !0), branch0 = cloneASTElement(el);
                        processFor(branch0), addRawAttr(branch0, "type", "checkbox"), processElement(branch0, options), 
                        branch0.processed = !0, branch0.if = "(" + typeBinding + ")==='checkbox'" + ifConditionExtra, 
                        addIfCondition(branch0, {
                            exp: branch0.if,
                            block: branch0
                        });
                        var branch1 = cloneASTElement(el);
                        getAndRemoveAttr(branch1, "v-for", !0), addRawAttr(branch1, "type", "radio"), processElement(branch1, options), 
                        addIfCondition(branch0, {
                            exp: "(" + typeBinding + ")==='radio'" + ifConditionExtra,
                            block: branch1
                        });
                        var branch2 = cloneASTElement(el);
                        return getAndRemoveAttr(branch2, "v-for", !0), addRawAttr(branch2, ":type", typeBinding), 
                        processElement(branch2, options), addIfCondition(branch0, {
                            exp: ifCondition,
                            block: branch2
                        }), hasElse ? branch0.else = !0 : elseIfCondition && (branch0.elseif = elseIfCondition), 
                        branch0;
                    }
                }
            }
        } ];
        var isStaticKey, isPlatformReservedTag, baseOptions = {
            expectHTML: !0,
            modules: modules$1,
            directives: {
                model: function(el, dir, _warn) {
                    _warn;
                    var value = dir.value, modifiers = dir.modifiers, tag = el.tag, type = el.attrsMap.type;
                    if (el.component) return genComponentModel(el, value, modifiers), !1;
                    if ("select" === tag) !function(el, value, modifiers) {
                        var code = 'var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = "_value" in o ? o._value : o.value;return ' + (modifiers && modifiers.number ? "_n(val)" : "val") + "});";
                        code = code + " " + genAssignmentCode(value, "$event.target.multiple ? $$selectedVal : $$selectedVal[0]"), 
                        addHandler(el, "change", code, null, !0);
                    }(el, value, modifiers); else if ("input" === tag && "checkbox" === type) !function(el, value, modifiers) {
                        var number = modifiers && modifiers.number, valueBinding = getBindingAttr(el, "value") || "null", trueValueBinding = getBindingAttr(el, "true-value") || "true", falseValueBinding = getBindingAttr(el, "false-value") || "false";
                        addProp(el, "checked", "Array.isArray(" + value + ")?_i(" + value + "," + valueBinding + ")>-1" + ("true" === trueValueBinding ? ":(" + value + ")" : ":_q(" + value + "," + trueValueBinding + ")")), 
                        addHandler(el, "change", "var $$a=" + value + ",$$el=$event.target,$$c=$$el.checked?(" + trueValueBinding + "):(" + falseValueBinding + ");if(Array.isArray($$a)){var $$v=" + (number ? "_n(" + valueBinding + ")" : valueBinding) + ",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&(" + genAssignmentCode(value, "$$a.concat([$$v])") + ")}else{$$i>-1&&(" + genAssignmentCode(value, "$$a.slice(0,$$i).concat($$a.slice($$i+1))") + ")}}else{" + genAssignmentCode(value, "$$c") + "}", null, !0);
                    }(el, value, modifiers); else if ("input" === tag && "radio" === type) !function(el, value, modifiers) {
                        var number = modifiers && modifiers.number, valueBinding = getBindingAttr(el, "value") || "null";
                        addProp(el, "checked", "_q(" + value + "," + (valueBinding = number ? "_n(" + valueBinding + ")" : valueBinding) + ")"), 
                        addHandler(el, "change", genAssignmentCode(value, valueBinding), null, !0);
                    }(el, value, modifiers); else if ("input" === tag || "textarea" === tag) !function(el, value, modifiers) {
                        var type = el.attrsMap.type;
                        0;
                        var ref = modifiers || {}, lazy = ref.lazy, number = ref.number, trim = ref.trim, needCompositionGuard = !lazy && "range" !== type, event = lazy ? "change" : "range" === type ? RANGE_TOKEN : "input", valueExpression = "$event.target.value";
                        trim && (valueExpression = "$event.target.value.trim()");
                        number && (valueExpression = "_n(" + valueExpression + ")");
                        var code = genAssignmentCode(value, valueExpression);
                        needCompositionGuard && (code = "if($event.target.composing)return;" + code);
                        addProp(el, "value", "(" + value + ")"), addHandler(el, event, code, null, !0), 
                        (trim || number) && addHandler(el, "blur", "$forceUpdate()");
                    }(el, value, modifiers); else {
                        if (!config.isReservedTag(tag)) return genComponentModel(el, value, modifiers), 
                        !1;
                    }
                    return !0;
                },
                text: function(el, dir) {
                    dir.value && addProp(el, "textContent", "_s(" + dir.value + ")", dir);
                },
                html: function(el, dir) {
                    dir.value && addProp(el, "innerHTML", "_s(" + dir.value + ")", dir);
                }
            },
            isPreTag: function(tag) {
                return "pre" === tag;
            },
            isUnaryTag: isUnaryTag,
            mustUseProp: mustUseProp,
            canBeLeftOpenTag: canBeLeftOpenTag,
            isReservedTag: isReservedTag,
            getTagNamespace: getTagNamespace,
            staticKeys: function(modules) {
                return modules.reduce((function(keys, m) {
                    return keys.concat(m.staticKeys || []);
                }), []).join(",");
            }(modules$1)
        }, genStaticKeysCached = cached((function(keys) {
            return makeMap("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap" + (keys ? "," + keys : ""));
        }));
        function optimize(root, options) {
            root && (isStaticKey = genStaticKeysCached(options.staticKeys || ""), isPlatformReservedTag = options.isReservedTag || no, 
            function markStatic$1(node) {
                if (node.static = function(node) {
                    if (2 === node.type) return !1;
                    if (3 === node.type) return !0;
                    return !(!node.pre && (node.hasBindings || node.if || node.for || isBuiltInTag(node.tag) || !isPlatformReservedTag(node.tag) || function(node) {
                        for (;node.parent; ) {
                            if ("template" !== (node = node.parent).tag) return !1;
                            if (node.for) return !0;
                        }
                        return !1;
                    }(node) || !Object.keys(node).every(isStaticKey)));
                }(node), 1 === node.type) {
                    if (!isPlatformReservedTag(node.tag) && "slot" !== node.tag && null == node.attrsMap["inline-template"]) return;
                    for (var i = 0, l = node.children.length; i < l; i++) {
                        var child = node.children[i];
                        markStatic$1(child), child.static || (node.static = !1);
                    }
                    if (node.ifConditions) for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) {
                        var block = node.ifConditions[i$1].block;
                        markStatic$1(block), block.static || (node.static = !1);
                    }
                }
            }(root), function markStaticRoots(node, isInFor) {
                if (1 === node.type) {
                    if ((node.static || node.once) && (node.staticInFor = isInFor), node.static && node.children.length && (1 !== node.children.length || 3 !== node.children[0].type)) return void (node.staticRoot = !0);
                    if (node.staticRoot = !1, node.children) for (var i = 0, l = node.children.length; i < l; i++) markStaticRoots(node.children[i], isInFor || !!node.for);
                    if (node.ifConditions) for (var i$1 = 1, l$1 = node.ifConditions.length; i$1 < l$1; i$1++) markStaticRoots(node.ifConditions[i$1].block, isInFor);
                }
            }(root, !1));
        }
        var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function\s*(?:[\w$]+)?\s*\(/, fnInvokeRE = /\([^)]*?\);*$/, simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/, keyCodes = {
            esc: 27,
            tab: 9,
            enter: 13,
            space: 32,
            up: 38,
            left: 37,
            right: 39,
            down: 40,
            delete: [ 8, 46 ]
        }, keyNames = {
            esc: [ "Esc", "Escape" ],
            tab: "Tab",
            enter: "Enter",
            space: [ " ", "Spacebar" ],
            up: [ "Up", "ArrowUp" ],
            left: [ "Left", "ArrowLeft" ],
            right: [ "Right", "ArrowRight" ],
            down: [ "Down", "ArrowDown" ],
            delete: [ "Backspace", "Delete", "Del" ]
        }, genGuard = function(condition) {
            return "if(" + condition + ")return null;";
        }, modifierCode = {
            stop: "$event.stopPropagation();",
            prevent: "$event.preventDefault();",
            self: genGuard("$event.target !== $event.currentTarget"),
            ctrl: genGuard("!$event.ctrlKey"),
            shift: genGuard("!$event.shiftKey"),
            alt: genGuard("!$event.altKey"),
            meta: genGuard("!$event.metaKey"),
            left: genGuard("'button' in $event && $event.button !== 0"),
            middle: genGuard("'button' in $event && $event.button !== 1"),
            right: genGuard("'button' in $event && $event.button !== 2")
        };
        function genHandlers(events, isNative) {
            var prefix = isNative ? "nativeOn:" : "on:", staticHandlers = "", dynamicHandlers = "";
            for (var name in events) {
                var handlerCode = genHandler(events[name]);
                events[name] && events[name].dynamic ? dynamicHandlers += name + "," + handlerCode + "," : staticHandlers += '"' + name + '":' + handlerCode + ",";
            }
            return staticHandlers = "{" + staticHandlers.slice(0, -1) + "}", dynamicHandlers ? prefix + "_d(" + staticHandlers + ",[" + dynamicHandlers.slice(0, -1) + "])" : prefix + staticHandlers;
        }
        function genHandler(handler) {
            if (!handler) return "function(){}";
            if (Array.isArray(handler)) return "[" + handler.map((function(handler) {
                return genHandler(handler);
            })).join(",") + "]";
            var isMethodPath = simplePathRE.test(handler.value), isFunctionExpression = fnExpRE.test(handler.value), isFunctionInvocation = simplePathRE.test(handler.value.replace(fnInvokeRE, ""));
            if (handler.modifiers) {
                var code = "", genModifierCode = "", keys = [];
                for (var key in handler.modifiers) if (modifierCode[key]) genModifierCode += modifierCode[key], 
                keyCodes[key] && keys.push(key); else if ("exact" === key) {
                    var modifiers = handler.modifiers;
                    genModifierCode += genGuard([ "ctrl", "shift", "alt", "meta" ].filter((function(keyModifier) {
                        return !modifiers[keyModifier];
                    })).map((function(keyModifier) {
                        return "$event." + keyModifier + "Key";
                    })).join("||"));
                } else keys.push(key);
                return keys.length && (code += function(keys) {
                    return "if(!$event.type.indexOf('key')&&" + keys.map(genFilterCode).join("&&") + ")return null;";
                }(keys)), genModifierCode && (code += genModifierCode), "function($event){" + code + (isMethodPath ? "return " + handler.value + "($event)" : isFunctionExpression ? "return (" + handler.value + ")($event)" : isFunctionInvocation ? "return " + handler.value : handler.value) + "}";
            }
            return isMethodPath || isFunctionExpression ? handler.value : "function($event){" + (isFunctionInvocation ? "return " + handler.value : handler.value) + "}";
        }
        function genFilterCode(key) {
            var keyVal = parseInt(key, 10);
            if (keyVal) return "$event.keyCode!==" + keyVal;
            var keyCode = keyCodes[key], keyName = keyNames[key];
            return "_k($event.keyCode," + JSON.stringify(key) + "," + JSON.stringify(keyCode) + ",$event.key," + JSON.stringify(keyName) + ")";
        }
        var baseDirectives = {
            on: function(el, dir) {
                el.wrapListeners = function(code) {
                    return "_g(" + code + "," + dir.value + ")";
                };
            },
            bind: function(el, dir) {
                el.wrapData = function(code) {
                    return "_b(" + code + ",'" + el.tag + "'," + dir.value + "," + (dir.modifiers && dir.modifiers.prop ? "true" : "false") + (dir.modifiers && dir.modifiers.sync ? ",true" : "") + ")";
                };
            },
            cloak: noop
        }, CodegenState = function(options) {
            this.options = options, this.warn = options.warn || baseWarn, this.transforms = pluckModuleFunction(options.modules, "transformCode"), 
            this.dataGenFns = pluckModuleFunction(options.modules, "genData"), this.directives = extend(extend({}, baseDirectives), options.directives);
            var isReservedTag = options.isReservedTag || no;
            this.maybeComponent = function(el) {
                return !!el.component || !isReservedTag(el.tag);
            }, this.onceId = 0, this.staticRenderFns = [], this.pre = !1;
        };
        function generate(ast, options) {
            var state = new CodegenState(options);
            return {
                render: "with(this){return " + (ast ? genElement(ast, state) : '_c("div")') + "}",
                staticRenderFns: state.staticRenderFns
            };
        }
        function genElement(el, state) {
            if (el.parent && (el.pre = el.pre || el.parent.pre), el.staticRoot && !el.staticProcessed) return genStatic(el, state);
            if (el.once && !el.onceProcessed) return genOnce(el, state);
            if (el.for && !el.forProcessed) return genFor(el, state);
            if (el.if && !el.ifProcessed) return genIf(el, state);
            if ("template" !== el.tag || el.slotTarget || state.pre) {
                if ("slot" === el.tag) return function(el, state) {
                    var slotName = el.slotName || '"default"', children = genChildren(el, state), res = "_t(" + slotName + (children ? "," + children : ""), attrs = el.attrs || el.dynamicAttrs ? genProps((el.attrs || []).concat(el.dynamicAttrs || []).map((function(attr) {
                        return {
                            name: camelize(attr.name),
                            value: attr.value,
                            dynamic: attr.dynamic
                        };
                    }))) : null, bind$$1 = el.attrsMap["v-bind"];
                    !attrs && !bind$$1 || children || (res += ",null");
                    attrs && (res += "," + attrs);
                    bind$$1 && (res += (attrs ? "" : ",null") + "," + bind$$1);
                    return res + ")";
                }(el, state);
                var code;
                if (el.component) code = function(componentName, el, state) {
                    var children = el.inlineTemplate ? null : genChildren(el, state, !0);
                    return "_c(" + componentName + "," + genData$2(el, state) + (children ? "," + children : "") + ")";
                }(el.component, el, state); else {
                    var data;
                    (!el.plain || el.pre && state.maybeComponent(el)) && (data = genData$2(el, state));
                    var children = el.inlineTemplate ? null : genChildren(el, state, !0);
                    code = "_c('" + el.tag + "'" + (data ? "," + data : "") + (children ? "," + children : "") + ")";
                }
                for (var i = 0; i < state.transforms.length; i++) code = state.transforms[i](el, code);
                return code;
            }
            return genChildren(el, state) || "void 0";
        }
        function genStatic(el, state) {
            el.staticProcessed = !0;
            var originalPreState = state.pre;
            return el.pre && (state.pre = el.pre), state.staticRenderFns.push("with(this){return " + genElement(el, state) + "}"), 
            state.pre = originalPreState, "_m(" + (state.staticRenderFns.length - 1) + (el.staticInFor ? ",true" : "") + ")";
        }
        function genOnce(el, state) {
            if (el.onceProcessed = !0, el.if && !el.ifProcessed) return genIf(el, state);
            if (el.staticInFor) {
                for (var key = "", parent = el.parent; parent; ) {
                    if (parent.for) {
                        key = parent.key;
                        break;
                    }
                    parent = parent.parent;
                }
                return key ? "_o(" + genElement(el, state) + "," + state.onceId++ + "," + key + ")" : genElement(el, state);
            }
            return genStatic(el, state);
        }
        function genIf(el, state, altGen, altEmpty) {
            return el.ifProcessed = !0, function genIfConditions(conditions, state, altGen, altEmpty) {
                if (!conditions.length) return altEmpty || "_e()";
                var condition = conditions.shift();
                return condition.exp ? "(" + condition.exp + ")?" + genTernaryExp(condition.block) + ":" + genIfConditions(conditions, state, altGen, altEmpty) : "" + genTernaryExp(condition.block);
                function genTernaryExp(el) {
                    return altGen ? altGen(el, state) : el.once ? genOnce(el, state) : genElement(el, state);
                }
            }(el.ifConditions.slice(), state, altGen, altEmpty);
        }
        function genFor(el, state, altGen, altHelper) {
            var exp = el.for, alias = el.alias, iterator1 = el.iterator1 ? "," + el.iterator1 : "", iterator2 = el.iterator2 ? "," + el.iterator2 : "";
            return el.forProcessed = !0, (altHelper || "_l") + "((" + exp + "),function(" + alias + iterator1 + iterator2 + "){return " + (altGen || genElement)(el, state) + "})";
        }
        function genData$2(el, state) {
            var data = "{", dirs = function(el, state) {
                var dirs = el.directives;
                if (!dirs) return;
                var i, l, dir, needRuntime, res = "directives:[", hasRuntime = !1;
                for (i = 0, l = dirs.length; i < l; i++) {
                    dir = dirs[i], needRuntime = !0;
                    var gen = state.directives[dir.name];
                    gen && (needRuntime = !!gen(el, dir, state.warn)), needRuntime && (hasRuntime = !0, 
                    res += '{name:"' + dir.name + '",rawName:"' + dir.rawName + '"' + (dir.value ? ",value:(" + dir.value + "),expression:" + JSON.stringify(dir.value) : "") + (dir.arg ? ",arg:" + (dir.isDynamicArg ? dir.arg : '"' + dir.arg + '"') : "") + (dir.modifiers ? ",modifiers:" + JSON.stringify(dir.modifiers) : "") + "},");
                }
                if (hasRuntime) return res.slice(0, -1) + "]";
            }(el, state);
            dirs && (data += dirs + ","), el.key && (data += "key:" + el.key + ","), el.ref && (data += "ref:" + el.ref + ","), 
            el.refInFor && (data += "refInFor:true,"), el.pre && (data += "pre:true,"), el.component && (data += 'tag:"' + el.tag + '",');
            for (var i = 0; i < state.dataGenFns.length; i++) data += state.dataGenFns[i](el);
            if (el.attrs && (data += "attrs:" + genProps(el.attrs) + ","), el.props && (data += "domProps:" + genProps(el.props) + ","), 
            el.events && (data += genHandlers(el.events, !1) + ","), el.nativeEvents && (data += genHandlers(el.nativeEvents, !0) + ","), 
            el.slotTarget && !el.slotScope && (data += "slot:" + el.slotTarget + ","), el.scopedSlots && (data += function(el, slots, state) {
                var needsForceUpdate = el.for || Object.keys(slots).some((function(key) {
                    var slot = slots[key];
                    return slot.slotTargetDynamic || slot.if || slot.for || containsSlotChild(slot);
                })), needsKey = !!el.if;
                if (!needsForceUpdate) for (var parent = el.parent; parent; ) {
                    if (parent.slotScope && parent.slotScope !== emptySlotScopeToken || parent.for) {
                        needsForceUpdate = !0;
                        break;
                    }
                    parent.if && (needsKey = !0), parent = parent.parent;
                }
                var generatedSlots = Object.keys(slots).map((function(key) {
                    return genScopedSlot(slots[key], state);
                })).join(",");
                return "scopedSlots:_u([" + generatedSlots + "]" + (needsForceUpdate ? ",null,true" : "") + (!needsForceUpdate && needsKey ? ",null,false," + function(str) {
                    var hash = 5381, i = str.length;
                    for (;i; ) hash = 33 * hash ^ str.charCodeAt(--i);
                    return hash >>> 0;
                }(generatedSlots) : "") + ")";
            }(el, el.scopedSlots, state) + ","), el.model && (data += "model:{value:" + el.model.value + ",callback:" + el.model.callback + ",expression:" + el.model.expression + "},"), 
            el.inlineTemplate) {
                var inlineTemplate = function(el, state) {
                    var ast = el.children[0];
                    0;
                    if (ast && 1 === ast.type) {
                        var inlineRenderFns = generate(ast, state.options);
                        return "inlineTemplate:{render:function(){" + inlineRenderFns.render + "},staticRenderFns:[" + inlineRenderFns.staticRenderFns.map((function(code) {
                            return "function(){" + code + "}";
                        })).join(",") + "]}";
                    }
                }(el, state);
                inlineTemplate && (data += inlineTemplate + ",");
            }
            return data = data.replace(/,$/, "") + "}", el.dynamicAttrs && (data = "_b(" + data + ',"' + el.tag + '",' + genProps(el.dynamicAttrs) + ")"), 
            el.wrapData && (data = el.wrapData(data)), el.wrapListeners && (data = el.wrapListeners(data)), 
            data;
        }
        function containsSlotChild(el) {
            return 1 === el.type && ("slot" === el.tag || el.children.some(containsSlotChild));
        }
        function genScopedSlot(el, state) {
            var isLegacySyntax = el.attrsMap["slot-scope"];
            if (el.if && !el.ifProcessed && !isLegacySyntax) return genIf(el, state, genScopedSlot, "null");
            if (el.for && !el.forProcessed) return genFor(el, state, genScopedSlot);
            var slotScope = el.slotScope === emptySlotScopeToken ? "" : String(el.slotScope), fn = "function(" + slotScope + "){return " + ("template" === el.tag ? el.if && isLegacySyntax ? "(" + el.if + ")?" + (genChildren(el, state) || "undefined") + ":undefined" : genChildren(el, state) || "undefined" : genElement(el, state)) + "}", reverseProxy = slotScope ? "" : ",proxy:true";
            return "{key:" + (el.slotTarget || '"default"') + ",fn:" + fn + reverseProxy + "}";
        }
        function genChildren(el, state, checkSkip, altGenElement, altGenNode) {
            var children = el.children;
            if (children.length) {
                var el$1 = children[0];
                if (1 === children.length && el$1.for && "template" !== el$1.tag && "slot" !== el$1.tag) {
                    var normalizationType = checkSkip ? state.maybeComponent(el$1) ? ",1" : ",0" : "";
                    return "" + (altGenElement || genElement)(el$1, state) + normalizationType;
                }
                var normalizationType$1 = checkSkip ? function(children, maybeComponent) {
                    for (var res = 0, i = 0; i < children.length; i++) {
                        var el = children[i];
                        if (1 === el.type) {
                            if (needsNormalization(el) || el.ifConditions && el.ifConditions.some((function(c) {
                                return needsNormalization(c.block);
                            }))) {
                                res = 2;
                                break;
                            }
                            (maybeComponent(el) || el.ifConditions && el.ifConditions.some((function(c) {
                                return maybeComponent(c.block);
                            }))) && (res = 1);
                        }
                    }
                    return res;
                }(children, state.maybeComponent) : 0, gen = altGenNode || genNode;
                return "[" + children.map((function(c) {
                    return gen(c, state);
                })).join(",") + "]" + (normalizationType$1 ? "," + normalizationType$1 : "");
            }
        }
        function needsNormalization(el) {
            return void 0 !== el.for || "template" === el.tag || "slot" === el.tag;
        }
        function genNode(node, state) {
            return 1 === node.type ? genElement(node, state) : 3 === node.type && node.isComment ? function(comment) {
                return "_e(" + JSON.stringify(comment.text) + ")";
            }(node) : function(text) {
                return "_v(" + (2 === text.type ? text.expression : transformSpecialNewlines(JSON.stringify(text.text))) + ")";
            }(node);
        }
        function genProps(props) {
            for (var staticProps = "", dynamicProps = "", i = 0; i < props.length; i++) {
                var prop = props[i], value = transformSpecialNewlines(prop.value);
                prop.dynamic ? dynamicProps += prop.name + "," + value + "," : staticProps += '"' + prop.name + '":' + value + ",";
            }
            return staticProps = "{" + staticProps.slice(0, -1) + "}", dynamicProps ? "_d(" + staticProps + ",[" + dynamicProps.slice(0, -1) + "])" : staticProps;
        }
        function transformSpecialNewlines(text) {
            return text.replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
        }
        new RegExp("\\b" + "do,if,for,let,new,try,var,case,else,with,await,break,catch,class,const,super,throw,while,yield,delete,export,import,return,switch,default,extends,finally,continue,debugger,function,arguments".split(",").join("\\b|\\b") + "\\b"), 
        new RegExp("\\b" + "delete,typeof,void".split(",").join("\\s*\\([^\\)]*\\)|\\b") + "\\s*\\([^\\)]*\\)");
        function createFunction(code, errors) {
            try {
                return new Function(code);
            } catch (err) {
                return errors.push({
                    err: err,
                    code: code
                }), noop;
            }
        }
        function createCompileToFunctionFn(compile) {
            var cache = Object.create(null);
            return function(template, options, vm) {
                (options = extend({}, options)).warn;
                delete options.warn;
                var key = options.delimiters ? String(options.delimiters) + template : template;
                if (cache[key]) return cache[key];
                var compiled = compile(template, options);
                var res = {}, fnGenErrors = [];
                return res.render = createFunction(compiled.render, fnGenErrors), res.staticRenderFns = compiled.staticRenderFns.map((function(code) {
                    return createFunction(code, fnGenErrors);
                })), cache[key] = res;
            };
        }
        var baseCompile, div, ref$1 = (baseCompile = function(template, options) {
            var ast = parse(template.trim(), options);
            !1 !== options.optimize && optimize(ast, options);
            var code = generate(ast, options);
            return {
                ast: ast,
                render: code.render,
                staticRenderFns: code.staticRenderFns
            };
        }, function(baseOptions) {
            function compile(template, options) {
                var finalOptions = Object.create(baseOptions), errors = [], tips = [];
                if (options) for (var key in options.modules && (finalOptions.modules = (baseOptions.modules || []).concat(options.modules)), 
                options.directives && (finalOptions.directives = extend(Object.create(baseOptions.directives || null), options.directives)), 
                options) "modules" !== key && "directives" !== key && (finalOptions[key] = options[key]);
                finalOptions.warn = function(msg, range, tip) {
                    (tip ? tips : errors).push(msg);
                };
                var compiled = baseCompile(template.trim(), finalOptions);
                return compiled.errors = errors, compiled.tips = tips, compiled;
            }
            return {
                compile: compile,
                compileToFunctions: createCompileToFunctionFn(compile)
            };
        })(baseOptions), compileToFunctions = (ref$1.compile, ref$1.compileToFunctions);
        function getShouldDecode(href) {
            return (div = div || document.createElement("div")).innerHTML = href ? '<a href="\n"/>' : '<div a="\n"/>', 
            div.innerHTML.indexOf("&#10;") > 0;
        }
        var shouldDecodeNewlines = !!inBrowser && getShouldDecode(!1), shouldDecodeNewlinesForHref = !!inBrowser && getShouldDecode(!0), idToTemplate = cached((function(id) {
            var el = query(id);
            return el && el.innerHTML;
        })), mount = Vue.prototype.$mount;
        Vue.prototype.$mount = function(el, hydrating) {
            if ((el = el && query(el)) === document.body || el === document.documentElement) return this;
            var options = this.$options;
            if (!options.render) {
                var template = options.template;
                if (template) if ("string" == typeof template) "#" === template.charAt(0) && (template = idToTemplate(template)); else {
                    if (!template.nodeType) return this;
                    template = template.innerHTML;
                } else el && (template = function(el) {
                    if (el.outerHTML) return el.outerHTML;
                    var container = document.createElement("div");
                    return container.appendChild(el.cloneNode(!0)), container.innerHTML;
                }(el));
                if (template) {
                    0;
                    var ref = compileToFunctions(template, {
                        outputSourceRange: !1,
                        shouldDecodeNewlines: shouldDecodeNewlines,
                        shouldDecodeNewlinesForHref: shouldDecodeNewlinesForHref,
                        delimiters: options.delimiters,
                        comments: options.comments
                    }, this), render = ref.render, staticRenderFns = ref.staticRenderFns;
                    options.render = render, options.staticRenderFns = staticRenderFns;
                }
            }
            return mount.call(this, el, hydrating);
        }, Vue.compile = compileToFunctions, __webpack_exports__.a = Vue;
    }).call(this, __webpack_require__(65), __webpack_require__(186).setImmediate);
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    __webpack_require__.d(__webpack_exports__, "a", (function() {
        return keyboardMap;
    }));
    var keyboardMap = [ "", "", "", "CANCEL", "", "", "HELP", "", "BACK_SPACE", "TAB", "", "", "CLEAR", "ENTER", "ENTER_SPECIAL", "", "SHIFT", "CONTROL", "ALT", "PAUSE", "CAPS_LOCK", "KANA", "EISU", "JUNJA", "FINAL", "HANJA", "", "ESCAPE", "CONVERT", "NONCONVERT", "ACCEPT", "MODECHANGE", "SPACE", "PAGE_UP", "PAGE_DOWN", "END", "HOME", "LEFT", "UP", "RIGHT", "DOWN", "SELECT", "PRINT", "EXECUTE", "PRINTSCREEN", "INSERT", "DELETE", "", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "COLON", "SEMICOLON", "LESS_THAN", "EQUALS", "GREATER_THAN", "QUESTION_MARK", "AT", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "OS_KEY", "", "CONTEXT_MENU", "", "SLEEP", "NUMPAD0", "NUMPAD1", "NUMPAD2", "NUMPAD3", "NUMPAD4", "NUMPAD5", "NUMPAD6", "NUMPAD7", "NUMPAD8", "NUMPAD9", "MULTIPLY", "ADD", "SEPARATOR", "SUBTRACT", "DECIMAL", "DIVIDE", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "F13", "F14", "F15", "F16", "F17", "F18", "F19", "F20", "F21", "F22", "F23", "F24", "", "", "", "", "", "", "", "", "NUM_LOCK", "SCROLL_LOCK", "WIN_OEM_FJ_JISHO", "WIN_OEM_FJ_MASSHOU", "WIN_OEM_FJ_TOUROKU", "WIN_OEM_FJ_LOYA", "WIN_OEM_FJ_ROYA", "", "", "", "", "", "", "", "", "", "CIRCUMFLEX", "EXCLAMATION", "DOUBLE_QUOTE", "HASH", "DOLLAR", "PERCENT", "AMPERSAND", "UNDERSCORE", "OPEN_PAREN", "CLOSE_PAREN", "ASTERISK", "PLUS", "PIPE", "HYPHEN_MINUS", "OPEN_CURLY_BRACKET", "CLOSE_CURLY_BRACKET", "TILDE", "", "", "", "", "VOLUME_MUTE", "VOLUME_DOWN", "VOLUME_UP", "", "", "SEMICOLON", "EQUALS", "COMMA", "MINUS", "PERIOD", "SLASH", "BACK_QUOTE", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "OPEN_BRACKET", "BACK_SLASH", "CLOSE_BRACKET", "QUOTE", "", "META", "ALTGR", "", "WIN_ICO_HELP", "WIN_ICO_00", "", "WIN_ICO_CLEAR", "", "", "WIN_OEM_RESET", "WIN_OEM_JUMP", "WIN_OEM_PA1", "WIN_OEM_PA2", "WIN_OEM_PA3", "WIN_OEM_WSCTRL", "WIN_OEM_CUSEL", "WIN_OEM_ATTN", "WIN_OEM_FINISH", "WIN_OEM_COPY", "WIN_OEM_AUTO", "WIN_OEM_ENLW", "WIN_OEM_BACKTAB", "ATTN", "CRSEL", "EXSEL", "EREOF", "PLAY", "ZOOM", "", "PA1", "WIN_OEM_CLEAR", "" ];
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, con) {
        function translateList(aniStatus, malStatus = null) {
            var list = {
                CURRENT: 1,
                PLANNING: 6,
                COMPLETED: 2,
                DROPPED: 4,
                PAUSED: 3,
                REPEATING: 1
            };
            return null != malStatus ? Object.keys(list).find(key => list[key] === malStatus) : list[aniStatus];
        }
        function getCacheKey(id, kitsuId) {
            return isNaN(id) || !id ? "anilist:" + kitsuId : id;
        }
        __webpack_require__.d(__webpack_exports__, "b", (function() {
            return translateList;
        })), __webpack_require__.d(__webpack_exports__, "a", (function() {
            return getCacheKey;
        }));
    }).call(this, __webpack_require__(0), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    function translateList(aniStatus, malStatus = null) {
        var list = {
            current: 1,
            planned: 6,
            completed: 2,
            dropped: 4,
            on_hold: 3
        };
        return null != malStatus ? Object.keys(list).find(key => list[key] === malStatus) : list[aniStatus];
    }
    function getTitle(titles) {
        var title = titles.en;
        if (void 0 !== title && title || (title = titles.en_jp), void 0 !== title && title || (title = titles.ja_jp), 
        void 0 === title || !title) {
            var keys = Object.keys(titles);
            if (!keys.length) return "No Title";
            title = titles[keys[0]];
        }
        return title;
    }
    function getCacheKey(id, kitsuId) {
        return isNaN(id) || !id ? "kitsu:" + kitsuId : id;
    }
    __webpack_require__.d(__webpack_exports__, "c", (function() {
        return translateList;
    })), __webpack_require__.d(__webpack_exports__, "b", (function() {
        return getTitle;
    })), __webpack_require__.d(__webpack_exports__, "a", (function() {
        return getCacheKey;
    }));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, con, api, j) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return entryClass;
        }));
        var _helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class entryClass {
            constructor(url, miniMAL = !1, silent = !1) {
                this.url = url, this.miniMAL = miniMAL, this.silent = silent, this.aniId = NaN, 
                this.name = "", this.totalEp = NaN, this.addAnime = !1, this.login = !1, this.wrong = !1, 
                this.displayUrl = "", this.type = utils.urlPart(url, 3), void 0 !== url && url.indexOf("myanimelist.net") > -1 ? this.id = utils.urlPart(url, 4) : void 0 !== url && url.indexOf("anilist.co") > -1 ? (this.id = NaN, 
                this.aniId = utils.urlPart(url, 4)) : this.id = NaN;
            }
            init() {
                return this.update();
            }
            getDisplayUrl() {
                return "" !== this.displayUrl && null != this.displayUrl ? this.displayUrl : this.url;
            }
            getMalUrl() {
                return isNaN(this.id) ? null : "https://myanimelist.net/" + this.type + "/" + this.id + "/" + encodeURIComponent(this.name.replace(/\//, "_"));
            }
            update() {
                con.log("Update AniList info", this.id ? "MAL: " + this.id : "AniList: " + this.aniId);
                var selectId = this.id, selectQuery = "idMal";
                isNaN(this.id) && (selectId = this.aniId, selectQuery = "id");
                var query = `\n    query ($id: Int, $type: MediaType) {\n      Media (${selectQuery}: $id, type: $type) {\n        id\n        idMal\n        siteUrl\n        episodes\n        chapters\n        volumes\n        averageScore\n        coverImage{\n          large\n        }\n        title {\n          userPreferred\n        }\n        mediaListEntry {\n          status\n          progress\n          progressVolumes\n          score(format: POINT_100)\n          repeat\n          notes\n        }\n      }\n    }\n    `, variables = {
                    id: selectId,
                    type: this.type.toUpperCase()
                };
                return api.request.xhr("POST", {
                    url: "https://graphql.anilist.co",
                    headers: {
                        Authorization: "Bearer " + _helper__WEBPACK_IMPORTED_MODULE_0__.a(),
                        "Content-Type": "application/json",
                        Accept: "application/json"
                    },
                    data: JSON.stringify({
                        query: query,
                        variables: variables
                    })
                }).then(response => __awaiter(this, void 0, void 0, (function*() {
                    var res = JSON.parse(response.responseText);
                    if (con.log(res), this.login = !0, "noLogin" === _helper__WEBPACK_IMPORTED_MODULE_0__.c(res, this.silent)) {
                        this.login = !1, response = yield api.request.xhr("POST", {
                            url: "https://graphql.anilist.co",
                            headers: {
                                "Content-Type": "application/json",
                                Accept: "application/json"
                            },
                            data: JSON.stringify({
                                query: query,
                                variables: variables
                            })
                        });
                        res = JSON.parse(response.responseText);
                        con.log("noLogin", res);
                    }
                    this.animeInfo = res.data.Media, this.aniId = this.animeInfo.id, isNaN(this.id) && this.animeInfo.idMal && (this.id = this.animeInfo.idMal), 
                    this.displayUrl = this.animeInfo.siteUrl, this.addAnime = !1, null === this.animeInfo.mediaListEntry && (this.addAnime = !0, 
                    this.animeInfo.mediaListEntry = {
                        notes: "",
                        progress: 0,
                        progressVolumes: 0,
                        repeat: 0,
                        score: 0,
                        status: "PLANNING"
                    }), this.name = this.animeInfo.title.userPreferred, this.totalEp = this.animeInfo.episodes ? this.animeInfo.episodes : this.animeInfo.chapters, 
                    null == this.totalEp && (this.totalEp = 0), void 0 !== this.animeInfo.volumes && (this.totalVol = this.animeInfo.volumes, 
                    null == this.totalVol && (this.totalVol = 0));
                })));
            }
            getEpisode() {
                return this.animeInfo.mediaListEntry.progress;
            }
            setEpisode(ep) {
                ep + "" == "" && (ep = 0), this.animeInfo.mediaListEntry.progress = parseInt(ep + "");
            }
            getVolume() {
                return "manga" == this.type && this.animeInfo.mediaListEntry.progressVolumes;
            }
            setVolume(ep) {
                "manga" != this.type ? con.error("You cant set Volumes for animes") : this.animeInfo.mediaListEntry.progressVolumes = ep;
            }
            getStatus() {
                return this.addAnime ? 0 : _helper__WEBPACK_IMPORTED_MODULE_0__.e(this.animeInfo.mediaListEntry.status);
            }
            setStatus(status) {
                "REPEATING" == this.animeInfo.mediaListEntry.status && 1 == parseInt(status.toString()) || (this.animeInfo.mediaListEntry.status = _helper__WEBPACK_IMPORTED_MODULE_0__.e(status, parseInt(status.toString())));
            }
            getScore() {
                return 0 === this.animeInfo.mediaListEntry.score ? "" : Math.round(this.animeInfo.mediaListEntry.score / 10);
            }
            setScore(score) {
                "" === score && (score = 0), parseInt(score) !== parseInt(this.getScore() + "") && (this.animeInfo.mediaListEntry.score = 10 * score);
            }
            getRewatching() {
                return "REPEATING" == this.animeInfo.mediaListEntry.status ? 1 : 0;
            }
            setRewatching(rewatching) {
                1 == rewatching && (this.animeInfo.mediaListEntry.status = "REPEATING");
            }
            setCompletionDateToNow() {}
            setStartingDateToNow() {}
            getStreamingUrl() {
                var tags = this.animeInfo.mediaListEntry.notes;
                return utils.getUrlFromTags(tags);
            }
            setStreamingUrl(url) {
                var tags = this.animeInfo.mediaListEntry.notes;
                null != tags && "null" != tags || (tags = ""), tags = utils.setUrlInTags(url, tags), 
                this.animeInfo.mediaListEntry.notes = tags;
            }
            getRating() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return null == this.animeInfo.averageScore ? "N/A" : this.animeInfo.averageScore;
                }));
            }
            getCacheKey() {
                return _helper__WEBPACK_IMPORTED_MODULE_0__.d(this.id, this.aniId);
            }
            setResumeWaching(url, ep) {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.setResumeWaching(url, ep, this.type, this.getCacheKey());
                }));
            }
            getResumeWaching() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.getResumeWaching(this.type, this.getCacheKey());
                }));
            }
            setContinueWaching(url, ep) {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.setContinueWaching(url, ep, this.type, this.getCacheKey());
                }));
            }
            getContinueWaching() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.getContinueWaching(this.type, this.getCacheKey());
                }));
            }
            getImage() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return this.animeInfo.coverImage.large;
                }));
            }
            clone() {
                const copy = new this.constructor;
                return Object.assign(copy, this), copy.animeInfo = Object.assign({}, this.animeInfo), 
                copy.animeInfo.mediaListEntry = Object.assign({}, this.animeInfo.mediaListEntry), 
                copy;
            }
            sync() {
                var status = utils.status;
                return new Promise((resolve, reject) => {
                    var This = this;
                    this.type, this.id;
                    if (this.addAnime) return this.silent ? void continueCall() : void ("anime" == this.type ? ("https://myanimelist.net/ownlist/anime/add?selected_series_id=" + this.id, 
                    continueCall()) : ("https://myanimelist.net/ownlist/manga/add?selected_manga_id=" + this.id, 
                    continueCall()));
                    var watchCounter = ".add_anime[num_watched_times]", rewatchText = "Rewatch Anime?", rewatchFinishText = "Finish rewatching?";
                    function continueCall() {
                        var query = "\n          mutation ($mediaId: Int, $status: MediaListStatus, $progress: Int, $scoreRaw: Int, $notes: String) {\n            SaveMediaListEntry (mediaId: $mediaId, status: $status, progress: $progress, scoreRaw: $scoreRaw, notes: $notes) {\n              id\n              status\n              progress\n            }\n          }\n        ", variables = {
                            mediaId: This.aniId,
                            status: This.animeInfo.mediaListEntry.status,
                            progress: This.animeInfo.mediaListEntry.progress,
                            scoreRaw: This.animeInfo.mediaListEntry.score,
                            notes: This.animeInfo.mediaListEntry.notes
                        };
                        "manga" == This.type && (query = "\n            mutation ($mediaId: Int, $status: MediaListStatus, $progress: Int, $scoreRaw: Int, $notes: String, $volumes: Int) {\n              SaveMediaListEntry (mediaId: $mediaId, status: $status, progress: $progress, scoreRaw: $scoreRaw, notes: $notes, progressVolumes: $volumes) {\n                id\n                status\n                progress\n                progressVolumes\n              }\n            }\n          ", 
                        variables.volumes = This.animeInfo.mediaListEntry.progressVolumes), con.log("[SET] Object:", variables), 
                        api.request.xhr("POST", {
                            url: "https://graphql.anilist.co",
                            headers: {
                                Authorization: "Bearer " + _helper__WEBPACK_IMPORTED_MODULE_0__.a(),
                                "Content-Type": "application/json",
                                Accept: "application/json"
                            },
                            data: JSON.stringify({
                                query: query,
                                variables: variables
                            })
                        }).then(response => {
                            var res = JSON.parse(response.responseText);
                            con.log(res), _helper__WEBPACK_IMPORTED_MODULE_0__.c(res, This.silent), con.log("Update Succeeded"), 
                            resolve();
                        }).catch(e => {
                            reject(e);
                        });
                    }
                    "manga" == this.type && (watchCounter = ".add_manga[num_read_times]", rewatchText = "Reread Manga?", 
                    rewatchFinishText = "Finish rereading?"), this.getStatus() != status.completed || 1 !== this.getEpisode() || 1 === this.totalEp || 1 === this.getRewatching() ? this.getStatus() != status.completed || this.getEpisode() !== this.totalEp || 1 !== this.getRewatching() ? continueCall() : utils.flashConfirm(rewatchFinishText, "add", () => {
                        this.setRewatching(0), "" === this.animeInfo[watchCounter] ? this.animeInfo[watchCounter] = 1 : this.animeInfo[watchCounter] = parseInt(this.animeInfo[watchCounter]) + 1, 
                        continueCall();
                    }, (function() {
                        continueCall();
                    })) : utils.flashConfirm(rewatchText, "add", () => {
                        this.setRewatching(1), continueCall();
                    }, (function() {
                        continueCall();
                    }));
                });
            }
        }
    }).call(this, __webpack_require__(2), __webpack_require__(1), __webpack_require__(0), __webpack_require__(3));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, con, api, j) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return entryClass;
        }));
        var _helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class entryClass {
            constructor(url, miniMAL = !1, silent = !1) {
                this.url = url, this.miniMAL = miniMAL, this.silent = silent, this.kitsuSlug = "", 
                this.kitsuId = NaN, this.name = "", this.totalEp = NaN, this.addAnime = !1, this.login = !1, 
                this.wrong = !1, this.type = utils.urlPart(url, 3), void 0 !== url && url.indexOf("myanimelist.net") > -1 ? this.id = utils.urlPart(url, 4) : void 0 !== url && url.indexOf("kitsu.io") > -1 ? (this.id = NaN, 
                this.kitsuSlug = utils.urlPart(url, 4)) : this.id = NaN;
            }
            init() {
                return this.update();
            }
            getDisplayUrl() {
                return "https://kitsu.io/" + this.type + "/" + this.animeI().attributes.slug;
            }
            getMalUrl() {
                return isNaN(this.id) ? null : "https://myanimelist.net/" + this.type + "/" + this.id + "/" + encodeURIComponent(this.name.replace(/\//, "_"));
            }
            listI() {
                return this.animeInfo.data[0];
            }
            animeI() {
                return this.animeInfo.included[0];
            }
            update() {
                return __awaiter(this, void 0, void 0, (function*() {
                    if (con.log("Update Kitsu info", this.id ? "MAL: " + this.id : "Kitsu: " + this.kitsuSlug), 
                    isNaN(this.id)) {
                        var kitsuSlugRes = yield _helper__WEBPACK_IMPORTED_MODULE_0__.e(this.kitsuSlug, this.type);
                        this.kitsuId = kitsuSlugRes.res.data[0].id, this.id = kitsuSlugRes.malId;
                    }
                    if (isNaN(this.kitsuId)) {
                        var kitsuRes = yield _helper__WEBPACK_IMPORTED_MODULE_0__.g(this.id, this.type);
                        try {
                            this.kitsuId = kitsuRes.data[0].relationships.item.data.id;
                        } catch (e) {
                            con.error("Not found", e), this.silent || utils.flashm("Kitsu: Not found", {
                                error: !0,
                                type: "not found"
                            });
                        }
                    }
                    return api.request.xhr("GET", {
                        url: "https://kitsu.io/api/edge/library-entries?filter[user_id]=" + (yield _helper__WEBPACK_IMPORTED_MODULE_0__.i()) + "&filter[kind]=" + this.type + "&filter[" + this.type + "_id]=" + this.kitsuId + "&page[limit]=1&page[limit]=1&include=" + this.type + "&fields[" + this.type + "]=slug,titles,averageRating,posterImage," + ("anime" == this.type ? "episodeCount" : "chapterCount,volumeCount"),
                        headers: {
                            Authorization: "Bearer " + _helper__WEBPACK_IMPORTED_MODULE_0__.a(),
                            "Content-Type": "application/vnd.api+json",
                            Accept: "application/vnd.api+json"
                        },
                        data: {}
                    }).then(response => {
                        var res = JSON.parse(response.responseText);
                        con.log(res), this.login = !0, _helper__WEBPACK_IMPORTED_MODULE_0__.b(res, this.silent), 
                        this.animeInfo = res, this.addAnime = !1, this.animeInfo.data.length || (this.addAnime = !0, 
                        this.animeInfo.data[0] = {
                            attributes: {
                                notes: "",
                                progress: 0,
                                volumesOwned: 0,
                                reconsuming: !1,
                                reconsumeCount: !1,
                                ratingTwenty: null,
                                status: "planned"
                            }
                        }, this.animeInfo.included = void 0 !== kitsuRes ? kitsuRes.included : kitsuSlugRes.res.data);
                        try {
                            this.animeI();
                        } catch (e) {
                            throw con.error(e), "Not Found";
                        }
                        isNaN(this.getEpisode()) && this.setEpisode(0), this.setScore(this.getScore()), 
                        this.name = _helper__WEBPACK_IMPORTED_MODULE_0__.d(this.animeI().attributes.titles), 
                        this.totalEp = this.animeI().attributes.episodeCount ? this.animeI().attributes.episodeCount : this.animeI().attributes.chapterCount, 
                        null == this.totalEp && (this.totalEp = 0), void 0 !== this.animeI().attributes.volumeCount && (this.totalVol = this.animeI().attributes.volumeCount, 
                        null == this.totalVol && (this.totalVol = 0));
                    });
                }));
            }
            getEpisode() {
                return this.listI().attributes.progress;
            }
            setEpisode(ep) {
                ep + "" == "" && (ep = 0), parseInt(ep + "") > this.totalEp && this.totalEp && (ep = this.totalEp), 
                this.listI().attributes.progress = parseInt(ep + "");
            }
            getVolume() {
                return "manga" == this.type && this.listI().attributes.volumesOwned;
            }
            setVolume(ep) {
                "manga" != this.type ? con.error("You cant set Volumes for animes") : this.listI().attributes.volumesOwned = ep;
            }
            getStatus() {
                return this.addAnime ? 0 : _helper__WEBPACK_IMPORTED_MODULE_0__.h(this.listI().attributes.status);
            }
            setStatus(status) {
                this.listI().attributes.status = _helper__WEBPACK_IMPORTED_MODULE_0__.h(status, parseInt(status.toString()));
            }
            getScore() {
                var score = this.listI().attributes.ratingTwenty / 2;
                return 0 === score ? "" : score;
            }
            setScore(score) {
                this.listI().attributes.ratingTwenty = 0 != score && "" !== score ? 2 * score : null;
            }
            getRewatching() {
                return this.listI().attributes.reconsuming ? 1 : 0;
            }
            setRewatching(rewatching) {
                this.listI().attributes.reconsuming = 1 == rewatching;
            }
            setCompletionDateToNow() {}
            setStartingDateToNow() {}
            getStreamingUrl() {
                var tags = this.listI().attributes.notes;
                return utils.getUrlFromTags(tags);
            }
            setStreamingUrl(url) {
                var tags = this.listI().attributes.notes;
                tags = utils.setUrlInTags(url, tags), this.listI().attributes.notes = tags;
            }
            getRating() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return null == this.animeI().attributes.averageRating ? "N/A" : this.animeI().attributes.averageRating + "%";
                }));
            }
            getCacheKey() {
                return _helper__WEBPACK_IMPORTED_MODULE_0__.c(this.id, this.kitsuId);
            }
            setResumeWaching(url, ep) {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.setResumeWaching(url, ep, this.type, this.getCacheKey());
                }));
            }
            getResumeWaching() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.getResumeWaching(this.type, this.getCacheKey());
                }));
            }
            setContinueWaching(url, ep) {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.setContinueWaching(url, ep, this.type, this.getCacheKey());
                }));
            }
            getContinueWaching() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.getContinueWaching(this.type, this.getCacheKey());
                }));
            }
            getImage() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return this.animeI().attributes.posterImage.large;
                }));
            }
            clone() {
                const copy = new this.constructor;
                return Object.assign(copy, this), copy.animeInfo = Object.assign({}, this.animeInfo), 
                copy.animeInfo.data = Object.assign({}, this.animeInfo.data), copy.animeInfo.data[0] = Object.assign({}, this.animeInfo.data[0]), 
                copy.animeInfo.data[0].attributes = Object.assign({}, this.animeInfo.data[0].attributes), 
                copy;
            }
            sync() {
                var status = utils.status;
                return new Promise((resolve, reject) => {
                    var This = this;
                    this.type, this.id;
                    if (this.addAnime) return this.silent ? void continueCall() : void ("anime" == this.type ? ("https://myanimelist.net/ownlist/anime/add?selected_series_id=" + this.id, 
                    continueCall()) : ("https://myanimelist.net/ownlist/manga/add?selected_manga_id=" + this.id, 
                    continueCall()));
                    var rewatchText = "Rewatch Anime?", rewatchFinishText = "Finish rewatching?";
                    function continueCall() {
                        return __awaiter(this, void 0, void 0, (function*() {
                            var variables = {
                                data: {
                                    attributes: {
                                        notes: This.listI().attributes.notes,
                                        progress: This.listI().attributes.progress,
                                        volumesOwned: This.listI().attributes.volumesOwned,
                                        reconsuming: This.listI().attributes.reconsuming,
                                        reconsumeCount: This.listI().attributes.reconsumeCount,
                                        ratingTwenty: This.listI().attributes.ratingTwenty,
                                        status: This.listI().attributes.status
                                    },
                                    type: "library-entries"
                                }
                            };
                            if (This.addAnime) {
                                updateUrl = "https://kitsu.io/api/edge/library-entries/";
                                variables.data.relationships = {
                                    [This.type]: {
                                        data: {
                                            type: This.type,
                                            id: This.kitsuId
                                        }
                                    },
                                    user: {
                                        data: {
                                            type: "users",
                                            id: yield _helper__WEBPACK_IMPORTED_MODULE_0__.i()
                                        }
                                    }
                                };
                                post = "POST";
                            } else {
                                var updateUrl = "https://kitsu.io/api/edge/library-entries/" + This.listI().id;
                                variables.data.id = This.listI().id;
                                var post = "PATCH";
                            }
                            con.log("[SET] Object:", variables), api.request.xhr(post, {
                                url: updateUrl,
                                headers: {
                                    Authorization: "Bearer " + _helper__WEBPACK_IMPORTED_MODULE_0__.a(),
                                    "Content-Type": "application/vnd.api+json",
                                    Accept: "application/vnd.api+json"
                                },
                                data: JSON.stringify(variables)
                            }).then(response => {
                                var res = JSON.parse(response.responseText);
                                con.log(res), _helper__WEBPACK_IMPORTED_MODULE_0__.b(res, This.silent), con.log("Update Succeeded"), 
                                resolve();
                            }).catch(e => {
                                reject(e);
                            });
                        }));
                    }
                    "manga" == this.type && (".add_manga[num_read_times]", rewatchText = "Reread Manga?", 
                    rewatchFinishText = "Finish rereading?"), this.getStatus() != status.completed || 1 !== this.getEpisode() || 1 === this.totalEp || 1 === this.getRewatching() ? this.getStatus() != status.completed || this.getEpisode() !== this.totalEp || 1 !== this.getRewatching() ? continueCall() : utils.flashConfirm(rewatchFinishText, "add", () => {
                        this.setRewatching(0), "" === this.listI().attributes.reconsumeCount ? this.listI().attributes.reconsumeCount = 1 : this.listI().attributes.reconsumeCount = parseInt(this.listI().attributes.reconsumeCount) + 1, 
                        continueCall();
                    }, (function() {
                        continueCall();
                    })) : utils.flashConfirm(rewatchText, "add", () => {
                        this.setRewatching(1), continueCall();
                    }, (function() {
                        continueCall();
                    }));
                });
            }
        }
    }).call(this, __webpack_require__(2), __webpack_require__(1), __webpack_require__(0), __webpack_require__(3));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, con, j) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return entryClass;
        }));
        var _helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class entryClass {
            constructor(url, miniMAL = !1, silent = !1) {
                if (this.url = url, this.miniMAL = miniMAL, this.silent = silent, this.simklId = NaN, 
                this.name = "", this.totalEp = NaN, this.addAnime = !1, this.login = !1, this.wrong = !1, 
                this.minWatchedEp = 1, this.episodeUpdate = !1, this.statusUpdate = !1, this.ratingUpdate = !1, 
                this.type = utils.urlPart(url, 3), void 0 !== url && url.indexOf("myanimelist.net") > -1 ? this.id = utils.urlPart(url, 4) : void 0 !== url && url.indexOf("simkl.com") > -1 ? (this.id = NaN, 
                this.simklId = utils.urlPart(url, 4)) : this.id = NaN, "manga" === this.type) throw "Simkl has no manga support";
            }
            init() {
                return this.update();
            }
            getDisplayUrl() {
                return "https://simkl.com/" + this.type + "/" + this.simklId;
            }
            getMalUrl() {
                return isNaN(this.id) ? null : "https://myanimelist.net/" + this.type + "/" + this.id + "/" + encodeURIComponent(this.name.replace(/\//, "_"));
            }
            update() {
                return __awaiter(this, void 0, void 0, (function*() {
                    if (con.log("Update Simkl info", this.id ? "MAL: " + this.id : "Simkl: " + this.simklId), 
                    isNaN(this.id)) var de = {
                        simkl: this.simklId
                    }; else de = {
                        mal: this.id
                    };
                    return this.login = !0, _helper__WEBPACK_IMPORTED_MODULE_0__.e(de).catch(error => {
                        this.login = !1;
                    }).then(res => __awaiter(this, void 0, void 0, (function*() {
                        if (con.log(res), this.episodeUpdate = !1, this.statusUpdate = !1, this.ratingUpdate = !1, 
                        this.animeInfo = res, this.addAnime = !1, !this.animeInfo) {
                            if (this.addAnime = !0, de.simkl) {
                                if (!(el = yield _helper__WEBPACK_IMPORTED_MODULE_0__.a("https://api.simkl.com/anime/" + de.simkl, {
                                    extended: "full"
                                }, !0))) throw {
                                    code: 415,
                                    message: "Anime not found"
                                };
                            } else {
                                var el;
                                if (!(el = yield _helper__WEBPACK_IMPORTED_MODULE_0__.a("https://api.simkl.com/search/id", de, !0))) throw {
                                    code: 415,
                                    message: "Anime not found"
                                };
                                if (el[0].mal && el[0].mal.type && "Special" === el[0].mal.type) throw {
                                    code: 415,
                                    message: "Is a special"
                                };
                                el = el[0];
                            }
                            this.animeInfo = {
                                last_watched: "",
                                last_watched_at: "",
                                next_to_watch: "",
                                not_aired_episodes_count: 0,
                                private_memo: "",
                                status: "plantowatch",
                                total_episodes_count: 0,
                                user_rating: null,
                                watched_episodes_count: 0,
                                show: el
                            }, con.log("Add anime", this.animeInfo);
                        }
                        isNaN(this.simklId) && (this.simklId = this.animeInfo.show.ids.simkl), isNaN(this.id) && void 0 !== this.animeInfo.show.ids.mal && (this.id = this.animeInfo.show.ids.mal), 
                        isNaN(this.getEpisode()) && this.setEpisode(0), this.setScore(this.getScore()), 
                        this.name = this.animeInfo.show.title, this.totalEp = this.animeInfo.total_episodes_count, 
                        this.animeInfo.last_watched = _helper__WEBPACK_IMPORTED_MODULE_0__.d(this.animeInfo.last_watched), 
                        this.minWatchedEp = this.animeInfo.last_watched + 1;
                    })));
                }));
            }
            getEpisode() {
                return this.animeInfo.last_watched;
            }
            setEpisode(ep) {
                ep + "" == "" && (ep = 0), parseInt(ep + "") > this.totalEp && this.totalEp && (ep = this.totalEp), 
                ep != this.animeInfo.last_watched && (this.episodeUpdate = !0), this.animeInfo.last_watched = ep;
            }
            getVolume() {
                return !1;
            }
            setVolume(ep) {
                con.error("You cant set Volumes for animes");
            }
            getStatus() {
                return this.addAnime ? 0 : _helper__WEBPACK_IMPORTED_MODULE_0__.h(this.animeInfo.status);
            }
            setStatus(status) {
                (status = _helper__WEBPACK_IMPORTED_MODULE_0__.h(status, parseInt(status.toString()))) !== this.animeInfo.status && (this.statusUpdate = !0), 
                this.animeInfo.status = status;
            }
            getScore() {
                var score = this.animeInfo.user_rating;
                return null === score ? "" : score;
            }
            setScore(score) {
                "" === score && (score = null), score != this.animeInfo.user_rating && (this.ratingUpdate = !0), 
                this.animeInfo.user_rating = score;
            }
            getRewatching() {
                return 0;
            }
            setRewatching(rewatching) {}
            setCompletionDateToNow() {}
            setStartingDateToNow() {}
            getStreamingUrl() {
                var tags = this.animeInfo.private_memo;
                return utils.getUrlFromTags(tags);
            }
            setStreamingUrl(url) {
                var tags = this.animeInfo.private_memo;
                tags = utils.setUrlInTags(url, tags), this.animeInfo.private_memo = tags;
            }
            getRating() {
                return __awaiter(this, void 0, void 0, (function*() {
                    try {
                        return (yield _helper__WEBPACK_IMPORTED_MODULE_0__.a("https://api.simkl.com/ratings", {
                            simkl: this.simklId
                        }, !0)).simkl.rating;
                    } catch (e) {
                        return con.error(e), "N/A";
                    }
                }));
            }
            getCacheKey() {
                return _helper__WEBPACK_IMPORTED_MODULE_0__.c(this.id, this.simklId);
            }
            setResumeWaching(url, ep) {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.setResumeWaching(url, ep, this.type, this.getCacheKey());
                }));
            }
            getResumeWaching() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.getResumeWaching(this.type, this.getCacheKey());
                }));
            }
            setContinueWaching(url, ep) {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.setContinueWaching(url, ep, this.type, this.getCacheKey());
                }));
            }
            getContinueWaching() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.getContinueWaching(this.type, this.getCacheKey());
                }));
            }
            getImage() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return "https://simkl.in/posters/" + this.animeInfo.show.poster + "_ca.jpg";
                }));
            }
            clone() {
                const copy = new this.constructor;
                return Object.assign(copy, this), copy.animeInfo = Object.assign({}, this.animeInfo), 
                copy;
            }
            sync() {
                var status = utils.status;
                return new Promise((resolve, reject) => {
                    var This = this;
                    this.type, this.id;
                    if (this.addAnime) return this.silent ? void continueCall() : void ("anime" == this.type ? ("https://myanimelist.net/ownlist/anime/add?selected_series_id=" + this.id, 
                    continueCall()) : ("https://myanimelist.net/ownlist/manga/add?selected_manga_id=" + this.id, 
                    continueCall()));
                    var watchCounter = ".add_anime[num_watched_times]", rewatchText = "Rewatch Anime?", rewatchFinishText = "Finish rewatching?";
                    function continueCall() {
                        return __awaiter(this, void 0, void 0, (function*() {
                            if (con.log("[SET] Object:", This.animeInfo, "status", This.statusUpdate, "episode", This.episodeUpdate, "rating", This.ratingUpdate), 
                            This.statusUpdate || This.addAnime) {
                                var response = yield _helper__WEBPACK_IMPORTED_MODULE_0__.a("https://api.simkl.com/sync/add-to-list", JSON.stringify({
                                    shows: [ {
                                        to: This.animeInfo.status,
                                        ids: {
                                            simkl: This.simklId
                                        }
                                    } ]
                                }), !1, "POST");
                                con.log("Status response", response);
                            }
                            if (This.episodeUpdate || This.addAnime) {
                                var curEp = This.animeInfo.last_watched, episodes = [];
                                if (This.minWatchedEp <= curEp) {
                                    if (curEp) {
                                        for (var i = This.minWatchedEp; i <= curEp; i++) episodes.push({
                                            number: i
                                        });
                                        response = yield _helper__WEBPACK_IMPORTED_MODULE_0__.a("https://api.simkl.com/sync/history", JSON.stringify({
                                            shows: [ {
                                                ids: {
                                                    simkl: This.simklId
                                                },
                                                private_memo: This.animeInfo.private_memo,
                                                seasons: [ {
                                                    number: 1,
                                                    episodes: episodes
                                                } ]
                                            } ]
                                        }), !1, "POST");
                                        con.log("Episode response", response);
                                    }
                                } else {
                                    for (i = This.minWatchedEp - 1; i > curEp; i -= 1) episodes.push({
                                        number: i
                                    });
                                    response = yield _helper__WEBPACK_IMPORTED_MODULE_0__.a("https://api.simkl.com/sync/history/remove", JSON.stringify({
                                        shows: [ {
                                            ids: {
                                                simkl: This.simklId
                                            },
                                            seasons: [ {
                                                number: 1,
                                                episodes: episodes
                                            } ]
                                        } ]
                                    }), !1, "POST");
                                    con.log("Episode remove response", response);
                                }
                            }
                            if (This.ratingUpdate) if (This.animeInfo.user_rating) {
                                response = yield _helper__WEBPACK_IMPORTED_MODULE_0__.a("https://api.simkl.com/sync/ratings", JSON.stringify({
                                    shows: [ {
                                        rating: This.animeInfo.user_rating,
                                        ids: {
                                            simkl: This.simklId
                                        }
                                    } ]
                                }), !1, "POST");
                                con.log("Rating response", response);
                            } else {
                                response = yield _helper__WEBPACK_IMPORTED_MODULE_0__.a("https://api.simkl.com/sync/ratings/remove", JSON.stringify({
                                    shows: [ {
                                        ids: {
                                            simkl: This.simklId
                                        }
                                    } ]
                                }), !1, "POST");
                                con.log("Rating remove response", response);
                            }
                            resolve();
                        }));
                    }
                    "manga" == this.type && (watchCounter = ".add_manga[num_read_times]", rewatchText = "Reread Manga?", 
                    rewatchFinishText = "Finish rereading?"), this.getStatus() != status.completed || 1 !== this.getEpisode() || 1 === this.totalEp || 1 === this.getRewatching() ? this.getStatus() != status.completed || this.getEpisode() !== this.totalEp || 1 !== this.getRewatching() ? continueCall() : utils.flashConfirm(rewatchFinishText, "add", () => {
                        this.setRewatching(0), "" === this.animeInfo[watchCounter] ? this.animeInfo[watchCounter] = 1 : this.animeInfo[watchCounter] = parseInt(this.animeInfo[watchCounter]) + 1, 
                        continueCall();
                    }, (function() {
                        continueCall();
                    })) : utils.flashConfirm(rewatchText, "add", () => {
                        this.setRewatching(1), continueCall();
                    }, (function() {
                        continueCall();
                    }));
                });
            }
        }
    }).call(this, __webpack_require__(2), __webpack_require__(1), __webpack_require__(3));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, con) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return userlist;
        }));
        var _listAbstract__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class userlist extends _listAbstract__WEBPACK_IMPORTED_MODULE_0__.a {
            constructor() {
                super(...arguments), this.name = "MyAnimeList", this.authenticationUrl = "https://myanimelist.net/login.php";
            }
            getUsername() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return api.request.xhr("GET", "https://myanimelist.net/panel.php?go=export&hideLayout").then(response => {
                        var username = !1;
                        try {
                            username = response.responseText.split('USER_NAME = "')[1].split('"')[0];
                        } catch (e) {}
                        if (con.log("[Username]", username), !username) throw {
                            code: 400,
                            message: "Not Authenticated"
                        };
                        return username;
                    });
                }));
            }
            errorHandling(res) {
                if (void 0 !== res.errors) throw con.error(res.errors), {
                    code: parseInt(res.errors[0].status),
                    message: res.errors[0].title
                };
            }
            getPart() {
                return __awaiter(this, void 0, void 0, (function*() {
                    this.username || (this.username = yield this.getUsername());
                    var sorting = "";
                    1 === this.status && (sorting = "&order=5"), con.log("[UserList][MAL]", "username: " + this.username, "status: " + this.status, "offset: " + this.offset, "sorting: " + sorting);
                    var url = "https://myanimelist.net/" + this.listType + "list/" + this.username + "/load.json?offset=" + this.offset + "&status=" + this.status + sorting;
                    return api.request.xhr("GET", url).then(response => {
                        var res = this.jsonParse(response), data = this.prepareData(res);
                        return data.length > 299 ? this.offset += 300 : this.done = !0, data;
                    });
                }));
            }
            prepareData(data) {
                for (var newData = [], i = 0; i < data.length; i++) {
                    var el = data[i];
                    "anime" === this.listType ? newData.push(this.fn({
                        uid: el.anime_id,
                        malId: el.anime_id,
                        cacheKey: el.anime_id,
                        type: this.listType,
                        title: el.anime_title,
                        url: "https://myanimelist.net" + el.anime_url,
                        watchedEp: el.num_watched_episodes,
                        totalEp: el.anime_num_episodes,
                        status: el.status,
                        score: el.score,
                        image: el.anime_image_path,
                        tags: el.tags,
                        airingState: el.anime_airing_status
                    })) : newData.push(this.fn({
                        uid: el.manga_id,
                        malId: el.manga_id,
                        cacheKey: el.manga_id,
                        type: this.listType,
                        title: el.manga_title,
                        url: "https://myanimelist.net" + el.manga_url,
                        watchedEp: el.num_read_chapters,
                        totalEp: el.manga_num_chapters,
                        status: el.status,
                        score: el.score,
                        image: el.manga_image_path,
                        tags: el.tags,
                        airingState: el.anime_airing_status
                    }));
                }
                return newData;
            }
        }
    }).call(this, __webpack_require__(0), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(con) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return userlist;
        }));
        var _listAbstract__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12), _helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(19), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class userlist extends _listAbstract__WEBPACK_IMPORTED_MODULE_0__.a {
            constructor() {
                super(...arguments), this.name = "AniList", this.compact = !1, this.authenticationUrl = "https://anilist.co/api/v2/oauth/authorize?client_id=1487&response_type=token";
            }
            getUsername() {
                return this.api.request.xhr("POST", {
                    url: "https://graphql.anilist.co",
                    headers: {
                        Authorization: "Bearer " + this.accessToken(),
                        "Content-Type": "application/json",
                        Accept: "application/json"
                    },
                    data: JSON.stringify({
                        query: "\n    query {\n      Viewer {\n        name\n        id\n      }\n    }\n    ",
                        variables: []
                    })
                }).then(response => {
                    var res = this.jsonParse(response);
                    return con.log(res), this.errorHandling(res), res.data.Viewer.name;
                });
            }
            errorHandling(res) {
                if (void 0 !== res.errors) throw con.error(res.errors), {
                    code: res.errors[0].status,
                    message: res.errors[0].message
                };
            }
            accessToken() {
                return this.api.settings.get("anilistToken");
            }
            getPart() {
                return __awaiter(this, void 0, void 0, (function*() {
                    this.offset < 1 && (this.offset = 1), con.log("[UserList][AniList]", "username: " + this.username, "status: " + this.status, "offset: " + this.offset), 
                    null == this.username && (this.username = yield this.getUsername());
                    var query = "\n    query ($page: Int, $userName: String, $type: MediaType, $status: MediaListStatus, $sort: [MediaListSort] ) {\n      Page (page: $page, perPage: 100) {\n        pageInfo {\n          hasNextPage\n        }\n        mediaList (status: $status, type: $type, userName: $userName, sort: $sort) {\n          status\n          score(format: POINT_100)\n          progress\n          progressVolumes\n          notes\n          media {\n            siteUrl\n            id\n            idMal\n            episodes\n            chapters\n            volumes\n            status\n            averageScore\n            coverImage{\n              large\n            }\n            title {\n              userPreferred\n            }\n          }\n        }\n      }\n    }\n    ";
                    this.compact && (query = "\n      query ($page: Int, $userName: String, $type: MediaType, $status: MediaListStatus, $sort: [MediaListSort]) {\n        Page (page: $page, perPage: 100) {\n          pageInfo {\n            hasNextPage\n          }\n          mediaList (status: $status, type: $type, userName: $userName, sort: $sort) {\n            progress\n            media {\n              id\n              idMal\n            }\n          }\n        }\n      }\n      ");
                    var variables = {
                        page: this.offset,
                        userName: this.username,
                        type: this.listType.toUpperCase(),
                        status: _helper__WEBPACK_IMPORTED_MODULE_1__.b(parseInt(this.status.toString()), parseInt(this.status.toString())),
                        sort: "UPDATED_TIME_DESC"
                    };
                    return 1 !== this.status && (variables.sort = null), this.api.request.xhr("POST", {
                        url: "https://graphql.anilist.co",
                        headers: {
                            Authorization: "Bearer " + this.accessToken(),
                            "Content-Type": "application/json",
                            Accept: "application/json"
                        },
                        data: JSON.stringify({
                            query: query,
                            variables: variables
                        })
                    }).then(response => {
                        var res = this.jsonParse(response);
                        con.log("res", res), this.errorHandling(res);
                        var data = res.data.Page.mediaList;
                        return this.offset = this.offset + 1, res.data.Page.pageInfo.hasNextPage || (this.done = !0), 
                        this.compact ? this.prepareCompact(data, this.listType) : this.prepareData(data, this.listType);
                    });
                }));
            }
            prepareData(data, listType) {
                for (var newData = [], i = 0; i < data.length; i++) {
                    var el = data[i];
                    if ("anime" === listType) var tempData = this.fn({
                        uid: el.media.id,
                        malId: el.media.idMal,
                        cacheKey: _helper__WEBPACK_IMPORTED_MODULE_1__.a(el.media.idMal, el.media.id),
                        type: listType,
                        title: el.media.title.userPreferred,
                        url: el.media.siteUrl,
                        watchedEp: el.progress,
                        totalEp: el.media.episodes,
                        status: _helper__WEBPACK_IMPORTED_MODULE_1__.b(el.status),
                        score: Math.round(el.score / 10),
                        image: el.media.coverImage.large,
                        tags: el.notes,
                        airingState: el.anime_airing_status
                    }); else tempData = this.fn({
                        uid: el.media.id,
                        malId: el.media.idMal,
                        cacheKey: _helper__WEBPACK_IMPORTED_MODULE_1__.a(el.media.idMal, el.media.id),
                        type: listType,
                        title: el.media.title.userPreferred,
                        url: el.media.siteUrl,
                        watchedEp: el.progress,
                        totalEp: el.media.chapters,
                        status: _helper__WEBPACK_IMPORTED_MODULE_1__.b(el.status),
                        score: Math.round(el.score / 10),
                        image: el.media.coverImage.large,
                        tags: el.notes,
                        airingState: el.anime_airing_status
                    });
                    null == tempData.totalEp && (tempData.totalEp = 0), newData.push(tempData);
                }
                return newData;
            }
            prepareCompact(data, listType) {
                for (var newData = [], i = 0; i < data.length; i++) {
                    var el = data[i];
                    newData.push({
                        malid: el.media.idMal,
                        id: el.media.id,
                        watchedEp: el.progress,
                        cacheKey: _helper__WEBPACK_IMPORTED_MODULE_1__.a(el.media.idMal, el.media.id)
                    });
                }
                return newData;
            }
        }
    }).call(this, __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, con) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return userlist;
        }));
        var _listAbstract__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12), _helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class userlist extends _listAbstract__WEBPACK_IMPORTED_MODULE_0__.a {
            constructor() {
                super(...arguments), this.name = "Kitsu", this.authenticationUrl = "https://kitsu.io/404?mal-sync=authentication";
            }
            getUsername() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return (yield this.userRequest()).attributes.name;
                }));
            }
            getUserId() {
                return __awaiter(this, void 0, void 0, (function*() {
                    var userId = yield api.storage.get("kitsuUserId");
                    if (void 0 !== userId) return userId;
                    var user = yield this.userRequest();
                    return api.storage.set("kitsuUserId", user.id), user.id;
                }));
            }
            userRequest() {
                return api.request.xhr("Get", {
                    url: "https://kitsu.io/api/edge/users?filter[self]=true",
                    headers: {
                        Authorization: "Bearer " + this.accessToken(),
                        "Content-Type": "application/vnd.api+json",
                        Accept: "application/vnd.api+json"
                    }
                }).then(response => {
                    var res = this.jsonParse(response);
                    if (con.log(res), this.errorHandling(res), void 0 === res.data[0]) throw {
                        code: 400,
                        message: "Not Authenticated"
                    };
                    return res.data[0];
                });
            }
            errorHandling(res) {
                if (void 0 !== res.errors) throw con.error(res.errors), {
                    code: parseInt(res.errors[0].status),
                    message: res.errors[0].title
                };
            }
            accessToken() {
                return api.settings.get("kitsuToken");
            }
            getPart() {
                return __awaiter(this, void 0, void 0, (function*() {
                    var userid = yield this.getUserId(), statusPart = "", sorting = "";
                    7 !== this.status && (1 === this.status && (sorting = "&sort=-progressed_at"), statusPart = "&filter[status]=" + _helper__WEBPACK_IMPORTED_MODULE_1__.c(this.status, this.status));
                    return con.log("[UserList][Kitsu]", "user: " + userid, "status: " + this.status, "offset: " + this.offset), 
                    api.request.xhr("GET", {
                        url: "https://kitsu.io/api/edge/library-entries?filter[user_id]=" + userid + statusPart + "&filter[kind]=" + this.listType + "&page[offset]=" + this.offset + "&page[limit]=50" + sorting + "&include=" + this.listType + "," + this.listType + ".mappings," + this.listType + ".mappings.item&fields[" + this.listType + "]=slug,titles,averageRating,posterImage," + ("anime" == this.listType ? "episodeCount" : "chapterCount,volumeCount"),
                        headers: {
                            Authorization: "Bearer " + this.accessToken(),
                            "Content-Type": "application/vnd.api+json",
                            Accept: "application/vnd.api+json"
                        },
                        data: {}
                    }).then(response => {
                        var res = this.jsonParse(response);
                        return con.log(res), this.errorHandling(res), this.offset += 50, res.meta.count > this.offset || (this.done = !0), 
                        this.prepareData(res, this.listType);
                    });
                }));
            }
            prepareData(data, listType) {
                for (var newData = [], i = 0; i < data.data.length; i++) {
                    for (var list = data.data[i], el = data.included[i], name = _helper__WEBPACK_IMPORTED_MODULE_1__.b(el.attributes.titles), malId = NaN, k = 0; k < data.included.length; k++) {
                        var mapping = data.included[k];
                        if ("mappings" == mapping.type && mapping.attributes.externalSite === "myanimelist/" + listType && mapping.relationships.item.data.id == el.id) {
                            malId = mapping.attributes.externalId, data.included.splice(k, 1);
                            break;
                        }
                    }
                    if ("anime" === listType) var tempData = this.fn({
                        malId: malId,
                        uid: el.id,
                        cacheKey: _helper__WEBPACK_IMPORTED_MODULE_1__.a(malId, el.id),
                        kitsuSlug: el.attributes.slug,
                        type: listType,
                        title: name,
                        url: "https://kitsu.io/" + listType + "/" + el.attributes.slug,
                        watchedEp: list.attributes.progress,
                        totalEp: el.attributes.episodeCount,
                        status: _helper__WEBPACK_IMPORTED_MODULE_1__.c(list.attributes.status),
                        score: list.attributes.ratingTwenty / 2,
                        image: el.attributes.posterImage && el.attributes.posterImage.large ? el.attributes.posterImage.large : "",
                        tags: list.attributes.notes,
                        airingState: el.anime_airing_status
                    }); else tempData = this.fn({
                        malId: malId,
                        uid: el.id,
                        cacheKey: _helper__WEBPACK_IMPORTED_MODULE_1__.a(malId, el.id),
                        kitsuSlug: el.attributes.slug,
                        type: listType,
                        title: name,
                        url: "https://kitsu.io/" + listType + "/" + el.attributes.slug,
                        watchedEp: list.attributes.progress,
                        totalEp: el.attributes.chapterCount,
                        status: _helper__WEBPACK_IMPORTED_MODULE_1__.c(list.attributes.status),
                        score: list.attributes.ratingTwenty / 2,
                        image: el.attributes.posterImage && el.attributes.posterImage.large ? el.attributes.posterImage.large : "",
                        tags: list.attributes.notes,
                        airingState: el.anime_airing_status
                    });
                    null == tempData.totalEp && (tempData.totalEp = 0), newData.push(tempData);
                }
                return newData;
            }
        }
    }).call(this, __webpack_require__(0), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return getPlayerTime;
        })), __webpack_require__.d(__webpack_exports__, "b", (function() {
            return shortcutListener;
        }));
        var inter, __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        function getPlayerTime(callback) {
            clearInterval(inter), inter = setInterval((function() {
                for (var players = document.getElementsByTagName("video"), i = 0; i < players.length; i++) {
                    var player = players[i], duration = player.duration, current = player.currentTime, paused = player.paused;
                    if (duration && duration > 60) {
                        var item = {
                            current: current,
                            duration: duration,
                            paused: paused
                        };
                        con.info(window.location.href, item), callback(item, player), playerExtras(item, player);
                        break;
                    }
                }
            }), 1e3);
        }
        var videoIdentifier = "";
        function playerExtras(item, player) {
            var tempVideoIdentifier = player.currentSrc;
            item.current > 1 && videoIdentifier !== tempVideoIdentifier && (videoIdentifier = tempVideoIdentifier, 
            con.info("New player detected"), function(player) {
                __awaiter(this, void 0, void 0, (function*() {
                    if (yield api.settings.getAsync("autofull")) if (window.fullScreen || window.innerWidth == screen.width && window.innerHeight == screen.height) con.info("Browser already in fullscreen"); else {
                        var playerEl = player, ids = [ "player", "vstr", "vplayer", "mgvideo", "myVideo", "b-video-wrapper", "vilos" ], classes = [ "AT-player", "plyr", "AkiraPlayer", "video-js" ], found = !1;
                        for (var i in ids) {
                            var playerTemp = document.getElementById(ids[i]);
                            if (null !== playerTemp) {
                                found = !0, playerEl = playerTemp;
                                break;
                            }
                        }
                        for (var i in classes) {
                            var classTemp = document.getElementsByClassName(classes[i]).item(0);
                            if (null !== classTemp) {
                                found = !0, playerEl = classTemp;
                                break;
                            }
                        }
                        if (!found) for (var vHeight = playerEl.offsetHeight, vWidth = playerEl.offsetWidth; playerEl.parentElement && vHeight === playerEl.parentElement.offsetHeight && vWidth === playerEl.parentElement.offsetWidth; ) playerEl = playerEl.parentElement, 
                        found = !0;
                        if (!found && !player.getAttribute("controls")) {
                            function exitHandler() {
                                (document.webkitIsFullScreen || document.mozFullScreen || null !== document.msFullscreenElement) && player.removeAttribute("controls", "controls");
                            }
                            document.addEventListener && (document.addEventListener("fullscreenchange", exitHandler, !1), 
                            document.addEventListener("mozfullscreenchange", exitHandler, !1), document.addEventListener("MSFullscreenChange", exitHandler, !1), 
                            document.addEventListener("webkitfullscreenchange", exitHandler, !1)), player.setAttribute("controls", "controls");
                        }
                        playerEl.requestFullscreen ? playerEl.requestFullscreen() : playerEl.msRequestFullscreen ? playerEl.msRequestFullscreen() : playerEl.mozRequestFullScreen ? playerEl.mozRequestFullScreen() : playerEl.webkitRequestFullscreen && playerEl.webkitRequestFullscreen();
                    }
                }));
            }(player));
        }
        var init = !1;
        const shortcutOptions = [ "introSkipFwd", "introSkipBwd", "nextEpShort", "correctionShort" ];
        function shortcutListener(callback) {
            callback, init || function() {
                init = !0;
                var keyMap = {};
                function checkShortcut(option) {
                    var keys = api.settings.get(option);
                    if (!keys.length) return !1;
                    var shortcutTrue = !0;
                    return keys.forEach((function(sKey) {
                        keyMap[sKey] || (shortcutTrue = !1);
                    })), shortcutTrue;
                }
                onkeydown = onkeyup = function(e) {
                    var key = (e = e || event).which || e.keyCode;
                    keyMap[key] = "keydown" == e.type;
                    for (var i = 0; i < shortcutOptions.length; i++) {
                        const option = shortcutOptions[i];
                        if (checkShortcut(option)) {
                            if (!/textarea|input|select/i.test(e.target.nodeName) && !e.target.shadowRoot) return shortcutDetected(option);
                            con.info("Input field. Shortcut suppressed.");
                        }
                    }
                    function shortcutDetected(option) {
                        return keyMap = {}, callback({
                            shortcut: option
                        }), !1;
                    }
                }, window.addEventListener("focus", (function(event) {
                    keyMap = {};
                }), !1);
            }();
        }
    }).call(this, __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, con, j) {
        __webpack_require__.d(__webpack_exports__, "e", (function() {
            return translateList;
        })), __webpack_require__.d(__webpack_exports__, "b", (function() {
            return getCacheKey;
        })), __webpack_require__.d(__webpack_exports__, "c", (function() {
            return getEpisode;
        })), __webpack_require__.d(__webpack_exports__, "d", (function() {
            return syncList;
        })), __webpack_require__.d(__webpack_exports__, "a", (function() {
            return call;
        }));
        var cacheList, __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        }, client_id = "39e8640b6f1a60aaf60f3f3313475e830517badab8048a4e52ff2d10deb2b9b0";
        function translateList(simklStatus, malStatus = null) {
            var list = {
                watching: 1,
                plantowatch: 6,
                completed: 2,
                notinteresting: 4,
                hold: 3
            };
            return null != malStatus ? Object.keys(list).find(key => list[key] === malStatus) : list[simklStatus];
        }
        function getCacheKey(id, simklId) {
            return isNaN(id) || !id ? "simkl:" + simklId : id;
        }
        function getEpisode(episode) {
            if ("number" == typeof episode) return episode;
            if (episode) {
                var temp = episode.match(/e\d+/i);
                if (null !== temp) {
                    var episodePart = parseInt(temp[0].replace(/\D/, ""));
                    return isNaN(episodePart) ? 0 : episodePart;
                }
            }
            return 0;
        }
        function syncList(lazy = !1) {
            return __awaiter(this, void 0, void 0, (function*() {
                if (void 0 === cacheList) cacheList = yield api.storage.get("simklList"); else if (lazy) return cacheList;
                var lastCheck = yield api.storage.get("simklLastCheck"), activity = yield this.call("https://api.simkl.com/sync/activities");
                if (con.log("Activity", lastCheck, activity.anime), lastCheck && lastCheck.removed_from_list !== activity.anime.removed_from_list) {
                    var checkRemoveList = yield this.call("https://api.simkl.com/sync/all-items/anime"), newCacheList = {};
                    if (checkRemoveList) for (var i = 0; i < checkRemoveList.anime.length; i++) {
                        const el = checkRemoveList.anime[i];
                        null != cacheList[el.show.ids.simkl] && (newCacheList[el.show.ids.simkl] = cacheList[el.show.ids.simkl]);
                    }
                    cacheList = newCacheList, con.log("remove", cacheList);
                }
                var dateFrom = "";
                if (lastCheck && cacheList && (dateFrom = "date_from=" + lastCheck.all, lastCheck.all === activity.anime.all)) return con.log("Up to date"), 
                cacheList;
                if (cacheList || (cacheList = {}), lastCheck && lastCheck.rated_at !== activity.anime.rated_at) {
                    var rated = yield this.call("https://api.simkl.com/sync/ratings/anime?" + dateFrom);
                    if (con.log("ratedUpdate", rated), rated) for (i = 0; i < rated.anime.length; i++) {
                        const el = rated.anime[i];
                        cacheList[el.show.ids.simkl] = el;
                    }
                }
                var list = yield this.call("https://api.simkl.com/sync/all-items/anime?" + dateFrom);
                if (con.log("listUpdate", list), list) for (i = 0; i < list.anime.length; i++) {
                    const el = list.anime[i];
                    cacheList[el.show.ids.simkl] = el;
                }
                return con.log("totalList", cacheList), yield api.storage.set("simklList", cacheList), 
                yield api.storage.set("simklLastCheck", activity.anime), cacheList;
            }));
        }
        function call(url, sData = {}, asParameter = !1, methode = "GET", login = !0) {
            return __awaiter(this, void 0, void 0, (function*() {
                asParameter && (url += "?" + j.$.param(sData)), con.log("call", methode, url, sData);
                var headers = {
                    Authorization: "Bearer " + api.settings.get("simklToken"),
                    "simkl-api-key": client_id,
                    Accept: "application/vnd.api+json",
                    "Content-Type": "application/json"
                };
                return login || (con.log("No login"), delete headers.Authorization), api.request.xhr(methode, {
                    url: url,
                    headers: headers,
                    data: sData
                }).then(response => __awaiter(this, void 0, void 0, (function*() {
                    var res = this.jsonParse(response);
                    return this.errorHandling(res, response.status), res;
                })));
            }));
        }
    }).call(this, __webpack_require__(0), __webpack_require__(1), __webpack_require__(3));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    __webpack_require__.d(__webpack_exports__, "a", (function() {
        return kitsu;
    }));
    const kitsu = {
        shortName: "Kitsu",
        score: "Kitsu Score:",
        noLogin: 'Please Authenticate <a target="_blank" href="https://kitsu.io/404?mal-sync=authentication">Here</a>'
    };
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    function getCacheKey(id, page) {
        return "local:" + id + ":" + page;
    }
    __webpack_require__.d(__webpack_exports__, "a", (function() {
        return getCacheKey;
    }));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return providerTemplates;
        }));
        var _MyAnimeList_templates__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(85), _AniList_templates__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(86), _Kitsu_templates__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29), _Simkl_templates__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(59), _Local_templates__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(87);
        function providerTemplates(malUrl) {
            if (/^local:\/\//i.test(malUrl)) return _Local_templates__WEBPACK_IMPORTED_MODULE_4__.a;
            var syncMode = api.settings.get("syncMode");
            return "MAL" == syncMode ? _MyAnimeList_templates__WEBPACK_IMPORTED_MODULE_0__.a : "ANILIST" == syncMode ? _AniList_templates__WEBPACK_IMPORTED_MODULE_1__.a : "KITSU" == syncMode ? _Kitsu_templates__WEBPACK_IMPORTED_MODULE_2__.a : _Simkl_templates__WEBPACK_IMPORTED_MODULE_3__.a;
        }
    }).call(this, __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, utils, j, con) {
        var timer, _minimalApp_settings_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(163), _minimalApp_overview_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(156), _minimalApp_recommendations_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(162), _minimalApp_bookmarks_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(169), _minimalApp_search_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(170), _minimalApp_updateCheck_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(168), _minimalApp_listSync_listSync_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(166), _minimalApp_cleanTags_cleanTags_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(165), _minimalApp_reviews_vue__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(164), _provider_provider__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(9), ignoreCurrentTab = !0, ignoreNullBase = !1, scrollHandler = {}, scrollHandlerArray = [], popupStorage_fetch = function() {
            return JSON.parse(localStorage.getItem("VUE-MAL-SYNC") || "[]");
        }, popupStorage_save = function(state) {
            localStorage.setItem("VUE-MAL-SYNC", JSON.stringify(state));
        };
        __webpack_exports__.a = {
            components: {
                overviewVue: _minimalApp_overview_vue__WEBPACK_IMPORTED_MODULE_1__.a,
                recommendationsVue: _minimalApp_recommendations_vue__WEBPACK_IMPORTED_MODULE_2__.a,
                reviewsVue: _minimalApp_reviews_vue__WEBPACK_IMPORTED_MODULE_8__.a,
                bookmarksVue: _minimalApp_bookmarks_vue__WEBPACK_IMPORTED_MODULE_3__.a,
                searchVue: _minimalApp_search_vue__WEBPACK_IMPORTED_MODULE_4__.a,
                updateCheckVue: _minimalApp_updateCheck_vue__WEBPACK_IMPORTED_MODULE_5__.a,
                listSyncVue: _minimalApp_listSync_listSync_vue__WEBPACK_IMPORTED_MODULE_6__.a,
                cleanTagsVue: _minimalApp_cleanTags_cleanTags_vue__WEBPACK_IMPORTED_MODULE_7__.a,
                settingsVue: _minimalApp_settings_vue__WEBPACK_IMPORTED_MODULE_0__.a
            },
            data: () => ({
                tabs: {
                    overview: {
                        title: "overview",
                        scroll: 0
                    },
                    reviews: {
                        title: "reviews",
                        scroll: 0
                    },
                    recommendations: {
                        title: "recommendations",
                        scroll: 0
                    },
                    settings: {
                        title: "settings",
                        scroll: 0
                    },
                    bookmarks: {
                        title: "bookmarks",
                        scroll: 0,
                        state: 1,
                        type: "anime"
                    },
                    search: {
                        title: "search",
                        scroll: 0,
                        type: "anime",
                        keyword: ""
                    },
                    updateCheck: {
                        title: "updateCheck",
                        scroll: 0
                    },
                    listSync: {
                        title: "listSync",
                        scroll: 0,
                        type: "anime"
                    },
                    cleanTags: {
                        title: "cleanTags",
                        scroll: 0
                    }
                },
                keyword: "",
                currentTab: "settings",
                renderUrl: "",
                renderObj: null,
                history: [],
                baseFallback: "",
                page: null,
                options: api.settings.options
            }),
            computed: {
                base: function() {
                    return this.page ? this.page.malObj ? this.page.malObj.url : (this.renderUrl = "", 
                    "") : this.baseFallback;
                },
                renderMalUrl: function() {
                    return null !== this.renderObj ? this.renderObj.getMalUrl() : null;
                },
                showReviewAndRecom: function() {
                    return null !== this.renderMalUrl || null === this.renderObj;
                },
                utils: function() {
                    return utils;
                },
                backbutton: function() {
                    return this.history.length > 0;
                },
                backbuttonSearchStyle: function() {
                    return this.backbutton ? {
                        "margin-left": "-17px"
                    } : {
                        "margin-left": "-57px"
                    };
                },
                backbuttonBookStyle: function() {
                    return this.backbutton ? {
                        left: "40px"
                    } : {
                        left: "0px"
                    };
                },
                popOver: function() {
                    return this.currentTab === this.tabs.bookmarks.title || (this.currentTab === this.tabs.search.title || (this.currentTab === this.tabs.updateCheck.title || (this.currentTab === this.tabs.listSync.title || this.currentTab === this.tabs.cleanTags.title)));
                },
                navigation: function() {
                    return !this.popOver && !this.onlySettings;
                },
                onlySettings: function() {
                    return "" === this.renderUrl;
                },
                bookIcon: function() {
                    j.$(this.$el);
                    return "bookmarks" === this.currentTab ? this.onlySettings ? "settings" : "collections_bookmark" : "book";
                }
            },
            mounted: function() {
                if (this.isPopup()) {
                    var state = popupStorage_fetch();
                    void 0 !== state && void 0 !== state.currentTab && (ignoreNullBase = !0, this.setCurrent(state));
                }
                j.$(this.$el).find(".mdl-layout__content").first().scroll(() => {
                    if (scrollHandlerArray.length) {
                        var pos = {
                            pos: this.getScroll(),
                            elHeight: j.$(this.$el).find(".mdl-layout__content").first().height(),
                            height: j.$(this.$el).find(".mdl-layout__content > .is-active").first().height()
                        };
                        for (var i in scrollHandlerArray) scrollHandlerArray[i](pos);
                    }
                });
            },
            updated: function() {
                this.isPopup() && popupStorage_save(this.getCurrent(this.currentTab));
            },
            watch: {
                renderUrl: function(url, oldUrl) {
                    this.renderObj = null;
                    var tempRenderObj = new _provider_provider__WEBPACK_IMPORTED_MODULE_9__.a(url);
                    tempRenderObj.init().then(() => {
                        this.renderObj = tempRenderObj;
                    });
                },
                currentTab: function(tab, oldtab) {
                    this.tabs[oldtab].scroll = this.getScroll(), this.$nextTick(() => {
                        this.setScroll(this.tabs[tab].scroll);
                    }), ignoreCurrentTab ? ignoreCurrentTab = !1 : (this.currentTab === this.tabs.bookmarks.title && this.history.push(this.getCurrent(oldtab)), 
                    this.currentTab === this.tabs.search.title && this.history.push(this.getCurrent(oldtab)), 
                    this.currentTab === this.tabs.updateCheck.title && this.history.push(this.getCurrent(oldtab)), 
                    this.currentTab === this.tabs.listSync.title && this.history.push(this.getCurrent(oldtab)), 
                    this.currentTab === this.tabs.cleanTags.title && this.history.push(this.getCurrent(oldtab)));
                },
                keyword: function(keyword) {
                    "" !== keyword ? this.selectTab("search") : this.selectTab("overview");
                },
                base: function(base, oldBase) {
                    if (base !== oldBase) {
                        for (;this.history.length > 0; ) this.history.pop();
                        this.fill(base, !0);
                    }
                }
            },
            methods: {
                lang: api.storage.lang,
                selectTab(selectedTab) {
                    !this.onlySettings || "overview" !== selectedTab && "reviews" !== selectedTab && "recommendations" !== selectedTab || (selectedTab = "settings"), 
                    con.log("Tab Changed", selectedTab), this.currentTab = selectedTab;
                },
                registerScroll(key, fn) {
                    scrollHandler[key] = fn, scrollHandlerArray = Object.values(scrollHandler);
                },
                unregisterScroll(key) {
                    delete scrollHandler[key], scrollHandlerArray = Object.values(scrollHandler);
                },
                getScroll() {
                    return j.$(this.$el).find(".mdl-layout__content").first().scrollTop();
                },
                setScroll(scroll) {
                    return j.$(this.$el).find(".mdl-layout__content").first().scrollTop(scroll);
                },
                isPopup: () => !!j.$("#Mal-Sync-Popup").length,
                fill(url, isBase = !1) {
                    con.log("fill", url);
                    j.$(this.$el);
                    return null == url ? (this.isPopup() && this.selectTab("bookmarks"), !1) : /^https:\/\/myanimelist.net\/(anime|manga)\/\d+/i.test(url) || /^https:\/\/kitsu.io\/(anime|manga)\/.+/i.test(url) || /^https:\/\/anilist.co\/(anime|manga)\/\d+/i.test(url) || /^https:\/\/simkl.com\/(anime|manga)\/\d+/i.test(url) || /^local:\/\//i.test(url) ? (isBase || this.history.push(this.getCurrent(this.currentTab)), 
                    this.renderUrl = url, this.currentTab = "overview", !0) : (this.isPopup() && this.selectTab("bookmarks"), 
                    !1);
                },
                urlClick(url) {
                    if (/^local:\/\//i.test(url) || (url = utils.absoluteLink(url, "https://myanimelist.net")), 
                    !this.fill(url)) {
                        var win = window.open(url, "_blank");
                        win ? win.focus() : alert(api.storage.lang("minimalClass_Popup"));
                    }
                },
                fillBase(url) {
                    con.log("Fill Base", url, this.history), ignoreNullBase && null === url || (this.baseFallback = url), 
                    "" === url && (this.renderUrl = url);
                },
                setPage(page) {
                    this.page = page, void 0 === this.page.malObj && this.$set(this.page, "malObj", void 0);
                },
                backbuttonClick() {
                    con.log("History", this.history), this.history.length > 0 && this.setCurrent(this.history.pop());
                },
                bookClick() {
                    j.$(this.$el);
                    "book" !== this.bookIcon ? this.selectTab("overview") : this.selectTab("bookmarks");
                },
                keywordSet() {
                    clearTimeout(timer), timer = setTimeout(() => {
                        this.tabs.search.keyword = this.keyword;
                    }, 300);
                },
                getCurrent(tab, url = this.renderUrl) {
                    return {
                        renderUrl: url,
                        currentTab: tab,
                        tabData: j.$.extend(!0, {}, this.tabs[tab])
                    };
                },
                setCurrent(historyElement) {
                    con.log("Set Current", historyElement), void 0 !== historyElement.tabData.keyword && (this.keyword = historyElement.tabData.keyword), 
                    this.tabs[historyElement.currentTab] = historyElement.tabData, this.renderUrl = historyElement.renderUrl, 
                    this.currentTab !== historyElement.currentTab && (ignoreCurrentTab = !0), this.currentTab = historyElement.currentTab;
                },
                rebuildListSync() {
                    this.currentTab = "", this.$nextTick(() => {
                        this.currentTab = "listSync";
                    });
                },
                searchClick(item) {
                    this.urlClick(item.url);
                }
            }
        };
    }).call(this, __webpack_require__(0), __webpack_require__(2), __webpack_require__(3), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, con, j, utils) {
        var _components_settingsCheckbox_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(172), _components_settingsNumberInput_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(174), _components_settingsDropdown_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(176), _components_settingsFileUpload_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(177), _components_settingsShortcut_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(173), _components_settingsLogin_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(178), _components_tooltip_vue__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(64), _correction_vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(175), _provider_Local_import__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(66);
        __webpack_exports__.a = {
            components: {
                correction: _correction_vue__WEBPACK_IMPORTED_MODULE_7__.a,
                tooltip: _components_tooltip_vue__WEBPACK_IMPORTED_MODULE_6__.a,
                checkbox: _components_settingsCheckbox_vue__WEBPACK_IMPORTED_MODULE_0__.a,
                numberInput: _components_settingsNumberInput_vue__WEBPACK_IMPORTED_MODULE_1__.a,
                dropdown: _components_settingsDropdown_vue__WEBPACK_IMPORTED_MODULE_2__.a,
                fileUpload: _components_settingsFileUpload_vue__WEBPACK_IMPORTED_MODULE_3__.a,
                shortcut: _components_settingsShortcut_vue__WEBPACK_IMPORTED_MODULE_4__.a,
                login: _components_settingsLogin_vue__WEBPACK_IMPORTED_MODULE_5__.a
            },
            props: {
                page: {
                    type: Object,
                    default: null
                }
            },
            mounted: function() {
                api.request.xhr("GET", "https://kissanimelist.firebaseio.com/Data2/Notification/Contributer.json").then(response => {
                    try {
                        this.contributer = JSON.parse(response.responseText.replace(/(^"|"$)/gi, "").replace(/\\"/g, '"'));
                    } catch (e) {
                        return void con.error("Contributer Could not be retieved", e);
                    }
                    con.log("Contributer", this.contributer);
                }), "webextension" == api.type && j.$("#Mal-Sync-Popup").length && chrome.commands.getAll(commands => {
                    con.info("Commands", commands);
                    var tempCommands = commands.reduce((function(total, current) {
                        return total[current.name] = current, total;
                    }), {});
                    this.commands = tempCommands;
                });
            },
            methods: {
                lang: api.storage.lang,
                myOpen: function() {
                    this.isOpen = !this.isOpen;
                },
                isExtension: function() {
                    return "webextension" === api.type;
                },
                importFallbackSync: function(filecontent) {
                    con.log("Import FallbackSync", filecontent);
                    try {
                        var iData = JSON.parse(filecontent);
                        con.log("data", iData);
                        var firstData = iData[Object.keys(iData)[0]];
                        if (!firstData.hasOwnProperty("name")) throw "No name";
                        if (!firstData.hasOwnProperty("progress")) throw "No progress";
                        if (!firstData.hasOwnProperty("score")) throw "No score";
                        if (!firstData.hasOwnProperty("status")) throw "No status";
                        if (!firstData.hasOwnProperty("tags")) throw "No tags";
                        Object(_provider_Local_import__WEBPACK_IMPORTED_MODULE_8__.b)(iData).then(() => {
                            utils.flashm("File imported");
                        });
                    } catch (e) {
                        alert("File has wrong formating"), con.error("File has wrong formating:", e);
                    }
                },
                exportFallbackSync: async function() {
                    var exportObj = await Object(_provider_Local_import__WEBPACK_IMPORTED_MODULE_8__.a)();
                    con.log("Export", exportObj);
                    var filecontent = "data:text/csv;charset=utf-8," + JSON.stringify(exportObj), encodedUri = encodeURI(filecontent);
                    try {
                        var link = document.createElement("a");
                        link.setAttribute("href", encodedUri), link.setAttribute("download", "malsync_" + (new Date).toJSON().slice(0, 10).replace(/-/g, "/") + ".txt"), 
                        document.body.appendChild(link), link.click();
                    } catch (e) {
                        window.open(encodedUri);
                    }
                    utils.flashm("File exported");
                }
            },
            data: function() {
                return {
                    contributer: [],
                    isOpen: !1,
                    options: api.settings.options,
                    commands: null,
                    version: {
                        link: `https://malsync.moe/changelog#${api.storage.version()}`,
                        img: `https://img.shields.io/badge/Changelog-${api.storage.version()}-green.svg?style=flat-square&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAtxQTFRFAAAARj1Hw158LyQzRDRBVF54Ew0ZXqvnIx4labLsQEFTdsD7ZpPC////VE1SNCg3Nik7PS1CSzBKWjRXczBXjjBUsTZd0WuILSUyMiU2MiI2Nyc9dypNoClRbC5INTQ+YXKMMCQ7PyQ/WitFKx4vFxchT16CRStIPSY6TSQ6jjhScb33TViCpCROni9VYKzqTlN+qDBZXK3sYi5JXbHyQzNGXLLzTTZOW6/wQC5EX67sNSw7Y67qWa3vLCUzMCo1uc3fXq3rWa/yLCgxSEdKZa7nV6rrWrDyKCEsMzA1aLDpYbLyYbj6SUJgPj5VLy87e8D6csP+c8r/d9L/fNT+esnydLbgcKfOa5vDdJ/MQi5GSjFLTTFOYi9PWS1NUS9OTTFPRzFLSDJMTTBMXjBPaS5NZzBVgTdjczVfbjVhXjVaTjRTQzJMSzRNTzVOTzNLai1ShzJcjjNdiDNeejRhbDVhWzZbSzRRQzFKQjJKUDNMiyxPYy9UlzBfyDBlpjJgcjJbajNfXDVaTDNRPzBHPTBHVDJNrDBZxSpaV1aBajBZkDNipzNjnTNjdDJdYzJcXDRZTzRQPzFHRzJHZTJNcS9MZ2WUcS9VcDNdezRgcjJeezNgZTNaTjNRRDFLQzJJQjNHQjJGWDJLUjJKYoK4cS5NWTFTWzRaWDJVbjRbWDNVSzNQRjJMUTRLSTVHSzRJjjZbfDdZYqXlhEZwVS5MSzRUVTNUczVbTjJRSTNOUDRMSTNLQTJISTNGczZUXjVRWrH0W3+1Ri9OSDJSSzNSTDNTRzJRRzNRSTNNQzJLPzFKPjJGPjFCOSw/W67vTWOORi5NSjJRSzNVTDRURTJRQTBNQTFKQzJKPjFINSw9XKrpSVyIQCxLRS9QRjJSQjJPRzRQUTROQjBFLyc1W6rrS22ePTRVQSxLSjNVSzZYTzZWUTJPOSw+Z778YqPWWnGcV1F/UkZxT0Nm////ch6M6QAAAFp0Uk5TAAAAAAAAAAAAAAAAAAABKH2/3+bIjTgFCm7a/f7nhRILifn9nRJx+v6JBC3b6UV//aPB3OTz5/bL3Y6oNuLuTAGA/ZsIEp79shwRhervmxwFQqDd+frjqksImWc25wAAAAFiS0dEDfa0YfUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEbSURBVBjTARAB7/4AAAABDg8QERITFBUWFwIAAAAAAxgZGhtaW1xdHB0eHwQAAAUgISJeX2BhYmNkZSMkJQYAACYnZmdoaWprbG1ubygpKgArLHBxcnN0dXZ3eHl6ey0uAC8wfH1+f4CBgoOEhYaHiDEAMomKi4yNjo+QkZKSk5SVMwA0lpeYmZqbnJ2en6ChoqM1ADakpaanqKmqq6ytrq+wsTcAOLKztLW2t7i5uru8vb6/OQA6wMHCw8TFxsfIycrLzM07ADw9zs/Q0dLT1NXW19jZPj8AQEFC2tvc3d7U3+Dh4uNDRAAHRUZH5OXm5+jp6uvsSEkIAAAJSktM7e7v8PHyTU5PCgAAAAALUFFSU1RVVldYWQwNAEGXdELuOiRkAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE4LTA1LTE2VDEzOjM2OjI0KzAwOjAwK9TuQgAAACV0RVh0ZGF0ZTptb2RpZnkAMjAxOC0wNS0xNlQxMzozNjoyNCswMDowMFqJVv4AAABGdEVYdHNvZnR3YXJlAEltYWdlTWFnaWNrIDYuNy44LTkgMjAxNC0wNS0xMiBRMTYgaHR0cDovL3d3dy5pbWFnZW1hZ2ljay5vcmfchu0AAAAAGHRFWHRUaHVtYjo6RG9jdW1lbnQ6OlBhZ2VzADGn/7svAAAAGHRFWHRUaHVtYjo6SW1hZ2U6OmhlaWdodAAxOTIPAHKFAAAAF3RFWHRUaHVtYjo6SW1hZ2U6OldpZHRoADE5MtOsIQgAAAAZdEVYdFRodW1iOjpNaW1ldHlwZQBpbWFnZS9wbmc/slZOAAAAF3RFWHRUaHVtYjo6TVRpbWUAMTUyNjQ3Nzc4NGTqj8oAAAAPdEVYdFRodW1iOjpTaXplADBCQpSiPuwAAABWdEVYdFRodW1iOjpVUkkAZmlsZTovLy9tbnRsb2cvZmF2aWNvbnMvMjAxOC0wNS0xNi82ODRlZmQxYzBmMTdmMzAxMjIzMWFmNzQ4YzhmYjJjYy5pY28ucG5nP6GaiQAAAABJRU5ErkJggg==`
                    }
                };
            }
        };
    }).call(this, __webpack_require__(0), __webpack_require__(1), __webpack_require__(3), __webpack_require__(2));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api) {
        __webpack_exports__.a = {
            props: {
                option: {
                    type: String
                }
            },
            computed: {
                value: {
                    get: function() {
                        return api.settings.get(this.option);
                    },
                    set: function(value) {
                        api.settings.set(this.option, value);
                    }
                }
            }
        };
    }).call(this, __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api) {
        __webpack_exports__.a = {
            props: {
                option: {
                    type: String
                },
                min: {
                    type: Number,
                    default: 0
                },
                max: {
                    type: Number,
                    default: 999
                },
                step: {
                    type: Number,
                    default: 1
                }
            },
            computed: {
                value: {
                    get: function() {
                        return api.settings.get(this.option);
                    },
                    set: function(value) {
                        "" !== value && null !== value && value >= this.min && value <= this.max && (api.settings.set(this.option, value), 
                        this.$emit("changed", value));
                    }
                }
            }
        };
    }).call(this, __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api) {
        __webpack_exports__.a = {
            props: {
                option: {
                    type: String
                },
                text: {
                    type: String
                }
            },
            computed: {
                value: {
                    get: function() {
                        return api.settings.get(this.option);
                    },
                    set: function(value) {
                        api.settings.set(this.option, value), this.$emit("changed", value);
                    }
                }
            }
        };
    }).call(this, __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, con) {
        __webpack_exports__.a = {
            props: {
                button: {
                    type: Boolean,
                    default: !0
                }
            },
            methods: {
                type: () => api.type,
                buttonClick() {
                    this.button = !1;
                },
                handleFileUpload(event) {
                    if (con.log("File Found", event), window.FileReader) {
                        var reader = new FileReader;
                        reader.onload = evt => {
                            if (2 == evt.target.readyState) if (evt.target.error) alert("Error while reading file"); else {
                                var filecontent = evt.target.result;
                                this.$emit("upload", filecontent);
                            }
                        }, reader.readAsText(event.target.files[0]);
                    } else alert("Browser is not compatible");
                },
                openWindow(e) {
                    e.preventDefault(), e.stopPropagation();
                    var win = window.open(chrome.extension.getURL("window.html"), "_blank");
                    win ? win.focus() : alert(api.storage.lang("minimalClass_Popup"));
                }
            }
        };
    }).call(this, __webpack_require__(0), __webpack_require__(1));
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(181);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, con) {
        var tempKeysTimeout, _tooltip_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(64), _keyboardMap__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18);
        __webpack_exports__.a = {
            components: {
                tooltip: _tooltip_vue__WEBPACK_IMPORTED_MODULE_0__.a
            },
            data: function() {
                return {
                    keys: {},
                    tempKeys: {}
                };
            },
            props: {
                option: {
                    type: String
                }
            },
            computed: {
                display() {
                    return this.tempRec ? Object.keys(this.tempKeys).map(val => _keyboardMap__WEBPACK_IMPORTED_MODULE_1__.a[val]).join(" + ") : this.rec ? Object.keys(this.keys).map(val => _keyboardMap__WEBPACK_IMPORTED_MODULE_1__.a[val]).join(" + ") : this.value && Object.keys(this.value).length ? Object.keys(this.value).map(val => _keyboardMap__WEBPACK_IMPORTED_MODULE_1__.a[val]).join(" + ") : this.lang("settings_Shortcuts_Click");
                },
                rec() {
                    return Object.keys(this.keys).length;
                },
                tempRec() {
                    return Object.keys(this.tempKeys).length;
                },
                value: {
                    get: function() {
                        var temp = api.settings.get(this.option);
                        if (!temp || !temp.length) return {};
                        for (var rv = {}, i = 0; i < temp.length; ++i) rv[temp[i]] = temp[i];
                        return rv;
                    },
                    set: function(value) {
                        api.settings.set(this.option, Object.keys(value));
                    }
                }
            },
            methods: {
                lang: api.storage.lang,
                keyDown(event) {
                    this.keys[event.keyCode] || con.log("down" + event.keyCode), this.$set(this.keys, event.keyCode, _keyboardMap__WEBPACK_IMPORTED_MODULE_1__.a[event.keyCode]), 
                    this.tempKeys = {};
                },
                keyUp(event) {
                    con.log("up" + event.keyCode), this.setTempState(this.keys), this.$delete(this.keys, event.keyCode);
                },
                focusLost() {
                    this.keys = {};
                },
                setTempState(state) {
                    if (!Object.keys(this.tempKeys).length) {
                        var tempState = Object.assign({}, state);
                        this.tempKeys = tempState, clearTimeout(tempKeysTimeout), tempKeysTimeout = setTimeout(() => {
                            Object.keys(this.keys).length || (this.value = tempState), this.tempKeys = {};
                        }, 500);
                    }
                }
            }
        };
    }).call(this, __webpack_require__(0), __webpack_require__(1));
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(183);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api) {
        var _provider_listFactory__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14);
        __webpack_exports__.a = {
            data: function() {
                return {
                    username: "",
                    listObj: null
                };
            },
            props: {
                option: {
                    type: String
                }
            },
            mounted: function() {
                this.init();
            },
            computed: {
                mode: {
                    get: function() {
                        return api.settings.get(this.option);
                    },
                    set: function(value) {}
                },
                pageName() {
                    return this.listObj ? this.listObj.name : "Loading";
                },
                pageAuth() {
                    return this.listObj ? this.listObj.authenticationUrl : "";
                }
            },
            methods: {
                lang: api.storage.lang,
                init() {
                    return this.username = "", this.listObj = Object(_provider_listFactory__WEBPACK_IMPORTED_MODULE_0__.b)(this.mode), 
                    this.listObj.getUsername().then(username => {
                        this.username = username;
                    });
                }
            },
            watch: {
                mode() {
                    this.init();
                }
            }
        };
    }).call(this, __webpack_require__(0));
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(185);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api) {
        var _components_keyboardMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18);
        __webpack_exports__.a = {
            props: {
                page: {
                    type: Object,
                    default: null
                }
            },
            data: function() {
                return {};
            },
            watch: {},
            mounted: function() {},
            computed: {
                keys: function() {
                    return api.settings.get("correctionShort").map(val => _components_keyboardMap__WEBPACK_IMPORTED_MODULE_0__.a[val]).join(" + ");
                }
            },
            methods: {
                lang: api.storage.lang,
                openPopup: function() {
                    return this.page.openCorrectionUi(), !1;
                }
            }
        };
    }).call(this, __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, api, con) {
        var _provider_provider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9), _provider_MyAnimeList_metadata__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(60), _provider_AniList_metadata__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(61), _provider_Kitsu_metadata__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(62), _provider_Simkl_metadata__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(63);
        __webpack_exports__.a = {
            data: function() {
                return {
                    metaObj: null,
                    error: null,
                    imageTemp: null,
                    mal: {
                        resumeUrl: null,
                        continueUrl: null
                    },
                    kiss2mal: {},
                    related: [],
                    prediction: null,
                    utils: utils
                };
            },
            props: {
                renderObj: {
                    type: Object,
                    default: null
                }
            },
            watch: {
                renderObj: async function(renderObj) {
                    this.render(renderObj);
                }
            },
            computed: {
                editUrl: function() {
                    return void 0 !== this.renderObj.getDetailUrl ? this.renderObj.getDetailUrl() : null;
                },
                malStatus: {
                    get: function() {
                        return this.renderObj && this.renderObj.login ? 0 === this.renderObj.getScore() ? 1 : this.renderObj.getStatus() : null;
                    },
                    set: function(value) {
                        this.renderObj && this.renderObj.login && this.renderObj.setStatus(value);
                    }
                },
                malEpisode: {
                    get: function() {
                        return this.renderObj && this.renderObj.login ? this.renderObj.addAnime ? null : this.renderObj.getEpisode() : null;
                    },
                    set: function(value) {
                        this.renderObj && this.renderObj.login && this.renderObj.setEpisode(value);
                    }
                },
                malVolume: {
                    get: function() {
                        return this.renderObj && this.renderObj.login ? this.renderObj.addAnime ? null : this.renderObj.getVolume() : null;
                    },
                    set: function(value) {
                        this.renderObj && this.renderObj.login && this.renderObj.setVolume(value);
                    }
                },
                malScore: {
                    get: function() {
                        return this.renderObj && this.renderObj.login ? 0 === this.renderObj.getScore() ? "" : this.renderObj.getScore() : null;
                    },
                    set: function(value) {
                        this.renderObj && this.renderObj.login && this.renderObj.setScore(value);
                    }
                },
                statistics: function() {
                    var stats = {};
                    try {
                        stats = this.metaObj.getStatistics();
                    } catch (e) {
                        console.log("[iframeOverview] Error:", e);
                    }
                    return stats;
                },
                displayUrl: function() {
                    return null != this.renderObj ? this.renderObj.getDisplayUrl() : this.renderObj.url;
                },
                image: function() {
                    var image = "";
                    try {
                        image = this.metaObj.getImage();
                    } catch (e) {
                        console.log("[iframeOverview] Error:", e);
                    }
                    try {
                        null !== this.imageTemp && "" !== this.imageTemp && (image = this.imageTemp);
                    } catch (e) {
                        console.log("[iframeOverview] Error:", e);
                    }
                    return image;
                },
                title: function() {
                    var title = "";
                    try {
                        title = this.metaObj.getTitle();
                    } catch (e) {
                        console.log("[iframeOverview] Error:", e);
                    }
                    try {
                        title = this.renderObj.name;
                    } catch (e) {
                        console.log("[iframeOverview] Error:", e);
                    }
                    return title;
                },
                description: function() {
                    var description = "";
                    try {
                        description = this.metaObj.getDescription();
                    } catch (e) {
                        console.log("[iframeOverview] Error:", e);
                    }
                    return description;
                },
                altTitle: function() {
                    var altTitle = {};
                    try {
                        altTitle = this.metaObj.getAltTitle();
                    } catch (e) {
                        console.log("[iframeOverview] Error:", e);
                    }
                    return altTitle;
                },
                streaming: function() {
                    var streamhtml = null, malObj = this.renderObj;
                    if (null == malObj || !malObj.login) return null;
                    var streamUrl = malObj.getStreamingUrl();
                    return void 0 !== streamUrl && (streamhtml = `\n          <div class="data title progress" style="display: inline-block; position: relative; top: 2px; margin-left: -2px;">\n            <a class="stream mdl-button mdl-button--colored mdl-js-button mdl-button--raised" title="${streamUrl.split("/")[2]}" target="_blank" style="margin: 0px 5px; color: white;" href="${streamUrl}">\n              <img src="${utils.favicon(streamUrl.split("/")[2])}" style="padding-bottom: 3px; padding-right: 6px; margin-left: -3px;">${api.storage.lang("overview_Continue_" + malObj.type)}\n            </a>`, 
                    con.log("Resume", this.mal.resumeUrl, "Continue", this.mal.continueUrl), void 0 !== this.mal.continueUrl && this.mal.continueUrl && this.mal.continueUrl.ep === malObj.getEpisode() + 1 ? streamhtml += `<a class="nextStream mdl-button mdl-button--colored mdl-js-button mdl-button--raised" title="${api.storage.lang("overview_Next_Episode_" + malObj.type)}" target="_blank" style="margin: 0px 5px 0px 0px; color: white;" href="${this.mal.continueUrl.url}">\n              <img src="${api.storage.assetUrl("double-arrow-16px.png")}" width="16" height="16" style="padding-bottom: 3px; padding-right: 6px; margin-left: -3px;">${api.storage.lang("overview_Next_Episode_" + malObj.type)}\n            </a>` : void 0 !== this.mal.resumeUrl && this.mal.resumeUrl && this.mal.resumeUrl.ep === malObj.getEpisode() && (streamhtml += `<a class="resumeStream mdl-button mdl-button--colored mdl-js-button mdl-button--raised" title="${api.storage.lang("overview_Resume_Episode_" + malObj.type)}" target="_blank" style="margin: 0px 5px 0px 0px; color: white;" href="${this.mal.resumeUrl.url}">\n              <img src="${api.storage.assetUrl("arrow-16px.png")}" width="16" height="16" style="padding-bottom: 3px; padding-right: 6px; margin-left: -3px;">${api.storage.lang("overview_Resume_Episode_" + malObj.type)}\n            </a>`), 
                    streamhtml += "</div>\n        "), streamhtml;
                },
                characters: function() {
                    var char = {};
                    try {
                        char = this.metaObj.getCharacters();
                    } catch (e) {
                        console.log("[iframeOverview] Error:", e);
                    }
                    return char;
                },
                info: function() {
                    var info = {};
                    try {
                        info = this.metaObj.getInfo();
                    } catch (e) {
                        console.log("[iframeOverview] Error:", e);
                    }
                    return info;
                },
                openingSongs: function() {
                    var opening = {};
                    try {
                        opening = this.metaObj.getOpeningSongs();
                    } catch (e) {
                        console.log("[iframeOverview] Error:", e);
                    }
                    return opening;
                },
                endingSongs: function() {
                    var ending = {};
                    try {
                        ending = this.metaObj.getEndingSongs();
                    } catch (e) {
                        console.log("[iframeOverview] Error:", e);
                    }
                    return ending;
                }
            },
            methods: {
                lang: api.storage.lang,
                render: async function(renderObj) {
                    if (this.metaObj = null, this.error = null, this.mal.resumeUrl = null, this.mal.continueUrl = null, 
                    this.kiss2mal = {}, this.related = [], this.prediction = null, this.imageTemp = null, 
                    null != renderObj) {
                        var syncMode = api.settings.get("syncMode");
                        "SIMKL" === syncMode && "manga" === renderObj.type && (syncMode = api.settings.get("syncModeSimkl"));
                        try {
                            /^local:\/\//i.test(renderObj.url) ? this.metaObj = {} : "ANILIST" === syncMode ? this.metaObj = await new _provider_AniList_metadata__WEBPACK_IMPORTED_MODULE_2__.a(renderObj.url).init() : "KITSU" === syncMode ? this.metaObj = await new _provider_Kitsu_metadata__WEBPACK_IMPORTED_MODULE_3__.a(renderObj.url).init() : "SIMKL" === syncMode ? this.metaObj = await new _provider_Simkl_metadata__WEBPACK_IMPORTED_MODULE_4__.a(renderObj.url).init() : null !== renderObj.getMalUrl() && (this.metaObj = await new _provider_MyAnimeList_metadata__WEBPACK_IMPORTED_MODULE_1__.a(renderObj.getMalUrl()).init());
                        } catch (e) {
                            return con.error("Could not retrive metadata", e), void (this.error = e);
                        }
                        null !== this.metaObj && (this.related = this.getRelated()), null !== renderObj.getMalUrl() && (renderObj.login && this.updateStatusTags(), 
                        renderObj.getMalUrl().split("").length > 3 && utils.getMalToKissArray(renderObj.type, renderObj.id).then(links => {
                            this.kiss2mal = links;
                        })), void 0 !== this.renderObj.renderNoImage && this.renderObj.renderNoImage || (this.imageTemp = await this.renderObj.getImage()), 
                        this.mal.resumeUrl = await renderObj.getResumeWaching(), this.mal.continueUrl = await renderObj.getContinueWaching(), 
                        utils.epPredictionUI(renderObj.id, renderObj.getCacheKey(), renderObj.type, prediction => {
                            this.prediction = prediction;
                        });
                    }
                },
                clickRender: function() {
                    this.render(this.renderObj);
                },
                malSync: function() {
                    this.renderObj.sync().then((function() {
                        utils.flashm("Updated");
                    }), (function() {
                        utils.flashm("Update failed", {
                            error: !0
                        });
                    }));
                },
                remove: function() {
                    this.renderObj.delete().then(() => {
                        utils.flashm("Removed"), this.renderObj.update();
                    }, () => {
                        utils.flashm("Removing failed", {
                            error: !0
                        }), this.renderObj.update();
                    });
                },
                reload: function() {
                    utils.flashm("Loading"), this.renderObj.update();
                },
                getMal2KissFavicon: function(streams) {
                    try {
                        return utils.favicon(streams[Object.keys(streams)[0]].url.split("/")[2]);
                    } catch (e) {
                        return con.error(e), "";
                    }
                },
                getRelated: function() {
                    var related = {};
                    try {
                        related = this.metaObj.getRelated();
                    } catch (e) {
                        console.log("[iframeOverview] Error:", e);
                    }
                    return related;
                },
                updateStatusTags: async function() {
                    for (var relatedKey in this.related) {
                        var relate = this.related[relatedKey];
                        for (var linkKey in relate.links) {
                            var link = relate.links[linkKey], url = utils.absoluteLink(link.url, "https://myanimelist.net");
                            if (void 0 !== url) {
                                var tag = await utils.timeCache("MALTAG/" + url, (async function() {
                                    var malObj = Object(_provider_provider__WEBPACK_IMPORTED_MODULE_0__.a)(url, !0, !0);
                                    return await malObj.init(), utils.statusTag(malObj.getStatus(), malObj.type, malObj.id);
                                }), 36e5);
                                tag && (this.related[relatedKey].links[linkKey].statusTag = tag);
                            }
                        }
                    }
                }
            }
        };
    }).call(this, __webpack_require__(2), __webpack_require__(0), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, api) {
        __webpack_require__(9);
        __webpack_exports__.a = {
            data: function() {
                return {
                    xhr: ""
                };
            },
            props: {
                url: {
                    type: String,
                    default: ""
                },
                state: {
                    type: Boolean,
                    default: !1
                }
            },
            updated: function() {
                var minimal = j.$(this.$el);
                minimal.find(".js-similar-recommendations-button").addClass("nojs").click((function() {
                    j.$(this).parent().find(".more").toggle();
                })), minimal.find(".js-toggle-recommendation-button").addClass("nojs").click((function() {
                    var revID = j.$(this).attr("data-id");
                    minimal.find("#recommend" + revID).css("display", "initial"), j.$(this).remove();
                })), minimal.find("#malRecommendations .more .borderClass").addClass("mdl-shadow--2dp").css("padding", "10px"), 
                minimal.find(".lazyload").each((function() {
                    j.$(this).attr("src", j.$(this).attr("data-src"));
                }));
            },
            watch: {
                url: async function(url) {
                    this.xhr = "", this.state && api.request.xhr("GET", this.url + "/userrecs").then(response => {
                        this.xhr = response.responseText;
                    });
                },
                state: async function(state) {
                    state && "" === this.xhr && api.request.xhr("GET", this.url + "/userrecs").then(response => {
                        this.xhr = response.responseText;
                    });
                }
            },
            computed: {
                recommendations: function() {
                    try {
                        var recommendationsBlock = this.xhr.split("Make a recommendation</a>")[1].split("</h2>")[1].split('<div class="mauto')[0], htmlT = j.$.parseHTML(recommendationsBlock), recommendationsHtml = "";
                        j.$.each(j.$(htmlT).filter(".borderClass"), (index, value) => {
                            recommendationsHtml += '<div class="mdl-cell bg-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp mdl-grid">', 
                            recommendationsHtml += '<div class="mdl-card__media" style="background-color: transparent; margin: 8px;">', 
                            recommendationsHtml += j.$(value).find(".picSurround").html(), recommendationsHtml += "</div>", 
                            recommendationsHtml += '<div class="mdl-cell" style="flex-grow: 100;">', recommendationsHtml += '<div class="">', 
                            j.$(value).find(".button_edit, .button_add, td:eq(1) > div:eq(1) span").remove(), 
                            recommendationsHtml += j.$(value).find("td:eq(1) > div:eq(1)").html(), recommendationsHtml += "</div>", 
                            recommendationsHtml += '<div class="">', j.$(value).find('a[href^="/dbchanges.php?go=report"]').remove(), 
                            recommendationsHtml += j.$(value).find(".borderClass").html(), recommendationsHtml += "</div>", 
                            recommendationsHtml += '<div class="">', recommendationsHtml += void 0 !== j.$(value).find(".spaceit").html() ? j.$(value).find(".spaceit").html() : "", 
                            recommendationsHtml += '<div class="more" style="display: none;">', recommendationsHtml += j.$(value).find("td:eq(1) > div").last().html(), 
                            recommendationsHtml += "</div>", recommendationsHtml += "</div>", recommendationsHtml += "</div>", 
                            recommendationsHtml += "</div>";
                        }), recommendationsHtml += "";
                    } catch (e) {
                        console.log("[iframeRecommendations] Error:", e);
                    }
                    return recommendationsHtml;
                }
            },
            methods: {
                lang: api.storage.lang
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, api, con) {
        var cb, _provider_listFactory__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14), _bookmarksItem_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(171);
        __webpack_exports__.a = {
            components: {
                bookmarksItem: _bookmarksItem_vue__WEBPACK_IMPORTED_MODULE_1__.a
            },
            data: function() {
                return {
                    items: [],
                    loading: !0,
                    errorText: null,
                    cache: !1
                };
            },
            props: {
                listType: {
                    type: String,
                    default: "anime"
                },
                state: {
                    type: Number,
                    default: 1
                }
            },
            mounted: function() {
                this.load(), this.$parent.registerScroll("books", this.handleScroll);
            },
            activated: function() {
                this.$nextTick(() => {
                    j.$(this.$el).closest("html").find("head").click();
                });
            },
            deactivated: function() {
                this.$parent.unregisterScroll("books");
            },
            watch: {
                listType: function(type) {
                    this.load();
                },
                state: function(state) {
                    this.load();
                }
            },
            methods: {
                lang: api.storage.lang,
                load: async function() {
                    this.loading = !0, this.cache = !0, this.errorText = null, cb = void 0;
                    var listProvider = await Object(_provider_listFactory__WEBPACK_IMPORTED_MODULE_0__.a)(this.state, this.listType), listError = e => {
                        con.error(e), this.errorText = listProvider.errorMessage(e), this.loading = !1;
                    };
                    listProvider.modes.cached = !0, listProvider.getCached().then(list => {
                        this.items = list;
                    }), 1 !== this.state && "1" !== this.state ? (listProvider.callbacks = {
                        continueCall: list => {
                            if (this.loading = !1, this.cache = !1, this.items = list, !listProvider.isDone()) return new Promise(resolve => {
                                cb = () => {
                                    resolve();
                                };
                            });
                        }
                    }, listProvider.get().catch(listError)) : (listProvider.modes.sortAiring = !0, listProvider.get().then(list => {
                        this.loading = !1, this.cache = !1, this.items = list;
                    }).catch(listError));
                },
                handleScroll: function(pos) {
                    pos.pos + pos.elHeight + 1e3 > pos.height && void 0 !== cb && (this.loading = !0, 
                    cb(), cb = void 0);
                }
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(0), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, api) {
        __webpack_require__(9);
        __webpack_exports__.a = {
            data: function() {
                return {
                    prediction: void 0,
                    resumeUrl: null,
                    continueUrl: null
                };
            },
            props: {
                item: {
                    type: Object
                }
            },
            mounted: async function() {
                if (void 0 === this.item.resume) {
                    var resumeUrl = null, continueUrl = null, type = (this.item.malId, this.item.type), resumeUrlObj = await utils.getResumeWaching(type, this.item.cacheKey), continueUrlObj = await utils.getContinueWaching(type, this.item.cacheKey), curEp = parseInt(this.item.watchedEp.toString());
                    void 0 !== continueUrlObj && continueUrlObj.ep === curEp + 1 ? continueUrl = continueUrlObj.url : void 0 !== resumeUrlObj && resumeUrlObj.ep === curEp && (resumeUrl = resumeUrlObj.url), 
                    this.resumeUrl = resumeUrl, this.continueUrl = continueUrl;
                }
                void 0 === this.prediction && (this.setPrediction(), setInterval(() => {
                    this.setPrediction();
                }, 6e4));
            },
            watch: {},
            computed: {
                imageHi: function() {
                    var imageHi = this.item.image, regexDimensions = /\/r\/\d*x\d*/g;
                    return regexDimensions.test(imageHi) && (imageHi = imageHi.replace(/v.jpg$/g, ".jpg").replace(regexDimensions, "")), 
                    imageHi;
                },
                barTotal: function() {
                    return this.prediction && this.prediction.tagEpisode && !this.hasTotalEp ? this.prediction.tagEpisode > this.item.watchedEp ? Math.ceil(1.2 * this.prediction.tagEpisode) : Math.ceil(1.2 * this.item.watchedEp) : this.item.totalEp;
                },
                hasTotalEp: function() {
                    return 0 !== parseInt(this.item.totalEp);
                },
                progress: function() {
                    return "width: " + this.item.watchedEp / this.barTotal * 100 + "%; max-width: 100%;";
                },
                predictionBar: function() {
                    var predictionProgress = this.prediction.tagEpisode / this.barTotal * 100, color = "orange";
                    return "" !== this.prediction.color && (color = this.prediction.color), "width: " + predictionProgress + "%; background-color: " + color;
                },
                streamUrl: function() {
                    return utils.getUrlFromTags(this.item.tags);
                },
                preTexter: function() {
                    var pre = this.prediction.prediction, diffDays = pre.diffDays, diffHours = pre.diffHours, diffMinutes = pre.diffMinutes;
                    diffDays > 1 && diffHours > 12 && diffDays++;
                    var text = "";
                    return diffDays > 1 ? text + diffDays + " " + api.storage.lang("bookmarksItem_Days") : (1 === diffDays && (text += diffDays + " " + api.storage.lang("bookmarksItem_Day") + " "), 
                    diffHours > 1 ? text + diffHours + " " + api.storage.lang("bookmarksItem_Hours") : (1 === diffHours && (text += diffHours + " " + api.storage.lang("bookmarksItem_Hour") + " "), 
                    text + diffMinutes + " " + api.storage.lang("bookmarksItem_mins")));
                }
            },
            methods: {
                lang: api.storage.lang,
                favicon: function(domain) {
                    return utils.favicon(domain);
                },
                assetUrl: function(asset) {
                    return api.storage.assetUrl(asset);
                },
                setPrediction: function() {
                    utils.epPredictionUI(this.item.malId, this.item.cacheKey, this.item.type, prediction => {
                        this.prediction = prediction;
                    });
                }
            }
        };
    }).call(this, __webpack_require__(2), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, api) {
        var _provider_provider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
        __webpack_exports__.a = {
            components: {},
            data: function() {
                return {
                    items: [],
                    loading: !0
                };
            },
            props: {
                type: {
                    type: String,
                    default: "anime"
                },
                keyword: {
                    type: String,
                    default: ""
                }
            },
            mounted: function() {
                this.load();
            },
            activated: function() {
                this.$nextTick(() => {
                    j.$(this.$el).closest("html").find("head").click();
                });
            },
            watch: {
                keyword: function(type) {
                    this.load();
                },
                type: function(type) {
                    this.load();
                }
            },
            methods: {
                lang: api.storage.lang,
                load: function() {
                    this.loading = !0, Object(_provider_provider__WEBPACK_IMPORTED_MODULE_0__.b)(this.keyword, this.type).then(items => {
                        this.loading = !1, this.items = items;
                    });
                },
                clickItem: function(e, item) {
                    e.preventDefault(), this.$emit("clicked", item);
                }
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, con, utils) {
        var interva, _provider_listFactory__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14);
        __webpack_exports__.a = {
            data: function() {
                return {
                    items: [],
                    history: []
                };
            },
            props: {
                listType: {
                    type: String,
                    default: "anime"
                }
            },
            mounted: function() {
                this.load(), interva = setInterval(() => {
                    this.load();
                }, 5e3);
            },
            destroyed: function() {
                clearInterval(interva);
            },
            watch: {
                listType: function(type) {
                    this.load();
                }
            },
            methods: {
                lang: api.storage.lang,
                load: async function() {
                    var listProvider = await Object(_provider_listFactory__WEBPACK_IMPORTED_MODULE_0__.a)(1, this.listType);
                    listProvider.get().then(async list => {
                        for (var i = 0; i < list.length; i++) {
                            var el = list[i], episode = "", error = "", trColor = "";
                            con.log("el", el);
                            var elCache = await api.storage.get("updateCheck/" + this.listType + "/" + el.cacheKey);
                            con.log("elCache", elCache), void 0 !== elCache && (episode = elCache.newestEp + "/" + el.totalEp, 
                            trColor = "orange", elCache.finished && (error = "finished", trColor = "green"), 
                            void 0 !== elCache.error && (error = elCache.error, trColor = "red")), el.episode = episode, 
                            el.trColor = trColor, el.error = error;
                        }
                        this.items = list;
                    }).catch(e => {
                        con.error(e), listProvider.flashmError(e);
                    }), api.storage.get("notificationHistory").then(history => {
                        history.forEach(entry => {
                            var timeDiff = Date.now() - entry.timestamp;
                            timeDiff = utils.timeDiffToText(timeDiff), timeDiff += "ago", entry.timeDiff = timeDiff;
                        }), this.history = history.reverse();
                    });
                },
                deleteItem(item) {
                    var delPath = "updateCheck/" + this.listType + "/" + item.cacheKey;
                    con.log("delete", delPath, item), api.storage.remove(delPath), item.trColor = "black";
                },
                notificationTest() {
                    utils.notifications("https://malsync.lolamtisch.de/", "MyAnimeList-Sync", "by lolamtisch", "https://cdn.myanimelist.net/images/anime/5/65187.jpg");
                },
                startCheck() {
                    chrome.alarms.create("updateCheckNow", {
                        when: Date.now() + 1e3
                    }), utils.flashm("Check started");
                }
            }
        };
    }).call(this, __webpack_require__(0), __webpack_require__(1), __webpack_require__(2));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api) {
        var _syncHandler_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11);
        __webpack_exports__.a = {
            data: function() {
                return {
                    listProvider: {
                        mal: {
                            text: "Init",
                            list: null,
                            master: !1
                        },
                        anilist: {
                            text: "Init",
                            list: null,
                            master: !1
                        },
                        kitsu: {
                            text: "Init",
                            list: null,
                            master: !1
                        },
                        simkl: {
                            text: "Init",
                            list: null,
                            master: !1
                        }
                    },
                    listReady: !1,
                    listLength: 0,
                    list: {},
                    missing: [],
                    isBackgroundEnabled: !1
                };
            },
            props: {
                listType: {
                    type: String,
                    default: "anime"
                }
            },
            mounted: async function() {
                _syncHandler_ts__WEBPACK_IMPORTED_MODULE_0__.a.isEnabled().then(state => {
                    this.isBackgroundEnabled = state;
                });
                var type = this.listType, providerList = _syncHandler_ts__WEBPACK_IMPORTED_MODULE_0__.d({
                    mal: this.listProvider.mal,
                    anilist: this.listProvider.anilist,
                    kitsu: this.listProvider.kitsu,
                    simkl: this.listProvider.simkl
                }), listOptions = await _syncHandler_ts__WEBPACK_IMPORTED_MODULE_0__.f(providerList, type, api, _syncHandler_ts__WEBPACK_IMPORTED_MODULE_0__.c);
                _syncHandler_ts__WEBPACK_IMPORTED_MODULE_0__.b(listOptions.master, listOptions.slaves, "mirror", listOptions.typeArray, this.list, this.missing), 
                this.list = Object.assign({}, this.list), this.listReady = !0;
            },
            destroyed: function() {},
            watch: {},
            computed: {
                listSyncLength: function() {
                    return Object.values(this.list).filter(el => el.diff).length;
                }
            },
            methods: {
                lang: api.storage.lang,
                getType: _syncHandler_ts__WEBPACK_IMPORTED_MODULE_0__.e,
                apiType: function() {
                    return api.type;
                },
                getTypeColor: function(type) {
                    return "ANILIST" == type ? "border-left: 5px solid #02a9ff" : "KITSU" == type ? "border-left: 5px solid #f75239" : "SIMKL" == type ? "border-left: 5px solid #ffbf00" : "border-left: 5px solid #2e51a2";
                },
                syncList: async function() {
                    this.listReady = !1, this.listLength = this.listSyncLength, _syncHandler_ts__WEBPACK_IMPORTED_MODULE_0__.g(this.list, this.missing);
                },
                backgroundClick: async function() {
                    await _syncHandler_ts__WEBPACK_IMPORTED_MODULE_0__.a.isEnabled() ? (_syncHandler_ts__WEBPACK_IMPORTED_MODULE_0__.a.disable(), 
                    this.isBackgroundEnabled = !1) : (_syncHandler_ts__WEBPACK_IMPORTED_MODULE_0__.a.enable(), 
                    this.isBackgroundEnabled = !0);
                }
            }
        };
    }).call(this, __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, utils, con) {
        var _provider_provider_ts__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9), _provider_listFactory__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
        async function cleanTags(url) {
            var entryClass = new _provider_provider_ts__WEBPACK_IMPORTED_MODULE_0__.a(url, !0, !0);
            return entryClass.init().then(() => (entryClass.setStreamingUrl(""), entryClass.sync()));
        }
        function getList(type) {
            var listProvider = Object(_provider_listFactory__WEBPACK_IMPORTED_MODULE_1__.c)(7, type);
            return listProvider.get().then(list => list).catch(e => {
                throw con.error(e), listProvider.errorMessage(e);
            });
        }
        __webpack_exports__.a = {
            data: function() {
                return {
                    animeLoading: !1,
                    animelist: null,
                    animelistLength: null,
                    mangaLoading: !1,
                    mangalist: null,
                    mangalistLength: null
                };
            },
            props: {},
            mounted: async function() {},
            destroyed: function() {},
            watch: {},
            computed: {},
            methods: {
                lang: api.storage.lang,
                cleanTags: function() {
                    this.animeLoading = !0, getList("anime").then(async list => {
                        for (this.animelist = list, this.animelistLength = this.animelist.length; this.animelist.length; ) {
                            var anime = this.animelist.pop(), streamUrl = utils.getUrlFromTags(anime.tags);
                            void 0 !== streamUrl && (console.log(streamUrl), await cleanTags(anime.url));
                        }
                    }).then(() => getList("manga")).then(async list => {
                        for (this.mangalist = list, this.mangalistLength = this.mangalist.length; this.mangalist.length; ) {
                            var manga = this.mangalist.pop();
                            void 0 !== utils.getUrlFromTags(manga.tags) && await cleanTags(manga.url);
                        }
                    });
                }
            }
        };
    }).call(this, __webpack_require__(0), __webpack_require__(2), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, api) {
        __webpack_require__(9);
        __webpack_exports__.a = {
            data: function() {
                return {
                    xhr: ""
                };
            },
            props: {
                url: {
                    type: String,
                    default: ""
                },
                state: {
                    type: Boolean,
                    default: !1
                }
            },
            updated: function() {
                var minimal = j.$(this.$el);
                minimal.find(".js-toggle-review-button").addClass("nojs").click((function() {
                    var revID = j.$(this).attr("data-id");
                    minimal.find("#review" + revID).css("display", "initial"), minimal.find("#revhelp_output_" + revID).remove(), 
                    j.$(this).remove();
                })), minimal.find(".mb8 a").addClass("nojs").click((function() {
                    var revID = j.$(this).attr("onclick").split("j.$('")[1].split("'")[0];
                    minimal.find(revID).toggle();
                }));
            },
            watch: {
                url: async function(url) {
                    this.xhr = "", this.state && api.request.xhr("GET", this.url + "/reviews").then(response => {
                        this.xhr = response.responseText;
                    });
                },
                state: async function(state) {
                    state && "" === this.xhr && api.request.xhr("GET", this.url + "/reviews").then(response => {
                        this.xhr = response.responseText;
                    });
                }
            },
            computed: {
                reviews: function() {
                    var html = "";
                    try {
                        var reviews = this.xhr.split("Reviews</h2>")[1].split("<h2>")[0], reviewsData = j.$.parseHTML(reviews), reviewsHtml = "";
                        j.$.each(j.$(reviewsData).filter(".borderDark"), (index, value) => {
                            reviewsHtml += '<div class="mdl-cell bg-cell mdl-cell--12-col mdl-shadow--4dp">', 
                            reviewsHtml += '<div class="mdl-card__supporting-text mdl-card--border" style="color: black;">', 
                            j.$(value).find(".spaceit > div").css("max-width", "60%"), reviewsHtml += j.$(value).find(".spaceit").first().html(), 
                            reviewsHtml += "</div>", reviewsHtml += '<div class="mdl-card__supporting-text" style="color: black;">', 
                            j.$(value).find(".textReadability, .textReadability > span").contents().filter((function() {
                                return 3 === this.nodeType && j.$.trim(this.nodeValue).length;
                            })).wrap('<p style="margin:0;padding=0;"/>'), j.$(value).find("br").css("line-height", "10px"), 
                            reviewsHtml += j.$(value).find(".textReadability").html(), reviewsHtml += "</div>", 
                            reviewsHtml += "</div>";
                        }), html = reviewsHtml += "";
                    } catch (e) {
                        console.log("[iframeReview] Error:", e);
                    }
                    return html;
                }
            },
            methods: {
                lang: api.storage.lang
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, utils) {
        var _components_search_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(161), _components_inputButton_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(159), _components_entry_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(160);
        __webpack_exports__.a = {
            components: {
                entry: _components_entry_vue__WEBPACK_IMPORTED_MODULE_2__.a,
                inputButton: _components_inputButton_vue__WEBPACK_IMPORTED_MODULE_1__.a,
                search: _components_search_vue__WEBPACK_IMPORTED_MODULE_0__.a
            },
            data: () => ({
                inputOffset: 0
            }),
            computed: {
                searchClass: function() {
                    return this.$parent.searchClass;
                },
                syncPage: function() {
                    return this.$parent.searchClass.getSyncPage();
                },
                currentStateEp: function() {
                    if (this.syncPage && this.syncPage.curState && this.syncPage.curState.episode) return this.syncPage.curState.episode;
                },
                syncMode: function() {
                    return this.$parent.syncMode;
                },
                offset: function() {
                    return this.searchClass.getOffset();
                }
            },
            methods: {
                lang: api.storage.lang,
                setPage: function(url, id = 0) {
                    this.searchClass.setUrl(url, id), utils.flashm(api.storage.lang("correction_NewUrl", [ url ]), !1), 
                    this.close();
                },
                setOffset: function(offset) {
                    this.searchClass.setOffset(offset);
                },
                close: function() {
                    this.$root.$destroy();
                },
                calcEpOffset: function(ep) {
                    return parseInt(ep) - parseInt(this.inputOffset);
                }
            }
        };
    }).call(this, __webpack_require__(0), __webpack_require__(2));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api) {
        var searchTimeout, _provider_provider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
        __webpack_exports__.a = {
            components: {},
            data: function() {
                return {
                    items: [],
                    loading: !1,
                    searchKeyword: ""
                };
            },
            props: {
                type: {
                    type: String,
                    default: "anime"
                },
                keyword: {
                    type: String,
                    default: ""
                },
                syncMode: {
                    type: Boolean,
                    default: !1
                },
                currentId: {
                    type: Number,
                    default: 0
                }
            },
            mounted: function() {
                this.syncMode && (this.searchKeyword = this.keyword, this.load());
            },
            watch: {
                keyword: function(type) {
                    this.searchKeyword = this.keyword, this.load();
                },
                searchKeyword: function(type) {
                    clearTimeout(searchTimeout), searchTimeout = setTimeout(() => {
                        this.load();
                    }, 200);
                },
                type: function(type) {
                    this.load();
                }
            },
            methods: {
                lang: api.storage.lang,
                load: function() {
                    this.searchKeyword && (this.loading = !0, Object(_provider_provider__WEBPACK_IMPORTED_MODULE_0__.b)(this.searchKeyword, this.type).then(items => {
                        this.loading = !1, this.items = items, this.$nextTick(() => {
                            this.$el.scrollIntoView({
                                behavior: "smooth"
                            });
                        });
                    }));
                },
                inputFocus: function() {
                    this.searchKeyword || (this.searchKeyword = this.keyword);
                },
                clickItem: async function(e, item) {
                    if (e.preventDefault(), item) {
                        var url = await item.malUrl();
                        url ? this.$emit("clicked", {
                            url: url,
                            id: item.id
                        }) : this.$emit("clicked", {
                            url: item.url,
                            id: item.id
                        });
                    } else this.$emit("clicked", {
                        url: "",
                        id: 0
                    });
                }
            }
        };
    }).call(this, __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api) {
        __webpack_exports__.a = {
            data: function() {
                return {
                    inputString: ""
                };
            },
            props: {
                state: {
                    type: String | Number,
                    default: ""
                },
                type: {
                    type: String,
                    default: ""
                },
                label: {
                    type: String,
                    default: ""
                }
            },
            mounted: function() {
                this.inputString = this.state;
            },
            watch: {
                state: function(type) {
                    this.inputString = this.state;
                },
                inputString: function(val) {
                    this.$emit("change", this.inputString);
                }
            },
            methods: {
                lang: api.storage.lang,
                click: function() {
                    this.$emit("clicked", this.inputString);
                }
            }
        };
    }).call(this, __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, utils) {
        __webpack_exports__.a = {
            data: function() {
                return {
                    image: ""
                };
            },
            props: {
                obj: {
                    type: Object,
                    default: void 0
                }
            },
            mounted: function() {},
            computed: {
                status: {
                    get: function() {
                        return this.obj && this.obj.login ? 0 === this.obj.getScore() ? 1 : this.obj.getStatus() : null;
                    },
                    set: function(value) {
                        this.obj && this.obj.login && this.obj.setStatus(value);
                    }
                },
                episode: {
                    get: function() {
                        return this.obj && this.obj.login ? this.obj.addAnime ? null : this.obj.getEpisode() : null;
                    },
                    set: function(value) {
                        this.obj && this.obj.login && this.obj.setEpisode(value);
                    }
                },
                volume: {
                    get: function() {
                        return this.obj && this.obj.login ? this.obj.addAnime ? null : this.obj.getVolume() : null;
                    },
                    set: function(value) {
                        this.obj && this.obj.login && this.obj.setVolume(value);
                    }
                },
                score: {
                    get: function() {
                        return this.obj && this.obj.login ? 0 === this.obj.getScore() ? "" : this.obj.getScore() : null;
                    },
                    set: function(value) {
                        this.obj && this.obj.login && this.obj.setScore(value);
                    }
                }
            },
            watch: {
                obj: {
                    deep: !0,
                    immediate: !0,
                    handler(val, oldVal) {
                        if (!oldVal || oldVal.url !== val.url) {
                            var tempUrl = val.url;
                            val.getImage().then(img => {
                                this.obj.url === tempUrl && (this.image = img);
                            });
                        }
                    }
                }
            },
            methods: {
                lang: api.storage.lang,
                utilsepisode: utils.episode,
                statusText: function(state) {
                    switch (state) {
                      case 1:
                        return api.storage.lang("UI_Status_watching_" + this.obj.type);

                      case 2:
                        return api.storage.lang("UI_Status_Completed");

                      case 3:
                        return api.storage.lang("UI_Status_OnHold");

                      case 4:
                        return api.storage.lang("UI_Status_Dropped");

                      case 6:
                        return api.storage.lang("UI_Status_planTo_" + this.obj.type);

                      default:
                        return "";
                    }
                }
            }
        };
    }).call(this, __webpack_require__(0), __webpack_require__(2));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, utils, con) {
        __webpack_exports__.a = {
            data: () => ({
                streamUrl: void 0,
                continueUrl: null,
                resumeUrl: null,
                links: null,
                pageSearch: null,
                classes: {
                    minimized: !0,
                    search: !1
                }
            }),
            created: function() {
                var classes = JSON.parse(localStorage.getItem("SIMKL-MAL-SYNC"));
                classes && (this.classes = classes);
            },
            watch: {
                streamUrl: function(url, oldUrl) {
                    url && (this.classes.minimized = !0, this.classes.search = !1);
                }
            },
            methods: {
                lang: api.storage.lang,
                favicon: utils.favicon,
                assetUrl: api.storage.assetUrl,
                getMal2KissFavicon: function(streams) {
                    try {
                        return utils.favicon(streams[Object.keys(streams)[0]].url.split("/")[2]);
                    } catch (e) {
                        return con.error(e), "";
                    }
                },
                toggleSearch: function() {
                    this.classes.search = !this.classes.search, this.saveClasses();
                },
                pressMinimized: function() {
                    null === this.links || Object.keys(this.links).length ? this.toggleMinimized() : this.toggleSearch(), 
                    this.saveClasses();
                },
                toggleMinimized: function() {
                    this.classes.minimized = !this.classes.minimized, this.classes.search && this.classes.minimized && this.toggleSearch(), 
                    this.saveClasses();
                },
                removeSource: function(key) {
                    api.settings.set(key, !1), this.$delete(this.links, key);
                },
                saveClasses: function() {
                    localStorage.setItem("SIMKL-MAL-SYNC", JSON.stringify(this.classes));
                }
            }
        };
    }).call(this, __webpack_require__(0), __webpack_require__(2), __webpack_require__(1));
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(320);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    __webpack_require__.d(__webpack_exports__, "a", (function() {
        return simkl;
    }));
    const simkl = {
        shortName: "Simkl",
        score: "Simkl Score:",
        noLogin: 'Please Authenticate <a target="_blank" href="https://simkl.com/oauth/authorize?response_type=code&client_id=39e8640b6f1a60aaf60f3f3313475e830517badab8048a4e52ff2d10deb2b9b0&redirect_uri=https://simkl.com/apps/chrome/mal-sync/connected/">Here</a>'
    };
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, j, utils) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return metadata;
        })), __webpack_require__.d(__webpack_exports__, "b", (function() {
            return search;
        }));
        class metadata {
            constructor(malUrl) {
                return this.malUrl = malUrl, this.xhr = "", this;
            }
            init() {
                return api.request.xhr("GET", this.malUrl).then(response => (this.xhr = response.responseText, 
                this));
            }
            getTitle() {
                var title = "";
                try {
                    title = this.xhr.split('itemprop="name">')[1].split("<")[0];
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return title;
            }
            getDescription() {
                var description = "";
                try {
                    description = this.xhr.split('itemprop="description">')[1].split("</span")[0];
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return description;
            }
            getImage() {
                var image = "";
                try {
                    image = this.xhr.split("js-scrollfix-bottom")[1].split('data-src="')[1].split('"')[0];
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return image;
            }
            getAltTitle() {
                var altTitle = [];
                try {
                    var tempHtml = j.$.parseHTML("<div>" + this.xhr.split("<h2>Alternative Titles</h2>")[1].split("<h2>")[0] + "</div>");
                    altTitle = j.$(tempHtml).find(".spaceit_pad").toArray().map((function(i) {
                        return utils.getBaseText(j.$(i)).trim();
                    }));
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return altTitle;
            }
            getCharacters() {
                var charArray = [];
                try {
                    var characterBlock = this.xhr.split("detail-characters-list")[1].split("</h2>")[0], charHtml = j.$.parseHTML('<div class="detail-characters-list ' + characterBlock);
                    j.$.each(j.$(charHtml).find(":not(td) > table"), (index, value) => {
                        index || 1;
                        var regexDimensions = /\/r\/\d*x\d*/g, charImg = j.$(value).find("img").first().attr("data-src");
                        charImg = regexDimensions.test(charImg) ? charImg.replace(regexDimensions, "") : api.storage.assetUrl("questionmark.gif"), 
                        charImg = utils.handleMalImages(charImg), charArray.push({
                            img: charImg,
                            html: j.$(value).find(".borderClass .spaceit_pad").first().parent().html()
                        });
                    });
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return charArray;
            }
            getStatistics() {
                var stats = [];
                try {
                    var statsBlock = this.xhr.split("<h2>Statistics</h2>")[1].split("<h2>")[0], tempHtml = j.$.parseHTML(statsBlock);
                    j.$.each(j.$(tempHtml).filter("div").slice(0, 5), (function(index, value) {
                        var title = j.$(value).find(".dark_text").text(), body = null != j.$(value).find("span[itemprop=ratingValue]").height() ? j.$(value).find("span[itemprop=ratingValue]").text() : j.$(value).clone().children().remove().end().text();
                        stats.push({
                            title: title,
                            body: body.trim()
                        });
                    }));
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return stats;
            }
            getInfo() {
                var html = [];
                try {
                    var infoBlock = this.xhr.split("<h2>Information</h2>")[1].split("<h2>")[0], infoData = j.$.parseHTML(infoBlock);
                    j.$.each(j.$(infoData).filter("div"), (index, value) => {
                        var title = j.$(value).find(".dark_text").text();
                        j.$(value).find(".dark_text").remove(), html.push({
                            title: title.trim(),
                            body: j.$(value).html().trim()
                        });
                    }), this.getExternalLinks(html);
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return html;
            }
            getExternalLinks(html) {
                try {
                    var infoBlock = this.xhr.split("<h2>External Links</h2>")[1].split("</div>")[0] + "</div>", infoData = j.$.parseHTML(infoBlock), body = "";
                    j.$.each(j.$(infoData).find("a"), (index, value) => {
                        index && (body += ", "), body += '<a href="' + j.$(value).attr("href") + '">' + j.$(value).text() + "</a>";
                    }), "" !== body && html.push({
                        title: "External Links",
                        body: body
                    });
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
            }
            getOpeningSongs() {
                var openingSongs = [];
                try {
                    var openingBlock = "<div>" + this.xhr.split('opnening">')[1].split("</div>")[0] + "</div>", openingData = j.$.parseHTML(openingBlock);
                    openingSongs = j.$.map(j.$(openingData).find(".theme-song"), j.$.text);
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return openingSongs;
            }
            getEndingSongs() {
                var endingSongs = [];
                try {
                    var endingBlock = "<div>" + this.xhr.split(' ending">')[1].split("</div>")[0] + "</div>", endingData = j.$.parseHTML(endingBlock);
                    endingSongs = j.$.map(j.$(endingData).find(".theme-song"), j.$.text);
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return endingSongs;
            }
            getRelated() {
                var el = [];
                try {
                    var relatedBlock = this.xhr.split("Related ")[1].split("</h2>")[1].split("<h2>")[0], related = j.$.parseHTML(relatedBlock);
                    j.$.each(j.$(related).filter("table").find("tr"), (function(index, value) {
                        var links = [];
                        j.$(value).find(".borderClass").last().find("a").each((function(index, value) {
                            links.push({
                                url: j.$(value).attr("href"),
                                title: j.$(value).text(),
                                statusTag: ""
                            });
                        })), el.push({
                            type: j.$(value).find(".borderClass").first().text(),
                            links: links
                        });
                    }));
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return el;
            }
        }
        function search(keyword, type, options = {}, sync = !1) {
            return api.request.xhr("GET", "https://myanimelist.net/search/prefix.json?type=" + type + "&keyword=" + keyword + "&v=1").then(response => {
                var items = JSON.parse(response.responseText).categories[0].items, resItems = [];
                return items.forEach((function(item) {
                    resItems.push({
                        id: item.id,
                        name: item.name,
                        altNames: [],
                        url: item.url,
                        malUrl: () => item.url,
                        image: item.image_url,
                        media_type: item.payload.media_type,
                        isNovel: "Novel" === item.payload.media_type,
                        score: item.payload.score,
                        year: item.payload.start_year
                    });
                })), resItems;
            });
        }
    }).call(this, __webpack_require__(0), __webpack_require__(3), __webpack_require__(2));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, con, api, j) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return metadata;
        })), __webpack_require__.d(__webpack_exports__, "b", (function() {
            return search;
        }));
        class metadata {
            constructor(malUrl) {
                this.malUrl = malUrl, this.aniId = NaN, this.type = utils.urlPart(malUrl, 3), void 0 !== malUrl && malUrl.indexOf("myanimelist.net") > -1 ? this.id = utils.urlPart(malUrl, 4) : void 0 !== malUrl && malUrl.indexOf("anilist.co") > -1 ? (this.id = NaN, 
                this.aniId = utils.urlPart(malUrl, 4)) : this.id = NaN;
            }
            init() {
                con.log("Update AniList info", this.id ? "MAL: " + this.id : "AniList: " + this.aniId);
                var selectId = this.id, selectQuery = "idMal";
                isNaN(this.id) && (selectId = this.aniId, selectQuery = "id");
                var query = `\n    query ($id: Int, $type: MediaType) {\n      Media (${selectQuery}: $id, type: $type) {\n        id\n        idMal\n        siteUrl\n        episodes\n        chapters\n        volumes\n        averageScore\n        synonyms\n        description(asHtml: true)\n        coverImage{\n          large\n        }\n        title {\n          userPreferred\n          romaji\n          english\n          native\n        }\n        characters (perPage: 6, sort: [ROLE, ID]) {\n            edges {\n                id\n                role\n                node {\n                    id\n                    siteUrl\n                    name {\n                        first\n                        last\n                    }\n                    image {\n                        large\n                    }\n                }\n            }\n        }\n        popularity\n        favourites\n        rankings {\n          id\n          rank\n          type\n          format\n          year\n          season\n          allTime\n          context\n        }\n        relations {\n            edges {\n                id\n                relationType (version: 2)\n                node {\n                    id\n                    siteUrl\n                    title {\n                        userPreferred\n                    }\n                }\n            }\n        }\n        format\n        episodes\n        duration\n        status\n        startDate {\n          year\n          month\n          day\n        }\n        endDate {\n          year\n          month\n          day\n        }\n        season\n        studios {\n            edges {\n                isMain\n                node {\n                    siteUrl\n                    id\n                    name\n                }\n            }\n        }\n        source(version: 2)\n        genres\n        externalLinks {\n          site\n          url\n        }\n      }\n    }\n    `, variables = {
                    id: selectId,
                    type: this.type.toUpperCase()
                };
                return api.request.xhr("POST", {
                    url: "https://graphql.anilist.co",
                    headers: {
                        "Content-Type": "application/json",
                        Accept: "application/json"
                    },
                    data: JSON.stringify({
                        query: query,
                        variables: variables
                    })
                }).then(response => {
                    var res = JSON.parse(response.responseText);
                    return con.log(res), this.xhr = res, this;
                });
            }
            getTitle() {
                var title = "";
                try {
                    title = this.xhr.data.Media.title.userPreferred;
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return title;
            }
            getDescription() {
                var description = "";
                try {
                    description = this.xhr.data.Media.description;
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return description;
            }
            getImage() {
                var image = "";
                try {
                    image = this.xhr.data.Media.coverImage.large;
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return image;
            }
            getAltTitle() {
                var altTitle = [];
                try {
                    for (var prop in this.xhr.data.Media.title) {
                        var el = this.xhr.data.Media.title[prop];
                        el !== this.getTitle() && el && altTitle.push(el);
                    }
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return altTitle;
            }
            getCharacters() {
                var charArray = [];
                try {
                    this.xhr.data.Media.characters.edges.forEach((function(i) {
                        var name = "";
                        null !== i.node.name.last && (name += i.node.name.last), "" !== i.node.name.first && "" !== i.node.name.last && null !== i.node.name.first && null !== i.node.name.last && (name += ", "), 
                        null !== i.node.name.first && (name += i.node.name.first), name = '<a href="' + i.node.siteUrl + '">' + name + "</a>", 
                        charArray.push({
                            img: i.node.image.large,
                            html: name
                        });
                    }));
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return charArray;
            }
            getStatistics() {
                var stats = [];
                try {
                    null !== this.xhr.data.Media.averageScore && stats.push({
                        title: "Score:",
                        body: this.xhr.data.Media.averageScore
                    }), null !== this.xhr.data.Media.favourites && stats.push({
                        title: "Favourites:",
                        body: this.xhr.data.Media.favourites
                    }), null !== this.xhr.data.Media.popularity && stats.push({
                        title: "Popularity:",
                        body: this.xhr.data.Media.popularity
                    }), this.xhr.data.Media.rankings.forEach((function(i) {
                        if (stats.length < 4 && i.allTime) {
                            var title = i.context.replace("all time", "").trim() + ":";
                            title = title.charAt(0).toUpperCase() + title.slice(1), stats.push({
                                title: title,
                                body: "#" + i.rank
                            });
                        }
                    }));
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return stats;
            }
            getInfo() {
                var html = [];
                try {
                    if (null !== this.xhr.data.Media.format) {
                        var format = this.xhr.data.Media.format.toLowerCase().replace("_", " ");
                        format = format.charAt(0).toUpperCase() + format.slice(1), html.push({
                            title: "Format:",
                            body: format
                        });
                    }
                    if (null !== this.xhr.data.Media.episodes && html.push({
                        title: "Episodes:",
                        body: this.xhr.data.Media.episodes
                    }), null !== this.xhr.data.Media.duration && html.push({
                        title: "Episode Duration:",
                        body: this.xhr.data.Media.duration + " mins"
                    }), null !== this.xhr.data.Media.status) {
                        var status = this.xhr.data.Media.status.toLowerCase().replace("_", " ");
                        status = status.charAt(0).toUpperCase() + status.slice(1), html.push({
                            title: "Status:",
                            body: status
                        });
                    }
                    if (null !== this.xhr.data.Media.startDate.year && html.push({
                        title: "Start Date:",
                        body: this.xhr.data.Media.startDate.year + "-" + this.xhr.data.Media.startDate.month + "-" + this.xhr.data.Media.startDate.day
                    }), null !== this.xhr.data.Media.endDate.year && html.push({
                        title: "End Date:",
                        body: this.xhr.data.Media.endDate.year + "-" + this.xhr.data.Media.endDate.month + "-" + this.xhr.data.Media.endDate.day
                    }), null !== this.xhr.data.Media.season) {
                        var season = this.xhr.data.Media.season.toLowerCase().replace("_", " ");
                        season = season.charAt(0).toUpperCase() + season.slice(1), null !== this.xhr.data.Media.endDate.year && (season += " " + this.xhr.data.Media.endDate.year), 
                        html.push({
                            title: "Season:",
                            body: season
                        });
                    }
                    var studios = "";
                    if (this.xhr.data.Media.studios.edges.forEach((function(i, index) {
                        i.isMain && ("" !== studios && (studios += ", "), studios += '<a href="' + i.node.siteUrl + '">' + i.node.name + "</a>");
                    })), "" !== studios && html.push({
                        title: "Studios:",
                        body: studios
                    }), null !== this.xhr.data.Media.source) {
                        var source = this.xhr.data.Media.source.toLowerCase().replace("_", " ");
                        source = source.charAt(0).toUpperCase() + source.slice(1), html.push({
                            title: "Source:",
                            body: source
                        });
                    }
                    if (null !== this.xhr.data.Media.genres) {
                        var gen = [];
                        this.xhr.data.Media.genres.forEach((function(i, index) {
                            gen.push('<a href="https://anilist.co/search/anime?includedGenres=' + i + '">' + i + "</a>");
                        })), html.push({
                            title: "Genres:",
                            body: gen.join(", ")
                        });
                    }
                    var external = "";
                    this.xhr.data.Media.externalLinks.forEach((function(i, index) {
                        "" !== external && (external += ", "), external += '<a href="' + i.url + '">' + i.site + "</a>";
                    })), "" !== external && html.push({
                        title: "External Links:",
                        body: external
                    });
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return html;
            }
            getOpeningSongs() {
                return [];
            }
            getEndingSongs() {
                return [];
            }
            getRelated() {
                var el = [], links = {};
                try {
                    this.xhr.data.Media.relations.edges.forEach((function(i) {
                        if (void 0 === links[i.relationType]) {
                            var title = i.relationType.toLowerCase().replace("_", " ");
                            title = title.charAt(0).toUpperCase() + title.slice(1), links[i.relationType] = {
                                type: title,
                                links: []
                            };
                        }
                        links[i.relationType].links.push({
                            url: i.node.siteUrl,
                            title: i.node.title.userPreferred,
                            statusTag: ""
                        });
                    })), el = Object.keys(links).map(key => links[key]);
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return el;
            }
        }
        function search(keyword, type, options = {}, sync = !1) {
            var query = `\n    query ($search: String) {\n      ${type}: Page (perPage: 10) {\n        pageInfo {\n          total\n        }\n        results: media (type: ${type.toUpperCase()}, search: $search) {\n          id\n          siteUrl\n          idMal\n          title {\n            userPreferred\n            romaji\n            english\n            native\n          }\n          coverImage {\n            medium\n          }\n          type\n          format\n          averageScore\n          startDate {\n            year\n          }\n          synonyms\n        }\n      }\n    }\n  `, variables = {
                search: keyword
            };
            return api.request.xhr("POST", {
                url: "https://graphql.anilist.co",
                headers: {
                    "Content-Type": "application/json",
                    Accept: "application/json"
                },
                data: JSON.stringify({
                    query: query,
                    variables: variables
                })
            }).then(response => {
                var res = JSON.parse(response.responseText);
                con.log(res);
                var resItems = [];
                return j.$.each(res.data[type].results, (function(index, item) {
                    resItems.push({
                        id: item.id,
                        name: item.title.userPreferred,
                        altNames: Object.values(item.title).concat(item.synonyms),
                        url: item.siteUrl,
                        malUrl: () => item.idMal ? "https://myanimelist.net/" + type + "/" + item.idMal : null,
                        image: item.coverImage.medium,
                        media_type: item.format ? (item.format.charAt(0) + item.format.slice(1).toLowerCase()).replace("_", " ") : "",
                        isNovel: "NOVEL" === item.format,
                        score: item.averageScore,
                        year: item.startDate.year
                    });
                })), resItems;
            });
        }
    }).call(this, __webpack_require__(2), __webpack_require__(1), __webpack_require__(0), __webpack_require__(3));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return metadata;
        })), __webpack_require__.d(__webpack_exports__, "b", (function() {
            return search;
        }));
        var _helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class metadata {
            constructor(malUrl) {
                return this.malUrl = malUrl, this.kitsuSlug = "", this.kitsuId = NaN, this.type = utils.urlPart(malUrl, 3), 
                void 0 !== malUrl && malUrl.indexOf("myanimelist.net") > -1 ? this.id = utils.urlPart(malUrl, 4) : void 0 !== malUrl && malUrl.indexOf("kitsu.io") > -1 ? (this.id = NaN, 
                this.kitsuSlug = utils.urlPart(malUrl, 4)) : this.id = NaN, this;
            }
            animeI() {
                return this.animeInfo.data;
            }
            init() {
                return __awaiter(this, void 0, void 0, (function*() {
                    if (con.log("Update Kitsu info", this.id ? "MAL: " + this.id : "Kitsu: " + this.kitsuSlug), 
                    isNaN(this.id)) {
                        var kitsuSlugRes = yield _helper__WEBPACK_IMPORTED_MODULE_0__.e(this.kitsuSlug, this.type);
                        this.kitsuId = kitsuSlugRes.res.data[0].id, this.id = kitsuSlugRes.malId;
                    }
                    if (isNaN(this.kitsuId)) {
                        var kitsuRes = yield _helper__WEBPACK_IMPORTED_MODULE_0__.g(this.id, this.type);
                        try {
                            this.kitsuId = kitsuRes.data[0].relationships.item.data.id;
                        } catch (e) {
                            con.error("Not found", e);
                        }
                    }
                    return api.request.xhr("GET", {
                        url: "https://kitsu.io/api/edge/" + this.type + "/" + this.kitsuId + "?include=characters.character,mediaRelationships.destination,categories&fields[categories]=slug,title&",
                        headers: {
                            "Content-Type": "application/vnd.api+json",
                            Accept: "application/vnd.api+json"
                        },
                        data: {}
                    }).then(response => {
                        var res = JSON.parse(response.responseText);
                        con.log(res), this.animeInfo = res;
                        try {
                            this.animeI().attributes.slug;
                        } catch (e) {
                            throw con.error(e), "Not Found";
                        }
                        return this;
                    });
                }));
            }
            getTitle() {
                var title = "";
                try {
                    title = _helper__WEBPACK_IMPORTED_MODULE_0__.d(this.animeI().attributes.titles);
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return title;
            }
            getDescription() {
                var description = "";
                try {
                    description = '<span style="white-space: pre-line;">' + this.animeI().attributes.synopsis.replace("—", " ") + "</span>";
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return description;
            }
            getImage() {
                var image = "";
                try {
                    image = this.animeI().attributes.posterImage.large;
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return image;
            }
            getAltTitle() {
                var altTitle = [];
                try {
                    for (var prop in this.animeI().attributes.abbreviatedTitles) {
                        (el = this.animeI().attributes.abbreviatedTitles[prop]) !== this.getTitle() && el && altTitle.push(el);
                    }
                    for (var prop in this.animeI().attributes.titles) {
                        var el;
                        (el = this.animeI().attributes.titles[prop]) !== this.getTitle() && el && altTitle.push(el);
                    }
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return altTitle;
            }
            getCharacters() {
                var charArray = [];
                try {
                    this.animeInfo.included.forEach((function(i) {
                        if ("characters" === i.type && charArray.length < 10) {
                            var name = i.attributes.name;
                            void 0 !== i.attributes.malId && null !== i.attributes.malId && i.attributes.malId && (name = '<a href="https://myanimelist.net/character/' + i.attributes.malId + '">' + name + "</a>"), 
                            charArray.push({
                                img: null !== i.attributes.image ? i.attributes.image.original : api.storage.assetUrl("questionmark.gif"),
                                html: name
                            });
                        }
                    }));
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return charArray;
            }
            getStatistics() {
                var stats = [];
                try {
                    null !== this.animeI().attributes.averageRating && stats.push({
                        title: "Score:",
                        body: this.animeI().attributes.averageRating
                    }), null !== this.animeI().attributes.ratingRank && stats.push({
                        title: "Ranked:",
                        body: "#" + this.animeI().attributes.ratingRank
                    }), null !== this.animeI().attributes.popularityRank && stats.push({
                        title: "Popularity:",
                        body: "#" + this.animeI().attributes.popularityRank
                    }), null !== this.animeI().attributes.userCount && stats.push({
                        title: "Members:",
                        body: this.animeI().attributes.userCount
                    });
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return stats;
            }
            getInfo() {
                var html = [];
                try {
                    if (void 0 !== this.animeI().attributes.subtype && null !== this.animeI().attributes.subtype) {
                        var format = this.animeI().attributes.subtype.toLowerCase().replace("_", " ");
                        format = format.charAt(0).toUpperCase() + format.slice(1), html.push({
                            title: "Format:",
                            body: format
                        });
                    }
                    if (void 0 !== this.animeI().attributes.episodeCount && null !== this.animeI().attributes.episodeCount && html.push({
                        title: "Episodes:",
                        body: this.animeI().attributes.episodeCount
                    }), void 0 !== this.animeI().attributes.episodeLength && null !== this.animeI().attributes.episodeLength && html.push({
                        title: "Episode Duration:",
                        body: this.animeI().attributes.episodeLength + " mins"
                    }), void 0 !== this.animeI().attributes.status && null !== this.animeI().attributes.status) {
                        var status = this.animeI().attributes.status.toLowerCase().replace("_", " ");
                        status = status.charAt(0).toUpperCase() + status.slice(1), html.push({
                            title: "Status:",
                            body: status
                        });
                    }
                    void 0 !== this.animeI().attributes.startDate && null !== this.animeI().attributes.startDate && html.push({
                        title: "Start Date:",
                        body: this.animeI().attributes.startDate
                    }), void 0 !== this.animeI().attributes.endDate && null !== this.animeI().attributes.endDate && html.push({
                        title: "Start Date:",
                        body: this.animeI().attributes.endDate
                    });
                    var genres = [];
                    this.animeInfo.included.forEach(i => {
                        "categories" === i.type && genres.length < 6 && genres.push('<a href="https://kitsu.io/' + this.type + "?categories=" + i.attributes.slug + '">' + i.attributes.title + "</a>");
                    }), genres.length && html.push({
                        title: "Genres:",
                        body: genres.join(", ")
                    }), void 0 !== this.animeI().attributes.ageRating && null !== this.animeI().attributes.ageRating && html.push({
                        title: "Rating:",
                        body: this.animeI().attributes.ageRating
                    }), void 0 !== this.animeI().attributes.totalLength && null !== this.animeI().attributes.totalLength && html.push({
                        title: "Total playtime:",
                        body: this.animeI().attributes.totalLength + " mins"
                    });
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return html;
            }
            getOpeningSongs() {
                return [];
            }
            getEndingSongs() {
                return [];
            }
            getRelated() {
                var el = [], links = {};
                try {
                    var an = [];
                    this.animeInfo.included.forEach((function(i) {
                        "manga" !== i.type && "anime" !== i.type || (an[i.id] = {
                            url: "https://kitsu.io/" + i.type + "/" + i.attributes.slug,
                            title: _helper__WEBPACK_IMPORTED_MODULE_0__.d(i.attributes.titles),
                            statusTag: ""
                        });
                    })), this.animeInfo.included.forEach((function(i) {
                        if ("mediaRelationships" === i.type) {
                            if (void 0 === links[i.attributes.role]) {
                                var title = i.attributes.role.toLowerCase().replace("_", " ");
                                title = title.charAt(0).toUpperCase() + title.slice(1), links[i.attributes.role] = {
                                    type: title,
                                    links: []
                                };
                            }
                            var el = an[i.relationships.destination.data.id];
                            links[i.attributes.role].links.push(el);
                        }
                    })), el = Object.keys(links).map(key => links[key]);
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return el;
            }
        }
        function search(keyword, type, options = {}, sync = !1) {
            return api.request.xhr("GET", {
                url: "https://kitsu.io/api/edge/" + type + "?filter[text]=" + keyword + "&page[limit]=10&page[offset]=0&fields[" + type + "]=id,slug,titles,averageRating,startDate,posterImage,subtype",
                headers: {
                    "Content-Type": "application/vnd.api+json",
                    Accept: "application/vnd.api+json"
                },
                data: {}
            }).then(response => {
                var res = JSON.parse(response.responseText);
                con.log("search", res);
                var resItems = [];
                return res.data.forEach((function(item) {
                    resItems.push({
                        id: item.id,
                        name: _helper__WEBPACK_IMPORTED_MODULE_0__.d(item.attributes.titles),
                        altNames: Object.values(item.attributes.titles),
                        url: "https://kitsu.io/" + type + "/" + item.attributes.slug,
                        malUrl: () => __awaiter(this, void 0, void 0, (function*() {
                            var malId = yield _helper__WEBPACK_IMPORTED_MODULE_0__.f(item.id, type);
                            return malId ? "https://myanimelist.net/" + type + "/" + malId : null;
                        })),
                        image: item.attributes.posterImage && void 0 !== item.attributes.posterImage.tiny ? item.attributes.posterImage.tiny : "",
                        media_type: item.attributes.subtype,
                        isNovel: "novel" === item.attributes.subtype,
                        score: item.attributes.averageRating,
                        year: item.attributes.startDate
                    });
                })), resItems;
            });
        }
    }).call(this, __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, con, j) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return metadata;
        })), __webpack_require__.d(__webpack_exports__, "b", (function() {
            return search;
        }));
        var _helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class metadata {
            constructor(malUrl) {
                return this.malUrl = malUrl, this.simklId = NaN, this.type = utils.urlPart(malUrl, 3), 
                void 0 !== malUrl && malUrl.indexOf("myanimelist.net") > -1 ? this.id = utils.urlPart(malUrl, 4) : void 0 !== malUrl && malUrl.indexOf("simkl.com") > -1 ? (this.id = NaN, 
                this.simklId = utils.urlPart(malUrl, 4)) : this.id = NaN, this;
            }
            init() {
                return __awaiter(this, void 0, void 0, (function*() {
                    if (con.log("Update Simkl info", this.id ? "MAL: " + this.id : "Simkl: " + this.simklId), 
                    isNaN(this.id)) var de = {
                        simkl: this.simklId
                    }; else de = {
                        mal: this.id
                    };
                    if (isNaN(this.simklId)) {
                        var el = yield _helper__WEBPACK_IMPORTED_MODULE_0__.a("https://api.simkl.com/search/id", de, !0);
                        if (!el) throw "Anime not found";
                        con.error(el), this.simklId = el[0].ids.simkl;
                    }
                    return _helper__WEBPACK_IMPORTED_MODULE_0__.a("https://api.simkl.com/anime/" + this.simklId, {
                        extended: "full"
                    }, !0).then(res => (con.log(res), this.animeInfo = res, this));
                }));
            }
            getTitle() {
                var title = "";
                try {
                    title = this.animeInfo.title;
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return title;
            }
            getDescription() {
                var description = "";
                try {
                    description = this.animeInfo.overview;
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return description;
            }
            getImage() {
                var image = "";
                try {
                    image = "https://simkl.in/posters/" + this.animeInfo.poster + "_ca.jpg";
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return image;
            }
            getAltTitle() {
                var altTitle = [];
                try {
                    void 0 !== typeof this.animeInfo.en_title && this.animeInfo.en_title && altTitle.push(this.animeInfo.en_title);
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return altTitle;
            }
            getCharacters() {
                return [];
            }
            getStatistics() {
                var stats = [];
                try {
                    null !== this.animeInfo.ratings.simkl.rating && stats.push({
                        title: "Score:",
                        body: this.animeInfo.ratings.simkl.rating
                    }), void 0 !== this.animeInfo.ratings.mal && null !== this.animeInfo.ratings.mal.rating && stats.push({
                        title: "MAL Score:",
                        body: this.animeInfo.ratings.mal.rating
                    }), void 0 !== this.animeInfo.rank && null !== this.animeInfo.rank && stats.push({
                        title: "Ranked:",
                        body: "#" + this.animeInfo.rank
                    }), null !== this.animeInfo.ratings.simkl.votes && stats.push({
                        title: "Votes:",
                        body: this.animeInfo.ratings.simkl.votes
                    });
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return stats;
            }
            getInfo() {
                var html = [];
                try {
                    void 0 !== this.animeInfo.anime_type && null !== this.animeInfo.anime_type && html.push({
                        title: "Type:",
                        body: this.animeInfo.anime_type
                    }), void 0 !== this.animeInfo.total_episodes && null !== this.animeInfo.total_episodes && html.push({
                        title: "Episodes:",
                        body: this.animeInfo.total_episodes
                    }), void 0 !== this.animeInfo.status && null !== this.animeInfo.status && html.push({
                        title: "Status:",
                        body: this.animeInfo.status
                    }), void 0 !== this.animeInfo.year && null !== this.animeInfo.year && html.push({
                        title: "Year:",
                        body: this.animeInfo.year
                    }), void 0 !== this.animeInfo.airs && null !== this.animeInfo.airs && html.push({
                        title: "Broadcast:",
                        body: this.animeInfo.airs.day + " at " + this.animeInfo.airs.time
                    }), void 0 !== this.animeInfo.network && null !== this.animeInfo.network && html.push({
                        title: "Licensor:",
                        body: this.animeInfo.network
                    });
                    var genres = [];
                    this.animeInfo.genres.forEach(i => {
                        genres.length < 6 && genres.push('<a href="https://simkl.com/' + this.type + "/" + i.toLowerCase() + '">' + i + "</a>");
                    }), genres.length && html.push({
                        title: "Genres:",
                        body: genres.join(", ")
                    }), void 0 !== this.animeInfo.runtime && null !== this.animeInfo.runtime && html.push({
                        title: "Duration:",
                        body: this.animeInfo.runtime + "mins"
                    }), void 0 !== this.animeInfo.certification && null !== this.animeInfo.certification && html.push({
                        title: "Rating:",
                        body: this.animeInfo.certification
                    });
                } catch (e) {
                    console.log("[iframeOverview] Error:", e);
                }
                return html;
            }
            getOpeningSongs() {
                return [];
            }
            getEndingSongs() {
                return [];
            }
            getRelated() {
                return [];
            }
        }
        function search(keyword, type, options = {}, sync = !1) {
            return _helper__WEBPACK_IMPORTED_MODULE_0__.a("https://api.simkl.com/search/" + type, {
                q: keyword
            }, !0).then(res => {
                var resItems = [];
                return con.log("search", res), j.$.each(res, (function(index, item) {
                    resItems.push({
                        id: item.ids.simkl_id,
                        name: item.title,
                        altNames: [],
                        url: "https://simkl.com/" + type + "/" + item.ids.simkl_id + "/" + item.ids.slug,
                        malUrl: () => __awaiter(this, void 0, void 0, (function*() {
                            var malId = yield _helper__WEBPACK_IMPORTED_MODULE_0__.f(item.ids.simkl_id);
                            return malId ? "https://myanimelist.net/" + type + "/" + malId : null;
                        })),
                        image: "https://simkl.in/posters/" + item.poster + "_cm.jpg",
                        media_type: item.type,
                        isNovel: !1,
                        score: null,
                        year: item.year
                    });
                })), resItems;
            });
        }
    }).call(this, __webpack_require__(2), __webpack_require__(1), __webpack_require__(3));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("div", [ _c("div", {
            staticClass: "icon material-icons",
            staticStyle: {
                "font-size": "16px",
                "line-height": "0",
                color: "#7f7f7f",
                "padding-bottom": "20px",
                "padding-left": "3px"
            },
            style: _vm.tagStyle,
            attrs: {
                id: _vm.id
            }
        }, [ _vm._v("\n    " + _vm._s(_vm.iconText) + "\n  ") ]), _vm._v(" "), _c("div", {
            staticClass: "mdl-tooltip mdl-tooltip--large",
            class: _vm.directionClass,
            attrs: {
                for: _vm.id
            }
        }, [ _vm._t("default") ], 2) ]);
    };
    render._withStripped = !0;
    var components_tooltipvue_type_script_lang_js_ = {
        data: function() {
            return {
                number: Math.floor(1e3 * Math.random() + 1)
            };
        },
        props: {
            direction: {
                type: String,
                default: "top"
            },
            tagStyle: {
                type: String,
                default: ""
            },
            iconText: {
                type: String,
                default: "contact_support"
            }
        },
        computed: {
            id: function() {
                return "tt-" + this.number;
            },
            directionClass: function() {
                return "mdl-tooltip--" + this.direction;
            }
        }
    }, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(components_tooltipvue_type_script_lang_js_, render, [], !1, null, null, null);
    component.options.__file = "src/minimal/minimalApp/components/tooltip.vue";
    __webpack_exports__.a = component.exports;
}, function(module, exports) {
    var g;
    g = function() {
        return this;
    }();
    try {
        g = g || new Function("return this")();
    } catch (e) {
        "object" == typeof window && (g = window);
    }
    module.exports = g;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return exportData;
        })), __webpack_require__.d(__webpack_exports__, "b", (function() {
            return importData;
        }));
        var _helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(13), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        function exportData() {
            return __awaiter(this, void 0, void 0, (function*() {
                var data = yield _helper__WEBPACK_IMPORTED_MODULE_0__.c(), newData = {};
                for (var key in data) _helper__WEBPACK_IMPORTED_MODULE_0__.b("(anime|manga)").test(key) && (newData[key] = data[key]);
                return newData;
            }));
        }
        function importData(newData) {
            return __awaiter(this, void 0, void 0, (function*() {
                var data = yield _helper__WEBPACK_IMPORTED_MODULE_0__.c();
                for (var key in data) _helper__WEBPACK_IMPORTED_MODULE_0__.b("(anime|manga)").test(key) && (con.log("Remove", key), 
                api.storage.remove(key));
                for (var k in newData) con.log("Set", k, newData[k]), api.storage.set(k, newData[k]);
                return 1;
            }));
        }
    }).call(this, __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(con, utils) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return searchClass;
        }));
        var _searchClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(88), _correctionApp_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(157), vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17);
        class searchClass extends _searchClass__WEBPACK_IMPORTED_MODULE_0__.a {
            constructor() {
                super(...arguments), this.reloadSync = !1;
            }
            openCorrectionCheck() {
                this.getUrl();
                return this.state && this.state.similarity && this.state.similarity.same ? (con.log("similarity", this.state.similarity.value), 
                !1) : this.openCorrection(!0).then(() => this.changed);
            }
            openCorrection(syncMode = !1) {
                return new Promise((resolve, reject) => {
                    if (this.vueInstance && (this.vueInstance.$destroy(), !syncMode)) return void resolve(!1);
                    var flasmessage = utils.flashm('<div class="shadow"></div>', {
                        permanent: !0,
                        position: "top",
                        type: "correction"
                    });
                    flasmessage.find(".shadow").get(0).attachShadow({
                        mode: "open"
                    }).innerHTML = `\n        <style>\n          ${__webpack_require__(191).toString()}\n        </style>\n        <div id="correctionApp"></div>\n        `;
                    let element = flasmessage.find(".shadow").get(0).shadowRoot.querySelector("#correctionApp");
                    this.vueInstance = new vue__WEBPACK_IMPORTED_MODULE_2__.a({
                        el: element,
                        render: h => h(_correctionApp_vue__WEBPACK_IMPORTED_MODULE_1__.a),
                        data: () => ({
                            searchClass: this,
                            syncMode: syncMode
                        }),
                        destroyed: () => {
                            resolve(this.changed), flasmessage.remove(), this.vueInstance = void 0;
                        }
                    });
                });
            }
        }
    }).call(this, __webpack_require__(1), __webpack_require__(2));
}, function(module, exports) {
    function compareTwoStrings(first, second) {
        if (first = first.replace(/\s+/g, ""), second = second.replace(/\s+/g, ""), !first.length && !second.length) return 1;
        if (!first.length || !second.length) return 0;
        if (first === second) return 1;
        if (1 === first.length && 1 === second.length) return 0;
        if (first.length < 2 || second.length < 2) return 0;
        let firstBigrams = new Map;
        for (let i = 0; i < first.length - 1; i++) {
            const bigram = first.substring(i, i + 2), count = firstBigrams.has(bigram) ? firstBigrams.get(bigram) + 1 : 1;
            firstBigrams.set(bigram, count);
        }
        let intersectionSize = 0;
        for (let i = 0; i < second.length - 1; i++) {
            const bigram = second.substring(i, i + 2), count = firstBigrams.has(bigram) ? firstBigrams.get(bigram) : 0;
            count > 0 && (firstBigrams.set(bigram, count - 1), intersectionSize++);
        }
        return 2 * intersectionSize / (first.length + second.length - 2);
    }
    module.exports = {
        compareTwoStrings: compareTwoStrings,
        findBestMatch: function(mainString, targetStrings) {
            if (!function(mainString, targetStrings) {
                return "string" == typeof mainString && (!!Array.isArray(targetStrings) && (!!targetStrings.length && !targetStrings.find(s => "string" != typeof s)));
            }(mainString, targetStrings)) throw new Error("Bad arguments: First argument should be a string, second should be an array of strings");
            const ratings = [];
            let bestMatchIndex = 0;
            for (let i = 0; i < targetStrings.length; i++) {
                const currentTargetString = targetStrings[i], currentRating = compareTwoStrings(mainString, currentTargetString);
                ratings.push({
                    target: currentTargetString,
                    rating: currentRating
                }), currentRating > ratings[bestMatchIndex].rating && (bestMatchIndex = i);
            }
            const bestMatch = ratings[bestMatchIndex];
            return {
                ratings: ratings,
                bestMatch: bestMatch,
                bestMatchIndex: bestMatchIndex
            };
        }
    };
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return userscriptLegacy;
        }));
        var __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        const userscriptLegacy = {
            set(key, value) {
                return __awaiter(this, void 0, void 0, (function*() {
                    GM_setValue(key, value);
                }));
            },
            get(key) {
                return __awaiter(this, void 0, void 0, (function*() {
                    return GM_getValue(key);
                }));
            },
            remove(key) {
                return __awaiter(this, void 0, void 0, (function*() {
                    GM_deleteValue(key);
                }));
            },
            list() {
                return __awaiter(this, void 0, void 0, (function*() {
                    var reverseArray = {};
                    return j.$.each(GM_listValues(), (function(index, cache) {
                        reverseArray[cache] = index;
                    })), reverseArray;
                }));
            },
            addStyle(css) {
                return __awaiter(this, void 0, void 0, (function*() {
                    GM_addStyle(css);
                }));
            },
            version: () => GM_info.script.version,
            lang(selector, args) {
                var message = i18n[selector];
                if (void 0 !== args) for (var argIndex = 0; argIndex < args.length; argIndex++) message = message.replace("$" + (argIndex + 1), args[argIndex]);
                return message;
            },
            assetUrl: filename => "https://raw.githubusercontent.com/lolamtisch/MALSync/master/assets/assets/" + filename,
            injectCssResource(res, head) {
                head.append(j.$("<style>").attr("rel", "stylesheet").attr("type", "text/css").html(GM_getResourceText(res)));
            },
            injectjsResource(res, head) {
                var s = document.createElement("script");
                s.text = GM_getResourceText(res), s.onload = function() {
                    this.remove();
                }, head.get(0).appendChild(s);
            },
            updateDom(head) {
                var s = document.createElement("script");
                s.text = "\n        document.getElementsByTagName('head')[0].onclick = function(e){\n          try{\n            componentHandler.upgradeDom();\n          }catch(e){\n            console.log(e);\n            setTimeout(function(){\n              componentHandler.upgradeDom();\n            },500);\n          }\n        }", 
                s.onload = function() {
                    this.remove();
                }, head.get(0).appendChild(s);
            },
            storageOnChanged(cb) {}
        };
    }).call(this, __webpack_require__(3));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, con) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return settingsObj;
        }));
        var __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        }, settingsObj = {
            options: {
                autoTrackingModeanime: "video",
                autoTrackingModemanga: "instant",
                forceEn: !1,
                presenceHidePage: !1,
                userscriptMode: !1,
                strictCookies: !1,
                syncMode: "MAL",
                syncModeSimkl: "MAL",
                localSync: !0,
                delay: 0,
                videoDuration: 85,
                malTags: !0,
                malContinue: !0,
                malResume: !0,
                epPredictions: !0,
                theme: "light",
                minimalWindow: !1,
                posLeft: "left",
                miniMALonMal: !1,
                floatButtonStealth: !1,
                floatButtonHide: !1,
                autoCloseMinimal: !1,
                outWay: !0,
                miniMalWidth: "500px",
                miniMalHeight: "90%",
                malThumbnail: 100,
                friendScore: !0,
                SiteSearch: !0,
                "9anime": !0,
                Crunchyroll: !0,
                Gogoanime: !0,
                Kissanime: !0,
                Masterani: !0,
                Animeheaven: !0,
                Twistmoe: !0,
                Anime4you: !0,
                Kissmanga: !0,
                Mangadex: !0,
                MangaNelo: !0,
                Netflix: !0,
                Proxeranime: !0,
                Proxermanga: !0,
                Novelplanet: !0,
                Aniwatch: !0,
                autofull: !1,
                autoresume: !1,
                autoNextEp: !1,
                highlightAllEp: !1,
                introSkip: 85,
                introSkipFwd: [ 17, 39 ],
                introSkipBwd: [ 17, 37 ],
                nextEpShort: [],
                correctionShort: [ 67 ],
                updateCheckNotifications: !0,
                anilistToken: "",
                kitsuToken: "",
                simklToken: ""
            },
            init: function() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, (function*() {
                        for (var key in this.options) {
                            var store = yield api.storage.get("settings/" + key);
                            void 0 !== store && (this.options[key] = store);
                        }
                        con.log("Settings", this.options), resolve(this), api.storage.storageOnChanged((changes, namespace) => {
                            if ("sync" === namespace) for (var key in changes) {
                                var storageChange = changes[key];
                                /^settings\//i.test(key) && (this.options[key.replace("settings/", "")] = storageChange.newValue, 
                                con.info("Update " + key + " option to " + storageChange.newValue));
                            }
                        });
                    })));
                }));
            },
            get: function(name) {
                return this.options[name];
            },
            set: function(name, value) {
                if (this.options.hasOwnProperty(name)) return this.options[name] = value, api.storage.set("settings/" + name, value);
                con.error(name + " is not a defined option");
            },
            getAsync: function(name) {
                return __awaiter(this, void 0, void 0, (function*() {
                    var value = yield api.storage.get("settings/" + name);
                    return void 0 === value && void 0 !== typeof this.options[name] ? this.options[name] : value;
                }));
            }
        };
    }).call(this, __webpack_require__(0), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, api, con, utils) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return syncPage;
        }));
        var _provider_provider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9), _minimal_iframe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(78), _provider_templates__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(31), _utils_player__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(27), _provider_Search_vueSearchClass_ts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(67), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        }, extensionId = "agnaejlkbiiggajjmnpmeheigkflbnoo";
        "undefined" != typeof browser && "undefined" != typeof chrome && (extensionId = "{57081fef-67b4-482f-bcb0-69296e63ec4f}");
        class syncPage {
            constructor(url, pages) {
                if (this.url = url, this.pages = pages, this.novel = !1, this.autoNextEpRun = !1, 
                this.curState = void 0, this.tempPlayer = void 0, this.UILoaded = !1, this.browsingtime = Date.now(), 
                this.page = this.getPage(url), null == this.page) throw new Error("Page could not be recognized");
            }
            init() {
                var This = this;
                if (j.$(document).ready((function() {
                    Object(_minimal_iframe__WEBPACK_IMPORTED_MODULE_1__.a)(This);
                })), this.page.init(this), "webextension" === api.type) try {
                    chrome.runtime.onMessage.addListener((info, sender, sendResponse) => {
                        this.presence(info, sender, sendResponse);
                    });
                } catch (e) {
                    con.error(e);
                }
            }
            getPage(url) {
                for (var key in this.pages) {
                    var page = this.pages[key];
                    if (j.$.isArray(page.domain)) for (var k in page.domain) {
                        var singleDomain = page.domain[k];
                        if (checkDomain(singleDomain)) return page.domain = singleDomain, page;
                    } else if (checkDomain(page.domain)) return page;
                    function checkDomain(domain) {
                        return url.indexOf(utils.urlPart(domain, 2).replace(".com.br", ".br").split(".").slice(-2, -1)[0] + ".") > -1;
                    }
                }
                return null;
            }
            openNextEp() {
                if (void 0 === this.page.sync.nextEpUrl) utils.flashm(api.storage.lang("nextEpShort_no_support"), {
                    error: !0,
                    type: "EpError"
                }); else {
                    if (this.page.isSyncPage(this.url)) {
                        var nextEp = this.page.sync.nextEpUrl(this.url);
                        if (nextEp) return void (location.href = nextEp);
                    }
                    utils.flashm(api.storage.lang("nextEpShort_no_nextEp"), {
                        error: !0,
                        type: "EpError"
                    });
                }
            }
            setVideoTime(item, timeCb) {
                var syncDuration = api.settings.get("videoDuration"), progress = item.current / (item.duration * (syncDuration / 100)) * 100;
                j.$("#malSyncProgress").length && (progress < 100 ? (j.$(".ms-progress").css("width", progress + "%"), 
                j.$("#malSyncProgress").removeClass("ms-loading").removeClass("ms-done")) : (j.$("#malSyncProgress").addClass("ms-done"), 
                j.$(".flash.type-update .sync").click())), this.handleVideoResume(item, timeCb), 
                this.autoNextEp(item);
            }
            autoNextEp(item) {
                api.settings.get("autoNextEp") && !this.autoNextEpRun && item.current == item.duration && (this.autoNextEpRun = !0, 
                this.openNextEp());
            }
            handleVideoResume(item, timeCb) {
                if (void 0 !== this.curState && void 0 !== this.curState.identifier && void 0 !== this.curState.episode) {
                    var This = this, localSelector = this.curState.identifier + "/" + this.curState.episode;
                    if (this.curState.lastVideoTime = item, void 0 !== this.curState.videoChecked && this.curState.videoChecked) this.curState.videoChecked > 1 && (con.info("Set Resume", item.current), 
                    localStorage.setItem(localSelector, item.current), this.curState.videoChecked = !0, 
                    setTimeout(() => {
                        this.curState.videoChecked = 2;
                    }, 1e4)); else {
                        var localItem = localStorage.getItem(localSelector);
                        if (con.info("Resume", localItem), null !== localItem && parseInt(localItem) - 30 > item.current && parseInt(localItem) > 30) {
                            j.$("#MALSyncResume").length || j.$("#MALSyncResume").parent().parent().remove();
                            var resumeTime = Math.round(parseInt(localItem)), resumeTimeString = "";
                            if (api.settings.get("autoresume")) return timeCb(resumeTime), void (This.curState.videoChecked = 2);
                            for (var delta = resumeTime, minutes = Math.floor(delta / 60), sec = (delta -= 60 * minutes) + ""; sec.length < 2; ) sec = "0" + sec;
                            resumeTimeString = minutes + ":" + sec;
                            var resumeMsg = utils.flashm('<button id="MALSyncResume" class="sync" style="margin-bottom: 2px; background-color: transparent; border: none; color: rgb(255,64,129);cursor: pointer;">' + api.storage.lang("syncPage_flashm_resumeMsg", [ resumeTimeString ]) + '</button><br><button class="resumeClose" style="background-color: transparent; border: none; color: white;margin-top: 10px;cursor: pointer;">Close</button>', {
                                permanent: !0,
                                error: !1,
                                type: "resume",
                                minimized: !1,
                                position: "top"
                            });
                            resumeMsg.find(".sync").on("click", (function() {
                                timeCb(resumeTime), This.curState.videoChecked = 2, j.$(this).parent().parent().remove();
                            })), resumeMsg.find(".resumeClose").on("click", (function() {
                                This.curState.videoChecked = 2, j.$(this).parent().parent().remove();
                            }));
                        } else setTimeout(() => {
                            this.curState.videoChecked = 2;
                        }, 15e3);
                        this.curState.videoChecked = !0;
                    }
                }
            }
            handlePage(curUrl = window.location.href) {
                return __awaiter(this, void 0, void 0, (function*() {
                    var state;
                    this.curState = void 0, this.searchObj = void 0;
                    var This = this;
                    if (this.url = curUrl, this.browsingtime = Date.now(), this.loadUI(), this.page.isSyncPage(this.url)) state = {
                        on: "SYNC",
                        title: this.page.sync.getTitle(this.url),
                        identifier: this.page.sync.getIdentifier(this.url)
                    }, this.searchObj = new _provider_Search_vueSearchClass_ts__WEBPACK_IMPORTED_MODULE_4__.a(state.title, this.novel ? "novel" : this.page.type, state.identifier), 
                    this.searchObj.setPage(this.page), this.searchObj.setSyncPage(this), this.curState = state, 
                    yield this.searchObj.search(), state.episode = +parseInt(this.page.sync.getEpisode(this.url) + "") + parseInt(this.getOffset()), 
                    state.episode || 0 === state.episode || ("anime" == this.page.type ? state.episode = 1 : state.episode = 0), 
                    void 0 !== this.page.sync.getVolume && (state.volume = this.page.sync.getVolume(this.url)), 
                    "anime" == this.page.type && Object(_utils_player__WEBPACK_IMPORTED_MODULE_3__.a)((item, player) => {
                        this.tempPlayer = player, this.setVideoTime(item, time => {
                            if (void 0 !== player) return void 0 !== time ? (player.play(), void (player.currentTime = time)) : void 0;
                            con.error("No player Found");
                        });
                    }), con.log("Sync", state); else {
                        if (void 0 === this.page.overview) return void con.log("No overview definition");
                        state = {
                            on: "OVERVIEW",
                            title: this.page.overview.getTitle(this.url),
                            identifier: this.page.overview.getIdentifier(this.url)
                        }, this.searchObj = new _provider_Search_vueSearchClass_ts__WEBPACK_IMPORTED_MODULE_4__.a(state.title, this.novel ? "novel" : this.page.type, state.identifier), 
                        this.searchObj.setPage(this.page), this.searchObj.setSyncPage(this), this.curState = state, 
                        yield this.searchObj.search(), con.log("Overview", state);
                    }
                    this.curState = state;
                    var malUrl = this.searchObj.getUrl();
                    if (null !== malUrl && malUrl || !api.settings.get("localSync") || (con.log("Local Fallback"), 
                    malUrl = "local://" + this.page.name + "/" + this.page.type + "/" + state.identifier), 
                    null === malUrl) j.$("#MalInfo").text(api.storage.lang("Not_Found")), j.$("#MalData").css("display", "none"), 
                    con.log("Not on mal"); else if (malUrl) {
                        con.log("MyAnimeList", malUrl), this.malObj = Object(_provider_provider__WEBPACK_IMPORTED_MODULE_0__.a)(malUrl, !1, !1, state);
                        try {
                            yield this.malObj.init();
                        } catch (e) {
                            (e.code = api.settings.get("localSync")) && (con.log("Local Fallback"), malUrl = "local://" + this.page.name + "/" + this.page.type + "/" + state.identifier, 
                            this.malObj = Object(_provider_provider__WEBPACK_IMPORTED_MODULE_0__.a)(malUrl, !1, !1, state), 
                            yield this.malObj.init());
                        }
                        if (this.oldMalObj = this.malObj.clone(), "webextension" === api.type) try {
                            chrome.runtime.sendMessage(extensionId, {
                                mode: "active"
                            }, (function(response) {
                                con.log("Presence registred", response);
                            }));
                        } catch (e) {
                            con.error(e);
                        }
                        if (this.fillUI(), !this.malObj.login) return void utils.flashm(Object(_provider_templates__WEBPACK_IMPORTED_MODULE_2__.a)().noLogin, {
                            error: !0,
                            type: "error"
                        });
                        if (this.page.isSyncPage(this.url)) {
                            if (yield this.searchObj.openCorrectionCheck()) return void this.handlePage(curUrl);
                            if (yield this.handleAnimeUpdate(state)) {
                                if (con.log("Start Sync (" + api.settings.get("delay") + " Seconds)"), "instant" === api.settings.get("autoTrackingMode" + this.page.type)) setTimeout(() => {
                                    sync();
                                }, 1e3 * api.settings.get("delay")); else {
                                    var message = '<button class="sync" style="margin-bottom: 8px; background-color: transparent; border: none; color: rgb(255,64,129);margin-top: 10px;cursor: pointer;">' + api.storage.lang("syncPage_flashm_sync_" + This.page.type, [ Object(_provider_templates__WEBPACK_IMPORTED_MODULE_2__.a)(malUrl).shortName, state.episode ]) + "</button>", options = {
                                        hoverInfo: !0,
                                        error: !0,
                                        type: "update",
                                        minimized: !1
                                    };
                                    "video" === api.settings.get("autoTrackingMode" + this.page.type) && "anime" == this.page.type && (message = '\n                <div id="malSyncProgress" class="ms-loading" style="background-color: transparent; position: absolute; top: 0; left: 0; right: 0; height: 4px;">\n                  <div class="ms-progress" style="background-color: #2980b9; width: 0%; height: 100%; transition: width 1s;"></div>\n                </div>\n              ' + message, 
                                    options = {
                                        hoverInfo: !0,
                                        error: !1,
                                        type: "update",
                                        minimized: !0
                                    }), utils.flashm(message, options).find(".sync").on("click", (function() {
                                        j.$(".flashinfo").remove(), sync();
                                    })), con.log("overviewUrl", This.page.sync.getOverviewUrl(This.url)), void 0 !== This.page.sync.nextEpUrl && con.log("nextEp", This.page.sync.nextEpUrl(This.url));
                                }
                                function sync() {
                                    if (This.malObj.setResumeWaching(This.url, state.episode), void 0 !== This.page.sync.nextEpUrl) {
                                        var continueWatching = This.page.sync.nextEpUrl(This.url);
                                        continueWatching && -1 == continueWatching.indexOf("undefined") && This.malObj.setContinueWaching(continueWatching, state.episode + 1);
                                    }
                                    This.syncHandling(!0);
                                }
                            } else con.log("Nothing to Sync");
                        }
                    } else j.$("#MalInfo").text(api.storage.lang("NothingFound")), j.$("#MalData").css("display", "none"), 
                    con.log("Nothing found");
                }));
            }
            openCorrectionUi() {
                if (this.searchObj) return this.searchObj.openCorrection().then(rerun => {
                    rerun && this.handlePage();
                });
            }
            syncHandling(hoverInfo = !1) {
                var This = this;
                return this.malObj.sync().then((function() {
                    var message = This.malObj.name, split = "<br>", totalVol = This.malObj.totalVol;
                    0 == totalVol && (totalVol = "?");
                    var totalEp = This.malObj.totalEp;
                    if (0 == totalEp && (totalEp = "?"), void 0 === This.oldMalObj || This.malObj.getStatus() != This.oldMalObj.getStatus()) {
                        var statusString = "";
                        switch (parseInt(This.malObj.getStatus())) {
                          case 1:
                            statusString = api.storage.lang("UI_Status_watching_" + This.page.type);
                            break;

                          case 2:
                            statusString = api.storage.lang("UI_Status_Completed");
                            break;

                          case 3:
                            statusString = api.storage.lang("UI_Status_OnHold");
                            break;

                          case 4:
                            statusString = api.storage.lang("UI_Status_Dropped");
                            break;

                          case 6:
                            statusString = api.storage.lang("UI_Status_planTo_" + This.page.type);
                        }
                        message += split + statusString, split = " | ";
                    }
                    if ("manga" != This.page.type || void 0 !== This.oldMalObj && This.malObj.getVolume() == This.oldMalObj.getVolume() || (message += split + api.storage.lang("UI_Volume") + " " + This.malObj.getVolume() + "/" + totalVol, 
                    split = " | "), void 0 !== This.oldMalObj && This.malObj.getEpisode() == This.oldMalObj.getEpisode() || (message += split + utils.episode(This.page.type) + " " + This.malObj.getEpisode() + "/" + totalEp, 
                    split = " | "), (void 0 === This.oldMalObj || This.malObj.getScore() != This.oldMalObj.getScore() && "" != This.malObj.getScore()) && (message += split + api.storage.lang("UI_Score") + " " + This.malObj.getScore(), 
                    split = " | "), hoverInfo) {
                        void 0 !== This.oldMalObj && (message += '\n              <br>\n              <button class="undoButton" style="background-color: transparent; border: none; color: rgb(255,64,129);margin-top: 10px;cursor: pointer;">\n                ' + api.storage.lang("syncPage_flashm_sync_undefined_undo") + '\n              </button>\n              <button class="wrongButton" style="background-color: transparent; border: none; color: rgb(255,64,129);margin-top: 10px;cursor: pointer;">\n                ' + api.storage.lang("syncPage_flashm_sync_undefined_wrong") + "\n              </button>");
                        var flashmItem = utils.flashm(message, {
                            hoverInfo: !0,
                            type: "update"
                        });
                        flashmItem.find(".undoButton").on("click", (function() {
                            this.closest(".flash").remove(), This.malObj = This.oldMalObj, This.oldMalObj = void 0, 
                            This.syncHandling();
                        })), flashmItem.find(".wrongButton").on("click", (function() {
                            This.openCorrectionUi(), this.closest(".flash").remove(), This.malObj = This.oldMalObj, 
                            This.oldMalObj = void 0, This.syncHandling();
                        }));
                    } else utils.flashm(message);
                    This.fillUI();
                })).catch((function(e) {
                    con.error(e), utils.flashm(api.storage.lang("syncPage_flashm_failded"), {
                        error: !0
                    });
                }));
            }
            handleAnimeUpdate(state) {
                return __awaiter(this, void 0, void 0, (function*() {
                    var status = utils.status;
                    if (this.malObj.getEpisode() >= state.episode && !(this.novel && void 0 !== state.volume && state.volume > this.malObj.getVolume()) && (this.malObj.getStatus() != status.completed || 1 !== state.episode || 1 === this.malObj.totalEp || 1 === this.malObj.getRewatching())) return !1;
                    if (this.malObj.setEpisode(state.episode), void 0 !== state.volume && state.volume > this.malObj.getVolume() && this.malObj.setVolume(state.volume), 
                    this.malObj.setStreamingUrl(this.page.sync.getOverviewUrl(this.url)), this.malObj.setStartingDateToNow(), 
                    this.malObj.getStatus() !== status.completed && parseInt(state.episode) === this.malObj.totalEp && 0 != parseInt(state.episode)) {
                        var currentScore = parseInt(this.malObj.getScore());
                        if (yield utils.flashConfirm(api.storage.lang("syncPage_flashConfirm_complete") + `<div><select id="finish_score" style="margin-top:5px; color:white; background-color:#4e4e4e; border: none;">\n        <option value="0" ${currentScore ? "" : "selected"}>${api.storage.lang("UI_Score_Not_Rated")}</option>\n        <option value="10" ${10 == currentScore ? "selected" : ""}>${api.storage.lang("UI_Score_Masterpiece")}</option>\n        <option value="9" ${9 == currentScore ? "selected" : ""}>${api.storage.lang("UI_Score_Great")}</option>\n        <option value="8" ${8 == currentScore ? "selected" : ""}>${api.storage.lang("UI_Score_VeryGood")}</option>\n        <option value="7" ${7 == currentScore ? "selected" : ""}>${api.storage.lang("UI_Score_Good")}</option>\n        <option value="6" ${6 == currentScore ? "selected" : ""}>${api.storage.lang("UI_Score_Fine")}</option>\n        <option value="5" ${5 == currentScore ? "selected" : ""}>${api.storage.lang("UI_Score_Average")}</option>\n        <option value="4" ${4 == currentScore ? "selected" : ""}>${api.storage.lang("UI_Score_Bad")}</option>\n        <option value="3" ${3 == currentScore ? "selected" : ""}>${api.storage.lang("UI_Score_VeryBad")}</option>\n        <option value="2" ${2 == currentScore ? "selected" : ""}>${api.storage.lang("UI_Score_Horrible")}</option>\n        <option value="1" ${1 == currentScore ? "selected" : ""}>${api.storage.lang("UI_Score_Appalling")}</option>\n        </select>\n        </div>`, "complete")) return this.malObj.setStatus(status.completed), 
                        this.malObj.setCompletionDateToNow(), void 0 !== j.$("#finish_score").val() && j.$("#finish_score").val() > 0 && (console.log("finish_score: " + j.$("#finish_score :selected").val()), 
                        this.malObj.setScore(j.$("#finish_score :selected").val())), !0;
                    }
                    if (this.malObj.getStatus() !== status.watching && this.malObj.getStatus() !== status.completed && state.status !== status.completed) {
                        if (!(yield utils.flashConfirm(api.storage.lang("syncPage_flashConfirm_start_" + this.page.type), "start"))) return !1;
                        this.malObj.setStatus(status.watching);
                    }
                    return !0;
                }));
            }
            fillUI() {
                if (j.$(".MalLogin").css("display", "initial"), j.$("#AddMalDiv, #LoginMalDiv").remove(), 
                j.$("#malRating").attr("href", this.malObj.getDisplayUrl()), this.malObj.getRating().then(rating => {
                    j.$("#malRating").text(rating);
                }), !this.malObj.login) return j.$(".MalLogin").css("display", "none"), j.$("#MalData").css("display", "flex"), 
                j.$("#MalInfo").text(""), void j.$("#malRating").after("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span id='LoginMalDiv'>" + Object(_provider_templates__WEBPACK_IMPORTED_MODULE_2__.a)().noLogin + "</span>");
                if (this.malObj.addAnime) {
                    j.$(".MalLogin").css("display", "none"), j.$("#malRating").after("<span id='AddMalDiv'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='#' id='AddMal' onclick='return false;'>" + api.storage.lang("syncPage_malObj_addAnime", [ Object(_provider_templates__WEBPACK_IMPORTED_MODULE_2__.a)(this.malObj.url).shortName ]) + "</a></span>");
                    var This = this;
                    j.$("#AddMal").click((function() {
                        return __awaiter(this, void 0, void 0, (function*() {
                            This.malObj.setStatus(6), This.page.isSyncPage(This.url) || This.malObj.setStreamingUrl(This.url), 
                            (yield This.searchObj.openCorrectionCheck()) ? This.handlePage() : This.syncHandling().then(() => This.malObj.update()).then(() => {
                                This.fillUI();
                            });
                        }));
                    }));
                } else j.$("#malTotal, #malTotalCha").text(this.malObj.totalEp), 0 == this.malObj.totalEp && j.$("#malTotal, #malTotalCha").text("?"), 
                j.$("#malTotalVol").text(this.malObj.totalVol), 0 == this.malObj.totalVol && j.$("#malTotalVol").text("?"), 
                j.$("#malEpisodes").val(this.malObj.getEpisode()), j.$("#malVolumes").val(this.malObj.getVolume()), 
                j.$("#malStatus").val(this.malObj.getStatus()), j.$("#malUserRating").val(this.malObj.getScore());
                j.$("#MalData").css("display", "flex"), j.$("#MalInfo").text(""), this.calcSelectWidth(j.$("#malEpisodes, #malVolumes, #malUserRating, #malStatus")), 
                j.$("#malEpisodes, #malVolumes").trigger("input");
                try {
                    this.handleList(!0);
                } catch (e) {
                    con.error(e);
                }
            }
            handleList(searchCurrent = !1, reTry = 0) {
                if (j.$(".mal-sync-active").removeClass("mal-sync-active"), void 0 !== this.page.overview && void 0 !== this.page.overview.list) {
                    var epList = this.getEpList();
                    if (void 0 !== epList && epList.length > 0) {
                        this.offsetHandler(epList);
                        var elementUrl = this.page.overview.list.elementUrl;
                        con.log("Episode List", j.$.map(epList, (function(val, i) {
                            return void 0 !== val ? elementUrl(val) : "-";
                        }))), void 0 !== this.page.overview.list.handleListHook && this.page.overview.list.handleListHook(this.malObj.getEpisode(), epList);
                        var curEp = epList[parseInt(this.malObj.getEpisode())];
                        if (void 0 === curEp && !curEp && this.malObj.getEpisode() && searchCurrent && reTry < 10 && void 0 !== this.page.overview.list.paginationNext) {
                            con.log("Pagination next");
                            var This = this;
                            this.page.overview.list.paginationNext(!1) && setTimeout((function() {
                                reTry++, This.handleList(!0, reTry);
                            }), 500);
                        }
                        var nextEp = epList[this.malObj.getEpisode() + 1];
                        if (void 0 !== nextEp && nextEp && !this.page.isSyncPage(this.url)) {
                            var message = '<a href="' + elementUrl(nextEp) + '">' + api.storage.lang("syncPage_malObj_nextEp_" + this.page.type, [ this.malObj.getEpisode() + 1 ]) + "</a>";
                            utils.flashm(message, {
                                hoverInfo: !0,
                                type: "nextEp"
                            });
                        }
                    }
                }
            }
            getEpList() {
                var This = this;
                if (void 0 !== this.page.overview && void 0 !== this.page.overview.list) {
                    var elementEp = this.page.overview.list.elementEp, elementArray = [], currentEpisode = 0;
                    return this.malObj && (currentEpisode = parseInt(this.malObj.getEpisode())), this.page.overview.list.elementsSelector().each((function(index, el) {
                        try {
                            var elEp = parseInt(elementEp(j.$(el)) + "") + parseInt(This.getOffset());
                            elementArray[elEp] = j.$(el), (api.settings.get("highlightAllEp") && elEp <= currentEpisode || elEp == currentEpisode) && j.$(el).addClass("mal-sync-active");
                        } catch (e) {
                            con.info(e);
                        }
                    })), elementArray;
                }
            }
            offsetHandler(epList) {
                if (this.page.overview.list.offsetHandler && !this.getOffset() && this.searchObj && "user" !== this.searchObj.provider) for (var i = 0; i < epList.length; ++i) if (void 0 !== epList[i]) {
                    if (con.log("Offset", i), i > 1) {
                        var calcOffset = 1 - i;
                        utils.flashConfirm(api.storage.lang("syncPage_flashConfirm_offsetHandler_1", [ calcOffset ]), "offset", () => {
                            this.setOffset(calcOffset);
                        }, () => {
                            this.setOffset(0);
                        });
                    }
                    return;
                }
            }
            cdn() {
                api.storage.addStyle("\n      .bubbles {\n        display: none !important;\n      }\n      div#cf-content:before {\n        content: '';\n        background-image: url(https://raw.githubusercontent.com/lolamtisch/MALSync/master/assets/icons/icon128.png);\n        height: 64px;\n        width: 64px;\n        display: block;\n        background-size: cover;\n        animation: rotate 3s linear infinite;\n        background-color: #251e2b;\n        border-radius: 50%;\n      }\n      @keyframes rotate{ to{ transform: rotate(360deg); } }\n    ");
            }
            getOffset() {
                return this.searchObj && this.searchObj.getOffset() ? this.searchObj.getOffset() : 0;
            }
            setOffset(value) {
                return __awaiter(this, void 0, void 0, (function*() {
                    this.searchObj && this.searchObj.setOffset(value), void 0 !== this.malObj && api.storage.remove("updateCheck/" + this.malObj.type + "/" + this.malObj.getCacheKey());
                }));
            }
            loadUI() {
                if (!this.UILoaded) {
                    this.UILoaded = !0;
                    var wrapStart = '<span style="display: inline-block;">', ui = '<p id="malp">';
                    if (ui += '<span id="MalInfo">' + api.storage.lang("Loading") + "</span>", ui += '<span id="MalData" style="display: none; justify-content: space-between; flex-wrap: wrap;">', 
                    ui += wrapStart, ui += '<span class="info">' + api.storage.lang("search_Score") + " </span>", 
                    ui += '<a id="malRating" style="min-width: 30px;display: inline-block;" target="_blank" href="">____</a>', 
                    ui += "</span>", ui += wrapStart = '<span style="display: inline-block; display: none;" class="MalLogin">', 
                    ui += '<span class="info">' + api.storage.lang("UI_Status") + " </span>", ui += '<select id="malStatus">', 
                    ui += '<option value="1" >' + api.storage.lang("UI_Status_watching_" + this.page.type) + "</option>", 
                    ui += '<option value="2" >' + api.storage.lang("UI_Status_Completed") + "</option>", 
                    ui += '<option value="3" >' + api.storage.lang("UI_Status_OnHold") + "</option>", 
                    ui += '<option value="4" >' + api.storage.lang("UI_Status_Dropped") + "</option>", 
                    ui += '<option value="6" >' + api.storage.lang("UI_Status_planTo_" + this.page.type) + "</option>", 
                    ui += "</select>", ui += "</span>", "anime" == this.page.type) {
                        var middle = "";
                        middle += wrapStart, middle += '<span class="info">' + api.storage.lang("UI_Episode") + " </span>", 
                        middle += '<span style=" text-decoration: none; outline: medium none;">', middle += '<input id="malEpisodes" value="0" type="text" size="1" maxlength="4">', 
                        middle += '/<span id="malTotal">0</span>', middle += "</span>", middle += "</span>";
                    } else {
                        middle = "";
                        middle += wrapStart, middle += '<span class="info">' + api.storage.lang("UI_Volume") + " </span>", 
                        middle += '<span style=" text-decoration: none; outline: medium none;">', middle += '<input id="malVolumes" value="0" type="text" size="1" maxlength="4">', 
                        middle += '/<span id="malTotalVol">0</span>', middle += "</span>", middle += "</span>", 
                        middle += wrapStart, middle += '<span class="info">' + api.storage.lang("UI_Chapter") + " </span>", 
                        middle += '<span style=" text-decoration: none; outline: medium none;">', middle += '<input id="malEpisodes" value="0" type="text" size="1" maxlength="4">', 
                        middle += '/<span id="malTotalCha">0</span>', middle += "</span>", middle += "</span>";
                    }
                    ui += middle, ui += wrapStart, ui += '<span class="info">' + api.storage.lang("UI_Score") + "</span>", 
                    ui += '<select id="malUserRating"><option value="">' + api.storage.lang("UI_Score_Not_Rated") + "</option>", 
                    ui += '<option value="10" >' + api.storage.lang("UI_Score_Masterpiece") + "</option>", 
                    ui += '<option value="9" >' + api.storage.lang("UI_Score_Great") + "</option>", 
                    ui += '<option value="8" >' + api.storage.lang("UI_Score_VeryGood") + "</option>", 
                    ui += '<option value="7" >' + api.storage.lang("UI_Score_Good") + "</option>", ui += '<option value="6" >' + api.storage.lang("UI_Score_Fine") + "</option>", 
                    ui += '<option value="5" >' + api.storage.lang("UI_Score_Average") + "</option>", 
                    ui += '<option value="4" >' + api.storage.lang("UI_Score_Bad") + "</option>", ui += '<option value="3" >' + api.storage.lang("UI_Score_VeryBad") + "</option>", 
                    ui += '<option value="2" >' + api.storage.lang("UI_Score_Horrible") + "</option>", 
                    ui += '<option value="1" >' + api.storage.lang("UI_Score_Appalling") + "</option>", 
                    ui += "</select>", ui += "</span>", ui += "</span>", ui += "</p>";
                    '<p class="headui" style="float: right; margin: 0; margin-right: 10px">', "", "</p>";
                    '<button class="open-info-popup mdl-button" style="display:none; margin-left: 6px;">MAL</button>', 
                    this.page.isSyncPage(this.url) ? void 0 !== this.page.sync.uiSelector && this.page.sync.uiSelector(j.$(ui)) : void 0 !== this.page.overview && this.page.overview.uiSelector(j.$(ui));
                    var This = this;
                    j.$("#malEpisodes, #malVolumes, #malUserRating, #malStatus").change((function() {
                        This.buttonclick();
                        var el = j.$(this);
                        This.calcSelectWidth(el);
                    })), j.$("#malEpisodes, #malVolumes").on("input", (function() {
                        var el = j.$(this), numberlength = el.val().toString().length;
                        numberlength < 1 && (numberlength = 1);
                        var numberWidth = 7.7 * numberlength + 3;
                        el.css("width", numberWidth + "px");
                    })).trigger("input");
                }
            }
            calcSelectWidth(selectors) {
                selectors.each((function(index, selector) {
                    var text = j.$(selector).find("option:selected").text(), aux = j.$('<select style="width: auto;"/>').append(j.$("<option/>").text(text));
                    j.$("#malp").append(aux), j.$(selector).width(aux.width() + 5), aux.remove();
                }));
            }
            buttonclick() {
                return __awaiter(this, void 0, void 0, (function*() {
                    this.malObj.setEpisode(j.$("#malEpisodes").val()), j.$("#malVolumes").length && this.malObj.setVolume(j.$("#malVolumes").val()), 
                    this.malObj.setScore(j.$("#malUserRating").val()), this.malObj.setStatus(j.$("#malStatus").val()), 
                    this.page.isSyncPage(this.url) || this.malObj.setStreamingUrl(this.url), (yield this.searchObj.openCorrectionCheck()) ? this.handlePage() : this.syncHandling().then(() => this.malObj.update()).then(() => {
                        this.fillUI();
                    });
                }));
            }
            presence(info, sender, sendResponse) {
                try {
                    if ("presence" === info.action) {
                        if (console.log("Presence requested", info, this.curState), api.settings.get("presenceHidePage")) largeImageKeyTemp = "malsync", 
                        largeImageTextTemp = "MAL-Sync"; else var largeImageKeyTemp = this.page.name.toLowerCase(), largeImageTextTemp = this.page.name;
                        var pres = {
                            clientId: "606504719212478504",
                            presence: {
                                details: this.curState.title,
                                largeImageKey: largeImageKeyTemp,
                                largeImageText: largeImageTextTemp,
                                instance: !0
                            }
                        };
                        if (this.curState) {
                            if (void 0 !== this.curState.episode) {
                                var ep = this.curState.episode, totalEp = this.malObj.totalEp;
                                if (totalEp || (totalEp = "?"), pres.presence.state = utils.episode(this.page.type) + " " + ep + " of " + totalEp, 
                                void 0 !== this.curState.lastVideoTime) if (this.curState.lastVideoTime.paused) pres.presence.smallImageKey = "pause", 
                                pres.presence.smallImageText = "pause"; else {
                                    var timeleft = this.curState.lastVideoTime.duration - this.curState.lastVideoTime.current;
                                    pres.presence.endTimestamp = Date.now() + 1e3 * timeleft, pres.presence.smallImageKey = "play", 
                                    pres.presence.smallImageText = "playing";
                                } else void 0 === this.curState.startTime && (this.curState.startTime = Date.now()), 
                                pres.presence.startTimestamp = this.curState.startTime;
                                return void sendResponse(pres);
                            }
                            if (api.settings.get("presenceHidePage")) browsingTemp = ""; else var browsingTemp = this.page.name;
                            return pres.presence.startTimestamp = this.browsingtime, pres.presence.state = api.storage.lang("Discord_rpc_browsing", [ browsingTemp ]), 
                            void sendResponse(pres);
                        }
                    }
                } catch (e) {
                    con.error(e);
                }
                sendResponse({});
            }
        }
    }).call(this, __webpack_require__(3), __webpack_require__(0), __webpack_require__(1), __webpack_require__(2));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(con, utils, api) {
        function userList(status = 1, localListType = "anime", callbacks, username = null, offset = 0, templist = []) {
            if (con.log("[UserList]", "username: " + username, "status: " + status, "offset: " + offset), 
            null == username) return callback = function(usernameTemp) {
                0 == usernameTemp ? (utils.flashm("Please log in on <a target='_blank' href='https://myanimelist.net/login.php'>MyAnimeList!<a>"), 
                void 0 !== callbacks.fullListCallback && callbacks.fullListCallback([]), void 0 !== callbacks.finishCallback && callbacks.finishCallback()) : userList(status, localListType, callbacks, usernameTemp, offset, templist);
            }, void api.request.xhr("GET", "https://myanimelist.net/editlist.php?hideLayout").then(response => {
                var username = !1;
                try {
                    username = response.responseText.split('USER_NAME = "')[1].split('"')[0];
                } catch (e) {}
                con.log("[Username]", username), callback(username);
            });
            var callback, url = "https://myanimelist.net/" + localListType + "list/" + username + "/load.json?offset=" + offset + "&status=" + status;
            api.request.xhr("GET", url).then(response => {
                var data = JSON.parse(response.responseText);
                if (data = function(data, listType) {
                    for (var newData = [], i = 0; i < data.length; i++) {
                        var el = data[i];
                        "anime" === listType ? newData.push({
                            uid: el.anime_id,
                            malId: el.anime_id,
                            cacheKey: el.anime_id,
                            type: listType,
                            title: el.anime_title,
                            url: "https://myanimelist.net" + el.anime_url,
                            watchedEp: el.num_watched_episodes,
                            totalEp: el.anime_num_episodes,
                            status: el.status,
                            score: el.score,
                            image: el.anime_image_path,
                            tags: el.tags,
                            airingState: el.anime_airing_status
                        }) : newData.push({
                            uid: el.manga_id,
                            malId: el.manga_id,
                            cacheKey: el.manga_id,
                            type: listType,
                            title: el.manga_title,
                            url: "https://myanimelist.net" + el.manga_url,
                            watchedEp: el.num_read_chapters,
                            totalEp: el.manga_num_chapters,
                            status: el.status,
                            score: el.score,
                            image: el.manga_image_path,
                            tags: el.tags,
                            airingState: el.anime_airing_status
                        });
                    }
                    return newData;
                }(data, localListType), void 0 !== callbacks.singleCallback) {
                    data.length || callbacks.singleCallback(!1, 0, 0);
                    for (var i = 0; i < data.length; i++) callbacks.singleCallback(data[i], i + offset + 1, data.length + offset);
                }
                templist = templist.concat(data), data.length > 299 ? void 0 !== callbacks.continueCall ? callbacks.continueCall(templist, (function() {
                    userList(status, localListType, callbacks, username, offset + 300, templist);
                })) : userList(status, localListType, callbacks, username, offset + 300, templist) : (void 0 !== callbacks.fullListCallback && callbacks.fullListCallback(templist), 
                void 0 !== callbacks.continueCall && callbacks.continueCall(templist, void 0), void 0 !== callbacks.finishCallback && callbacks.finishCallback());
            });
        }
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return userList;
        }));
    }).call(this, __webpack_require__(1), __webpack_require__(2), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return userList;
        }));
        var _helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8);
        function userList(status = 1, localListType = "anime", callbacks, username = null, offset = 0, templist = []) {
            offset < 1 && (offset = 1);
            var callback, anilist = !1;
            if (status = parseInt(status.toString()), void 0 !== callbacks.anilist && (anilist = !0), 
            con.log("[UserList][AniList]", "username: " + username, "status: " + status, "offset: " + offset), 
            null == username) return callback = function(usernameTemp) {
                0 == usernameTemp ? (void 0 !== callbacks.fullListCallback && callbacks.fullListCallback([]), 
                void 0 !== callbacks.finishCallback && callbacks.finishCallback()) : userList(status, localListType, callbacks, usernameTemp, offset, templist);
            }, void api.request.xhr("POST", {
                url: "https://graphql.anilist.co",
                headers: {
                    Authorization: "Bearer " + _helper__WEBPACK_IMPORTED_MODULE_0__.a(),
                    "Content-Type": "application/json",
                    Accept: "application/json"
                },
                data: JSON.stringify({
                    query: "\n  query {\n    Viewer {\n      name\n      id\n    }\n  }\n  ",
                    variables: []
                })
            }).then(response => {
                var res = JSON.parse(response.responseText);
                con.log(res);
                try {
                    _helper__WEBPACK_IMPORTED_MODULE_0__.c(res), callback(res.data.Viewer.name);
                } catch (e) {
                    con.error(e), callback(!1);
                }
            });
            var query = "\n    query ($page: Int, $userName: String, $type: MediaType, $status: MediaListStatus, $sort: [MediaListSort] ) {\n      Page (page: $page, perPage: 100) {\n        pageInfo {\n          hasNextPage\n        }\n        mediaList (status: $status, type: $type, userName: $userName, sort: $sort) {\n          status\n          score(format: POINT_100)\n          progress\n          progressVolumes\n          notes\n          media {\n            siteUrl\n            id\n            idMal\n            episodes\n            chapters\n            volumes\n            status\n            averageScore\n            coverImage{\n              large\n            }\n            title {\n              userPreferred\n            }\n          }\n        }\n      }\n    }\n    ";
            anilist && (query = "\n      query ($page: Int, $userName: String, $type: MediaType, $status: MediaListStatus, $sort: [MediaListSort]) {\n        Page (page: $page, perPage: 100) {\n          pageInfo {\n            hasNextPage\n          }\n          mediaList (status: $status, type: $type, userName: $userName, sort: $sort) {\n            progress\n            media {\n              id\n              idMal\n            }\n          }\n        }\n      }\n      ");
            var variables = {
                page: offset,
                userName: username,
                type: localListType.toUpperCase(),
                status: _helper__WEBPACK_IMPORTED_MODULE_0__.e(parseInt(status.toString()), parseInt(status.toString())),
                sort: "UPDATED_TIME_DESC"
            };
            1 !== status && (variables.sort = null), api.request.xhr("POST", {
                url: "https://graphql.anilist.co",
                headers: {
                    Authorization: "Bearer " + _helper__WEBPACK_IMPORTED_MODULE_0__.a(),
                    "Content-Type": "application/json",
                    Accept: "application/json"
                },
                data: JSON.stringify({
                    query: query,
                    variables: variables
                })
            }).then(response => {
                var res = JSON.parse(response.responseText);
                con.log(res), _helper__WEBPACK_IMPORTED_MODULE_0__.c(res);
                var data = res.data.Page.mediaList;
                if (data = anilist ? function(data, listType) {
                    for (var newData = [], i = 0; i < data.length; i++) {
                        var el = data[i];
                        newData.push({
                            malid: el.media.idMal,
                            id: el.media.id,
                            watchedEp: el.progress,
                            cacheKey: _helper__WEBPACK_IMPORTED_MODULE_0__.d(el.media.idMal, el.media.id)
                        });
                    }
                    return newData;
                }(data) : function(data, listType) {
                    for (var newData = [], i = 0; i < data.length; i++) {
                        var el = data[i];
                        if ("anime" === listType) var tempData = {
                            uid: el.media.id,
                            malId: el.media.idMal,
                            cacheKey: _helper__WEBPACK_IMPORTED_MODULE_0__.d(el.media.idMal, el.media.id),
                            type: listType,
                            title: el.media.title.userPreferred,
                            url: el.media.siteUrl,
                            watchedEp: el.progress,
                            totalEp: el.media.episodes,
                            status: _helper__WEBPACK_IMPORTED_MODULE_0__.e(el.status),
                            score: Math.round(el.score / 10),
                            image: el.media.coverImage.large,
                            tags: el.notes,
                            airingState: el.anime_airing_status
                        }; else tempData = {
                            uid: el.media.id,
                            malId: el.media.idMal,
                            cacheKey: _helper__WEBPACK_IMPORTED_MODULE_0__.d(el.media.idMal, el.media.id),
                            type: listType,
                            title: el.media.title.userPreferred,
                            url: el.media.siteUrl,
                            watchedEp: el.progress,
                            totalEp: el.media.chapters,
                            status: _helper__WEBPACK_IMPORTED_MODULE_0__.e(el.status),
                            score: Math.round(el.score / 10),
                            image: el.media.coverImage.large,
                            tags: el.notes,
                            airingState: el.anime_airing_status
                        };
                        null == tempData.totalEp && (tempData.totalEp = 0), newData.push(tempData);
                    }
                    return newData;
                }(data, localListType), void 0 !== callbacks.singleCallback) {
                    data.length || callbacks.singleCallback(!1, 0, 0);
                    for (var i = 0; i < data.length; i++) callbacks.singleCallback(data[i], i + offset + 1, data.length + offset);
                }
                templist = templist.concat(data), res.data.Page.pageInfo.hasNextPage ? void 0 !== callbacks.continueCall ? callbacks.continueCall(templist, (function() {
                    userList(status, localListType, callbacks, username, offset + 1, templist);
                })) : userList(status, localListType, callbacks, username, offset + 1, templist) : (void 0 !== callbacks.fullListCallback && callbacks.fullListCallback(templist), 
                void 0 !== callbacks.continueCall && callbacks.continueCall(templist, void 0), void 0 !== callbacks.finishCallback && callbacks.finishCallback());
            });
        }
    }).call(this, __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return userList;
        }));
        var _helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        function userList(status = 1, localListType = "anime", callbacks, username = null, offset = 0, templist = []) {
            return __awaiter(this, void 0, void 0, (function*() {
                var statusPart = "", sorting = "";
                7 !== (status = parseInt(status.toString())) && (1 === status && (sorting = "&sort=-progressed_at"), 
                statusPart = "&filter[status]=" + _helper__WEBPACK_IMPORTED_MODULE_0__.h(status, status));
                try {
                    username = yield _helper__WEBPACK_IMPORTED_MODULE_0__.i();
                } catch (e) {
                    return con.error(e), void 0 !== callbacks.fullListCallback && callbacks.fullListCallback([]), 
                    void (void 0 !== callbacks.finishCallback && callbacks.finishCallback());
                }
                return con.log("[UserList][Kitsu]", "user: " + username, "status: " + status, "offset: " + offset), 
                api.request.xhr("GET", {
                    url: "https://kitsu.io/api/edge/library-entries?filter[user_id]=" + username + statusPart + "&filter[kind]=" + localListType + "&page[offset]=" + offset + "&page[limit]=50" + sorting + "&include=" + localListType + "," + localListType + ".mappings," + localListType + ".mappings.item&fields[" + localListType + "]=slug,titles,averageRating,posterImage," + ("anime" == localListType ? "episodeCount" : "chapterCount,volumeCount"),
                    headers: {
                        Authorization: "Bearer " + _helper__WEBPACK_IMPORTED_MODULE_0__.a(),
                        "Content-Type": "application/vnd.api+json",
                        Accept: "application/vnd.api+json"
                    },
                    data: {}
                }).then(response => {
                    var res = JSON.parse(response.responseText);
                    con.log(res), _helper__WEBPACK_IMPORTED_MODULE_0__.b(res);
                    var data = function(data, listType) {
                        for (var newData = [], i = 0; i < data.data.length; i++) {
                            for (var list = data.data[i], el = data.included[i], name = _helper__WEBPACK_IMPORTED_MODULE_0__.d(el.attributes.titles), malId = NaN, k = 0; k < data.included.length; k++) {
                                var mapping = data.included[k];
                                if ("mappings" == mapping.type && mapping.attributes.externalSite === "myanimelist/" + listType && mapping.relationships.item.data.id == el.id) {
                                    malId = mapping.attributes.externalId, data.included.splice(k, 1);
                                    break;
                                }
                            }
                            if ("anime" === listType) var tempData = {
                                malId: malId,
                                uid: el.id,
                                cacheKey: _helper__WEBPACK_IMPORTED_MODULE_0__.c(malId, el.id),
                                kitsuSlug: el.attributes.slug,
                                type: listType,
                                title: name,
                                url: "https://kitsu.io/" + listType + "/" + el.attributes.slug,
                                watchedEp: list.attributes.progress,
                                totalEp: el.attributes.episodeCount,
                                status: _helper__WEBPACK_IMPORTED_MODULE_0__.h(list.attributes.status),
                                score: list.attributes.ratingTwenty / 2,
                                image: el.attributes.posterImage && el.attributes.posterImage.large ? el.attributes.posterImage.large : "",
                                tags: list.attributes.notes,
                                airingState: el.anime_airing_status
                            }; else tempData = {
                                malId: malId,
                                uid: el.id,
                                cacheKey: _helper__WEBPACK_IMPORTED_MODULE_0__.c(malId, el.id),
                                kitsuSlug: el.attributes.slug,
                                type: listType,
                                title: name,
                                url: "https://kitsu.io/" + listType + "/" + el.attributes.slug,
                                watchedEp: list.attributes.progress,
                                totalEp: el.attributes.chapterCount,
                                status: _helper__WEBPACK_IMPORTED_MODULE_0__.h(list.attributes.status),
                                score: list.attributes.ratingTwenty / 2,
                                image: el.attributes.posterImage && el.attributes.posterImage.large ? el.attributes.posterImage.large : "",
                                tags: list.attributes.notes,
                                airingState: el.anime_airing_status
                            };
                            null == tempData.totalEp && (tempData.totalEp = 0), newData.push(tempData);
                        }
                        return newData;
                    }(res, localListType);
                    if (con.error(data), void 0 !== callbacks.singleCallback) {
                        data.length || callbacks.singleCallback(!1, 0, 0);
                        for (var i = 0; i < data.length; i++) callbacks.singleCallback(data[i], i + offset + 1, data.length + offset);
                    }
                    templist = templist.concat(data), res.meta.count > offset + 50 ? void 0 !== callbacks.continueCall ? callbacks.continueCall(templist, (function() {
                        userList(status, localListType, callbacks, username, offset + 50, templist);
                    })) : userList(status, localListType, callbacks, username, offset + 50, templist) : (void 0 !== callbacks.fullListCallback && callbacks.fullListCallback(templist), 
                    void 0 !== callbacks.continueCall && callbacks.continueCall(templist, void 0), void 0 !== callbacks.finishCallback && callbacks.finishCallback());
                });
            }));
        }
    }).call(this, __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(con) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return userList;
        }));
        var _helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        function userList(status = 1, localListType = "anime", callbacks, username = null, offset = 0, templist = []) {
            return __awaiter(this, void 0, void 0, (function*() {
                return status = parseInt(status.toString()), con.log("[UserList][Simkl]", "user: " + username, "status: " + status, "offset: " + offset), 
                _helper__WEBPACK_IMPORTED_MODULE_0__.g().catch(error => ({})).then(list => {
                    var data = function(data, listType, status) {
                        for (var newData = [], i = 0; i < data.length; i++) {
                            var el = data[i], st = _helper__WEBPACK_IMPORTED_MODULE_0__.h(el.status);
                            if ((7 === status || parseInt(st) === status) && "anime" === listType) {
                                var tempData = {
                                    malId: el.show.ids.mal,
                                    uid: el.show.ids.simkl,
                                    cacheKey: _helper__WEBPACK_IMPORTED_MODULE_0__.c(el.show.ids.mal, el.show.ids.simkl),
                                    type: listType,
                                    title: el.show.title,
                                    url: "https://simkl.com/" + listType + "/" + el.show.ids.simkl,
                                    watchedEp: _helper__WEBPACK_IMPORTED_MODULE_0__.d(el.last_watched),
                                    totalEp: el.total_episodes_count,
                                    status: st,
                                    score: el.user_rating ? el.user_rating : 0,
                                    image: "https://simkl.in/posters/" + el.show.poster + "_ca.jpg",
                                    tags: el.private_memo,
                                    airingState: el.anime_airing_status
                                };
                                newData.push(tempData);
                            }
                        }
                        return newData;
                    }(Object.values(list), localListType, status);
                    if (con.error(data), void 0 !== callbacks.singleCallback) {
                        data.length || callbacks.singleCallback(!1, 0, 0);
                        for (var i = 0; i < data.length; i++) callbacks.singleCallback(data[i], i + offset + 1, data.length + offset);
                    }
                    templist = templist.concat(data), void 0 !== callbacks.fullListCallback && callbacks.fullListCallback(templist), 
                    void 0 !== callbacks.continueCall && callbacks.continueCall(templist, void 0), void 0 !== callbacks.finishCallback && callbacks.finishCallback();
                });
            }));
        }
    }).call(this, __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, con, api, j) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return entryClass;
        }));
        var _helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(30), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class entryClass {
            constructor(key, miniMAL = !1, silent = !1, state = null) {
                this.key = key, this.miniMAL = miniMAL, this.silent = silent, this.state = state, 
                this.url = "", this.name = "", this.totalEp = NaN, this.addAnime = !1, this.login = !1, 
                this.wrong = !1, this.pending = !1, this.url = key, this.id = utils.urlPart(key, 4), 
                this.type = utils.urlPart(key, 3), this.page = utils.urlPart(key, 2);
            }
            init() {
                return this.update();
            }
            getDisplayUrl() {
                return "https://github.com/lolamtisch/MALSync/wiki/Local-Sync";
            }
            getMalUrl() {
                return null;
            }
            update() {
                return __awaiter(this, void 0, void 0, (function*() {
                    con.log("Update MAL info", this.key, this.state), this.login = !0, this.addAnime = !1, 
                    this.totalEp = 0, this.totalVol = 0, this.animeInfo = yield api.storage.get(this.key, null), 
                    "undefined" !== this.animeInfo && null !== this.animeInfo && this.animeInfo ? null !== this.state && (this.animeInfo.name = this.state.title) : (null == this.state && (con.error("No state found"), 
                    this.state = {
                        title: "Unknown"
                    }), this.addAnime = !0, this.animeInfo = {
                        name: this.state.title,
                        tags: "",
                        progress: 0,
                        volumeprogress: 0,
                        rewatching: !1,
                        rewatchingCount: 0,
                        score: "",
                        status: 6
                    }), this.name = this.animeInfo.name;
                }));
            }
            getEpisode() {
                return this.animeInfo.progress;
            }
            setEpisode(ep) {
                ep + "" == "" && (ep = 0), this.animeInfo.progress = parseInt(ep + "");
            }
            getVolume() {
                return "manga" == this.type && this.animeInfo.volumeprogress;
            }
            setVolume(ep) {
                "manga" != this.type ? con.error("You cant set Volumes for animes") : this.animeInfo.volumeprogress = ep;
            }
            getStatus() {
                return this.animeInfo.status;
            }
            setStatus(status) {
                this.animeInfo.status = status;
            }
            getScore() {
                return this.animeInfo.score;
            }
            setScore(score) {
                this.animeInfo.score = score;
            }
            getRewatching() {
                return "manga" == this.type ? this.animeInfo[".add_manga[is_rereading]"] : this.animeInfo[".add_anime[is_rewatching]"];
            }
            setRewatching(rewatching) {
                "manga" == this.type && (this.animeInfo[".add_manga[is_rereading]"] = rewatching), 
                this.animeInfo[".add_anime[is_rewatching]"] = rewatching;
            }
            setCompletionDateToNow() {}
            setStartingDateToNow() {}
            getStreamingUrl() {
                var tags = this.animeInfo.tags;
                return utils.getUrlFromTags(tags);
            }
            setStreamingUrl(url) {
                var tags = this.animeInfo.tags;
                tags = utils.setUrlInTags(url, tags), this.animeInfo.tags = tags;
            }
            getRating() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return "Local";
                }));
            }
            getCacheKey() {
                return _helper__WEBPACK_IMPORTED_MODULE_0__.a(this.id, this.page);
            }
            setResumeWaching(url, ep) {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.setResumeWaching(url, ep, this.type, this.getCacheKey());
                }));
            }
            getResumeWaching() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.getResumeWaching(this.type, this.getCacheKey());
                }));
            }
            setContinueWaching(url, ep) {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.setContinueWaching(url, ep, this.type, this.getCacheKey());
                }));
            }
            getContinueWaching() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return utils.getContinueWaching(this.type, this.getCacheKey());
                }));
            }
            getImage() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return api.storage.assetUrl("questionmark.gif");
                }));
            }
            clone() {
                const copy = new this.constructor;
                return Object.assign(copy, this), copy.animeInfo = Object.assign({}, this.animeInfo), 
                copy;
            }
            delete() {
                return api.storage.remove(this.key);
            }
            sync() {
                var status = utils.status;
                return new Promise((resolve, reject) => {
                    var This = this;
                    if (this.addAnime) {
                        var imgSelector = "malSyncImg" + this.id, flashConfirmText = `Save "${this.name}" to local storage?`;
                        return utils.flashConfirm(flashConfirmText, "add", (function() {
                            continueCall();
                        }), (function() {
                            !function() {
                                if (This.wrong = !0, !This.miniMAL) {
                                    var miniButton = j.$("button.open-info-popup");
                                    "none" != miniButton.css("display") ? miniButton.click() : (miniButton.click(), 
                                    miniButton.click());
                                }
                            }();
                        })), void (This.miniMAL || (this.getImage().then(image => {
                            j.$("#" + imgSelector).attr("src", image);
                        }), j.$(".Yes").text(api.storage.lang("Yes")), j.$(".Cancel").text(api.storage.lang("No"))));
                    }
                    var watchCounter = ".add_anime[num_watched_times]", rewatchText = "Rewatch Anime?", rewatchFinishText = "Finish rewatching?";
                    function continueCall() {
                        return __awaiter(this, void 0, void 0, (function*() {
                            con.log("[SET] Object:", This.animeInfo), yield api.storage.set(This.key, This.animeInfo), 
                            resolve();
                        }));
                    }
                    "manga" == this.type && (watchCounter = ".add_manga[num_read_times]", rewatchText = "Reread Manga?", 
                    rewatchFinishText = "Finish rereading?"), this.getStatus() != status.completed || 1 !== this.getEpisode() || 1 === this.totalEp || 1 === this.getRewatching() ? this.getStatus() != status.completed || this.getEpisode() !== this.totalEp || 1 !== this.getRewatching() ? continueCall() : utils.flashConfirm(rewatchFinishText, "add", () => {
                        this.setRewatching(0), "" === this.animeInfo[watchCounter] ? this.animeInfo[watchCounter] = 1 : this.animeInfo[watchCounter] = parseInt(this.animeInfo[watchCounter]) + 1, 
                        continueCall();
                    }, (function() {
                        continueCall();
                    })) : utils.flashConfirm(rewatchText, "add", () => {
                        this.setRewatching(1), continueCall();
                    }, (function() {
                        con.log("Rewatching denial");
                    }));
                });
            }
        }
    }).call(this, __webpack_require__(2), __webpack_require__(1), __webpack_require__(0), __webpack_require__(3));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(con, api, utils) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return userList;
        }));
        var _helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(30), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        function userList(status = 1, localListType = "anime", callbacks, username = null, offset = 0, templist = []) {
            return __awaiter(this, void 0, void 0, (function*() {
                status = parseInt(status);
                var data = function(data, listType, status) {
                    var newData = [];
                    for (var key in data) if (getRegex(listType).test(key)) {
                        var el = data[key];
                        if (con.log(key, el), 7 !== status && parseInt(el.status) !== status) continue;
                        "anime" === listType ? newData.push({
                            airingState: 2,
                            image: api.storage.assetUrl("questionmark.gif"),
                            malId: 0,
                            tags: el.tags,
                            title: el.name,
                            totalEp: 0,
                            status: el.status,
                            score: el.score,
                            type: "anime",
                            uid: key,
                            url: key,
                            cacheKey: _helper__WEBPACK_IMPORTED_MODULE_0__.a(utils.urlPart(key, 4), utils.urlPart(key, 2)),
                            watchedEp: el.progress
                        }) : newData.push({
                            airingState: 2,
                            image: api.storage.assetUrl("questionmark.gif"),
                            malId: 0,
                            tags: el.tags,
                            title: el.name,
                            totalEp: 0,
                            status: el.status,
                            score: el.score,
                            type: "manga",
                            uid: key,
                            url: key,
                            cacheKey: _helper__WEBPACK_IMPORTED_MODULE_0__.a(utils.urlPart(key, 4), utils.urlPart(key, 2)),
                            watchedEp: el.progress
                        });
                    }
                    return con.log("data", newData), newData;
                }(yield getSyncList(), localListType, status);
                if (void 0 !== callbacks.singleCallback) {
                    data.length || callbacks.singleCallback(!1, 0, 0);
                    for (var i = 0; i < data.length; i++) callbacks.singleCallback(data[i], i + offset + 1, data.length + offset);
                }
                void 0 !== callbacks.fullListCallback && callbacks.fullListCallback(data), void 0 !== callbacks.finishCallback && callbacks.finishCallback();
            }));
        }
        function getRegex(listType) {
            return new RegExp("^local://[^/]*/" + listType, "i");
        }
        function getSyncList() {
            return __awaiter(this, void 0, void 0, (function*() {
                if ("userscript" == api.type) {
                    var list = yield api.storage.list("sync");
                    for (var key in list) list[key] = yield api.storage.get(key);
                    var data = list;
                } else data = api.storage.list("sync");
                return data;
            }));
        }
    }).call(this, __webpack_require__(1), __webpack_require__(0), __webpack_require__(2));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, api, con) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return initIframeModal;
        }));
        var minimalObj, _minimalClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79);
        function initIframeModal(page) {
            var posLeft = api.settings.get("posLeft"), miniMalWidth = api.settings.get("miniMalWidth"), miniMalHeight = api.settings.get("miniMalHeight");
            if (!j.$("#info-popup").length) {
                api.storage.addStyle(".modal-content-kal.fullscreen{width: 100% !important;height: 100% !important; bottom: 0 !important;" + posLeft + ": 0 !important;}      .modal-content-kal{-webkit-transition: all 0.5s ease; -moz-transition: all 0.5s ease; -o-transition: all 0.5s ease; transition: all 0.5s ease;}      .floatbutton:hover {background-color:rgb(63,81,181) !important;}      .floatbutton:hover div {background-color:white;}      .floatbutton div {background-color:black;-webkit-transition: all 0.5s ease;-moz-transition: all 0.5s ease;-o-transition: all 0.5s ease;transition: all 0.5s ease;}      .floatbutton {       z-index: 9999;display: none; position:fixed; bottom:40px; right:40px; border-radius: 50%; font-size: 24px; height: 56px; margin: auto; min-width: 56px; width: 56px; padding: 0; overflow: hidden; background: rgba(158,158,158,.2); box-shadow: 0 1px 1.5px 0 rgba(0,0,0,.12), 0 1px 1px 0 rgba(0,0,0,.24); line-height: normal; border: none;       font-weight: 500; text-transform: uppercase; letter-spacing: 0; will-change: box-shadow; transition: box-shadow .2s cubic-bezier(.4,0,1,1),background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1); outline: none; cursor: pointer; text-decoration: none; text-align: center; vertical-align: middle; padding: 16px;      }      .floatbutton.stealth {        background: rgba(158,158,158,.03);      }      .floatbutton.stealth .open-info-popup{        visibility: hidden;      }      .floatbutton.floatHide{        visibility: hidden !important;      }");
                var position = "max-width: 100%; max-height: 100%; min-width: 500px; min-height: 300px; width: " + miniMalWidth + "; height: " + miniMalHeight + "; position: absolute; bottom: 0%; " + posLeft + ": 0%";
                j.$(window).width() < 500 && (position = "width: 100vw; height: 100%; position: absolute; top: 0%; " + posLeft + ": 0%");
                var material = '<dialog class="modal-kal" id="info-popup" style="pointer-events: none;display: none; position: fixed;z-index: 9999;left: 0;top: 0;bottom: 0;width: 100%; height: 100%; background-color: transparent; padding: 0; margin: 0; border: 0;">';
                material += '<div id="modal-content" class="modal-content-kal" Style="pointer-events: all; background-color: #f9f9f9; margin: 0; ' + position + '">', 
                material += "</div>", material += "</dialog>", j.$("body").after(material);
                var additionalClasses = "";
                api.settings.get("floatButtonStealth") && (additionalClasses += "stealth "), api.settings.get("floatButtonHide") && (additionalClasses += "floatHide ");
                var floatbutton = '<button class="open-info-popup floatbutton ' + additionalClasses + '" style="">';
                floatbutton += '<i class="my-float open-info-popup" style="margin-top:22px;"><div class="open-info-popup" style="width: 100%; height: 4px; margin-bottom: 15%;"></div><div class="open-info-popup" style="width: 100%; height: 4px; margin-bottom: 15%;"></div><div class="open-info-popup" style="width: 100%; height: 4px"></div></i></button>', 
                j.$("#info-popup").after(floatbutton), j.$(".open-info-popup").show(), api.settings.get("autoCloseMinimal") && j.$(".modal-kal").css("pointer-events", "initial"), 
                document.addEventListener("click", (function(e) {
                    j.$(e.target).hasClass("open-info-popup") && (con.log("Open miniMAL"), "none" == j.$("#info-popup").css("display") ? (document.getElementById("info-popup").style.display = "block", 
                    j.$(".floatbutton").fadeOut(), j.$("#info-iframe").length ? void 0 !== minimalObj && void 0 !== page.malObj && (minimalObj.fillBase(page.malObj.url), 
                    minimalObj.setPageSync(page)) : function(page) {
                        var iframe = document.createElement("iframe");
                        iframe.setAttribute("id", "info-iframe"), iframe.setAttribute("style", "height:100%;width:100%;border:0;display:block;"), 
                        iframe.onload = function() {
                            var head = j.$("#info-iframe").contents().find("head");
                            api.storage.injectjsResource("material.js", head), api.storage.updateDom(head), 
                            api.storage.injectCssResource("material.css", head), api.storage.injectCssResource("materialFont.css", head), 
                            setTimeout((function() {
                                minimalObj = new _minimalClass__WEBPACK_IMPORTED_MODULE_0__.a(j.$("#info-iframe").contents().find("html")), 
                                void 0 !== page && (void 0 !== page.malObj ? minimalObj.fillBase(page.malObj.url) : minimalObj.fillBase(null), 
                                minimalObj.setPageSync(page));
                            }), 200);
                        }, document.getElementById("modal-content").appendChild(iframe), j.$("#modal-content").append('<div class="kal-tempHeader" style="position:  absolute; width: 100%; height:  103px; background-color: rgb(63,81,181); "></div>'), 
                        j.$("#info-iframe").length && "block" == j.$("#info-iframe").css("display") || (j.$("#info-popup").remove(), 
                        alert("The miniMAL iframe could not be loaded.\nThis could be caused by an AdBlocker."));
                    }(page)) : (document.getElementById("info-popup").style.display = "none", j.$(".floatbutton").fadeIn())), 
                    j.$(e.target).hasClass("modal-kal") && (document.getElementById("info-popup").style.display = "none", 
                    j.$(".floatbutton").fadeIn());
                }));
            }
        }
    }).call(this, __webpack_require__(3), __webpack_require__(0), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(con, utils, j, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return minimal;
        }));
        var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(17), _minimalApp_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(158), vue_clazy_load__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(84), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        vue__WEBPACK_IMPORTED_MODULE_0__.a.use(vue_clazy_load__WEBPACK_IMPORTED_MODULE_2__);
        class minimal {
            constructor(minimal) {
                function handleConnectionChange(event) {
                    "offline" == event.type && (con.log("Offline"), utils.flashm("You're offline check your connection", {
                        error: !0,
                        type: "offline",
                        permanent: !0
                    })), "online" == event.type && (con.log("You are now back online."), $(".type-offline").remove());
                }
                this.minimal = minimal, this.history = [], this.minimal.find("body").append('<div id="minimalApp"></div>'), 
                this.minimalVue = new vue__WEBPACK_IMPORTED_MODULE_0__.a({
                    el: this.minimal.find("#minimalApp").get(0),
                    render: h => h(_minimalApp_vue__WEBPACK_IMPORTED_MODULE_1__.a)
                }), this.minimal.find("head").append('<base href="https://myanimelist.net/">'), 
                this.uiListener(), this.injectCss(), this.loadSettings(), this.updateDom(), window.addEventListener("online", handleConnectionChange), 
                window.addEventListener("offline", handleConnectionChange);
            }
            uiListener() {
                var modal = document.getElementById("info-popup"), This = this;
                this.minimal.on("click", ".mdl-layout__content a", (function(e) {
                    if ("_blank" !== j.$(this).attr("target") && !j.$(this).hasClass("nojs")) {
                        e.preventDefault();
                        var url = j.$(this).attr("href");
                        if (/^local:\/\//i.test(url) || (url = utils.absoluteLink(url, "https://myanimelist.net")), 
                        !This.fill(url)) {
                            var win = window.open(url, "_blank");
                            win ? win.focus() : alert(api.storage.lang("minimalClass_Popup"));
                        }
                    }
                })), this.minimal.find("#close-info-popup").click((function() {
                    This.isPopup() ? window.close() : (modal.style.display = "none", j.$(".floatbutton").fadeIn());
                })), this.minimal.find("#material-fullscreen").click((function() {
                    j.$(".modal-content-kal.fullscreen").length ? (j.$(".modal-content-kal").removeClass("fullscreen"), 
                    j.$(this).find("i").text("fullscreen")) : (j.$(".modal-content-kal").addClass("fullscreen"), 
                    j.$(this).find("i").text("fullscreen_exit"));
                }));
            }
            isPopup() {
                return !!j.$("#Mal-Sync-Popup").length;
            }
            updateDom() {
                this.minimal.find("head").click();
            }
            injectCss() {
                this.minimal.find("head").append(j.$("<style>").html(__webpack_require__(189).toString()));
            }
            fill(url) {
                return this.minimalVue.$children[0].fill(url);
            }
            fillBase(url) {
                return this.minimalVue.$children[0].fillBase(url);
            }
            setPageSync(page) {
                this.minimalVue.$children[0].setPage(page);
            }
            loadSettings() {
                var This = this;
                this.minimal.find("#posLeft").val(api.settings.get("posLeft")), this.minimal.find("#posLeft").change((function() {
                    api.settings.set("posLeft", j.$(this).val()), j.$("#modal-content").css("right", "auto").css("left", "auto").css(j.$(this).val(), "0");
                })), this.minimal.find("#autoTrackingModeanime").val(api.settings.get("autoTrackingModeanime")), 
                this.minimal.find("#autoTrackingModeanime").change((function() {
                    api.settings.set("autoTrackingModeanime", j.$(this).val());
                })), this.minimal.find("#theme").val(api.settings.get("theme")), this.minimal.find("#theme").change((function() {
                    api.settings.set("theme", j.$(this).val()), This.minimal.attr("id", "cr");
                })), this.minimal.find("#autoTrackingModemanga").val(api.settings.get("autoTrackingModemanga")), 
                this.minimal.find("#autoTrackingModemanga").change((function() {
                    api.settings.set("autoTrackingModemanga", j.$(this).val());
                })), this.minimal.find("#miniMalWidth").on("input", (function() {
                    var miniMalWidth = This.minimal.find("#miniMalWidth").val();
                    null !== miniMalWidth && ("" === miniMalWidth && (miniMalWidth = "30%", utils.flashm("Width reset")), 
                    api.settings.set("miniMalWidth", miniMalWidth)), j.$("#modal-content").css("width", miniMalWidth);
                })), this.minimal.find("#syncMode").change((function() {
                    var value = j.$(this).val();
                    api.settings.set("syncMode", value), This.minimal.find("#clearCache").click();
                })), this.minimal.find("#syncMode").val(api.settings.get("syncMode")), this.minimal.find("#miniMalHeight").on("input", (function() {
                    var miniMalHeight = This.minimal.find("#miniMalHeight").val();
                    null !== miniMalHeight && ("" === miniMalHeight && (miniMalHeight = "90%", utils.flashm("Height reset")), 
                    api.settings.set("miniMalHeight", miniMalHeight)), j.$("#modal-content").css("height", miniMalHeight);
                })), this.minimal.find("#malThumbnail").val(api.settings.get("malThumbnail")), this.minimal.find("#malThumbnail").change((function() {
                    api.settings.set("malThumbnail", This.minimal.find("#malThumbnail").val());
                })), this.minimal.find("#clearCache").click((function() {
                    return __awaiter(this, void 0, void 0, (function*() {
                        var cacheArray = yield api.storage.list(), deleted = 0;
                        j.$.each(cacheArray, (function(index, cache) {
                            utils.syncRegex.test(index) || (api.storage.remove(index), deleted++);
                        })), utils.flashm("Cache Cleared [" + deleted + "]");
                    }));
                })), "webextension" == api.type && this.minimal.find(".option-extension").show(), 
                "webextension" == api.type && this.isPopup() && this.minimal.find(".option-extension-popup").show(), 
                "webextension" == api.type && this.isPopup() && (chrome.alarms.get("updateCheck", a => {
                    if (con.log(a), interval = 0, void 0 !== a) {
                        var interval = a.periodInMinutes;
                        this.minimal.find(".updateCheckEnable").show();
                    }
                    if (this.minimal.find("#updateCheckTime").val(interval), interval) {
                        function setUpdateCheckLast() {
                            api.storage.get("updateCheckLast").then(updateCheckTime => {
                                if (!isNaN(updateCheckTime)) {
                                    var delta = Math.abs(updateCheckTime - Date.now()), text = utils.timeDiffToText(delta);
                                    "" != text && (text += "ago", $("#updateCheckAgo").text(text));
                                }
                            });
                        }
                        setUpdateCheckLast(), setInterval((function() {
                            setUpdateCheckLast();
                        }), 6e4);
                    }
                }), this.minimal.find("#updateCheckTime").change(() => {
                    var updateCheckTime = this.minimal.find("#updateCheckTime").val();
                    api.storage.set("updateCheckTime", updateCheckTime), 0 != updateCheckTime && "0" != updateCheckTime ? (this.minimal.find(".updateCheckEnable").show(), 
                    chrome.alarms.create("updateCheck", {
                        periodInMinutes: parseInt(updateCheckTime)
                    }), utils.canHideTabs() || chrome.permissions.request({
                        permissions: [ "webRequest", "webRequestBlocking" ],
                        origins: chrome.runtime.getManifest().optional_permissions.filter(permission => "webRequest" != permission && "webRequestBlocking" != permission && "cookies" != permission)
                    }, (function(granted) {
                        con.log("optional_permissions", granted);
                    })), chrome.alarms.create("updateCheckNow", {
                        when: Date.now() + 1e3
                    })) : (this.minimal.find(".updateCheckEnable").hide(), chrome.alarms.clear("updateCheck"));
                }), this.minimal.find("#updateCheck").show()), this.minimal.find("#updateCheckUi").click(() => {
                    this.minimalVue.$children[0].selectTab("updateCheck");
                }), this.minimal.find("#listSyncUi").click(() => {
                    this.minimalVue.$children[0].selectTab("listSync");
                }), this.minimal.find("#cleanTagsUi").click(() => {
                    this.minimalVue.$children[0].selectTab("cleanTags");
                });
                try {
                    "webextension" == api.type && chrome.permissions.contains({
                        permissions: [ "cookies" ]
                    }, result => {
                        result && (this.minimal.find("#strictCookies")[0].checked || this.minimal.find("#strictCookies").trigger("click")), 
                        this.minimal.find("#strictCookies").change(() => {
                            this.minimal.find("#strictCookies")[0].checked ? (con.log("strictCookies checked"), 
                            chrome.permissions.request({
                                permissions: [ "cookies" ],
                                origins: []
                            }, (function(granted) {
                                con.log("optional_permissions", granted);
                            }))) : (con.log("strictCookies not checked"), chrome.permissions.remove({
                                permissions: [ "cookies" ],
                                origins: []
                            }, (function(remove) {
                                con.log("optional_permissions_remove", remove);
                            })));
                        });
                    });
                } catch (e) {
                    con.error(e);
                }
                api.storage.get("tempVersion").then(version => {
                    var versionMsg = "";
                    version != api.storage.version() && (versionMsg = api.storage.lang("minimalClass_versionMsg", [ api.storage.version(), '[<a class="close" target="_blank" href="https://malsync.lolamtisch.de/changelog#' + api.storage.version() + '">' ])), 
                    con.log(version), void 0 === version && "webextension" !== api.type && (versionMsg = '\n            <div style="\n              text-align: left;\n              margin-left: auto;\n              margin-right: auto;\n              display: inline-block;\n              padding: 10px 15px;\n              background-color: #3d4e9a;\n              margin-top: -5px;\n            ">\n              <span style="text-decoration: underline; font-size: 15px;">' + api.storage.lang("minimalClass_versionMsg_Text_1") + `</span><br>\n              <br>\n              ${api.storage.lang("minimalClass_versionMsg_Text_4")}<br>\n              <a target="_blank" href="https://github.com/Karmesinrot/Anifiltrs#anifiltrs">\n                <img alt="Filter List" src="https://img.shields.io/badge/ublock-Anifiltrs-800900.svg?style=flat-square">\n              </a><br>\n              <br>\n\n\n              ` + api.storage.lang("minimalClass_versionMsg_Text_2") + '<br>\n              <a target="_blank" href="https://discordapp.com/invite/cTH4yaw">\n                <img alt="Discord" src="https://img.shields.io/discord/358599430502481920.svg?style=flat-square&amp;logo=discord&amp;label=Discord&amp;colorB=7289DA">\n              </a><br>\n              <a target="_blank" href="https://github.com/lolamtisch/MALSync/issues">\n                <img alt="Github Issues" src="https://img.shields.io/github/issues/lolamtisch/MALSync.svg?style=flat-square&amp;logo=github&amp;logoColor=white">\n              </a><br>\n              <br>\n              ' + api.storage.lang("minimalClass_versionMsg_Text_3") + '<br>\n              <a target="_blank" href="https://github.com/lolamtisch/MALSync">\n                <img alt="Github" src="https://img.shields.io/github/last-commit/lolamtisch/malsync.svg?style=flat-square&amp;logo=github&amp;logoColor=white&amp;label=Github">\n              </a>\n            </div>\n          '), 
                    "" != versionMsg && this.flashm(versionMsg, (function() {
                        api.storage.set("tempVersion", api.storage.version());
                    }));
                });
            }
            searchMal(keyword, type = "all", selector, callback) {
                var This = this;
                this.minimal.find(selector).html(""), api.request.xhr("GET", "https://myanimelist.net/search/prefix.json?type=" + type + "&keyword=" + keyword + "&v=1").then(response => {
                    var searchResults = j.$.parseJSON(response.responseText);
                    this.minimal.find(selector).append('<div class="mdl-grid">          <select name="myinfo_score" id="searchListType" class="inputtext mdl-textfield__input mdl-cell mdl-cell--12-col" style="outline: none; background-color: white; border: none;">            <option value="anime">Anime</option>            <option value="manga">Manga</option>          </select>        </div>'), 
                    this.minimal.find("#searchListType").val(type), this.minimal.find("#searchListType").change((function(event) {
                        This.searchMal(keyword, This.minimal.find("#searchListType").val(), selector, callback);
                    })), j.$.each(searchResults, (i, value) => {
                        j.$.each(value, (i, value) => {
                            j.$.each(value, (i, value) => {
                                "object" == typeof value && j.$.each(value, (i, value) => {
                                    void 0 !== value.name && This.minimal.find(selector + " > div").append('<a class="mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--2dp mdl-grid searchItem" href="' + value.url + '" style="cursor: pointer;">                  <img src="' + value.image_url + '" style="margin: -8px 0px -8px -8px; height: 100px; width: 64px; background-color: grey;"></img>                  <div style="flex-grow: 100; cursor: pointer; margin-top: 0; margin-bottom: 0;" class="mdl-cell">                    <span style="font-size: 20px; font-weight: 400; line-height: 1;">' + value.name + '</span>                    <p style="margin-bottom: 0; line-height: 20px; padding-top: 3px;">' + api.storage.lang("search_Type") + " " + value.payload.media_type + '</p>                    <p style="margin-bottom: 0; line-height: 20px;">' + api.storage.lang("search_Score") + " " + value.payload.score + '</p>                    <p style="margin-bottom: 0; line-height: 20px;">' + api.storage.lang("search_Year") + " " + value.payload.start_year + "</p>                  </div>                  </a>");
                                });
                            });
                        });
                    }), callback();
                });
            }
            flashm(text, closefn = function() {}) {
                var mess = `\n      <div style="\n        background-color: #3f51b5;\n        text-align: center;\n        padding: 5px 24px;\n        color: white;\n        border-top: 1px solid #fefefe;\n      ">\n        ${text}\n        <i class="material-icons close" style="\n          float: right;\n          font-size: 24px;\n          margin-top: -2px;\n          margin-right: -24px;\n          margin-bottom: -5px;\n        ">close</i>\n      </div>\n    `, flashmDiv = j.$(mess).appendTo(this.minimal.find(".mdl-layout"));
                return flashmDiv.find(".close").click((function() {
                    flashmDiv.slideUp(100, (function() {
                        flashmDiv.remove(), closefn();
                    }));
                })), flashmDiv;
            }
        }
    }).call(this, __webpack_require__(1), __webpack_require__(2), __webpack_require__(3), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api) {
        function getSyncMode(type = "") {
            var mode = api.settings.get("syncMode");
            return "SIMKL" !== mode || "manga" !== type && -1 === type.indexOf("/manga/") ? mode : api.settings.get("syncModeSimkl");
        }
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return getSyncMode;
        }));
    }).call(this, __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return epPredictions;
        }));
        var __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class epPredictions {
            constructor(malId, cacheKey, listType) {
                return this.malId = malId, this.cacheKey = cacheKey, this.listType = listType, this;
            }
            init() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return yield this.initMalPrediction(), yield this.initAniPrediction(), yield this.initUpdateCheckPrediction(), 
                    this;
                }));
            }
            getAiring() {
                return !(!this.updateCheckPrediction || this.updateCheckPrediction.finished) || !(!this.malPrediction || !this.malPrediction.airing);
            }
            getEp(safe = !1) {
                return !safe && this.updateCheckPrediction && this.updateCheckPrediction.newestEp ? {
                    ep: this.updateCheckPrediction.newestEp,
                    provider: "UPDATECHECK"
                } : this.aniPrediction && this.aniPrediction.currentEp ? {
                    ep: this.aniPrediction.currentEp,
                    provider: "ANILIST"
                } : this.malPrediction && this.malPrediction.episode ? {
                    ep: this.malPrediction.episode,
                    provider: "MAL"
                } : void 0;
            }
            getNextEpTimestamp() {
                return !(!this.aniPrediction || !this.aniPrediction.nextEpTime) && 1e3 * this.aniPrediction.nextEpTime;
            }
            initMalPrediction() {
                return __awaiter(this, void 0, void 0, (function*() {
                    if (this.malId && api.settings.get("epPredictions")) {
                        var timestamp = yield api.storage.get("mal/" + this.malId + "/release");
                        if (void 0 !== timestamp) {
                            var airing = 1, episode = 0;
                            if (Date.now() < timestamp && (airing = 0), airing) var delta = Math.abs(Date.now() - timestamp) / 1e3; else delta = Math.abs(timestamp - Date.now()) / 1e3;
                            var diffWeeks = Math.floor(delta / 604800);
                            delta -= 604800 * diffWeeks, airing && (delta = 604800 - delta);
                            var diffDays = Math.floor(delta / 86400);
                            delta -= 86400 * diffDays;
                            var diffHours = Math.floor(delta / 3600) % 24;
                            delta -= 3600 * diffHours;
                            var diffMinutes = Math.floor(delta / 60) % 60;
                            delta -= 60 * diffMinutes, airing && (episode = diffWeeks - ((new Date).getFullYear() - new Date(timestamp).getFullYear()), 
                            ++episode > 50 && (episode = 0));
                            var maxEp = yield api.storage.get("mal/" + this.malId + "/release");
                            (void 0 === maxEp || episode < maxEp) && (this.malPrediction = {
                                timestamp: timestamp,
                                airing: airing,
                                diffWeeks: diffWeeks,
                                diffDays: diffDays,
                                diffHours: diffHours,
                                diffMinutes: diffMinutes,
                                episode: episode
                            });
                        }
                    }
                }));
            }
            initAniPrediction() {
                return __awaiter(this, void 0, void 0, (function*() {
                    this.malId && (this.aniPrediction = yield api.storage.get("mal/" + this.malId + "/aniSch"));
                }));
            }
            initUpdateCheckPrediction() {
                return __awaiter(this, void 0, void 0, (function*() {
                    if (this.cacheKey) {
                        var updateCheckTime = yield api.storage.get("updateCheckTime");
                        if (void 0 !== updateCheckTime && updateCheckTime && "0" !== updateCheckTime) {
                            var cache = yield api.storage.get("updateCheck/" + this.listType + "/" + this.cacheKey);
                            void 0 !== cache && void 0 === cache.error && (this.updateCheckPrediction = cache);
                        }
                    }
                }));
            }
        }
    }).call(this, __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Cache;
        }));
        var __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class Cache {
            constructor(key, ttl, localStorage = !0) {
                return this.key = key, this.ttl = ttl, this.localStorage = localStorage, this;
            }
            hasValue() {
                return __awaiter(this, void 0, void 0, (function*() {
                    var value = yield this.getStorage();
                    return null != value && (new Date).getTime() < value.timestamp;
                }));
            }
            getValue() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return (yield this.getStorage()).data;
                }));
            }
            setValue(result) {
                return __awaiter(this, void 0, void 0, (function*() {
                    var save = {
                        data: result,
                        timestamp: (new Date).getTime() + this.ttl
                    };
                    return this.localStorage ? localStorage.setItem(this.key, JSON.stringify(save)) : api.storage.set(this.key, save);
                }));
            }
            getStorage() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return this.localStorage ? JSON.parse(localStorage.getItem(this.key)) : api.storage.get(this.key);
                }));
            }
        }
    }).call(this, __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(con, api, utils) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return userlist;
        }));
        var _listAbstract__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12), _helper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class userlist extends _listAbstract__WEBPACK_IMPORTED_MODULE_0__.a {
            constructor() {
                super(...arguments), this.name = "local", this.authenticationUrl = "", this.getRegex = _helper__WEBPACK_IMPORTED_MODULE_1__.b, 
                this.getSyncList = _helper__WEBPACK_IMPORTED_MODULE_1__.c, this.getCacheKey = _helper__WEBPACK_IMPORTED_MODULE_1__.a;
            }
            getUsername() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return "local";
                }));
            }
            getPart() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return con.log("[UserList][Local]", "status: " + this.status), this.done = !0, this.prepareData(yield this.getSyncList(), this.listType, this.status);
                }));
            }
            prepareData(data, listType, status) {
                var newData = [];
                for (var key in data) if (this.getRegex(listType).test(key)) {
                    var el = data[key];
                    if (con.log(key, el), 7 !== status && parseInt(el.status) !== status) continue;
                    "anime" === listType ? newData.push(this.fn({
                        airingState: 2,
                        image: api.storage.assetUrl("questionmark.gif"),
                        malId: 0,
                        tags: el.tags,
                        title: el.name,
                        totalEp: 0,
                        status: el.status,
                        score: el.score,
                        type: "anime",
                        uid: key,
                        url: key,
                        cacheKey: this.getCacheKey(utils.urlPart(key, 4), utils.urlPart(key, 2)),
                        watchedEp: el.progress
                    })) : newData.push(this.fn({
                        airingState: 2,
                        image: api.storage.assetUrl("questionmark.gif"),
                        malId: 0,
                        tags: el.tags,
                        title: el.name,
                        totalEp: 0,
                        status: el.status,
                        score: el.score,
                        type: "manga",
                        uid: key,
                        url: key,
                        cacheKey: this.getCacheKey(utils.urlPart(key, 4), utils.urlPart(key, 2)),
                        watchedEp: el.progress
                    }));
                }
                return con.log("data", newData), newData;
            }
        }
    }).call(this, __webpack_require__(1), __webpack_require__(0), __webpack_require__(2));
}, function(module, exports, __webpack_require__) {
    var factory;
    "undefined" != typeof self && self, factory = function() {
        return function(modules) {
            var installedModules = {};
            function __webpack_require__(moduleId) {
                if (installedModules[moduleId]) return installedModules[moduleId].exports;
                var module = installedModules[moduleId] = {
                    i: moduleId,
                    l: !1,
                    exports: {}
                };
                return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), 
                module.l = !0, module.exports;
            }
            return __webpack_require__.m = modules, __webpack_require__.c = installedModules, 
            __webpack_require__.d = function(exports, name, getter) {
                __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {
                    configurable: !1,
                    enumerable: !0,
                    get: getter
                });
            }, __webpack_require__.n = function(module) {
                var getter = module && module.__esModule ? function() {
                    return module.default;
                } : function() {
                    return module;
                };
                return __webpack_require__.d(getter, "a", getter), getter;
            }, __webpack_require__.o = function(object, property) {
                return Object.prototype.hasOwnProperty.call(object, property);
            }, __webpack_require__.p = "", __webpack_require__(__webpack_require__.s = 0);
        }([ function(module, __webpack_exports__, __webpack_require__) {
            "use strict";
            Object.defineProperty(__webpack_exports__, "__esModule", {
                value: !0
            }), __webpack_require__.d(__webpack_exports__, "install", (function() {
                return install;
            })), __webpack_require__.d(__webpack_exports__, "VueClazyLoad", (function() {
                return VueClazyLoad;
            }));
            var ClazyLoadComponent = {
                name: "ClazyLoad",
                props: {
                    tag: {
                        type: String,
                        default: "div"
                    },
                    src: {
                        type: String,
                        required: !0
                    },
                    element: String,
                    threshold: {
                        type: [ Array, Number ],
                        default: function() {
                            return [ 0, .5, 1 ];
                        }
                    },
                    ratio: {
                        type: Number,
                        default: .4,
                        validator: function(value) {
                            return value > 0 && value <= 1;
                        }
                    },
                    margin: {
                        type: String,
                        default: "0px"
                    },
                    crossorigin: {
                        type: String,
                        default: null,
                        validator: function(value) {
                            return "anonymous" === value || "use-credentials" === value;
                        }
                    },
                    loadedClass: {
                        type: String,
                        default: "loaded"
                    },
                    loadingClass: {
                        type: String,
                        default: "loading"
                    },
                    errorClass: {
                        type: String,
                        default: null
                    }
                },
                data: function() {
                    return {
                        loaded: !1,
                        observer: null,
                        errored: !1
                    };
                },
                methods: {
                    load: function() {
                        var _this = this;
                        if (this.$emit("loading"), this.observer.disconnect(), !this.loaded) {
                            var img = new Image;
                            img.addEventListener("load", (function() {
                                _this.loaded = !0, _this.$emit("load"), _clear();
                            })), img.addEventListener("error", (function(event) {
                                _this.errored = !0, _this.$emit("error", event), _clear();
                            }));
                            var _clear = function() {
                                img = null, _this.observer = null;
                            };
                            null !== this.crossorigin && (img.crossOrigin = this.crossorigin), img.src = this.src;
                        }
                    },
                    observe: function() {
                        var _this2 = this, options = {
                            threshold: this.threshold,
                            root: this.element ? document.querySelector(this.element) : null,
                            rootMargin: this.margin
                        };
                        this.observer = new IntersectionObserver((function(entries) {
                            entries[0].intersectionRatio >= _this2.ratio && _this2.load();
                        }), options), this.observer.observe(this.$el);
                    }
                },
                render: function(h) {
                    var elementClass = this.loaded ? this.loadedClass : this.loadingClass;
                    return h(this.tag, {
                        class: this.errored && this.errorClass ? this.errorClass : elementClass
                    }, [ this.loaded ? this.$slots.default || this.$slots.image : this.$slots.placeholder ]);
                },
                mounted: function() {
                    this.$nextTick(this.observe);
                }
            }, install = function(Vue) {
                Vue.component("clazy-load", ClazyLoadComponent);
            }, VueClazyLoad = ClazyLoadComponent;
            __webpack_exports__.default = {
                install: install
            };
        } ]);
    }, module.exports = factory();
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    __webpack_require__.d(__webpack_exports__, "a", (function() {
        return mal;
    }));
    const mal = {
        shortName: "MAL",
        score: "MAL Score:",
        noLogin: "Please log in on <a target='_blank' href='https://myanimelist.net/login.php'>MyAnimeList!<a>"
    };
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return anilist;
        }));
        const anilist = {
            shortName: "AniList",
            score: "AniList Score:",
            noLogin: api.storage.lang("Anilist_Authenticate")
        };
    }).call(this, __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    __webpack_require__.d(__webpack_exports__, "a", (function() {
        return local;
    }));
    const local = {
        shortName: "local storage",
        score: "Local storage Score:",
        noLogin: ""
    };
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return searchClass;
        }));
        var string_similarity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(68), _provider_provider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(9), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class searchClass {
            constructor(title, type, identifier) {
                this.title = title, this.type = type, this.identifier = identifier, this.state = !1, 
                this.changed = !1, this.sanitizedTitel = this.sanitizeTitel(this.title);
            }
            setPage(page) {
                this.page = page;
            }
            setSyncPage(syncPage) {
                this.syncPage = syncPage;
            }
            getSyncPage() {
                return this.syncPage;
            }
            getUrl() {
                return this.state ? this.state.url : null;
            }
            setUrl(url, id = 0) {
                this.state ? (this.state.url !== url && (this.changed = !0), this.state.provider = "user", 
                this.state.url = url, this.state.id = id, this.state.cache = !1, this.state.similarity = {
                    same: !0,
                    value: 1
                }) : (this.changed = !0, this.state = {
                    id: id,
                    url: url,
                    offset: 0,
                    provider: "user",
                    similarity: {
                        same: !0,
                        value: 1
                    }
                }), this.setCache(this.state);
            }
            getOffset() {
                return this.state ? this.state.offset : 0;
            }
            setOffset(offset) {
                this.state && (this.state.offset !== offset && (this.changed = !0), this.state.offset = offset), 
                this.setCache(this.state);
            }
            getCachedOffset() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return this.state = yield this.getCache(), this.state ? this.state.offset : 0;
                }));
            }
            getId() {
                return this.state && this.state.id ? this.state.id : 0;
            }
            getSanitizedTitel() {
                return this.sanitizedTitel;
            }
            getNormalizedType() {
                return "anime" === this.type ? "anime" : "manga";
            }
            sanitizeTitel(title) {
                return title = (title = (title = (title = title.replace(/ *(\(dub\)|\(sub\)|\(uncensored\)|\(uncut\))/i, "")).replace(/ *\([^\)]+audio\)/i, "")).replace(/ BD( |$)/i, "")).trim();
            }
            search() {
                return __awaiter(this, void 0, void 0, (function*() {
                    if (this.state = yield this.getCache(), this.state || (this.state = yield this.searchForIt()), 
                    !this.state || this.state && ![ "user", "firebase", "sync" ].includes(this.state.provider)) {
                        var tempRes = yield this.onsiteSearch();
                        tempRes && (this.state = tempRes);
                    }
                    return this.state && (yield this.setCache(this.state)), con.log("[SEARCH] Result", this.state), 
                    this.state;
                }));
            }
            getCache() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return api.storage.get(this.page.name + "/" + this.identifier + "/Search", null).then(state => (state && (state.cache = !0), 
                    state));
                }));
            }
            setCache(cache) {
                return setTimeout(() => {
                    this.databaseRequest();
                }, 200), api.storage.set(this.page.name + "/" + this.identifier + "/Search", cache);
            }
            static similarity(externalTitle, title, titleArray = []) {
                var simi = Object(string_similarity__WEBPACK_IMPORTED_MODULE_0__.compareTwoStrings)(title.toLowerCase(), externalTitle.toLowerCase());
                titleArray.forEach(el => {
                    if (el) {
                        var tempSimi = Object(string_similarity__WEBPACK_IMPORTED_MODULE_0__.compareTwoStrings)(title.toLowerCase(), el.toLowerCase());
                        tempSimi > simi && (simi = tempSimi);
                    }
                });
                var found = !1;
                return simi > .6 && (found = !0), {
                    same: found,
                    value: simi
                };
            }
            searchForIt() {
                return __awaiter(this, void 0, void 0, (function*() {
                    var result = !1;
                    try {
                        result = searchCompare(result, yield this.malSync());
                    } catch (e) {
                        con.error("MALSync api down", e), result = searchCompare(result, yield this.firebase());
                    }
                    if ((result && "firebase" !== result.provider || !result) && (result = searchCompare(result, yield this.malSearch())), 
                    (result && "firebase" !== result.provider || !result) && (result = searchCompare(result, yield this.pageSearch(), .5)), 
                    result && "firebase" === result.provider && "MAL" !== api.settings.get("syncMode") && !result.url) {
                        var temp = yield this.pageSearch();
                        temp && -1 === temp.url.indexOf("myanimelist.net") && temp.similarity.same && (con.log("[SEARCH] Ignore Firebase", result), 
                        result = temp);
                    }
                    return result;
                    function searchCompare(curVal, newVal, threshold = 0) {
                        return !1 !== curVal && !1 !== newVal && newVal.similarity.value > threshold ? curVal.similarity.value >= newVal.similarity.value ? curVal : newVal : !1 !== curVal ? curVal : newVal;
                    }
                }));
            }
            firebase() {
                return __awaiter(this, void 0, void 0, (function*() {
                    if (!this.page || !this.page.database) return !1;
                    var url = "https://kissanimelist.firebaseio.com/Data2/" + this.page.database + "/" + encodeURIComponent(this.identifierToDbKey(this.identifier)).toLowerCase() + "/Mal.json";
                    return con.log("Firebase", url), api.request.xhr("GET", url).then(response => {
                        if (con.log("Firebase response", response.responseText), "null" === response.responseText || response.responseText.indexOf("error") > -1) return !1;
                        return {
                            url: "Not-Found" == response.responseText.split('"')[1] ? "" : "https://myanimelist.net/" + this.page.type + "/" + response.responseText.split('"')[1] + "/" + response.responseText.split('"')[3],
                            offset: 0,
                            provider: "firebase",
                            similarity: {
                                same: !0,
                                value: 1
                            }
                        };
                    });
                }));
            }
            malSync() {
                return __awaiter(this, void 0, void 0, (function*() {
                    if (!this.page || !this.page.database) return !1;
                    var url = "https://api.malsync.moe/page/" + this.page.database + "/" + encodeURIComponent(this.identifierToDbKey(this.identifier)).toLowerCase();
                    return con.log("malSync", url), api.request.xhr("GET", url).then(response => {
                        if (con.log("malSync response", response), 400 === response.status || 200 === response.status) {
                            if (200 !== response.status || !response.responseText || response.responseText.indexOf("error") > -1) return !1;
                            var res = JSON.parse(response.responseText);
                            return void 0 !== res.malUrl && {
                                url: res.malUrl,
                                offset: 0,
                                provider: "firebase",
                                similarity: {
                                    same: !0,
                                    value: 1
                                }
                            };
                        }
                        throw "malsync offline";
                    });
                }));
            }
            malSearch() {
                var url = "https://myanimelist.net/" + this.getNormalizedType() + ".php?q=" + encodeURI(this.sanitizedTitel);
                return "novel" === this.type && (url = "https://myanimelist.net/" + this.getNormalizedType() + ".php?type=2&q=" + encodeURI(this.sanitizedTitel)), 
                con.log("malSearch", url), api.request.xhr("GET", url).then(response => !("null" === response.responseText || response.responseText.indexOf("  error ") > -1) && function handleResult(response, i = 1, This) {
                    var link = function(response, i) {
                        try {
                            return response.responseText.split('<a class="hoverinfo_trigger" href="')[i].split('"')[0];
                        } catch (e) {
                            con.error(e);
                            try {
                                return response.responseText.split('class="picSurround')[i].split("<a")[1].split('href="')[1].split('"')[0];
                            } catch (e) {
                                return con.error(e), !1;
                            }
                        }
                    }(response, i), id = 0, sim = {
                        same: !1,
                        value: 0
                    };
                    if (!1 !== link) try {
                        if ("manga" === This.type) if (-1 !== response.responseText.split('href="' + link + '" id="si')[1].split("</tr>")[0].indexOf("Novel")) return con.log("Novel Found check next entry"), 
                        handleResult(response, i + 1, This);
                        var malTitel = function(response, link) {
                            try {
                                var id = link.split("/")[4];
                                return response.responseText.split('rel="#sinfo' + id + '"><strong>')[1].split("<")[0];
                            } catch (e) {
                                return con.error(e), "";
                            }
                        }(response, link);
                        sim = searchClass.similarity(malTitel, This.sanitizedTitel), id = parseInt(link.split("/")[4]);
                    } catch (e) {
                        con.error(e);
                    }
                    return {
                        id: id,
                        url: link,
                        offset: 0,
                        provider: "mal",
                        similarity: sim
                    };
                }(response, 1, this));
            }
            pageSearch() {
                return __awaiter(this, void 0, void 0, (function*() {
                    const searchResult = yield Object(_provider_provider__WEBPACK_IMPORTED_MODULE_1__.b)(this.sanitizedTitel, this.getNormalizedType());
                    for (var best = null, i = 0; i < searchResult.length && i < 5; i++) {
                        var el = searchResult[i];
                        const sim = searchClass.similarity(el.name, this.sanitizedTitel, el.altNames);
                        var tempBest = {
                            index: i,
                            similarity: sim
                        };
                        ("manga" === this.type && !el.isNovel || "novel" === this.type && el.isNovel || "anime" === this.type) && (!best || sim.value > best.similarity.value) && (best = tempBest);
                    }
                    if (best) {
                        var retEl = searchResult[best.index], url = yield retEl.malUrl();
                        return {
                            id: retEl.id,
                            url: url || retEl.url,
                            offset: 0,
                            provider: "page",
                            similarity: best.similarity
                        };
                    }
                    return !1;
                }));
            }
            databaseRequest() {
                if (this.page && this.page.database && this.syncPage && this.state) {
                    if (this.state.cache) return;
                    if ("user" === this.state.provider && !this.changed) return;
                    if ("firebase" === this.state.provider) return;
                    var kissurl;
                    kissurl || (kissurl = this.page.isSyncPage(this.syncPage.url) ? this.page.sync.getOverviewUrl(this.syncPage.url) : this.syncPage.url);
                    var param = {
                        Kiss: kissurl,
                        Mal: this.state.url
                    };
                    if ("user" === this.state.provider) {
                        if (!confirm(api.storage.lang("correction_DBRequest"))) return;
                        param.newCorrection = !0;
                    }
                    param.similarity = this.state.similarity;
                    var url = "https://kissanimelist.firebaseio.com/Data2/Request/" + this.page.database + "Request.json";
                    api.request.xhr("POST", {
                        url: url,
                        data: JSON.stringify(param)
                    }).then(response => {
                        "null" === response.responseText || response.responseText.indexOf("error") > -1 ? con.error("[DB] Send to database:", response.responseText) : con.log("[DB] Send to database:", param);
                    });
                }
            }
            onsiteSearch() {
                return __awaiter(this, void 0, void 0, (function*() {
                    if (this.page && this.syncPage && this.syncPage.curState && this.syncPage.curState.on) {
                        var result = !1;
                        if ("OVERVIEW" === this.syncPage.curState.on ? this.page.overview && this.page.overview.getMalUrl && (result = yield this.page.overview.getMalUrl(api.settings.get("syncMode"))) : this.page.sync && this.page.sync.getMalUrl && (result = yield this.page.sync.getMalUrl(api.settings.get("syncMode"))), 
                        result) return con.log("[SEARCH]", "Overwrite by onsite url", result), {
                            url: result,
                            offset: 0,
                            provider: "sync",
                            similarity: {
                                same: !0,
                                value: 1
                            }
                        };
                    }
                    return !1;
                }));
            }
            openCorrection() {}
            identifierToDbKey(title) {
                return "Crunchyroll" === this.page.database ? encodeURIComponent(title.toLowerCase().split("#")[0]).replace(/\./g, "%2E") : title.toLowerCase().split("#")[0].replace(/\./g, "%2E");
            }
        }
    }).call(this, __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return myanimelistClass;
        }));
        var _pages_pages__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10), _provider_MyAnimeList_entryClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15), _provider_MyAnimeList_list__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class myanimelistClass {
            constructor(url) {
                if (this.url = url, this.page = null, this.id = null, this.type = null, this.username = null, 
                url.indexOf("myanimelist.net/anime.php") > -1) {
                    var urlTemp = "/anime/" + utils.urlParam(this.url, "id");
                    window.history.replaceState(null, null, urlTemp), this.url = utils.absoluteLink(urlTemp, "https://myanimelist.net");
                }
                if (url.indexOf("myanimelist.net/manga.php") > -1) {
                    urlTemp = "/manga/" + utils.urlParam(this.url, "id");
                    window.history.replaceState(null, null, urlTemp), this.url = utils.absoluteLink(urlTemp, "https://myanimelist.net");
                }
                var urlpart = utils.urlPart(this.url, 3);
                "anime" != urlpart && "manga" != urlpart || (this.page = "detail", this.id = utils.urlPart(this.url, 4), 
                this.type = urlpart), "animelist" != urlpart && "mangalist" != urlpart || (this.page = "bookmarks", 
                this.type = urlpart.substring(0, 5), this.username = utils.urlPart(this.url, 4)), 
                "character" == urlpart && (this.page = "character"), "people" == urlpart && (this.page = "people"), 
                "search" == urlpart && (this.page = "search");
            }
            init() {
                switch (con.log(this), this.page) {
                  case "detail":
                    this.thumbnails(), this.setEpPrediction(), this.streamingUI(), this.malToKiss(), 
                    this.siteSearch(), this.related(), this.friendScore(), this.relatedTag(), setInterval(() => {
                        this.setEpPrediction();
                    }, 6e4);
                    break;

                  case "bookmarks":
                    var This = this;
                    $(document).ready((function() {
                        $("#mal_cs_powered").length ? This.page = "classic" : This.page = "modern", This.init();
                    }));
                    break;

                  case "modern":
                  case "classic":
                    this.bookmarks();
                    break;

                  case "character":
                  case "people":
                    this.relatedTag();

                  case "search":
                    this.thumbnails();
                    break;

                  default:
                    con.log("This page has no scipt");
                }
            }
            thumbnails() {
                if (con.log("Lazyloaded Images"), !(this.url.indexOf("/pics") > -1 || this.url.indexOf("/pictures") > -1 || "0" == api.settings.get("malThumbnail"))) {
                    var height = parseInt(api.settings.get("malThumbnail")), width = Math.floor(height / 144 * 100), surHeight = height + 4, surWidth = width + 4;
                    api.storage.addStyle(".picSurround img:not(.noKal){height: " + height + "px !important; width: " + width + "px !important;}"), 
                    api.storage.addStyle(".picSurround img.lazyloaded.kal{width: auto !important;}"), 
                    api.storage.addStyle(".picSurround:not(.noKal) a{height: " + surHeight + "px; width: " + surWidth + "px; overflow: hidden; display: flex; justify-content: center;}");
                    var loaded = 0;
                    try {
                        $(window).load((function() {
                            overrideLazyload();
                        }));
                    } catch (e) {
                        con.info(e);
                    }
                    try {
                        window.onload = function() {
                            overrideLazyload();
                        };
                    } catch (e) {
                        con.info(e);
                    }
                    try {
                        document.onload = function() {
                            overrideLazyload();
                        };
                    } catch (e) {
                        con.info(e);
                    }
                    try {
                        $(document).ready((function() {
                            overrideLazyload();
                        }));
                    } catch (e) {
                        con.info(e);
                    }
                }
                function overrideLazyload() {
                    if (!loaded) {
                        loaded = 1;
                        for (var tags = document.querySelectorAll(".picSurround img:not(.kal)"), url = "", i = 0; i < tags.length; i++) {
                            var regexDimensions = /\/r\/\d*x\d*/g;
                            url = tags[i].hasAttribute("data-src") ? tags[i].getAttribute("data-src") : tags[i].getAttribute("src"), 
                            regexDimensions.test(url) || /voiceactors.*v.jpg$/g.test(url) || -1 !== url.indexOf("questionmark") ? ((url = utils.handleMalImages(url)).indexOf("100x140") > -1 || (tags[i].setAttribute("data-src", url), 
                            url = url.replace(/v.jpg$/g, ".jpg"), tags[i].setAttribute("data-srcset", url.replace(regexDimensions, "")), 
                            tags[i].classList.add("lazyload")), tags[i].classList.add("kal")) : (tags[i].closest(".picSurround").classList.add("noKal"), 
                            tags[i].classList.add("kal"), tags[i].classList.add("noKal"));
                        }
                    }
                }
            }
            bookmarksHDimages() {
                for (var tags = document.querySelectorAll('img[src*="/96x136/"]'), i = 0; i < tags.length; i++) {
                    var url = tags[i].getAttribute("src");
                    tags[i].setAttribute("src", url.replace(/\/r\/\d*x\d*/g, ""));
                }
            }
            setEpPrediction() {
                con.log("setEpPrediction"), utils.epPredictionUI(this.id, this.id, this.type, (function(prediction) {
                    prediction && (con.log(prediction), $(".mal-sync-pre-remove, .mal-sync-ep-pre").remove(), 
                    $("#addtolist").prev().before('<div class="mal-sync-pre-remove">' + prediction.text + "</div>"), 
                    $('[id="curEps"], [id="totalChaps"]').before(prediction.tag + " "));
                }));
            }
            malToKiss() {
                return __awaiter(this, void 0, void 0, (function*() {
                    con.log("malToKiss"), utils.getMalToKissArray(this.type, this.id).then(links => {
                        var html = "";
                        for (var pageKey in links) {
                            var page = links[pageKey], tempHtml = "", tempUrl = "";
                            for (var streamKey in page) {
                                var stream = page[streamKey];
                                tempHtml += '<div class="mal_links"><a target="_blank" href="' + stream.url + '">' + stream.title + "</a></div>", 
                                tempUrl = stream.url;
                            }
                            html += '<h2 id="' + pageKey + 'Links" class="mal_links"><img src="' + utils.favicon(tempUrl.split("/")[2]) + '"> ' + pageKey + '<span title="' + pageKey + '" class="remove-mal-sync" style="float: right; font-weight: 100; line-height: 2; cursor: pointer; color: grey;">x</span></h2>', 
                            html += tempHtml, html += '<br class="mal_links" />';
                        }
                        $(document).ready((function() {
                            $('h2:contains("Information")').before(html), $(".remove-mal-sync").click((function() {
                                var key = $(this).attr("title");
                                api.settings.set(key, !1), location.reload();
                            }));
                        }));
                    });
                }));
            }
            siteSearch() {
                if (api.settings.get("SiteSearch")) {
                    var This = this;
                    $(document).ready((function() {
                        con.log("Site Search"), $('h2:contains("Information")').before('<h2 id="mal-sync-search-links" class="mal_links">Search</h2><div class="MALSync-search"><a>[Show]</a></div><br class="mal_links" />'), 
                        api.storage.addStyle("#AniList.mal_links img{background-color: #898989;}"), $(".MALSync-search").one("click", () => {
                            $(".MALSync-search").remove();
                            var title = $('.breadcrumb  *[itemprop="name"]').last().text().trim(), titleEncoded = encodeURI(title), html = "", imgStyle = "position: relative; top: 4px;";
                            for (var key in _pages_pages__WEBPACK_IMPORTED_MODULE_0__.a) {
                                var page = _pages_pages__WEBPACK_IMPORTED_MODULE_0__.a[key];
                                if (page.type === This.type) {
                                    var linkContent = `<img style="${imgStyle}" src="${utils.favicon(page.domain)}"> ${page.name}`;
                                    if (void 0 === page.completeSearchTag) var link = `<a target="_blank" href="${page.searchUrl(titleEncoded)}">\n              ${linkContent}\n            </a>`; else link = page.completeSearchTag(title, linkContent);
                                    var googleSeach = "";
                                    void 0 !== page.googleSearchDomain && (googleSeach = `<a target="_blank" href="https://www.google.com/search?q=${titleEncoded}+site:${page.googleSearchDomain}">\n              <img style="${imgStyle}" src="${utils.favicon("google.com")}">\n            </a>`), 
                                    html += `<div class="mal_links" id="${key}" style="padding: 1px 0;">\n              ${link}\n              ${googleSeach}\n          </div>`;
                                }
                            }
                            $("#mal-sync-search-links").after(html);
                        });
                    }));
                }
            }
            streamingUI() {
                return __awaiter(this, void 0, void 0, (function*() {
                    con.log("Streaming UI");
                    var malObj = new _provider_MyAnimeList_entryClass__WEBPACK_IMPORTED_MODULE_1__.a(this.url);
                    yield malObj.init();
                    var streamUrl = malObj.getStreamingUrl();
                    void 0 !== streamUrl && $(document).ready((function() {
                        return __awaiter(this, void 0, void 0, (function*() {
                            $(".h1 span").first().after(`\n        <div class="data title progress" id="mal-sync-stream-div" style="display: inline-block; position: relative; top: 2px;">\n          <a class="mal-sync-stream" title="${streamUrl.split("/")[2]}" target="_blank" style="margin: 0 0;" href="${streamUrl}">\n            <img src="${utils.favicon(streamUrl.split("/")[2])}">\n          </a>\n        </div>`);
                            var resumeUrlObj = yield malObj.getResumeWaching(), continueUrlObj = yield malObj.getContinueWaching();
                            con.log("Resume", resumeUrlObj, "Continue", continueUrlObj), void 0 !== continueUrlObj && continueUrlObj.ep === malObj.getEpisode() + 1 ? $("#mal-sync-stream-div").append(`<a class="nextStream" title="${api.storage.lang("overview_Continue_" + malObj.type)}" target="_blank" style="margin: 0 5px 0 0; color: #BABABA;" href="${continueUrlObj.url}">\n              <img src="${api.storage.assetUrl("double-arrow-16px.png")}" width="16" height="16">\n            </a>`) : void 0 !== resumeUrlObj && resumeUrlObj.ep === malObj.getEpisode() && $("#mal-sync-stream-div").append(`<a class="resumeStream" title="${api.storage.lang("overview_Resume_Episode_" + malObj.type)}" target="_blank" style="margin: 0 5px 0 0; color: #BABABA;" href="${resumeUrlObj.url}">\n              <img src="${api.storage.assetUrl("arrow-16px.png")}" width="16" height="16">\n            </a>`);
                        }));
                    }));
                }));
            }
            bookmarks() {
                con.log("Bookmarks [" + this.username + "][" + this.page + "]");
                var This = this;
                null !== this.type && this.type;
                var listProvider = new _provider_MyAnimeList_list__WEBPACK_IMPORTED_MODULE_2__.a(7, this.type, {}, this.username);
                if ("modern" == this.page) var book = {
                    bookReady: function(callback) {
                        utils.waitUntilTrue((function() {
                            return "none" == $("#loading-spinner").css("display");
                        }), (function() {
                            callback(listProvider.prepareData($.parseJSON($(".list-table").attr("data-items")))), 
                            utils.changeDetect(() => {
                                $(".tags span a").each((function(index) {
                                    if (void 0 !== utils.getUrlFromTags($(this).text())) {
                                        var par = $(this).parent().parent().parent().parent();
                                        $(this).parent().remove(), streamUI(This.type, par.find(".title .link").first().attr("href"), utils.getUrlFromTags($(this).text()), parseInt(par.find(".progress .link").first().text()), par.find(".title .link").first().attr("href").split("/")[1]);
                                    }
                                }));
                            }, () => $(".list-table > *").length);
                        }));
                    },
                    getElement: function(malUrl) {
                        return $('.list-item a[href^="' + malUrl + '"]').parent().parent(".list-table-data");
                    },
                    streamingSelector: ".data.title .link",
                    cleanTags: function() {
                        $(".tags span a").each((function(index) {
                            void 0 !== utils.getUrlFromTags($(this).text()) && $(this).parent().remove();
                        }));
                    },
                    predictionPos(element, tag) {
                        element.find(".data.progress span, .data.chapter span").first().after(tag);
                    }
                }; else {
                    if ("classic" != this.page) return void con.error("Bookmark type unknown");
                    book = {
                        bookReady: function(callback) {
                            listProvider.get().then(list => {
                                callback(list);
                            }).catch(e => {
                                con.error(e), listProvider.flashmError(e);
                            });
                        },
                        getElement: function(malUrl) {
                            return $('a[href^="' + malUrl + '"]');
                        },
                        streamingSelector: "span",
                        cleanTags: function() {
                            $('span[id^="tagLinks"] a').each((function(index) {
                                void 0 !== utils.getUrlFromTags($(this).text()) && $(this).remove();
                            }));
                        },
                        predictionPos(element, tag) {
                            element.parent().parent().find('span[id^="epText"] a span, span[id^="chap"]').first().after(tag);
                        }
                    };
                }
                function streamUI(type, malUrl, streamUrl, curEp, cacheKey) {
                    return __awaiter(this, void 0, void 0, (function*() {
                        var element = book.getElement(malUrl);
                        element.find(book.streamingSelector).after(`\n        <a class="mal-sync-stream" title="${streamUrl.split("/")[2]}" target="_blank" style="margin: 0 0;" href="${streamUrl}">\n          <img src="${utils.favicon(streamUrl.split("/")[2])}">\n        </a>`);
                        var resumeUrlObj = yield utils.getResumeWaching(type, cacheKey), continueUrlObj = yield utils.getContinueWaching(type, cacheKey);
                        con.log("Resume", resumeUrlObj, "Continue", continueUrlObj), void 0 !== continueUrlObj && continueUrlObj.ep === curEp + 1 ? element.find(".mal-sync-stream").after(`<a class="nextStream" title="Continue watching" target="_blank" style="margin: 0 5px 0 0; color: #BABABA;" href="${continueUrlObj.url}">\n            <img src="${api.storage.assetUrl("double-arrow-16px.png")}" width="16" height="16">\n          </a>`) : void 0 !== resumeUrlObj && resumeUrlObj.ep === curEp && element.find(".mal-sync-stream").after(`<a class="resumeStream" title="Resume watching" target="_blank" style="margin: 0 5px 0 0; color: #BABABA;" href="${resumeUrlObj.url}">\n            <img src="${api.storage.assetUrl("arrow-16px.png")}" width="16" height="16">\n          </a>`);
                    }));
                }
                book.bookReady((function(data) {
                    This.bookmarksHDimages(), $.each(data, (function(index, el) {
                        return __awaiter(this, void 0, void 0, (function*() {
                            var streamUrl = utils.getUrlFromTags(el.tags), malUrl = el.url.replace("https://myanimelist.net", "");
                            con.log(malUrl);
                            var id = el.malId, type = el.type;
                            void 0 !== streamUrl && streamUI(type, malUrl, streamUrl, parseInt(el.watchedEp), el.cacheKey), 
                            utils.epPredictionUI(id, el.cacheKey, type, (function(prediction) {
                                if (prediction) {
                                    var element = book.getElement(malUrl);
                                    book.predictionPos(element, prediction.tag);
                                }
                            }));
                        }));
                    })), book.cleanTags();
                }));
            }
            related() {
                $(document).ready((function() {
                    $(".anime_detail_related_anime a").each((function() {
                        var el = $(this), url = utils.absoluteLink(el.attr("href"), "https://myanimelist.net");
                        void 0 !== url && utils.timeCache("MALTAG/" + url, (function() {
                            return __awaiter(this, void 0, void 0, (function*() {
                                var malObj = new _provider_MyAnimeList_entryClass__WEBPACK_IMPORTED_MODULE_1__.a(url);
                                return yield malObj.init(), utils.statusTag(malObj.getStatus(), malObj.type, malObj.id);
                            }));
                        }), 36e5).then((function(tag) {
                            tag && el.after(tag);
                        }));
                    }));
                }));
            }
            relatedTag() {
                var This = this;
                $(document).ready((function() {
                    $("a.button_edit").each((function() {
                        var el = $(this), href = $(this).attr("href"), type = utils.urlPart(href, 4), id = utils.urlPart(href, 5), state = el.attr("title");
                        if (void 0 !== state && state) {
                            var tag = utils.statusTag(state, type, id);
                            "detail" == This.page ? el.parent().find("> a").first().after(tag) : el.parent().parent().find("> a").after(tag), 
                            el.remove();
                        }
                    }));
                }));
            }
            friendScore() {
                api.settings.get("friendScore") && $(document).ready((function() {
                    var position = $("h2:contains(Reviews)");
                    if (position.length) {
                        var overview = $("#horiznav_nav li a").first();
                        if (overview.is("#horiznav_nav li a.horiznav_active")) {
                            var url = overview.attr("href");
                            void 0 !== url && url && (url = utils.absoluteLink(url, "https://myanimelist.net"), 
                            api.request.xhr("GET", url + "/stats").then(response => {
                                var friendHead = $("a[name=members]", $(response.responseText).children());
                                if (friendHead) {
                                    var friendBody = friendHead.nextAll();
                                    friendBody.length > 1 && friendBody.find('a:contains("All Members")').length && (position.before(friendHead).before(friendBody).before("<br>"), 
                                    $('a:contains("All Members")').after(' | <span id="mal-sync-removeFriends" title="remove" style="cursor: pointer; color: #1d439b;">X</span>'), 
                                    $("#mal-sync-removeFriends").click((function() {
                                        api.settings.set("friendScore", !1), location.reload();
                                    })));
                                }
                            }));
                        }
                    }
                }));
            }
        }
    }).call(this, __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, j, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Kissanime;
        }));
        const Kissanime = {
            name: "kissanime",
            domain: "https://kissanime.ru",
            database: "Kissanime",
            type: "anime",
            isSyncPage: function(url) {
                return !(void 0 === utils.urlPart(url, 5) || !j.$("#centerDivVideo").length);
            },
            sync: {
                getTitle: function(url) {
                    return j.$("#navsubbar a").first().text().replace("Anime", "").replace("information", "").trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                getOverviewUrl: function(url) {
                    return url.split("/").slice(0, 5).join("/");
                },
                getEpisode: function(url) {
                    var episodePart = utils.urlPart(url, 5), temp = [];
                    return null !== (temp = (episodePart = episodePart.replace(/1080p/i, " ").replace(/720p/i, " ")).match(/[e,E][p,P][i,I]?[s,S]?[o,O]?[d,D]?[e,E]?\D?\d+/)) && (episodePart = temp[0]), 
                    null === (temp = episodePart.match(/\d+$/)) ? (temp = episodePart.match(/\d{2,}\-/), 
                    episodePart = null === temp ? 1 : temp[0]) : episodePart = temp[0], episodePart;
                },
                nextEpUrl: function(url) {
                    var nextEp = j.$("#selectEpisode option:selected").next().val();
                    return nextEp ? url.replace(/\/[^\/]*$/, "") + "/" + nextEp : nextEp;
                }
            },
            overview: {
                getTitle: function() {
                    return j.$(".bigChar").first().text();
                },
                getIdentifier: function(url) {
                    return Kissanime.sync.getIdentifier(url);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$(".bigChar").first());
                },
                list: {
                    offsetHandler: !0,
                    elementsSelector: function() {
                        return j.$(".listing tr");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("a").first().attr("href"), Kissanime.domain);
                    },
                    elementEp: function(selector) {
                        var url = Kissanime.overview.list.elementUrl(selector);
                        return /_ED|_OP|_Ending|_Opening|_Preview|_Trailer/i.test(selector.find("a").first().text()) ? NaN : Kissanime.sync.getEpisode(url);
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(193).toString()), j.$(document).ready((function() {
                    page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(2), __webpack_require__(3), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, j, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Kissmanga;
        }));
        const Kissmanga = {
            name: "kissmanga",
            domain: "https://kissmanga.com",
            database: "Kissmanga",
            type: "manga",
            isSyncPage: function(url) {
                return void 0 !== utils.urlPart(url, 5);
            },
            sync: {
                getTitle: function(url) {
                    return j.$("#navsubbar a").first().text().replace("Manga", "").replace("information", "").trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                getOverviewUrl: function(url) {
                    return url.split("/").slice(0, 5).join("/");
                },
                getEpisode: function(url) {
                    var episodePart = utils.urlPart(url, 5), temp = episodePart.match(/[c,C][h,H][a,A]?[p,P]?[t,T]?[e,E]?[r,R]?\D?\d+/);
                    return null === temp ? null === (temp = (episodePart = episodePart.replace(/[V,v][o,O][l,L]\D?\d+/, "")).match(/\d{3}/)) ? (temp = episodePart.match(/\d+/), 
                    episodePart = null === temp ? 0 : temp[0]) : episodePart = temp[0] : episodePart = temp[0].match(/\d+/)[0], 
                    episodePart;
                },
                getVolume: function(url) {
                    try {
                        url = (url = url.match(/[V,v][o,O][l,L]\D?\d{3}/)[0]).match(/\d+/)[0].slice(-3);
                    } catch (e) {
                        return;
                    }
                    return url;
                },
                nextEpUrl: function(url) {
                    return j.$("img.btnNext").first().parent().attr("href");
                }
            },
            overview: {
                getTitle: function() {
                    return j.$(".bigChar").first().text();
                },
                getIdentifier: function(url) {
                    return Kissmanga.sync.getIdentifier(url);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$(".bigChar").first());
                },
                list: {
                    offsetHandler: !0,
                    elementsSelector: function() {
                        return j.$(".listing tr");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("a").first().attr("href"), Kissmanga.domain);
                    },
                    elementEp: function(selector) {
                        var url = Kissmanga.overview.list.elementUrl(selector);
                        return /_ED/.test(url) ? NaN : Kissmanga.sync.getEpisode(url);
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(195).toString()), j.$(document).ready((function() {
                    page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(2), __webpack_require__(3), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, api, con) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return nineAnime;
        }));
        const nineAnime = {
            name: "9anime",
            domain: "https://9anime.to",
            database: "9anime",
            type: "anime",
            isSyncPage: function(url) {
                return !0;
            },
            sync: {
                getTitle: function(url) {
                    return j.$("h1.title").text();
                },
                getIdentifier: function(url) {
                    return (url = url.split("/")[4].split("?")[0]).indexOf(".") > -1 && (url = url.split(".")[1]), 
                    url;
                },
                getOverviewUrl: function(url) {
                    return url.split("/").slice(0, 5).join("/");
                },
                getEpisode: function(url) {
                    return parseInt(j.$(".servers .episodes a.active").attr("data-base"));
                },
                nextEpUrl: function(url) {
                    var nextEp = j.$(".servers .episodes a.active").parent("li").next().find("a").attr("href");
                    return nextEp ? nineAnime.domain + nextEp : nextEp;
                },
                uiSelector: function(selector) {
                    j.$('<div class="widget info"><div class="widget-body"> <p id="malp">' + selector.html() + "</p></div></div>").insertBefore(j.$(".widget.info").first());
                }
            },
            overview: {
                getTitle: function(url) {
                    return "";
                },
                getIdentifier: function(url) {
                    return "";
                },
                uiSelector: function(selector) {},
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$(".episodes.range a");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.attr("href"), nineAnime.domain);
                    },
                    elementEp: function(selector) {
                        return selector.attr("data-base");
                    }
                }
            },
            init(page) {
                api.storage.addStyle(__webpack_require__(197).toString()), utils.waitUntilTrue((function() {
                    return j.$(".servers").length;
                }), (function() {
                    con.info("Start check"), page.handlePage(), utils.urlChangeDetect((function() {
                        con.info("Check"), page.handlePage();
                    }));
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(0), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Crunchyroll;
        }));
        const Crunchyroll = {
            name: "Crunchyroll",
            domain: "https://www.crunchyroll.com",
            database: "Crunchyroll",
            type: "anime",
            isSyncPage: function(url) {
                return !(void 0 === url.split("/")[4] || !j.$("#showmedia_video").length);
            },
            sync: {
                getTitle: function(url) {
                    return Crunchyroll.sync.getIdentifier(urlHandling(url));
                },
                getIdentifier: function(url) {
                    return j.$('link[rel="index"]').attr("title");
                },
                getOverviewUrl: function(url) {
                    return urlHandling(url).split("/").slice(0, 4).join("/") + "?season=" + Crunchyroll.sync.getIdentifier(urlHandling(url));
                },
                getEpisode: function(url) {
                    return episodeHelper(url, j.$("h1.ellipsis").text().replace(j.$("h1.ellipsis > a").text(), "").trim());
                },
                nextEpUrl: function(url) {
                    var nextEp = j.$(".collection-carousel-media-link-current").parent().next().find(".link").attr("href");
                    return nextEp ? Crunchyroll.domain + nextEp : nextEp;
                }
            },
            overview: {
                getTitle: function(url) {
                    return Crunchyroll.overview.getIdentifier(urlHandling(url));
                },
                getIdentifier: function(url) {
                    if (j.$(".season-dropdown").length > 1) throw new Error("MAL-Sync does not support multiple seasons");
                    return j.$(".season-dropdown").length ? j.$(".season-dropdown").first().text() : j.$("#showview-content-header h1 span").first().text();
                },
                uiSelector: function(selector) {
                    selector.insertBefore(j.$("#tabs").first());
                },
                list: {
                    offsetHandler: !0,
                    elementsSelector: function() {
                        return j.$("#showview_content_videos .list-of-seasons .group-item a");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.attr("href"), Crunchyroll.domain);
                    },
                    elementEp: function(selector) {
                        return episodeHelper(urlHandling(Crunchyroll.overview.list.elementUrl(selector)), selector.find(".series-title").text().trim());
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(199).toString()), page.setCacheTemp = page.setCache, 
                page.setCache = function(url, toDatabase, identifier = null) {
                    this.page.isSyncPage(this.url) && this.setCacheTemp(url, toDatabase, identifier);
                }, page.databaseRequestTemp = page.databaseRequest, page.databaseRequest = function(malurl, toDatabase, identifier, kissurl = null) {
                    this.databaseRequestTemp(malurl, toDatabase, identifier, this.url + "?.." + encodeURIComponent(identifier.toLowerCase().split("#")[0]).replace(/\./g, "%2E"));
                }, j.$(document).ready((function() {
                    if (j.$(".season-dropdown").length > 1) {
                        j.$(".season-dropdown").append('<span class="exclusivMal" style="float: right; margin-right: 20px; color: #0A6DA4;" onclick="return false;">MAL</span>'), 
                        j.$(".exclusivMal").click((function(evt) {
                            j.$("#showview_content").before('<div><a href="' + page.url.split("?")[0] + '">Show hidden seasons</a></div>');
                            var thisparent = j.$(evt.target).parent();
                            j.$(".season-dropdown").not(thisparent).siblings().remove(), j.$(".season-dropdown").not(thisparent).remove(), 
                            j.$(".portrait-grid").css("display", "block").find("li.group-item img.landscape").each((function() {
                                void 0 === j.$(this).attr("src") && j.$(this).attr("src", j.$(this).attr("data-thumbnailUrl"));
                            })), j.$(".exclusivMal").remove(), page.handlePage();
                        }));
                        var season = new RegExp("[?&]season=([^&#]*)").exec(page.url);
                        null != season && null != (season = season[1] || null) && (season = decodeURIComponent(decodeURI(season)), 
                        j.$('.season-dropdown[title="' + season + '" i] .exclusivMal').first().click());
                    } else page.handlePage();
                }));
            }
        };
        function urlHandling(url) {
            var langslug = j.$("#home_link, #logo_beta a").first().attr("href");
            return "/" == langslug ? url : url.replace(langslug, "");
        }
        function episodeHelper(url, episodeText) {
            var episodePart = utils.urlPart(urlHandling(url), 4);
            try {
                /\d+\.\d+/.test(episodeText) && (episodePart = "episode" + episodeText.match(/\d+\.\d+/)[0]);
            } catch (e) {
                con.error(e);
            }
            var temp = [];
            return temp = episodePart.match(/[e,E][p,P][i,I]?[s,S]?[o,O]?[d,D]?[e,E]?\D?\d+/), 
            temp = (episodePart = null !== temp ? temp[0] : "").match(/\d+/), episodePart = null === temp ? 1 : temp[0];
        }
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Mangadex;
        }));
        const Mangadex = {
            name: "Mangadex",
            domain: "https://www.mangadex.org",
            database: "Mangadex",
            type: "manga",
            isSyncPage: function(url) {
                return "chapter" === url.split("/")[3];
            },
            sync: {
                getTitle: function(url) {
                    return j.$(".manga-link, a.manga_title").text().trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(Mangadex.sync.getOverviewUrl(url), 4);
                },
                getOverviewUrl: function(url) {
                    return utils.absoluteLink(j.$("a.manga-link, a.manga_title").first().attr("href"), Mangadex.domain);
                },
                getEpisode: function(url) {
                    var chapterId = url.split("/")[4], curOption = j.$('#jump-chapter option[value="' + chapterId + '"], #jump_chapter option[value="' + chapterId + '"]');
                    if (curOption.length) {
                        var temp = curOption.text().trim().match(/(ch\.|chapter)\D?\d+/i);
                        if (null !== temp) return function(string) {
                            if (!string) return "";
                            if (!isNaN(parseInt(string))) return string;
                            var temp = [];
                            if (temp = string.match(/(ch\.|chapter)\D?\d+/i), console.log(temp), null !== temp && (string = temp[0], 
                            null !== (temp = string.match(/\d+/)))) return temp[0];
                            return "";
                        }(temp[0]);
                        if (-1 !== curOption.text().indexOf("oneshot") || -1 !== curOption.text().indexOf("Oneshot")) return 1;
                    }
                    return NaN;
                },
                getVolume: function(url) {
                    var chapterId = url.split("/")[4], curOption = j.$('#jump-chapter option[value="' + chapterId + '"], #jump_chapter option[value="' + chapterId + '"]');
                    if (curOption.length) {
                        var temp = curOption.text().trim().match(/(vol\.|volume)\D?\d+/i);
                        if (null !== temp && null !== (temp = temp[0].match(/\d+/))) return parseInt(temp[0]);
                    }
                    return 0;
                },
                nextEpUrl: function(url) {
                    return "rtl" === j.$("#content").attr("data-direction") && "chapter" === j.$("a.chapter-link-left.col-auto.arrow-link").first().attr("href").split("/")[1] ? Mangadex.domain + j.$("a.chapter-link-left.col-auto.arrow-link").first().attr("href") : "ltr" === j.$("#content").attr("data-direction") && "chapter" === j.$("a.chapter-link-right.col-auto.arrow-link").first().attr("href").split("/")[1] ? Mangadex.domain + j.$("a.chapter-link-right.col-auto.arrow-link").first().attr("href") : void 0;
                }
            },
            overview: {
                getTitle: function() {
                    return j.$(".card-header").first().text().trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    j.$(".container .card .edit.row > * > .row").first().after('<div class="row m-0 py-1 px-0 border-top"><div class="col-lg-3 col-xl-2 strong">MyAnimeList:</div><div class="col-lg-9 col-xl-10 kal-ui"></div></div>'), 
                    selector.appendTo(j.$(".container .card .kal-ui").first());
                },
                getMalUrl: function(provider) {
                    var url = j.$('a[href^="https://myanimelist.net/manga/"]').not("#malRating").first().attr("href");
                    return url || ("ANILIST" === provider && (url = j.$('a[href^="https://anilist.co/manga/"]').not("#malRating").first().attr("href")) ? url : !("KITSU" !== provider || !(url = j.$('a[href^="https://kitsu.io/manga/"]').not("#malRating").first().attr("href"))) && url);
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$(".chapter-container > .row:not(:first-of-type) .chapter-row");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("a").first().attr("href"), Mangadex.domain);
                    },
                    elementEp: function(selector) {
                        return selector.attr("data-chapter");
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                if (api.storage.addStyle(__webpack_require__(201).toString()), j.$(".card-header").length) {
                    if (/chapter\/\d+\/comments/i.test(window.location.href)) return void con.info("Comments");
                    j.$(document).ready((function() {
                        page.handlePage();
                    }));
                } else con.info("Waiting"), utils.waitUntilTrue((function() {
                    return Mangadex.sync.getOverviewUrl("");
                }), (function() {
                    con.info("Start"), page.handlePage();
                    var tempChapterId = utils.urlPart(window.location.href, 4);
                    utils.urlChangeDetect((function() {
                        var newTempChapterId = utils.urlPart(window.location.href, 4);
                        tempChapterId !== newTempChapterId ? (tempChapterId = newTempChapterId, con.info("Check"), 
                        page.handlePage()) : con.info("Nothing to do");
                    }));
                }));
                j.$(document).ready((function() {
                    switch ($("#theme_id").val()) {
                      case "2":
                      case "4":
                      case "6":
                      case "7":
                        $("body").addClass("MALSyncDark");
                    }
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, j, api, con) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Gogoanime;
        }));
        const Gogoanime = {
            name: "Gogoanime",
            domain: [ "https://gogoanimes.co", "https://gogoanime.tv", "https://animego.to" ],
            database: "Gogoanime",
            type: "anime",
            isSyncPage: function(url) {
                return "category" !== utils.urlPart(url, 3);
            },
            sync: {
                getTitle: function(url) {
                    return j.$(".anime-info a").first().text().trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 3).split("-episode")[0];
                },
                getOverviewUrl: function(url) {
                    return url.split("/").slice(0, 3).join("/") + "/category/" + Gogoanime.sync.getIdentifier(url);
                },
                getEpisode: function(url) {
                    return utils.urlPart(url, 3).split("episode-")[1];
                },
                nextEpUrl: function(url) {
                    var href = j.$(".anime_video_body_episodes_r a").last().attr("href");
                    if (void 0 !== href) return Gogoanime.domain + href;
                }
            },
            overview: {
                getTitle: function(url) {
                    return Gogoanime.overview.getIdentifier(url);
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    selector.prependTo(j.$(".anime_info_body").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("#episode_related a");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.attr("href").replace(/^ /, ""), Gogoanime.domain);
                    },
                    elementEp: function(selector) {
                        var url = Gogoanime.overview.list.elementUrl(selector);
                        return Gogoanime.sync.getEpisode(url);
                    },
                    paginationNext: function() {
                        var next = !1, nextReturn = !1;
                        return j.$(j.$("#episode_page a").get().reverse()).each((function(index, el) {
                            if (next && !nextReturn) return el.click(), void (nextReturn = !0);
                            j.$(el).hasClass("active") && (next = !0);
                        })), nextReturn;
                    }
                }
            },
            init(page) {
                function start() {
                    Gogoanime.domain = window.location.protocol + "//" + window.location.hostname, page.handlePage(), 
                    j.$("#episode_page").click((function() {
                        setTimeout((function() {
                            page.handleList();
                        }), 500);
                    }));
                }
                api.storage.addStyle(__webpack_require__(203).toString()), Gogoanime.isSyncPage(page.url) ? j.$(document).ready((function() {
                    start();
                })) : (con.log("noSync"), utils.waitUntilTrue((function() {
                    return j.$("#episode_related").length;
                }), (function() {
                    start();
                })));
            }
        };
    }).call(this, __webpack_require__(2), __webpack_require__(3), __webpack_require__(0), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Anime4you;
        }));
        const Anime4you = {
            name: "Anime4you",
            domain: "https://www.anime4you.one",
            database: "Anime4you",
            type: "anime",
            isSyncPage: function(url) {
                return "epi" === url.split("/")[7];
            },
            sync: {
                getTitle: function(url) {
                    return j.$(".titel").text().replace(j.$(".titel h5").text(), "").trim();
                },
                getIdentifier: function(url) {
                    return parseInt(utils.urlPart(url, 6)).toString();
                },
                getOverviewUrl: function(url) {
                    return Anime4you.domain + "/show/1/aid/" + Anime4you.sync.getIdentifier(url);
                },
                getEpisode: function(url) {
                    return parseInt(utils.urlPart(url, 8));
                },
                nextEpUrl: function(url) {
                    var nextEp = j.$(".vidplayer .forward a").first().attr("href");
                    return nextEp ? Anime4you.domain + nextEp : nextEp;
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("#beschreibung > p").first());
                }
            },
            overview: {
                getTitle: function(url) {
                    return Anime4you.sync.getTitle(url);
                },
                getIdentifier: function(url) {
                    return Anime4you.sync.getIdentifier(url);
                },
                uiSelector: function(selector) {
                    Anime4you.sync.uiSelector(selector);
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$(".episoden li");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("a").first().attr("href"), Anime4you.domain);
                    },
                    elementEp: function(selector) {
                        return Anime4you.sync.getEpisode(Anime4you.overview.list.elementUrl(selector));
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(205).toString()), j.$(document).ready((function() {
                    page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Branitube;
        }));
        const Branitube = {
            name: "Branitube",
            domain: "https://www.branitube.net",
            type: "anime",
            isSyncPage: function(url) {
                return "watch" === url.split("/")[3];
            },
            sync: {
                getTitle: function(url) {
                    return "anime" !== getType() ? j.$(".nomeAnime").text() + " " + getType() : j.$(".nomeAnime").text();
                },
                getIdentifier: function(url) {
                    return j.$(".nomeAnime").data("anid") + "?" + getType().replace(/\s/gm, "");
                },
                getOverviewUrl: function(url) {
                    var tempUrl = Branitube.domain + j.$("div.buttonEpisodes > a").attr("href");
                    return "anime" === getType() ? tempUrl : "ova" === getType() ? tempUrl + "/ovas" : "special" === getType() ? tempUrl + "/especiais" : tempUrl + "/filmes";
                },
                getEpisode: function(url) {
                    return -1 == getType().indexOf("movie") ? j.$(".epInfo").text().replace(/\D+/g, "") : 1;
                },
                nextEpUrl: function(url) {
                    if (-1 == getType().indexOf("movie") && j.$(".cplPl").attr("data-npl") && j.$(".cplPl").attr("data-cpl") && j.$(".cplPl").attr("data-npltype") && j.$(".cplPl").attr("data-cpl") == j.$(".cplPl").attr("data-npltype")) return Branitube.domain + "/watch/" + j.$(".cplPl").attr("data-npl") + "/" + url.split("/")[5];
                },
                getMalUrl: function(provider) {
                    if ("anime" === getType()) {
                        if (!(malid = j.$(".nomeAnime").attr("data-anmalid")) || "0" == malid) var malid = j.$(".epInfo").attr("data-epmalid");
                    } else malid = j.$(".epInfo").attr("data-epmalid");
                    return !(!malid || "0" === malid) && "https://myanimelist.net/anime/" + malid;
                }
            },
            overview: {
                getTitle: function(url) {
                    return "anime" !== getType() ? j.$("div.animeInfos > ul > li.largeSize").text() + " " + getType() : j.$("div.animeInfos > ul > li.largeSize").text();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4] + "?" + getType();
                },
                uiSelector: function(selector) {
                    j.$('<div class="animeResult" style="margin:8px;"> <p id="malp">' + selector.html() + "</p></div>").prependTo(j.$("div.areaEpsList").first());
                },
                getMalUrl: function(provider) {
                    if ("anime" === getType()) var malid = j.$("div.animeInfos > ul > li.largeSize").attr("data-malid");
                    return !(!malid || "0" === malid) && "https://myanimelist.net/anime/" + malid;
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$(".areaEpsList > .getTotalShowingEp > .item-ep > div.area-ep");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("a").first().attr("href"), Branitube.domain);
                    },
                    elementEp: function(selector) {
                        return utils.getBaseText(selector.find("div.infos-bottom > div.ep-info > div.anime-content").first()).replace(/\D+/g, "");
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(207).toString()), j.$(document).ready((function() {
                    "filmes" !== page.url.split("/")[6] && "0" !== j.$("div.areaTypesList.no-padding > ul > li > a.active > span.totalEps").text().replace(/\D+/g, "") && page.handlePage();
                }));
            }
        };
        function getType() {
            if ("watch" === window.location.href.split("/")[3]) var epInfo = j.$(".epInfo").text().toLowerCase(); else epInfo = j.$("div.areaTypesList.no-padding > ul > li > a.active").text().toLowerCase();
            return -1 !== epInfo.indexOf("ova") ? "ova" : -1 !== epInfo.indexOf("especial") || -1 !== epInfo.indexOf("especiais") ? "special" : -1 !== epInfo.indexOf("filme") ? "movie " + epInfo.replace(/\D+/g, "").replace(/^0+/gm, "") : "anime";
        }
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Turkanime;
        }));
        const Turkanime = {
            name: "Turkanime",
            domain: "http://www.turkanime.tv",
            type: "anime",
            isSyncPage: function(url) {
                return "video" === url.split("/")[3];
            },
            sync: {
                getTitle: function(url) {
                    return j.$(".breadcrumb a").first().text().trim();
                },
                getIdentifier: function(url) {
                    return Turkanime.overview.getIdentifier(Turkanime.sync.getOverviewUrl(url));
                },
                getOverviewUrl: function(url) {
                    return utils.absoluteLink(j.$(".breadcrumb a").first().attr("href"), Turkanime.domain);
                },
                getEpisode: function(url) {
                    return getEpisode(Turkanime.sync.getIdentifier(url), Turkanime.overview.getIdentifier(url));
                },
                nextEpUrl: function(url) {
                    if (j.$('.panel-footer a[href^="video"]').last().attr("href") != j.$('.panel-footer a[href^="video"]').first().attr("href")) return utils.absoluteLink(j.$('.panel-footer a[href^="video"]').last().attr("href"), Turkanime.domain);
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("#detayPaylas .panel-title").first().text().trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    selector.prependTo(j.$("#detayPaylas .panel-body").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$(".list.menum > li");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("a").last().attr("href").replace(/^\/\//, "http://"), Turkanime.domain);
                    },
                    elementEp: function(selector) {
                        var url = Turkanime.overview.list.elementUrl(selector);
                        return getEpisode(Turkanime.overview.getIdentifier(window.location.href), Turkanime.overview.getIdentifier(url));
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(209).toString()), j.$(document).ready((function() {
                    Turkanime.isSyncPage(page.url) ? page.handlePage() : utils.waitUntilTrue((function() {
                        return j.$(".list.menum").length;
                    }), (function() {
                        page.handlePage();
                    }));
                }));
            }
        };
        function getEpisode(selector, episodeSelector) {
            var diff = episodeSelector.replace(selector, "").replace(/-/g, ":");
            con.log("getEpisode", selector, episodeSelector, diff);
            var temp = diff.match(/\d+/);
            return null === temp ? 0 : parseInt(temp[0]);
        }
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, api, con) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Twistmoe;
        }));
        const Twistmoe = {
            name: "Twistmoe",
            domain: "https://twist.moe",
            database: "Twistmoe",
            type: "anime",
            isSyncPage: function(url) {
                return !0;
            },
            sync: {
                getTitle: function(url) {
                    return j.$(".series-title").text().trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                getOverviewUrl: function(url) {
                    return Twistmoe.domain + "/a/" + Twistmoe.sync.getIdentifier(url) + "/1";
                },
                getEpisode: function(url) {
                    return parseInt(utils.urlPart(url, 5));
                },
                nextEpUrl: function(url) {
                    return utils.absoluteLink(j.$(".episode-list .current").first().parent().next().find("a").attr("href"), Twistmoe.domain);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$(".information").first());
                }
            },
            overview: {
                getTitle: function(url) {
                    return "";
                },
                getIdentifier: function(url) {
                    return "";
                },
                uiSelector: function(selector) {
                    return "";
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$(".episode-list li");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("a").first().attr("href"), Twistmoe.domain);
                    },
                    elementEp: function(selector) {
                        return Twistmoe.sync.getEpisode(Twistmoe.overview.list.elementUrl(selector));
                    }
                }
            },
            init(page) {
                function start() {
                    "a" == utils.urlPart(page.url, 3).toLowerCase() ? page.handlePage() : con.log("Not an anime page!");
                }
                api.storage.addStyle(__webpack_require__(211).toString()), j.$(document).ready((function() {
                    start(), utils.changeDetect(() => {
                        page.url = window.location.href, page.UILoaded = !1, $("#flashinfo-div, #flash-div-bottom, #flash-div-top").remove(), 
                        start();
                    }, () => $(".information").text());
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(0), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, con, utils, j) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Emby;
        }));
        var __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        }, item = void 0;
        function getApiKey() {
            return __awaiter(this, void 0, void 0, (function*() {
                return api.storage.get("emby_Api_Key");
            }));
        }
        function setApiKey(key) {
            return __awaiter(this, void 0, void 0, (function*() {
                return api.storage.set("emby_Api_Key", key);
            }));
        }
        function getBase() {
            return __awaiter(this, void 0, void 0, (function*() {
                return api.storage.get("emby_Base");
            }));
        }
        function setBase(key) {
            return __awaiter(this, void 0, void 0, (function*() {
                return api.storage.set("emby_Base", key);
            }));
        }
        function checkApi(page) {
            return __awaiter(this, void 0, void 0, (function*() {
                var videoEl = $("video");
                if (videoEl.length) {
                    $("html").addClass("miniMAL-hide");
                    var url = videoEl.attr("src");
                    if (con.log(url), /blob\:/i.test(url)) var apiBase = yield getBase(), itemId = yield function() {
                        return __awaiter(this, void 0, void 0, (function*() {
                            return new Promise((resolve, reject) => {
                                setTimeout(() => {
                                    resolve();
                                }, 1e4);
                            }).then(() => apiCall("/Sessions").then(response => {
                                con.error(response);
                                var data = JSON.parse(response.responseText);
                                con.log(data);
                                for (var i = 0; i < data.length; i++) {
                                    var sess = data[i];
                                    if (void 0 !== sess.NowPlayingItem) return con.log(sess.NowPlayingItem), sess.NowPlayingItem.Id;
                                }
                            }));
                        }));
                    }(), apiKey = yield getApiKey(); else {
                        apiBase = url.split("/").splice(0, 4).join("/"), itemId = utils.urlPart(url, 5), 
                        apiKey = yield getApiKey();
                        setBase(apiBase);
                    }
                    var reqUrl = apiBase + "/Items?ids=" + itemId + "&api_key=" + apiKey;
                    con.log("reqUrl", reqUrl, "base", apiBase, "apiKey", apiKey), api.request.xhr("GET", reqUrl).then(response => {
                        var data = JSON.parse(response.responseText);
                        return item = data.Items[0], reqUrl = apiBase + "/Genres?Ids=" + item.SeriesId + "&api_key=" + apiKey, 
                        con.log(data), api.request.xhr("GET", reqUrl);
                    }).then(response => {
                        var genres = JSON.parse(response.responseText);
                        con.log("genres", genres);
                        for (var i = 0; i < genres.Items.length; i++) {
                            if ("Anime" === genres.Items[i].Name) {
                                con.info("Anime detected"), page.url = window.location.origin + "/#!/itemdetails.html?id=" + itemId, 
                                page.handlePage(page.url), $("html").removeClass("miniMAL-hide");
                                break;
                            }
                        }
                    });
                }
            }));
        }
        function urlChange(page) {
            return __awaiter(this, void 0, void 0, (function*() {
                if ($("html").addClass("miniMAL-hide"), -1 !== window.location.href.indexOf("id=")) {
                    var reqUrl = "/Items?ids=" + utils.urlParam(window.location.href, "id");
                    apiCall(reqUrl).then(response => {
                        var data = JSON.parse(response.responseText);
                        switch (data.Items[0].Type) {
                          case "Season":
                            con.log("Season", data), item = data.Items[0], apiCall(reqUrl = "/Genres?Ids=" + item.SeriesId).then(response => {
                                var genres = JSON.parse(response.responseText);
                                con.log("genres", genres);
                                for (var i = 0; i < genres.Items.length; i++) {
                                    if ("Anime" === genres.Items[i].Name) {
                                        con.info("Anime detected"), page.handlePage(), $("html").removeClass("miniMAL-hide");
                                        break;
                                    }
                                }
                            });
                            break;

                          case "Series":
                            con.log("Series", data);
                            break;

                          default:
                            con.log("Not recognized", data);
                        }
                    });
                }
            }));
        }
        function testApi() {
            return __awaiter(this, void 0, void 0, (function*() {
                return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, (function*() {
                    var base = yield getBase();
                    void 0 !== base && "" !== base || (con.info("No base"), base = yield function() {
                        return __awaiter(this, void 0, void 0, (function*() {
                            return new Promise((resolve, reject) => {
                                utils.waitUntilTrue((function() {
                                    return j.$("*[data-url]").length;
                                }), (function() {
                                    var base = j.$("*[data-url]").first().attr("data-url").split("/").splice(0, 4).join("/");
                                    con.log("Base Found", base), resolve(base);
                                }));
                            });
                        }));
                    }()), setBase(base), apiCall("/System/Info", null, base).then(response => 200 !== response.status ? (con.error("Not Authenticated"), 
                    setBase(""), reject(), !1) : (resolve(), !0));
                })));
            }));
        }
        function apiCall(url, apiKey = null, base = null) {
            return __awaiter(this, void 0, void 0, (function*() {
                if (null === apiKey && (apiKey = yield getApiKey()), null === base && (base = yield getBase()), 
                -1 !== url.indexOf("?")) var pre = "&"; else pre = "?";
                return url = base + url + pre + "api_key=" + apiKey, con.log("Api Call", url), api.request.xhr("GET", url);
            }));
        }
        const Emby = {
            name: "Emby",
            domain: "http://app.emby.media",
            type: "anime",
            isSyncPage: function(url) {
                return "Episode" === item.Type;
            },
            sync: {
                getTitle: function(url) {
                    return item.SeriesName + (item.ParentIndexNumber > 1 ? " Season " + item.ParentIndexNumber : "");
                },
                getIdentifier: function(url) {
                    return void 0 !== item.SeasonId ? item.SeasonId : void 0 !== item.SeriesId ? item.SeriesId : item.Id;
                },
                getOverviewUrl: function(url) {
                    return Emby.domain + "/#!/itemdetails.html?id=" + Emby.sync.getIdentifier(url);
                },
                getEpisode: function(url) {
                    return item.IndexNumber;
                }
            },
            overview: {
                getTitle: function(url) {
                    return item.SeriesName + (item.IndexNumber > 1 ? " Season " + item.IndexNumber : "");
                },
                getIdentifier: function(url) {
                    return item.Id;
                },
                uiSelector: function(selector) {
                    selector.appendTo(j.$(".page:not(.hide) .detailSection").first());
                }
            },
            init(page) {
                api.storage.addStyle(__webpack_require__(213).toString()), testApi().catch(() => (con.info("Not Authenticated"), 
                function askForApiKey() {
                    return __awaiter(this, void 0, void 0, (function*() {
                        return new Promise((resolve, reject) => {
                            var msg = utils.flashm(`<p>${api.storage.lang("Emby_Authenticate")}</p>\n      <p><input id="MS-ApiKey" type="text" placeholder="Please enter the Api Key here" style="width: 100%;"></p>\n      <div style="display: flex; justify-content: space-around;">\n        <button class="Yes" style="background-color: transparent; border: none; color: rgb(255,64,129);margin-top: 10px; cursor:pointer;">OK</button>\n        <button class="Cancel" style="background-color: transparent; border: none; color: rgb(255,64,129);margin-top: 10px; cursor:pointer;">CANCEL</button>\n      </div>\n      `, {
                                position: "bottom",
                                permanent: !0,
                                type: "getApi"
                            });
                            msg.find(".Yes").click((function(evt) {
                                var api = j.$("#MS-ApiKey").val();
                                con.info("api", api), setApiKey(api), j.$(evt.target).parentsUntil(".flash").remove(), 
                                testApi().then(() => {
                                    resolve(!0);
                                }).catch(() => __awaiter(this, void 0, void 0, (function*() {
                                    utils.flashm("Could not Authenticate"), yield askForApiKey(), resolve(!0);
                                })));
                            })), msg.find(".Cancel").click((function(evt) {
                                j.$(evt.target).parentsUntil(".flash").remove(), reject(!1);
                            }));
                        });
                    }));
                }())).then(() => {
                    con.info("Authenticated"), utils.changeDetect(() => {
                        page.UILoaded = !1, $("#flashinfo-div, #flash-div-bottom, #flash-div-top").remove(), 
                        checkApi(page);
                    }, () => {
                        var src = $("video").first().attr("src");
                        return void 0 === src ? "NaN" : src;
                    }), utils.urlChangeDetect((function() {
                        -1 === window.location.href.indexOf("video") && -1 === window.location.href.indexOf("#dlg") && ($("#flashinfo-div, #flash-div-bottom, #flash-div-top, #malp").remove(), 
                        page.UILoaded = !1, urlChange(page));
                    })), j.$(document).ready((function() {
                        utils.waitUntilTrue((function() {
                            return j.$(".page").length;
                        }), (function() {
                            urlChange(page);
                        }));
                    })), document.addEventListener("fullscreenchange", (function() {
                        window.fullScreen || window.innerWidth == screen.width && window.innerHeight == screen.height ? $("html").addClass("miniMAL-Fullscreen") : $("html").removeClass("miniMAL-Fullscreen");
                    }));
                });
            }
        };
    }).call(this, __webpack_require__(0), __webpack_require__(1), __webpack_require__(2), __webpack_require__(3));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, utils, con, j) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Plex;
        }));
        var __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        }, item = void 0;
        function urlChange(page, curUrl = window.location.href, player = !1) {
            return __awaiter(this, void 0, void 0, (function*() {
                $("html").addClass("miniMAL-hide");
                var path = utils.urlParam(curUrl, "key");
                path && -1 !== path.indexOf("metadata") && function(url, apiKey = null, base = null) {
                    return __awaiter(this, void 0, void 0, (function*() {
                        if (null === apiKey && (apiKey = yield function() {
                            return __awaiter(this, void 0, void 0, (function*() {
                                return api.storage.get("Plex_Api_Key");
                            }));
                        }()), null === base && (base = yield function() {
                            return __awaiter(this, void 0, void 0, (function*() {
                                return api.storage.get("Plex_Base");
                            }));
                        }()), -1 !== url.indexOf("?")) var pre = "&"; else pre = "?";
                        return url = base + url + pre + "X-Plex-Token=" + apiKey, con.log("Api Call", url), 
                        api.request.xhr("GET", {
                            url: url,
                            headers: {
                                Accept: "application/json"
                            }
                        });
                    }));
                }(decodeURIComponent(path)).then(response => {
                    if (200 !== response.status) return con.error("No Api Key"), void $("html").addClass("noApiKey");
                    try {
                        var data = JSON.parse(response.responseText);
                    } catch (e) {
                        return con.error(e), void $("html").addClass("noApiKey");
                    }
                    if (/(anime|asian)/i.test(data.MediaContainer.librarySectionTitle)) switch ((item = data.MediaContainer.Metadata[0]).type) {
                      case "show":
                        con.log("Show", data), utils.waitUntilTrue((function() {
                            return j.$('[data-qa-id="preplayMainTitle"]').length;
                        }), (function() {
                            page.UILoaded = !1, page.handlePage(curUrl), $("html").removeClass("miniMAL-hide");
                        }));
                        break;

                      case "episode":
                        con.log("Episode", data), player && (page.handlePage(curUrl), $("html").removeClass("miniMAL-hide"));
                        break;

                      default:
                        con.log("Not recognized", data);
                    } else con.info("!Not an Anime!");
                });
            }));
        }
        const Plex = {
            name: "Plex",
            domain: "http://app.plex.tv",
            type: "anime",
            isSyncPage: function(url) {
                return "episode" === item.type;
            },
            sync: {
                getTitle: function(url) {
                    return item.grandparentTitle + (item.parentIndex > 1 ? " Season " + item.parentIndex : "");
                },
                getIdentifier: function(url) {
                    return void 0 !== item.parentKey ? item.parentKey.split("/")[3] : void 0 !== item.grandparentKey ? item.grandparentKey.split("/")[3] : item.key.split("/")[3];
                },
                getOverviewUrl: function(url) {
                    return Plex.domain + $('[class^="AudioVideoPlayerView"] [class*="MetadataPosterTitle"][data-qa-id="metadataTitleLink"]').first().attr("href");
                },
                getEpisode: function(url) {
                    return item.index;
                }
            },
            overview: {
                getTitle: function(url) {
                    return item.title;
                },
                getIdentifier: function(url) {
                    return item.key.split("/")[3];
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$('[data-qa-id="preplayMainTitle"]').first());
                }
            },
            init(page) {
                api.storage.addStyle(__webpack_require__(215).toString()), utils.changeDetect(() => {
                    var href = $("[download]").attr("href"), apiBase = href.split("/").splice(0, 3).join("/"), apiKey = utils.urlParam(href, "X-Plex-Token");
                    con.info("Set Api", apiBase, apiKey), function(key) {
                        __awaiter(this, void 0, void 0, (function*() {
                            return api.storage.set("Plex_Api_Key", key);
                        }));
                    }(apiKey), function(key) {
                        __awaiter(this, void 0, void 0, (function*() {
                            return api.storage.set("Plex_Base", key);
                        }));
                    }(apiBase), $("html").removeClass("noApiKey");
                }, () => {
                    return $("[download]").length;
                }), utils.urlChangeDetect((function() {
                    $('[class^="AudioVideoPlayerView"] [class*="MetadataPosterTitle"] [data-qa-id="metadataTitleLink"]').length || urlChange(page);
                })), j.$(document).ready((function() {
                    $('[class^="AudioVideoPlayerView"] [class*="MetadataPosterTitle"] [data-qa-id="metadataTitleLink"]').length || urlChange(page);
                })), utils.changeDetect(() => {
                    page.UILoaded = !1, $("#flashinfo-div, #flash-div-bottom, #flash-div-top").remove();
                    var metaUrl = $('[class^="AudioVideoPlayerView"] [class*="MetadataPosterTitle"] [data-qa-id="metadataTitleLink"]').first().attr("href");
                    void 0 !== metaUrl && urlChange(page, Plex.domain + metaUrl, !0);
                }, () => {
                    var src = $('[class^="AudioVideoPlayerView"] [class*="MetadataPosterTitle"] [data-qa-id="metadataTitleLink"]').first().attr("href");
                    return void 0 === src ? "NaN" : src;
                }), document.addEventListener("fullscreenchange", (function() {
                    window.fullScreen || window.innerWidth == screen.width && window.innerHeight == screen.height ? $("html").addClass("miniMAL-Fullscreen") : $("html").removeClass("miniMAL-Fullscreen");
                }));
            }
        };
    }).call(this, __webpack_require__(0), __webpack_require__(2), __webpack_require__(1), __webpack_require__(3));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, api, con, j) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Netflix;
        }));
        var ident = void 0, ses = void 0, genres = [ "2797624", "7424", "67614", "2653", "587", "625", "79307", "9302", "79488", "452", "79448", "11146", "79440", "3063", "79543", "79427", "10695", "2729", "79329", "79572", "64256", "2951909" ];
        function getSeries(page) {
            var videoId = utils.urlPart(window.location.href, 4), reqUrl = Netflix.domain + "/title/" + videoId;
            api.request.xhr("GET", reqUrl).then(response => {
                con.log(response);
                var anime = !1;
                genres.forEach((function(genre) {
                    -1 !== response.responseText.indexOf('"genres","' + genre + '"') && (anime = !0);
                })), anime ? (ses = function() {
                    var sesText = j.$(".ellipsize-text span").first().text().trim(), temp = sesText.match(/^(S|St.\ )\d+/);
                    if (null !== temp) return "?s=" + temp[0].replace(/^\D*/, "").trim();
                    if (null !== (temp = sesText.match(/\d+/))) return "?s=" + temp[0];
                    throw "No Season found";
                }(), ident = utils.urlPart(response.finalUrl, 4) + ses, page.handlePage(), $("html").removeClass("miniMAL-hide")) : con.info("No Anime");
            });
        }
        const Netflix = {
            name: "Netflix",
            domain: "https://www.netflix.com",
            database: "Netflix",
            type: "anime",
            isSyncPage: function(url) {
                return !0;
            },
            sync: {
                getTitle: function(url) {
                    return j.$(".ellipsize-text h4").text().trim() + " Season " + ses.replace("?s=", "");
                },
                getIdentifier: function(url) {
                    return ident;
                },
                getOverviewUrl: function(url) {
                    return Netflix.domain + "/title/" + Netflix.sync.getIdentifier(url);
                },
                getEpisode: function(url) {
                    var temp = j.$(".ellipsize-text span").first().text().trim().match(/\d+$/);
                    return null !== temp ? parseInt(temp[0]) : 1;
                }
            },
            init(page) {
                function ready() {
                    $("#flashinfo-div, #flash-div-bottom, #flash-div-top, #malp").remove(), $("html").addClass("miniMAL-hide"), 
                    "watch" == utils.urlPart(window.location.href, 3) && utils.waitUntilTrue((function() {
                        return j.$(".ellipsize-text").length;
                    }), (function() {
                        getSeries(page);
                    }));
                }
                api.storage.addStyle(__webpack_require__(217).toString()), j.$(document).ready((function() {
                    ready();
                })), utils.urlChangeDetect((function() {
                    ready();
                }));
            }
        };
    }).call(this, __webpack_require__(2), __webpack_require__(0), __webpack_require__(1), __webpack_require__(3));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return animepahe;
        }));
        const animepahe = {
            name: "animepahe",
            domain: "https://animepahe.com",
            type: "anime",
            isSyncPage: function(url) {
                return "play" === url.split("/")[3];
            },
            sync: {
                getTitle: function(url) {
                    return j.$(".theatre-info h1 a").first().text();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                getOverviewUrl: function(url) {
                    return animepahe.domain + "/anime/" + animepahe.sync.getIdentifier(url);
                },
                getEpisode: function(url) {
                    return j.$(".theatre-info h1")[0].childNodes[2].textContent.replace(/[^0-9\.]+/g, "");
                },
                nextEpUrl: function(url) {
                    var nextEp = j.$(".sequel a").first().attr("href");
                    return nextEp ? animepahe.domain + nextEp : nextEp;
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$(".anime-season"));
                }
            },
            overview: {
                getTitle: function(url) {
                    return utils.getBaseText(j.$(".title-wrapper h1").first()).trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$(".anime-detail"));
                },
                getMalUrl: function(provider) {
                    var url = j.$('a[href^="https://myanimelist.net/anime/"]').not("#malRating").first().attr("href");
                    return url || ("ANILIST" === provider && (url = j.$('a[href^="https://anilist.co/anime/"]').not("#malRating").first().attr("href")) ? url : !("KITSU" !== provider || !(url = j.$('a[href^="https://kitsu.io/anime/"]').not("#malRating").first().attr("href"))) && url);
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$(".episode-list .episode");
                    },
                    elementUrl: function(selector) {
                        return animepahe.domain + selector.find("a").first().attr("href");
                    },
                    elementEp: function(selector) {
                        return selector.find(".episode-number").first().text().replace(selector.find(".episode-number > *").text(), "");
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(219).toString()), animepahe.isSyncPage(page.url) ? $(document).ready((function() {
                    page.handlePage();
                })) : utils.waitUntilTrue((function() {
                    return animepahe.overview.list.elementsSelector();
                }), (function() {
                    page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, api, con) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return animeflv;
        }));
        const animeflv = {
            name: "animeflv",
            domain: "https://animeflv.net",
            type: "anime",
            isSyncPage: function(url) {
                return !!j.$("h2.SubTitle").length;
            },
            sync: {
                getTitle: function(url) {
                    return j.$("h1.Title").text().split(" Episodio")[0].trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(animeflv.domain + j.$(".fa-th-list").attr("href"), 4) + "/" + utils.urlPart(animeflv.domain + j.$(".fa-th-list").attr("href"), 5);
                },
                getOverviewUrl: function(url) {
                    return animeflv.domain + j.$(".fa-th-list").attr("href");
                },
                getEpisode: function(url) {
                    return parseInt(j.$("h2.SubTitle").text().replace("Episodio ", "").trim());
                },
                nextEpUrl: function(url) {
                    var nextEp = j.$(".fa-chevron-right").attr("href");
                    return nextEp ? animeflv.domain + nextEp : nextEp;
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$(".CapOptns"));
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("h2.Title").text();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4) + "/" + utils.urlPart(url, 5);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$(".Description"));
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        var url = window.location.href;
                        document.body.insertAdjacentHTML("afterbegin", '<div id="MALSync" class="MALSync" style="display: none;"><ul id="MALSyncUl" class="MALSyncUl"></ul></div>');
                        var idMALSync = document.getElementById("MALSyncUl"), html = document.body.innerHTML, scriptEps = /<script>\s\s   var([^]*?)<\/script>/g.exec(html);
                        if (null != scriptEps && null != (scriptEps = scriptEps[1] || null)) {
                            var eps = scriptEps.toString().match(/\[([^\[\]]{0,10},{0,10})\]/g);
                            null != eps && eps.forEach(element => {
                                if (null != idMALSync) {
                                    var Url = animeflv.domain + "/ver/" + element.split(",")[1].replace("]", "") + "/" + utils.urlPart(url, 5) + "-" + element.split(",")[0].replace("[", ""), Episodio = element.split(",")[0].replace("[", "");
                                    idMALSync.innerHTML += '<li><a href="' + Url + '" epi="' + Episodio + '"></a> </li>';
                                }
                            });
                        }
                        return j.$(".MALSync a");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.attr("href"), animeflv.domain);
                    },
                    elementEp: function(selector) {
                        return selector.attr("epi");
                    },
                    handleListHook: function(epi, epilist) {
                        if (epi++, epilist.length - 1 >= epi) {
                            var cover = j.$(".AnimeCover img").attr("src"), name = j.$(".Container h2").text(), epiAct = '<li class="fa-play-circle Next"><a href="' + epilist[epi][0].toString() + '"><figure><img src="' + cover + '" alt=""></figure><h3 class="Title">' + name + "</h3><p>Episodio " + epi + '</p><span style="position: absolute; top: 0; bottom: 0; margin: auto; right: 20px; line-height: 30px; font-size: 16px; font-weight: 700; height: 30px;">Siguiente Episodio</span></a></li>';
                            j.$(".Main .ListCaps").prepend(epiAct);
                        }
                    }
                }
            },
            init(page) {
                if (api.storage.addStyle(__webpack_require__(221).toString()), "Just a moment..." == document.title || "Verifica que no eres un bot | AnimeFLV" == document.title) return con.log("loading"), 
                void page.cdn();
                j.$(document).ready((function() {
                    page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(0), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, j, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Jkanime;
        }));
        var check = 0;
        const Jkanime = {
            name: "Jkanime",
            domain: "https://jkanime.net/",
            type: "anime",
            isSyncPage: function(url) {
                return 1 != isNaN(parseInt(utils.urlPart(url, 4)));
            },
            sync: {
                getTitle: function(url) {
                    return j.$(".video-header h1").text().split(" - ")[0];
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 3);
                },
                getOverviewUrl: function(url) {
                    return j.$(".vnav-list").attr("href");
                },
                getEpisode: function(url) {
                    return j.$(".video-header h1").text().split(" - ")[1];
                },
                nextEpUrl: function(url) {
                    var nextUrl = j.$(".vnav-right").attr("href");
                    if ("#" != nextUrl) return nextUrl;
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$(".server-box"));
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$(".sinopsis-box h2").text();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 3);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$(".sinopsis-links"));
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        if (utils.urlPart(window.location.href, 4).length) return j.$(".nowaythisexists123");
                        document.body.insertAdjacentHTML("afterbegin", '<div id="MALSync" class="MALSync" style="display: none;"><ul id="MALSyncUl" class="MALSyncUl"></ul></div>');
                        for (var idMALSync = document.getElementById("MALSyncUl"), lastEps = j.$(".navigation a").last().text().split("-")[1].trim(), i = 1; i <= lastEps; i++) null != idMALSync && (idMALSync.innerHTML += '<li><a href="' + document.URL + i + '" epi="' + i + '"></a> </li>');
                        return j.$(".MALSync a");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.attr("href"), Jkanime.domain);
                    },
                    elementEp: function(selector) {
                        return selector.attr("epi");
                    },
                    handleListHook: function(epi, epilist) {
                        if (epi++, epilist.length >= epi) {
                            if (0 == check) {
                                for (var buttons = j.$(".navigation a"), i = 0; i < buttons.length; i++) buttons[i].text.split("-")[0].split() <= epi && buttons[i].text.split("-")[1].split() >= epi && buttons[i].click();
                                check = 1;
                            }
                            setTimeout((function() {
                                j.$("#episodes-content .cap-post").each((function(i, obj) {
                                    obj.innerText.split(" ")[1] == epi && (j.$("#episodes-content .cap-post").eq(i).addClass("mal-sync-active"), 
                                    0 == check && j.$("#episodes-content .cap-post:eq(" + i + ")").find("i").first().remove());
                                }));
                            }), 500);
                        }
                    }
                }
            },
            init(page) {
                api.storage.addStyle(__webpack_require__(223).toString()), j.$(document).ready((function() {
                    page.handlePage();
                })), j.$(".navigation a").click((function() {
                    1 == check && page.handleList();
                }));
            }
        };
    }).call(this, __webpack_require__(2), __webpack_require__(3), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, con, utils, j) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Vrv;
        }));
        var json = void 0, ident = void 0, seasonInterval = void 0;
        function getSeries(page, overview = "") {
            json = void 0, ident = void 0, api.request.xhr("GET", page.url).then(response => {
                con.log(response), json = JSON.parse("{" + response.responseText.split("__INITIAL_STATE__ = {")[1].split("};")[0] + "}"), 
                con.log(json), overview.length ? json.seriesPage.seasons.forEach((function(element) {
                    -1 !== overview.indexOf(element.json.title) && (con.log("Season Found", element), 
                    ident = element);
                })) : json.seriesPage.seasons.length && (con.log("Season", json.seriesPage.seasons[0]), 
                ident = json.seriesPage.seasons[0]), page.handlePage();
            });
        }
        const Vrv = {
            name: "Vrv",
            domain: "https://vrv.co",
            type: "anime",
            isSyncPage: function(url) {
                return "series" != utils.urlPart(window.location.href, 3);
            },
            sync: {
                getTitle: function(url) {
                    return json.watch.mediaResource.json.series_title + " - " + json.watch.mediaResource.json.season_title.replace(json.watch.mediaResource.json.series_title, "");
                },
                getIdentifier: function(url) {
                    return json.watch.mediaResource.json.season_id;
                },
                getOverviewUrl: function(url) {
                    return Vrv.domain + "/series/" + json.watch.mediaResource.json.series_id + "?season=" + Vrv.sync.getIdentifier(url);
                },
                getEpisode: function(url) {
                    return json.watch.mediaResource.json.episode_number;
                },
                nextEpUrl: function(url) {
                    return void 0 === json.watch.mediaResource.json.next_episode_id ? "" : Vrv.domain + "/watch/" + json.watch.mediaResource.json.next_episode_id;
                }
            },
            overview: {
                getTitle: function(url) {
                    return json.seriesPage.series.json.title + " - " + ident.json.title.replace(json.seriesPage.series.json.title, "");
                },
                getIdentifier: function(url) {
                    return ident.json.id;
                },
                uiSelector: function(selector) {
                    selector.insertAfter($(".erc-series-info .series-title").first());
                },
                list: {
                    offsetHandler: !0,
                    elementsSelector: function() {
                        return j.$(".erc-series-media-list-element");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("a").first().attr("href"), Vrv.domain);
                    },
                    elementEp: function(selector) {
                        var temp = selector.find(".episode-title").text().trim().match(/^E\d+/i);
                        return null !== temp ? temp[0].replace("E", "") : "";
                    },
                    getTotal: function() {
                        throw "Not supported";
                    }
                }
            },
            init(page) {
                function ready() {
                    clearInterval(seasonInterval), $("#flashinfo-div, #flash-div-bottom, #flash-div-top, #malp").remove(), 
                    page.UILoaded = !1, "watch" == utils.urlPart(window.location.href, 3) && getSeries(page), 
                    "series" == utils.urlPart(window.location.href, 3) && utils.waitUntilTrue((function() {
                        return j.$(".erc-series-info .series-title").first().length;
                    }), (function() {
                        j.$(".erc-series-media-list-element").length && void 0 === j.$(".erc-series-media-list-element a").first().attr("href") || getSeries(page, $(".controls-select-trigger .season-info").text().trim()), 
                        seasonInterval = utils.changeDetect((function() {
                            $("#flashinfo-div, #flash-div-bottom, #flash-div-top, #malp").remove(), page.UILoaded = !1, 
                            getSeries(page, $(".controls-select-trigger .season-info").text().trim());
                        }), (function() {
                            return j.$(".erc-series-media-list-element a").first().attr("href");
                        }));
                    }));
                }
                api.storage.addStyle(__webpack_require__(225).toString()), j.$(document).ready((function() {
                    ready();
                })), utils.urlChangeDetect((function() {
                    page.url = window.location.href, ready();
                }));
            }
        };
    }).call(this, __webpack_require__(0), __webpack_require__(1), __webpack_require__(2), __webpack_require__(3));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Proxer;
        }));
        const Proxer = {
            name: "Proxer",
            domain: "https://proxer.me",
            database: "Proxer",
            type: "anime",
            isSyncPage: function(url) {
                return "watch" === url.split("/")[3] || "read" === url.split("/")[3];
            },
            sync: {
                getTitle: function(url) {
                    return -1 != url.indexOf("watch") ? j.$(".wName").text().trim() : -1 != url.indexOf("read") ? j.$("div#breadcrumb a:first").text() : void 0;
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                getOverviewUrl: function(url) {
                    return "https://proxer.me/info/" + Proxer.sync.getIdentifier(url) + "/list";
                },
                getEpisode: function(url) {
                    return -1 != url.indexOf("watch") ? getEpisodeFallback("episode " + $(".wEp").last().text().trim(), url.split("/")[5]) : getEpisodeFallback($("#breadcrumb > a").last().text().trim(), url.split("/")[5]);
                },
                nextEpUrl: function(url) {
                    return Proxer.domain + $(".no_details a").last().attr("href");
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("#pageMetaAjax").text().split(" - ")[0].replace(/\(Anime\)|\(Manga\)$/gim, "").trim();
                },
                getIdentifier: function(url) {
                    return Proxer.sync.getIdentifier(url);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$(".hreview-aggregate > span").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$('span[id^="listTitle"]').parent().parent();
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find('a[href^="/watch"],a[href^="/read"],a[href^="/chapter"]').first().attr("href"), Proxer.domain);
                    },
                    elementEp: function(selector) {
                        return getEpisodeFallback(selector.find('span[id^="listTitle"]').first().text().trim(), Proxer.overview.list.elementUrl(selector).split("/")[5]);
                    },
                    paginationNext: function(updateCheck) {
                        var el;
                        return con.error("sadsad", updateCheck), updateCheck ? void 0 !== (el = j.$(".menu").last())[0] && !el.hasClass("active") && (el[0].click(), 
                        !0) : void 0 !== (el = j.$(".menu.active").first().next())[0] && (el[0].click(), 
                        !0);
                    },
                    getTotal: function() {
                        var el = $('img[src="/images/misc/manga.png"], img[src="/images/misc/play.png"]').last().parent().parent().parent().parent();
                        if (el.length) return Proxer.overview.list.elementEp(el);
                    }
                }
            },
            init(page) {
                api.storage.addStyle(__webpack_require__(227).toString()), "watch" !== page.url.split("/")[3] && "read" !== page.url.split("/")[3] || ("watch" === page.url.split("/")[3] ? (Proxer.type = "anime", 
                Proxer.database = "Proxeranime") : "read" === page.url.split("/")[3] && (Proxer.type = "manga", 
                Proxer.database = "Proxermanga"), j.$(document).ready((function() {
                    page.handlePage();
                }))), ajaxHandle(page), utils.urlChangeDetect((function() {
                    page.url = window.location.href, page.UILoaded = !1, $("#flashinfo-div, #flash-div-bottom, #flash-div-top").remove(), 
                    ajaxHandle(page);
                }));
            }
        };
        var current = 0;
        function ajaxHandle(page) {
            if ("info" === utils.urlPart(page.url, 3)) {
                var detailPart = utils.urlPart(page.url, 5);
                con.info("page", detailPart), "list" == detailPart && utils.waitUntilTrue((function() {
                    return j.$("#contentList").length;
                }), (function() {
                    j.$('#simple-navi a[href*="manga"]').length ? (Proxer.type = "manga", Proxer.database = "Proxermanga") : (Proxer.type = "anime", 
                    Proxer.database = "Proxeranime");
                    var tempCurrent = parseInt(Proxer.overview.getIdentifier(page.url));
                    if (tempCurrent !== current) current = tempCurrent, page.handlePage(); else try {
                        page.handleList();
                    } catch (e) {
                        con.error(e), page.handlePage();
                    }
                })), "details" != detailPart && void 0 !== detailPart || utils.waitUntilTrue((function() {
                    return j.$(".hreview-aggregate").length;
                }), (function() {
                    current = parseInt(Proxer.overview.getIdentifier(page.url)), j.$('#simple-navi a[href*="manga"]').length ? (Proxer.type = "manga", 
                    Proxer.database = "Proxermanga") : (Proxer.type = "anime", Proxer.database = "Proxeranime"), 
                    page.handlePage();
                }));
            }
        }
        function getEpisodeFallback(string, fallback) {
            if (null !== string.match(/(special|extra)/gi)) return "";
            var temp = string.match(/(kapitel |ep. |chapter |episode )\d+/gi);
            return null !== temp ? temp[0].match(/\d+/)[0] : fallback;
        }
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, j, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Novelplanet;
        }));
        const Novelplanet = {
            name: "Novelplanet",
            domain: "https://novelplanet.com",
            database: "Novelplanet",
            type: "manga",
            isSyncPage: function(url) {
                return void 0 !== utils.urlPart(url, 5);
            },
            sync: {
                getTitle: function(url) {
                    return j.$("#main .title").first().text().trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                getOverviewUrl: function(url) {
                    return url.split("/").slice(0, 5).join("/");
                },
                getEpisode: function(url) {
                    return getEp($(".selectChapter option").first().text());
                },
                getVolume: function(url) {
                    url = $(".selectChapter option").first().text();
                    try {
                        url = (url = url.match(/vol(ume)\D?\d+/i)[0]).match(/\d+/)[0];
                    } catch (e) {
                        return;
                    }
                    return url;
                },
                nextEpUrl: function(url) {
                    return utils.absoluteLink(j.$("div.row > div:nth-child(5)  > a").first().attr("href"), Novelplanet.domain);
                }
            },
            overview: {
                getTitle: function() {
                    return j.$(".post-contentDetails .title").first().text();
                },
                getIdentifier: function(url) {
                    return Novelplanet.sync.getIdentifier(url);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$(".post-contentDetails p").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$(".rowChapter");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("a").first().attr("href"), Novelplanet.domain);
                    },
                    elementEp: function(selector) {
                        return getEp(selector.find("a").first().text());
                    }
                }
            },
            init(page) {
                if (page.novel = !0, "Just a moment..." == document.title) return con.log("loading"), 
                void page.cdn();
                api.storage.addStyle(__webpack_require__(229).toString()), j.$(document).ready((function() {
                    page.handlePage();
                }));
            }
        };
        function getEp(episodePart) {
            var temp = episodePart.match(/[c,C][h,H][a,A]?[p,P]?[t,T]?[e,E]?[r,R]?\D?\d+/);
            return null === temp ? null === (temp = (episodePart = episodePart.replace(/[V,v][o,O][l,L]\D?\d+/, "")).match(/\d{3}/)) ? (temp = episodePart.match(/\d+/), 
            episodePart = null === temp ? 0 : temp[0]) : episodePart = temp[0] : episodePart = temp[0].match(/\d+/)[0], 
            episodePart;
        }
    }).call(this, __webpack_require__(2), __webpack_require__(3), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return fourAnime;
        }));
        const fourAnime = {
            name: "4Anime",
            domain: "https://4anime.to",
            type: "anime",
            isSyncPage: function(url) {
                return !(!j.$(".singletitletop")[0] || !j.$(".episodes")[0]);
            },
            sync: {
                getTitle: function(url) {
                    return j.$("span.singletitletop a").text().trim();
                },
                getIdentifier: function(url) {
                    return url.split("/")[3].replace(/\-episode[^]*$/g, "");
                },
                getOverviewUrl: function(url) {
                    return fourAnime.domain + "/anime/" + fourAnime.sync.getIdentifier(url);
                },
                getEpisode: function(url) {
                    return j.$("ul.episodes a.active").text().replace(/\D+/g, "");
                },
                nextEpUrl: function(url) {
                    var href = j.$(".anipager-next a").first().attr("href");
                    if (void 0 !== href) return utils.absoluteLink(href, fourAnime.domain);
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("p.single-anime-desktop").text().trim();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4].replace(/\-episode[^]*$/g, "");
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("p.description-mobile").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$(".episodes.range a");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.attr("href"), fourAnime.domain);
                    },
                    elementEp: function(selector) {
                        return selector.text();
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(231).toString()), j.$(document).ready((function() {
                    (j.$(".singletitletop")[0] && j.$(".episodes")[0] || "anime" == page.url.split("/")[3]) && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Dreamanimes;
        }));
        const Dreamanimes = {
            name: "Dreamanimes",
            domain: "https://dreamanimes.com.br",
            type: "anime",
            isSyncPage: function(url) {
                return "online" === url.split("/")[3];
            },
            sync: {
                getTitle: function(url) {
                    return j.$("#anime_name").text();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 5);
                },
                getOverviewUrl: function(url) {
                    return Dreamanimes.domain + "/anime-info/" + Dreamanimes.sync.getIdentifier(url);
                },
                getEpisode: function(url) {
                    return parseInt(utils.urlPart(url, 7));
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$(".truncate").text();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("#pcontent h3"));
                }
            },
            init(page) {
                var Interval;
                function start() {
                    "online" != utils.urlPart(page.url, 3) && "anime-info" != utils.urlPart(page.url, 3) || (Dreamanimes.isSyncPage(page.url) ? page.handlePage() : (clearInterval(Interval), 
                    Interval = utils.waitUntilTrue((function() {
                        return Dreamanimes.overview.getTitle(page.url);
                    }), (function() {
                        page.handlePage();
                    }))));
                }
                api.storage.addStyle(__webpack_require__(233).toString()), j.$(document).ready((function() {
                    start(), utils.urlChangeDetect((function() {
                        page.url = window.location.href, page.UILoaded = !1, $("#flashinfo-div, #flash-div-bottom, #flash-div-top").remove(), 
                        start();
                    }));
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return animeultima;
        }));
        const animeultima = {
            name: "animeultima",
            domain: "https://www10.animeultima.eu",
            type: "anime",
            isSyncPage: function(url) {
                return !("a" !== url.split("/")[3] || !j.$("h1.title.is-marginless span.is-size-4.is-size-5-touch.is-size-6-mobile")[0]);
            },
            sync: {
                getTitle: function(url) {
                    return j.$("h1.title.is-marginless span.is-size-4.is-size-5-touch.is-size-6-mobile").text().replace(/\n.*/g, "").trim();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                getOverviewUrl: function(url) {
                    return animeultima.domain + "/a/" + animeultima.sync.getIdentifier(url);
                },
                getEpisode: function(url) {
                    return j.$("h1.title.is-marginless span.is-size-4.is-size-5-touch.is-size-6-mobile").text().replace(/.*\n/g, "").replace(/\D+/g, "");
                },
                nextEpUrl: function(url) {
                    var href = j.$(".level-right a").first().attr("href");
                    if (void 0 !== href) return utils.absoluteLink(href, animeultima.domain);
                }
            },
            overview: {
                getTitle: function(url) {
                    return utils.getBaseText($("h1.title.is-marginless.is-paddingless").first()).replace(/[^ \w]+/g, "").trim();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("div.tags.is-marginless").first());
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(235).toString()), j.$(document).ready((function() {
                    page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, con, api, utils) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Aniflix;
        }));
        const Aniflix = {
            name: "Aniflix",
            domain: "https://www1.aniflix.tv",
            type: "anime",
            isSyncPage: function(url) {
                return "season" === url.split("/")[6];
            },
            sync: {
                getTitle: function(url) {
                    return 1 == url.split("/")[7] || 0 == url.split("/")[7] ? j.$("a.episode-showname").text() : j.$("a.episode-showname").text() + " season " + url.split("/")[7];
                },
                getIdentifier: function(url) {
                    return url.split("/")[4] + "?s=" + url.split("/")[7];
                },
                getOverviewUrl: function(url) {
                    return Aniflix.domain + j.$("a.episode-showname").attr("href");
                },
                getEpisode: function(url) {
                    return url.split("/")[9];
                }
            },
            overview: {
                getTitle: function(url) {
                    return 1 == j.$("div.seasons-wrapper > div.season.season-active > div").first().text().replace(/\D+/g, "") || "Specials" === j.$("div.seasons-wrapper > div.season.season-active > div").first().text() ? j.$("h1.show-name").text() : j.$("h1.show-name").text() + " season " + j.$("div.seasons-wrapper > div.season.season-active > div").first().text().replace(/\D+/g, "");
                },
                getIdentifier: function(url) {
                    return "Specials" === j.$("div.seasons-wrapper > div.season.season-active > div").first().text() ? url.split("/")[4] + "?s=0" : url.split("/")[4] + "?s=" + j.$("div.seasons-wrapper > div.season.season-active > div").first().text().replace(/\D+/g, "");
                },
                uiSelector: function(selector) {
                    selector.insertBefore(j.$("div.episodes").first());
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                function ready() {
                    page.url = window.location.href, page.UILoaded = !1, $("#flashinfo-div, #flash-div-bottom, #flash-div-top").remove(), 
                    "show" === page.url.split("/")[3] && (Aniflix.isSyncPage(page.url) ? utils.waitUntilTrue((function() {
                        return !!j.$("a.episode-showname").length;
                    }), (function() {
                        page.handlePage();
                    })) : (j.$("#malp").remove(), page.UILoaded = !1, utils.waitUntilTrue((function() {
                        return !(!j.$("h1.show-name").length || !j.$("h1.show-name").first().text());
                    }), (function() {
                        page.handlePage(), $("div.seasons-wrapper").unbind("click").click((function() {
                            j.$("#malp").remove(), page.UILoaded = !1, page.handlePage();
                        }));
                    }))));
                }
                api.storage.addStyle(__webpack_require__(237).toString()), page.url = window.location.href, 
                ready(), utils.urlChangeDetect((function() {
                    ready();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(1), __webpack_require__(0), __webpack_require__(2));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return AnimeDaisuki;
        }));
        const AnimeDaisuki = {
            name: "AnimeDaisuki",
            domain: "https://animedaisuki.moe",
            type: "anime",
            isSyncPage: function(url) {
                return "watch" === url.split("/")[3];
            },
            sync: {
                getTitle: function(url) {
                    return j.$("nav.Brdcrmb.fa-home a:nth-child(3)").text().trim();
                },
                getIdentifier: function(url) {
                    return j.$("nav.Brdcrmb.fa-home a:nth-child(3)").attr("href").split("/")[3];
                },
                getOverviewUrl: function(url) {
                    return AnimeDaisuki.domain + j.$("nav.Brdcrmb.fa-home a:nth-child(3)").attr("href");
                },
                getEpisode: function(url) {
                    return j.$("h2.SubTitle").text().replace(/\D+/g, "");
                },
                nextEpUrl: function(url) {
                    var href = j.$(".CapNv .CapNvNx").first().attr("href");
                    if (void 0 !== href) return AnimeDaisuki.domain + href;
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("h2.Title").text().trim();
                },
                getIdentifier: function(url) {
                    return url.split("/")[5];
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("section.WdgtCn").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("ul.ListCaps > li.fa-play-circle:not(.Next,.Issues)");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("a").first().attr("href"), AnimeDaisuki.domain);
                    },
                    elementEp: function(selector) {
                        return selector.find("a > p").first().text().replace(/\D+/g, "");
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(239).toString()), j.$(document).ready((function() {
                    "watch" !== page.url.split("/")[3] && "anime" !== page.url.split("/")[3] || page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Animefreak;
        }));
        const Animefreak = {
            name: "Animefreak",
            domain: "https://www.animefreak.tv",
            type: "anime",
            isSyncPage: function(url) {
                return "episode" === url.split("/")[5];
            },
            sync: {
                getTitle: function(url) {
                    return j.$("div.top-breadcrumb li:nth-child(2) a").text();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                getOverviewUrl: function(url) {
                    return Animefreak.domain + "/watch/" + Animefreak.sync.getIdentifier(url);
                },
                getEpisode: function(url) {
                    return url.split("/")[6].replace(/\D+/g, "");
                },
                nextEpUrl: function(url) {
                    var href = j.$(".fa-step-forward").first().parent().attr("href");
                    if (void 0 !== href) return utils.absoluteLink(href, Animefreak.domain);
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("div.top-breadcrumb li:nth-child(2) a").text();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                uiSelector: function(selector) {
                    selector.insertBefore(j.$("div.anime-title").first());
                }
            },
            init(page) {
                api.storage.addStyle(__webpack_require__(241).toString()), j.$(document).ready((function() {
                    "watch" === page.url.split("/")[3] && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return AnimePlanet;
        }));
        const AnimePlanet = {
            name: "AnimePlanet",
            domain: "https://www.anime-planet.com",
            type: "anime",
            isSyncPage: function(url) {
                return null != url.split("/")[6];
            },
            sync: {
                getTitle: function(url) {
                    return j.$("h2.sub a").text();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                getOverviewUrl: function(url) {
                    return AnimePlanet.domain + j.$("h2.sub a").attr("href");
                },
                getEpisode: function(url) {
                    var episodePart = utils.getBaseText($("h2.sub")).replace(/\r?\n|\r/g, "");
                    if (episodePart.length) {
                        var temp = episodePart.match(/.*-/g);
                        if (null !== temp) return temp[0].replace(/\D+/g, "");
                    }
                },
                uiSelector: function(selector) {
                    selector.insertBefore(j.$("#siteContainer > nav").first());
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("#siteContainer > h1").text();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                uiSelector: function(selector) {
                    selector.insertBefore(j.$("#siteContainer > nav").first());
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(243).toString()), j.$(document).ready((function() {
                    "anime" === page.url.split("/")[3] && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, j, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return KickAssAnime;
        }));
        const KickAssAnime = {
            name: "KickAssAnime",
            domain: "https://www.kickassanime.rs",
            type: "anime",
            isSyncPage: function(url) {
                return null != url.split("/")[5];
            },
            sync: {
                getTitle: function(url) {
                    return utils.getBaseText($("#animeInfoTab > a"));
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                getOverviewUrl: function(url) {
                    return KickAssAnime.domain + "/anime/" + KickAssAnime.sync.getIdentifier(url);
                },
                getEpisode: function(url) {
                    var episodePart = url.split("/")[5];
                    if (episodePart.length) {
                        var temp = episodePart.match(/episode-\d*/g);
                        if (null !== temp) return temp[0].replace(/\D+/g, "");
                    }
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("h1.title").text();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("div.anime-info.border.rounded.mb-3").first());
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(245).toString()), j.$(document).ready((function() {
                    "anime" == page.url.split("/")[3] && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(2), __webpack_require__(3), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return RiiE;
        }));
        const RiiE = {
            name: "RiiE",
            domain: "https://www.riie.net",
            type: "anime",
            isSyncPage: function(url) {
                return !!j.$("#lightsVideo")[0];
            },
            sync: {
                getTitle: function(url) {
                    return j.$("#content > div.postarea > div > div.post > div:nth-child(1) > b").text().replace(/episode.*/gim, "").trim();
                },
                getIdentifier: function(url) {
                    return RiiE.sync.getOverviewUrl(url).split("/")[4];
                },
                getOverviewUrl: function(url) {
                    return j.$("#content > div.postarea > div > div.post > div.newzone > div.right > a:not([rel])").first().attr("href");
                },
                getEpisode: function(url) {
                    var episodePart = url.split("/")[3];
                    if (episodePart.length) {
                        var temp = episodePart.match(/-episode-\d*-/g);
                        if (null !== temp) return temp[0].replace(/\D+/g, "");
                    }
                },
                nextEpUrl: function(url) {
                    var href = $("a[rel='next']").first().attr("href");
                    if (void 0 !== href) return utils.absoluteLink(href, RiiE.domain);
                }
            },
            overview: {
                getTitle: function(url) {
                    return url.split("/")[4].replace(/-/g, " ");
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("#content > div.naru > div.areaxb").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("div.episodelist > ul > li");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("span.leftoff > a").first().attr("href"), RiiE.domain);
                    },
                    elementEp: function(selector) {
                        return selector.find("span.leftoff > a").first().text().replace(/\D+/, "");
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(247).toString()), j.$(document).ready((function() {
                    ("anime" == page.url.split("/")[3] || j.$("#lightsVideo")[0] && j.$("#content > div.postarea > div > div.post > div.newzone > div.right")[0]) && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return AnimeKisa;
        }));
        const AnimeKisa = {
            name: "AnimeKisa",
            domain: "https://animekisa.tv",
            type: "anime",
            isSyncPage: function(url) {
                return !(null === url.split("/")[3] || !j.$("div.c a.infoan2")[0] || !j.$("#playerselector option:selected")[0]);
            },
            sync: {
                getTitle: function(url) {
                    return j.$("div.c a.infoan2").text().trim();
                },
                getIdentifier: function(url) {
                    return j.$("div.c a.infoan2").attr("href");
                },
                getOverviewUrl: function(url) {
                    return AnimeKisa.domain + "/" + j.$("div.c a.infoan2").attr("href");
                },
                getEpisode: function(url) {
                    return j.$("#playerselector option:selected").text().replace(/\D+/g, "");
                },
                nextEpUrl: function(url) {
                    var num = $("#playerselector").find("option:selected").next().attr("value"), href = url.replace(/\d+$/, num);
                    if (void 0 !== num && href !== url) return utils.absoluteLink(href, AnimeKisa.domain);
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("#body > div.notmain > div > div.infobox > div.infoboxc > div.infodesbox > h1").text().trim();
                },
                getIdentifier: function(url) {
                    return url.split("/")[3];
                },
                uiSelector: function(selector) {
                    selector.insertBefore(j.$(".infoepboxmain").first());
                },
                getMalUrl: function(provider) {
                    var url = j.$('a[href^="https://myanimelist.net/anime/"]').not("#malRating").first().attr("href");
                    return url || ("ANILIST" === provider && (url = j.$('a[href^="https://anilist.co/anime/"]').not("#malRating").first().attr("href")) ? url : !("KITSU" !== provider || !(url = j.$('a[href^="https://kitsu.io/anime/"]').not("#malRating").first().attr("href"))) && url);
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("div.infoepbox > a");
                    },
                    elementUrl: function(selector) {
                        return AnimeKisa.domain + "/" + selector.find(".infoepmain").first().parent().attr("href");
                    },
                    elementEp: function(selector) {
                        return selector.find("div.infoept2r > div, div.infoept2 > div").first().text();
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(249).toString()), j.$(document).ready((function() {
                    (null !== page.url.split("/")[3] && j.$("div.c a.infoan2")[0] && j.$("#playerselector option:selected")[0] || null !== page.url.split("/")[3] && j.$("#body > div.notmain > div > div.infobox > div.infoboxc > div.infodesbox > h1")[0] && j.$("#body > div.notmain > div > div.infobox > div.infoepboxmain")[0]) && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Wakanim;
        }));
        const Wakanim = {
            name: "Wakanim",
            domain: "https://www.wakanim.tv",
            type: "anime",
            isSyncPage: function(url) {
                return !!j.$("body > section.episode > div > div > div.episode_main > div.episode_video > div").length;
            },
            sync: {
                getTitle: function(url) {
                    return j.$("body > section.episode > div > div > div.episode_info > h1 > span.episode_title").text();
                },
                getIdentifier: function(url) {
                    return Wakanim.overview.getIdentifier(Wakanim.sync.getOverviewUrl(url));
                },
                getOverviewUrl: function(url) {
                    return Wakanim.domain + j.$("body > section.episode > div > div > div.episode_info > div.episode_buttons > a:nth-child(2)").attr("href");
                },
                getEpisode: function(url) {
                    return j.$("body > section.episode > div > div > div.episode_info > h1 > span.episode_subtitle > span:nth-child(1) > span").text();
                },
                nextEpUrl: function(url) {
                    return j.$("body > section.episode > div > div > div.episode_main > div.episode_video > div > div.episode-bottom > div.episodeNPEp-wrapperBlock > a.episodeNPEp.episodeNextEp.active").attr("href");
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$(".SerieV2-body .SerieHeader-thumb").attr("alt");
                },
                getIdentifier: function(url) {
                    return url.split("/")[7].trim();
                },
                uiSelector: function(selector) {
                    selector.insertBefore(j.$(".SerieV2-content").first());
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(251).toString()), j.$(document).ready((function() {
                    Wakanim.isSyncPage(page.url) ? j.$("#jwplayer-container")[0] && page.handlePage() : page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return AnimeIndo;
        }));
        const AnimeIndo = {
            name: "AnimeIndo",
            domain: "http://animeindo.moe",
            type: "anime",
            isSyncPage: function(url) {
                return !(null === url.split("/")[1] || !j.$("#sct_content > div > div.preview")[0]);
            },
            sync: {
                getTitle: function(url) {
                    return j.$("#sct_content > div > div.infobox > h3").text();
                },
                getIdentifier: function(url) {
                    return j.$("#sct_content > div > div.ep_nav.fr > span.nav.all > a").attr("href").split("/")[4];
                },
                getOverviewUrl: function(url) {
                    return j.$("#sct_content > div > div.ep_nav.fr > span.nav.all > a").attr("href");
                },
                getEpisode: function(url) {
                    var episodePart = url.split("/")[3];
                    if (episodePart.length) {
                        var temp = episodePart.match(/-episode-\d*/g);
                        if (null !== temp) return temp[0].replace(/\D+/g, "");
                    }
                },
                nextEpUrl: function(url) {
                    var href = j.$(".nav.next a").first().attr("href");
                    if (void 0 !== href) return utils.absoluteLink(href, AnimeIndo.domain);
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("#sct_content > div.nodeinfo > h2").first().text().replace(/sinopsis/gi, "").trim();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("#sct_content > h1").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("ul.eps_lst > li:not(.hdr)");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("a").first().attr("href"), AnimeIndo.domain);
                    },
                    elementEp: function(selector) {
                        return selector.find("a").first().text().replace(/\D+/g, "");
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(253).toString()), j.$(document).ready((function() {
                    ("anime" === page.url.split("/")[3] || null !== page.url.split("/")[3] && j.$("#sct_content > div > div.preview")[0]) && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Shinden;
        }));
        const Shinden = {
            name: "Shinden",
            domain: "https://shinden.pl",
            type: "anime",
            isSyncPage: function(url) {
                return "episode" === url.split("/")[3];
            },
            sync: {
                getTitle: function(url) {
                    return j.$(".page-title > a").text().trim();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                getOverviewUrl: function(url) {
                    return j.$("h1.page-title > a").attr("href");
                },
                getEpisode: function(url) {
                    return j.$("dl.info-aside-list:nth-child(1) > dd:nth-child(2)").text().replace(/\D+/g, "");
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("h1.page-title").text().replace(/anime:/gim, "").trim();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$(".title-other").first());
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(255).toString()), j.$(document).ready((function() {
                    "series" !== page.url.split("/")[3] && "episode" !== page.url.split("/")[3] || page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Funimation;
        }));
        const Funimation = {
            name: "Funimation",
            domain: "https://www.funimation.com",
            type: "anime",
            isSyncPage: function(url) {
                return !(!j.$("h1.show-headline.video-title")[0] || !j.$("h2.episode-headline")[0]);
            },
            sync: {
                getTitle: function(url) {
                    return j.$("h1.show-headline.video-title a").text();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                getOverviewUrl: function(url) {
                    return Funimation.domain + j.$("h1.show-headline.video-title a").attr("href");
                },
                getEpisode: function(url) {
                    return utils.getBaseText($("h1.show-headline.video-title")).replace(/\D+/g, "");
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("h1.heroTitle").text();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                uiSelector: function(selector) {
                    j.$('<div class="container"> <p id="malp">' + selector.html() + "</p></div>").insertBefore(j.$("div.gradient-bg").first());
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(257).toString()), j.$(document).ready((function() {
                    "shows" === page.url.split("/")[3] && (j.$("h1.show-headline.video-title")[0] || j.$("h1.heroTitle")[0]) && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, j, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Voiranime;
        }));
        const Voiranime = {
            name: "Voiranime",
            domain: "http://voiranime.com",
            type: "anime",
            isSyncPage: function(url) {
                return !!$(".video-series-wrap").length;
            },
            sync: {
                getTitle: function(url) {
                    return $("h1").first().text().trim().split(" – ")[0];
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 3).replace(/(-saison-[^-]*)?-[^-]*-[^-]*$/i, "");
                },
                getOverviewUrl: function(url) {
                    return Voiranime.domain + "/" + Voiranime.sync.getIdentifier(url);
                },
                getEpisode: function(url) {
                    return parseInt($(".series-current").first().text().trim());
                },
                nextEpUrl: function(url) {
                    return utils.absoluteLink(j.$(".series-current").first().closest("li").next().find("a").attr("href"), Voiranime.domain);
                }
            },
            overview: {
                getTitle: function(url) {
                    return $("h1").first().text().trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 3);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("h1").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("ul.video-series-list > li:not(.series-title)");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("a").first().attr("href"), Voiranime.domain);
                    },
                    elementEp: function(selector) {
                        return selector.find("a").first().text().replace(/\D+/, "");
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(259).toString()), j.$(document).ready((function() {
                    ($(".video-series-wrap").length || $(".category-anime-serie").length) && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(2), __webpack_require__(3), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return DubbedAnime;
        }));
        const DubbedAnime = {
            name: "DubbedAnime",
            domain: "https://ww5.dubbedanime.net",
            type: "anime",
            isSyncPage: function(url) {
                return "episode" === url.split("/")[3];
            },
            sync: {
                getTitle: function(url) {
                    return j.$("h1.dosis.ep-title").text().replace(/(episode|ova).*\d+/gim, "").trim();
                },
                getIdentifier: function(url) {
                    return utils.absoluteLink(j.$("a.w-100.btn.btn-success").attr("href"), DubbedAnime.domain).split("/")[4];
                },
                getOverviewUrl: function(url) {
                    return utils.absoluteLink(j.$("a.w-100.btn.btn-success").attr("href"), DubbedAnime.domain);
                },
                getEpisode: function(url) {
                    var episodePart = url.split("/")[4];
                    if (episodePart.length) {
                        var temp = episodePart.match(/-(episode|ova)-\d+-/gim);
                        return null !== temp ? temp[0].replace(/\D+/g, "") : 1;
                    }
                },
                nextEpUrl: function(url) {
                    return utils.absoluteLink(j.$("body > div.container.mt-3.mb-3 > div > div.col-md-8 > div.row.mb-2 > div:nth-child(2) > a").first().attr("href"), DubbedAnime.domain);
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("h1.h3.dosis.mt-0.text-white.pt-2.d-none.d-sm-block").text().trim();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("#episodes > div > div.row.mb-3.pr-2").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("div.da-page-episodes > ul.list-unstyled > li.da-tbl:not(.ongoing-ep-new,:hidden)");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("div.da-video-tbl > a").first().attr("href"), DubbedAnime.domain);
                    },
                    elementEp: function(selector) {
                        return selector.find("div.da-video-tbl > span.ep-num").first().text().replace(/\D+/, "");
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(261).toString()), j.$(document).ready((function() {
                    "episode" === page.url.split("/")[3] ? page.handlePage() : "anime" === page.url.split("/")[3] && (page.handlePage(), 
                    $("div.col-4.px-0 > button.subdub").unbind("click").click((function() {
                        j.$("#malp").remove(), page.UILoaded = !1, page.handlePage();
                    })));
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return VIZ;
        }));
        const VIZ = {
            name: "VIZ",
            domain: "https://www.viz.com",
            type: "manga",
            isSyncPage: function(url) {
                return "shonenjump" === url.split("/")[3] && "chapter" === url.split("/")[5];
            },
            sync: {
                getTitle: function(url) {
                    return j.$("#product_row > div.bg-lighter-gray.mar-b-md.mar-b-lg--md.chapter_ribbon > div > h3 > a").text();
                },
                getIdentifier: function(url) {
                    return j.$("#product_row > div.bg-lighter-gray.mar-b-md.mar-b-lg--md.chapter_ribbon > div > h3 > a").attr("href").split("/")[3];
                },
                getOverviewUrl: function(url) {
                    return VIZ.domain + j.$("#product_row > div.bg-lighter-gray.mar-b-md.mar-b-lg--md.chapter_ribbon > div > h3 > a").attr("href");
                },
                getEpisode: function(url) {
                    var episodePart = j.$("#product_row > div.bg-lighter-gray.mar-b-md.mar-b-lg--md.chapter_ribbon > div > h3 > span").text();
                    if (episodePart.length) {
                        var temp = episodePart.match(/\d+/gim);
                        if (null !== temp) return temp[0];
                    }
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("#series-intro > div.clearfix.mar-t-md.mar-b-lg > h2").text().trim();
                },
                getIdentifier: function(url) {
                    return url.split("/")[5];
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("#series-intro").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$(".o_sortable-b,.o_sortable");
                    },
                    elementUrl: function(selector) {
                        return VIZ.domain + selector.find("a").first().attr("href").replace(/javascript:tryReadChapter\(\d+,'/gi, "").replace(/'\);/g, "");
                    },
                    elementEp: function(selector) {
                        if ("javascript:void('join to read');" === selector.find("a").first().attr("href")) throw "Join to read";
                        var episodePart = selector.find("td > div.disp-id.mar-r-sm").text();
                        if (0 == episodePart.length && (episodePart = selector.find("a").first().text().trim()), 
                        episodePart.length) {
                            var temp = episodePart.match(/\d+/gim);
                            if (null !== temp) return temp[0];
                        }
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(263).toString()), j.$(document).ready((function() {
                    "shonenjump" !== page.url.split("/")[3] || "chapter" !== page.url.split("/")[5] && "chapters" !== page.url.split("/")[4] || page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return MangaNelo;
        }));
        const MangaNelo = {
            name: "MangaNelo",
            domain: "https://manganelo.com",
            database: "MangaNelo",
            type: "manga",
            isSyncPage: function(url) {
                return "chapter" === url.split("/")[3];
            },
            sync: {
                getTitle: function(url) {
                    return j.$("div.body-site > div > div.panel-breadcrumb > a:nth-child(3)").text();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                getOverviewUrl: function(url) {
                    return j.$("div.body-site > div > div.panel-breadcrumb > a:nth-child(3)").attr("href");
                },
                getEpisode: function(url) {
                    return url.split("/")[5].match(/\d+/gim);
                },
                nextEpUrl: function(url) {
                    return j.$("div.panel-navigation > div > a.navi-change-chapter-btn-next.a-h").first().attr("href");
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("div.panel-story-info > div.story-info-right > h1").text();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    j.$('<div id="malthing"> <p id="malp">' + selector.html() + "</p></div>").insertBefore(j.$("div.panel-story-chapter-list").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("div.panel-story-chapter-list > ul.row-content-chapter > li.a-h");
                    },
                    elementUrl: function(selector) {
                        return selector.find("a").first().attr("href");
                    },
                    elementEp: function(selector) {
                        return selector.find("a").first().attr("href").split("/")[5].match(/\d+/gim);
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(265).toString()), j.$(document).ready((function() {
                    "chapter" !== page.url.split("/")[3] && "manga" !== page.url.split("/")[3] || page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Mangakakalot;
        }));
        const Mangakakalot = {
            name: "Mangakakalot",
            domain: "https://mangakakalot.com",
            database: "MangaNelo",
            type: "manga",
            isSyncPage: function(url) {
                return "chapter" === url.split("/")[3];
            },
            sync: {
                getTitle: function(url) {
                    return j.$("body > div.breadcrumb > p > span:nth-child(3) > a > span").first().text();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                getOverviewUrl: function(url) {
                    return j.$("body > div.breadcrumb > p > span:nth-child(3) > a").first().attr("href");
                },
                getEpisode: function(url) {
                    return url.split("/")[5].match(/\d+/gim);
                },
                nextEpUrl: function(url) {
                    return j.$("div.btn-navigation-chap > a.back").first().attr("href");
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("div.breadcrumb.breadcrumbs > p > span:nth-child(3) > a > span").first().text();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    j.$('<div id="malthing"> <p id="malp">' + selector.html() + "</p></div>").insertBefore(j.$("#chapter").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("div.row:not('div.title-list-chapter')");
                    },
                    elementUrl: function(selector) {
                        return selector.find("span:nth-child(1) > a").first().attr("href");
                    },
                    elementEp: function(selector) {
                        return selector.find("span:nth-child(1) > a").first().attr("href").split("/")[5].match(/\d+/gim);
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(267).toString()), j.$(document).ready((function() {
                    "chapter" !== page.url.split("/")[3] && "manga" !== page.url.split("/")[3] || page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return NekoSama;
        }));
        const NekoSama = {
            name: "NekoSama",
            domain: "https://www.neko-sama.fr",
            type: "anime",
            isSyncPage: function(url) {
                return !!j.$("#watch").length;
            },
            sync: {
                getTitle: function(url) {
                    return j.$(".details > div > h1 > a").text();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 5).match(/^\d*/)[0];
                },
                getOverviewUrl: function(url) {
                    return NekoSama.domain + j.$(".details > div > h1 > a").attr("href");
                },
                getEpisode: function(url) {
                    return j.$("#watch > div > div.row.no-gutters.anime-info > div.info > div > div > h2").text().split(" Episode ").pop();
                },
                nextEpUrl: function(url) {
                    return utils.absoluteLink(j.$("#watch > div > div:nth-child(2) > div > div.item.right > a.ui.button.small.with-svg-right").attr("href"), NekoSama.domain);
                }
            },
            overview: {
                getTitle: function(url) {
                    return utils.getBaseText($("#head > div.content > div > div > div > h1"));
                },
                getIdentifier: function(url) {
                    return NekoSama.sync.getIdentifier(url);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("#stats > div > div.actions > div").first());
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(269).toString()), utils.waitUntilTrue((function() {
                    return j.$("#stats,#watch").length;
                }), (function() {
                    page.handlePage(), j.$(".ui.toggle.checkbox, #stats > div > div.episodes > div > div").click((function() {
                        setTimeout((function() {
                            page.handleList();
                        }), 500);
                    }));
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return AnimeZone;
        }));
        const AnimeZone = {
            name: "AnimeZone",
            domain: "https://www.animezone.pl",
            type: "anime",
            isSyncPage: function(url) {
                return void 0 !== url.split("/")[5];
            },
            sync: {
                getTitle: function(url) {
                    return j.$(".category-description .panel-title").attr("title");
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                getOverviewUrl: function(url) {
                    return utils.absoluteLink(j.$(".all-episodes > a").attr("href"), AnimeZone.domain);
                },
                getEpisode: function(url) {
                    return url.split("/")[5];
                },
                nextEpUrl: function(url) {
                    let href = j.$(".next a").attr("href");
                    if (href) return utils.absoluteLink(href, AnimeZone.domain);
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$(".category-description .panel-title").attr("title");
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$(".ratings .panel-body .description").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("table.episodes > tbody > tr");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("td:nth-child(6) > a").first().attr("href").replace(/^../gm, ""), AnimeZone.domain);
                    },
                    elementEp: function(selector) {
                        return selector.find("td:nth-child(6) > a").first().attr("href").split("/")[3].replace(/\D+/, "");
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(271).toString()), j.$(document).ready((function() {
                    page.handlePage();
                    var target = j.$("#episode")[0], config = {
                        attributes: !1,
                        childList: !0,
                        subtree: !0
                    }, observer = new MutationObserver((function(mutationsList, observer) {
                        for (let mutation of mutationsList) if ("childList" === mutation.type) {
                            let srcElement = (j.$("#episode a") || j.$(" #episode iframe"))[0], src = (srcElement.href || srcElement.src).replace(/^http:\/\//i, "https://");
                            j.$("#episode .embed-container")[0].innerHTML = null;
                            let iframe = document.createElement("iframe");
                            j.$("#episode .embed-container")[0].appendChild(iframe), iframe.setAttribute("allowfullscreen", "true"), 
                            iframe.src = src, iframe.width = "100%", iframe.height = "100%", observer.disconnect();
                        }
                    }));
                    j.$(".btn.btn-xs.btn-success").each((function(i, e) {
                        j.$(e).click((function() {
                            observer.observe(target, config);
                        }));
                    }));
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return AnimeOdcinki;
        }));
        const AnimeOdcinki = {
            name: "AnimeOdcinki",
            domain: "https://anime-odcinki.pl",
            type: "anime",
            isSyncPage: function(url) {
                return void 0 !== url.split("/")[5];
            },
            sync: {
                getTitle: function(url) {
                    return j.$(".field-name-field-tytul-anime a").text();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                getOverviewUrl: function(url) {
                    return utils.absoluteLink(j.$(".field-name-field-tytul-anime a").attr("href"), AnimeOdcinki.domain);
                },
                getEpisode: function(url) {
                    return parseInt(j.$(".page-header").text().substr(j.$(".field-name-field-tytul-anime a").text().length).match(/\d+/i)[0]);
                },
                nextEpUrl: function(url) {
                    return j.$("#video-next").attr("href");
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$(".page-header").text();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("#user-anime-top").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("div.view-content > ul > li.lista_odc_tytul_pozycja");
                    },
                    elementUrl: function(selector) {
                        return selector.find("a").first().attr("href");
                    },
                    elementEp: function(selector) {
                        return selector.find("a").first().attr("href").split("/")[5].match(/\d+/gim);
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(273).toString()), j.$(document).ready((function() {
                    void 0 !== page.url.split("/")[5] ? page.handlePage() : utils.waitUntilTrue((function() {
                        return j.$("div.view-content").length;
                    }), (function() {
                        page.handlePage();
                    }));
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, j, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Animeflix;
        }));
        const Animeflix = {
            name: "Animeflix",
            domain: "https://animeflix.io",
            type: "anime",
            isSyncPage: function(url) {
                return void 0 !== url.split("/")[5] && url.split("/")[5].length > 0;
            },
            sync: {
                getTitle: function(url) {
                    return utils.getBaseText($("h4.title.text-truncate, h4.headline.text-truncate").first()).replace("()", "").trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                getOverviewUrl: function(url) {
                    return Animeflix.domain + "/shows/" + Animeflix.sync.getIdentifier(url);
                },
                getEpisode: function(url) {
                    var episodePart = url.split("/")[5];
                    if (episodePart.length) {
                        var temp = episodePart.match(/episode-\d*-/gim);
                        if (null !== temp) return temp[0].replace(/\D+/g, "");
                    }
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("div.flex.xs12.lg8 > h1").text().trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    j.$('<div class="container"> <p id="malp">' + selector.html() + "</p></div>").insertAfter(j.$("div.my-3").first());
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                function check() {
                    "shows" === page.url.split("/")[3] && utils.waitUntilTrue((function() {
                        return !!(j.$("h4.title.text-truncate").text() || j.$("h4.headline.text-truncate").text() || j.$("div.flex.xs12.lg8 > h1").text());
                    }), (function() {
                        page.handlePage();
                    }));
                }
                api.storage.addStyle(__webpack_require__(275).toString()), check(), utils.urlChangeDetect((function() {
                    page.url = window.location.href, page.UILoaded = !1, $("#flashinfo-div, #flash-div-bottom, #flash-div-top").remove(), 
                    check();
                }));
            }
        };
    }).call(this, __webpack_require__(2), __webpack_require__(3), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return AnimeFever;
        }));
        const AnimeFever = {
            name: "AnimeFever",
            domain: "https://www.animefever.tv",
            type: "anime",
            isSyncPage: function(url) {
                return "episode" === url.split("/")[5];
            },
            sync: {
                getTitle: function(url) {
                    return j.$("div.jw-wrapper.jw-reset > div.jw-controls.jw-reset > div.player-episode-info > div > a").text();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                getOverviewUrl: function(url) {
                    return AnimeFever.domain + j.$("div.jw-wrapper.jw-reset > div.jw-controls.jw-reset > div.player-episode-info > div > a").attr("href");
                },
                getEpisode: function(url) {
                    var episodePart = url.split("/")[6];
                    if (episodePart.length) {
                        var temp = episodePart.match(/episode-\d*/gim);
                        if (null !== temp) return temp[0].replace(/\D+/g, "");
                    }
                },
                nextEpUrl: function(url) {
                    var nextEp = j.$("section.relative.player-bg > div > a.next-episode").first().attr("href");
                    return nextEp ? utils.absoluteLink(nextEp, AnimeFever.domain) : nextEp;
                }
            },
            overview: {
                getTitle: function(url) {
                    return utils.getBaseText($("#ov-anime > div.top-detail.relative > div.uk-width-expand.relative.z-10 > div > h1 > div").first()).trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("#ov-anime > div.top-detail.relative > div.uk-width-expand.relative.z-10 > div > h1").first());
                }
            },
            init(page) {
                function checkPage() {
                    page.url = window.location.href, page.UILoaded = !1, $("#flashinfo-div, #flash-div-bottom, #flash-div-top").remove(), 
                    "series" === page.url.split("/")[3] && void 0 !== typeof page.url.split("/")[4] && page.url.split("/")[4].length > 0 && utils.waitUntilTrue((function() {
                        return !(!j.$("div.jw-wrapper.jw-reset > div.jw-controls.jw-reset > div.player-episode-info > div > a").text() && !j.$("#ov-anime > div.top-detail.relative > div.uk-width-expand.relative.z-10 > div > h1 > div").text());
                    }), (function() {
                        page.handlePage();
                    }));
                }
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(277).toString()), checkPage(), utils.urlChangeDetect((function() {
                    checkPage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, j, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return serimanga;
        }));
        const serimanga = {
            name: "serimanga",
            domain: "https://serimanga.com",
            type: "manga",
            isSyncPage: function(url) {
                return void 0 !== url.split("/")[5] && url.split("/")[5].length > 0;
            },
            sync: {
                getTitle: function(url) {
                    return utils.getBaseText($("#reader > div.read-top-menu > div.rtm-logo > a.back.text-white")).trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                getOverviewUrl: function(url) {
                    return j.$("#reader > div.read-top-menu > div.rtm-logo > a.back.text-white").attr("href");
                },
                getEpisode: function(url) {
                    return url.split("/")[5];
                },
                nextEpUrl: function(url) {
                    return j.$("#chapterButtons2 > div > div:nth-child(2) > a").first().attr("href");
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("div.seri-img > div > div > div.name").first().text().trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("div.sub-top-text").first());
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(279).toString()), j.$(document).ready((function() {
                    "manga" === page.url.split("/")[3] && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(2), __webpack_require__(3), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return mangadenizi;
        }));
        const mangadenizi = {
            name: "mangadenizi",
            domain: "https://mangadenizi.com",
            type: "manga",
            isSyncPage: function(url) {
                return void 0 !== url.split("/")[5] && url.split("/")[5].length > 0;
            },
            sync: {
                getTitle: function(url) {
                    return j.$("#navbar-collapse-1 > ul > li:nth-child(1) > a").text();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                getOverviewUrl: function(url) {
                    return j.$("#navbar-collapse-1 > ul > li:nth-child(1) > a").attr("href");
                },
                getEpisode: function(url) {
                    return url.split("/")[5];
                },
                nextEpUrl: function(url) {
                    var script = j.$("body > div.container-fluid > script")[0].innerHTML;
                    if (script = (script = (script = script.match(/next_chapter\s*=\s*".*"/gim))[0].match(/"(.*?)"/gm))[0].replace(/(^"|"$)/gm, "")) return script;
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("h2.widget-title").first().text();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("h2.widget-title").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("ul.chapters > li");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("h5 > a").first().attr("href"), mangadenizi.domain);
                    },
                    elementEp: function(selector) {
                        return utils.absoluteLink(selector.find("h5 > a").first().attr("href"), mangadenizi.domain).split("/")[5];
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(281).toString()), j.$(document).ready((function() {
                    "manga" === page.url.split("/")[3] && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return moeclip;
        }));
        const moeclip = {
            name: "moeclip",
            domain: "https://moeclip.com",
            type: "anime",
            isSyncPage: function(url) {
                return !(!j.$("div.video-content")[0] || !j.$("h1.entry-title.title-font")[0]);
            },
            sync: {
                getTitle: function(url) {
                    return j.$("header h1.entry-title.title-font").text().replace(/\d.*sub.*indo.*/gim, "").trim();
                },
                getIdentifier: function(url) {
                    return url.split("/")[3].replace(/-\d*-sub-indo.*/gim, "").trim();
                },
                getOverviewUrl: function(url) {
                    return moeclip.domain + "/anime/" + moeclip.sync.getIdentifier(url);
                },
                getEpisode: function(url) {
                    var episodePart = url.split("/")[3];
                    if (episodePart.length) {
                        var temp = episodePart.match(/-\d*-sub-indo.*/gim);
                        if (null !== temp) return temp[0].replace(/\D+/g, "");
                    }
                },
                nextEpUrl: function(url) {
                    return j.$("div.episode-nav > div.select-episode > div:nth-child(3) > a").first().attr("href");
                }
            },
            overview: {
                getTitle: function(url) {
                    return utils.getBaseText($("#data2 > div:nth-child(2)")).trim().replace(/:[ ]*/g, "");
                },
                getIdentifier: function(url) {
                    return url.split("/")[4].replace(/-sub-indo.*/gim, "").trim();
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("div.entry-meta").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("li.episode-list");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("div > a").first().attr("href"), moeclip.domain);
                    },
                    elementEp: function(selector) {
                        return selector.find("div > a").first().text().replace(/\D+/, "");
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(283).toString()), j.$(document).ready((function() {
                    ("anime" == page.url.split("/")[3] || j.$("div.video-content")[0] && j.$("h1.entry-title.title-font")[0] && j.$("#plv > div.contentsembed > div.episode-nav > div > div.eps-nav.pilih")[0]) && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return mangalivre;
        }));
        const mangalivre = {
            name: "mangalivre",
            domain: "https://mangalivre.com",
            type: "manga",
            isSyncPage: function(url) {
                return void 0 !== url.split("/")[6] && url.split("/")[6].length > 0;
            },
            sync: {
                getTitle: function(url) {
                    return j.$("div.series-title > span.title").text();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                getOverviewUrl: function(url) {
                    return mangalivre.domain + j.$("div.series-info-popup-container > div > div > div.series-cover > a").attr("href");
                },
                getEpisode: function(url) {
                    return url.split("/")[6].replace(/\D+/g, "");
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("#series-data > div.series-info.touchcarousel > span.series-title > h1").first().text().trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("#series-data > div.series-info.touchcarousel > span.series-desc").first());
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(285).toString()), j.$(document).ready((function() {
                    "manga" === page.url.split("/")[3] && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return tmofans;
        }));
        const tmofans = {
            name: "tmofans",
            domain: "https://tmofans.com",
            type: "manga",
            isSyncPage: function(url) {
                return "viewer" === url.split("/")[3] && void 0 !== url.split("/")[4] && url.split("/")[4].length > 0;
            },
            sync: {
                getTitle: function(url) {
                    return j.$("#app > section:nth-child(2) > div > div > h1").text().trim();
                },
                getIdentifier: function(url) {
                    return j.$("nav.navbar > div > div:nth-child(2) > a").last().attr("href").split("/")[6];
                },
                getOverviewUrl: function(url) {
                    return j.$("nav.navbar > div > div:nth-child(2) > a").last().attr("href");
                },
                getEpisode: function(url) {
                    var episodePart = utils.getBaseText($("#app > section:nth-child(2) > div > div > h2").first()).trim();
                    if (episodePart.length) {
                        var temp = episodePart.match(/Capítulo *\d*/gim);
                        if (null !== temp) return temp[0].replace(/\D+/g, "");
                    }
                }
            },
            overview: {
                getTitle: function(url) {
                    return utils.getBaseText($("h1.element-title.my-2").first()).trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 6);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("header.container-fluid").first());
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(287).toString()), j.$(document).ready((function() {
                    ("library" === page.url.split("/")[3] && void 0 !== page.url.split("/")[4] && page.url.split("/")[4].length > 0 || "viewer" === page.url.split("/")[3]) && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, j, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return unionmangas;
        }));
        const unionmangas = {
            name: "unionmangas",
            domain: [ "https://unionleitor.top", "https://unionmangas.top" ],
            type: "manga",
            isSyncPage: function(url) {
                return "leitor" === url.split("/")[3] && void 0 !== url.split("/")[5] && url.split("/")[5].length > 0;
            },
            sync: {
                getTitle: function(url) {
                    return utils.getBaseText($("body > div.breadcrumbs > div > div > a:nth-child(3)")).trim();
                },
                getIdentifier: function(url) {
                    return j.$("body > div.breadcrumbs > div > div > a:nth-child(3)").attr("href").split("/")[4].toLowerCase();
                },
                getOverviewUrl: function(url) {
                    return j.$("body > div.breadcrumbs > div > div > a:nth-child(3)").attr("href");
                },
                getEpisode: function(url) {
                    return url.split("/")[5];
                },
                nextEpUrl: function(url) {
                    var num = $("#capitulo_trocar").find("option:selected").next().attr("value"), href = url.replace(/\d+$/, num);
                    if (void 0 !== num && href !== url) return utils.absoluteLink(href, unionmangas.domain);
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("div.row > div.col-md-12 > h2").first().text().trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4).toLowerCase();
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("div.row > div.col-md-12 > h2").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("div.row.lancamento-linha");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("div > a").first().attr("href"), unionmangas.domain);
                    },
                    elementEp: function(selector) {
                        return utils.absoluteLink(selector.find("div > a").first().attr("href"), unionmangas.domain).split("/")[5];
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(289).toString()), j.$(document).ready((function() {
                    "leitor" !== page.url.split("/")[3] && "perfil-manga" !== page.url.split("/")[3] || page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(2), __webpack_require__(3), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return myAnime;
        }));
        const myAnime = {
            name: "myAnime",
            domain: "https://myanime.moe",
            type: "anime",
            isSyncPage: function(url) {
                return void 0 !== url.split("/")[5] && url.split("/")[5].length > 0;
            },
            sync: {
                getTitle: function(url) {
                    return j.$("#episode-details > div > span.current-series > a").text();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                getOverviewUrl: function(url) {
                    return myAnime.domain + j.$("#episode-details > div > span.current-series > a").attr("href");
                },
                getEpisode: function(url) {
                    return parseInt(utils.urlPart(url, 5));
                },
                nextEpUrl: function(url) {
                    var nextEp = j.$("div#ep-next").first().parent().attr("href");
                    return nextEp ? myAnime.domain + nextEp : nextEp;
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("span.anime-title").first().text().trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("img.anime-bg").first());
                },
                getMalUrl: function(provider) {
                    var url = j.$('a[href^="https://myanimelist.net/anime/"]').not("#malRating").first().attr("href");
                    return url || ("ANILIST" === provider && (url = j.$('a[href^="https://anilist.co/anime/"]').not("#malRating").first().attr("href")) ? url : !("KITSU" !== provider || !(url = j.$('a[href^="https://kitsu.io/anime/"]').not("#malRating").first().attr("href"))) && url);
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("ul.list > li.li-block");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("a").first().attr("href"), myAnime.domain);
                    },
                    elementEp: function(selector) {
                        return selector.find("a").first().attr("href").split("/")[3].replace(/\D+/, "");
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(291).toString()), j.$(document).ready((function() {
                    "anime" === page.url.split("/")[3] && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return MangaPlus;
        }));
        const MangaPlus = {
            name: "MangaPlus",
            domain: "https://mangaplus.shueisha.co.jp",
            type: "manga",
            isSyncPage: function(url) {
                return "viewer" == url.split("/")[3];
            },
            sync: {
                getTitle: function(url) {
                    return j.$("h1.Navigation-module_title_180OT").first().text();
                },
                getIdentifier: function(url) {
                    return j.$("h1.Navigation-module_title_180OT").first().parent().attr("href").split("/")[2];
                },
                getOverviewUrl: function(url) {
                    return MangaPlus.domain + j.$("h1.Navigation-module_title_180OT").first().parent().attr("href");
                },
                getEpisode: function(url) {
                    return j.$("p.Navigation-module_chapterTitle_20juD").first().text().replace(/\D+/g, "");
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("h1.TitleDetailHeader-module_title_Iy33M").first().text().trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    selector.insertBefore(j.$("div.TitleDetail-module_flexContainer_1oGb4").first());
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(293).toString()), "viewer" !== page.url.split("/")[3] && "titles" !== page.url.split("/")[3] || utils.waitUntilTrue((function() {
                    return !(!j.$("h1.Navigation-module_title_180OT").text() && !j.$("h1.TitleDetailHeader-module_title_Iy33M").text());
                }), (function() {
                    page.handlePage();
                })), utils.urlChangeDetect((function() {
                    page.url = window.location.href, page.UILoaded = !1, $("#flashinfo-div, #flash-div-bottom, #flash-div-top").remove(), 
                    "viewer" !== page.url.split("/")[3] && "titles" !== page.url.split("/")[3] || utils.waitUntilTrue((function() {
                        return !(!j.$("h1.Navigation-module_title_180OT").text() && !j.$("h1.TitleDetailHeader-module_title_Iy33M").text());
                    }), (function() {
                        page.handlePage();
                    }));
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, j, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return JapScan;
        }));
        const JapScan = {
            name: "JapScan",
            domain: "https://www.japscan.co",
            type: "manga",
            isSyncPage: function(url) {
                return "lecture-en-ligne" === url.split("/")[3];
            },
            sync: {
                getTitle: function(url) {
                    return utils.getBaseText($("ol.breadcrumb > li:nth-child(3) > a").first()).trim();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                getOverviewUrl: function(url) {
                    return JapScan.domain + j.$("ol.breadcrumb > li:nth-child(3) > a").first().attr("href");
                },
                getEpisode: function(url) {
                    return url.split("/")[5];
                },
                nextEpUrl: function(url) {
                    if ("Chapitre Suivant" == j.$("div.clearfix > p > span").last().text() && j.$("div.clearfix > p > a").last().attr("href").length) return JapScan.domain + j.$("div.clearfix > p > a").last().attr("href");
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("div#main > div.card > div.card-body > h1").first().text().replace(/^[a-z]+/gim, "").trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("div#main > div.card > div.card-body > h1").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("div#chapters_list > div > div.chapters_list.text-truncate");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("a").first().attr("href"), JapScan.domain);
                    },
                    elementEp: function(selector) {
                        return selector.find("a").first().attr("href").split("/")[3].match(/\d+/gim);
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(295).toString()), j.$(document).ready((function() {
                    ("manga" === page.url.split("/")[3] || "lecture-en-ligne" === page.url.split("/")[3] && j.$("div#image").length) && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(2), __webpack_require__(3), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return MangaKisa;
        }));
        const MangaKisa = {
            name: "MangaKisa",
            domain: "https://mangakisa.com",
            type: "manga",
            isSyncPage: function(url) {
                return !!j.$("div.now2 > a.infoan2").length;
            },
            sync: {
                getTitle: function(url) {
                    return j.$("div.now2 > a.infoan2").text().trim();
                },
                getIdentifier: function(url) {
                    return j.$("div.now2 > a.infoan2").attr("href").split("/")[1];
                },
                getOverviewUrl: function(url) {
                    return MangaKisa.domain + j.$("div.now2 > a.infoan2").attr("href");
                },
                getEpisode: function(url) {
                    var episodePart = j.$("#chaptertext option:selected").text();
                    if (episodePart.length) {
                        var temp = episodePart.match(/chapter +\d+/gim);
                        if (null !== temp) return temp[0].replace(/\D+/g, "");
                    }
                },
                nextEpUrl: function(url) {
                    var num = $("#chaptertext").find("option:selected").next().attr("value"), href = url.replace(/\d+$/, num);
                    if (void 0 !== num && href !== url) return utils.absoluteLink(href, MangaKisa.domain);
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("#body > div.notmain > div > div.infobox > div.infoboxc > div.infodesbox > h1").text().trim();
                },
                getIdentifier: function(url) {
                    return url.split("/")[3];
                },
                uiSelector: function(selector) {
                    selector.insertBefore(j.$(".infoepboxmain").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("div.infoepbox > a");
                    },
                    elementUrl: function(selector) {
                        return MangaKisa.domain + "/" + selector.find(".infoepmain").first().parent().attr("href");
                    },
                    elementEp: function(selector) {
                        return selector.find("div.infoept2r > div, div.infoept2 > div").first().text();
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(297).toString()), j.$(document).ready((function() {
                    void 0 !== page.url.split("/")[3] && page.url.split("/")[3].length > 0 && (j.$("div.now2 > a.infoan2").length || j.$("div.infoboxc > div.infodesbox > h1.infodes").length) && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Goyabu;
        }));
        const Goyabu = {
            name: "Goyabu",
            domain: "https://goyabu.com",
            type: "anime",
            isSyncPage: function(url) {
                return "videos" === url.split("/")[3];
            },
            sync: {
                getTitle: function(url) {
                    return j.$("div.user-box-txt > a > h3").text();
                },
                getIdentifier: function(url) {
                    return j.$("div.user-box-txt > a").attr("href").split("/")[4];
                },
                getOverviewUrl: function(url) {
                    return j.$("div.user-box-txt > a").attr("href");
                },
                getEpisode: function(url) {
                    var episodePart = j.$("div.row.vibe-interactions > h1").text();
                    if (episodePart.length) {
                        var temp = episodePart.match(/Episódio\s*\d+/gim);
                        if (null !== temp) return temp[0].replace(/\D+/g, "");
                    }
                },
                nextEpUrl: function(url) {
                    return j.$("ul > li > div.inner > div.data > span.title > a").first().attr("href");
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("div.left20.right20 > h1").first().text().trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    selector.insertBefore(j.$("div.phpvibe-video-list").first());
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(299).toString()), j.$(document).ready((function() {
                    "assistir" !== page.url.split("/")[3] && "videos" !== page.url.split("/")[3] || page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, j, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return AnimesVision;
        }));
        const AnimesVision = {
            name: "AnimesVision",
            domain: "https://www.animesvision.com.br",
            type: "anime",
            isSyncPage: function(url) {
                return void 0 !== url.split("/")[5];
            },
            sync: {
                getTitle: function(url) {
                    return utils.getBaseText($("div.goblock.play-anime > div.gobread > ol > li.active > h1")).replace(/Dublado/gim, "").replace(/[\s-\s]*$/, "").trim();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                getOverviewUrl: function(url) {
                    return j.$("#episodes-sv-1 > li > div.sli-name > a").attr("href");
                },
                getEpisode: function(url) {
                    var episodetemp = url.split("/")[5].replace(/\D+/, "");
                    return episodetemp || 1;
                },
                nextEpUrl: function(url) {
                    return utils.absoluteLink(j.$("#nextEp").attr("href"), AnimesVision.domain);
                }
            },
            overview: {
                getTitle: function(url) {
                    return utils.getBaseText($("div.goblock.detail-anime > div.gobread > ol > li.active > span")).replace(/Dublado/gim, "").replace(/[\s-\s]*$/, "").trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("div.goblock.detail-anime > div.goblock-content.go-full > div.detail-content"));
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("#episodes-sv-1 > li.ep-item");
                    },
                    elementUrl: function(selector) {
                        return selector.find("a").first().attr("href");
                    },
                    elementEp: function(selector) {
                        return selector.find("a").first().attr("href").split("/")[5].replace(/\D+/, "");
                    }
                }
            },
            init(page) {
                api.storage.addStyle(__webpack_require__(301).toString()), j.$(document).ready((function() {
                    "animes" !== page.url.split("/")[3] && "filmes" !== page.url.split("/")[3] || page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(2), __webpack_require__(3), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, con, utils, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Hulu;
        }));
        var __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        }, episode = 0, season = 0, huluId = void 0, name = void 0, movie = !1, nextEp = void 0;
        const Hulu = {
            name: "Hulu",
            domain: "https://www.hulu.com",
            type: "anime",
            isSyncPage: function(url) {
                return "watch" === url.split("/")[3];
            },
            sync: {
                getTitle: function(url) {
                    return name;
                },
                getIdentifier: function(url) {
                    return huluId + "?s=" + season;
                },
                getOverviewUrl: function(url) {
                    return movie ? Hulu.domain + "/movie/" + huluId : Hulu.domain + "/series/" + huluId;
                },
                getEpisode: function(url) {
                    return episode;
                },
                nextEpUrl: function(url) {
                    return nextEp;
                }
            },
            overview: {
                getTitle: function(url) {
                    var curseason = j.$("div.DetailsDropdown > div > div > button.Select__control > div.Select__single-value, div.DetailsDropdown > div > div > div.Select__control > div.Select__single-value").text().replace(/\D+/g, "");
                    return void 0 !== typeof curseason && curseason > 1 ? name + " season " + curseason : name;
                },
                getIdentifier: function(url) {
                    return movie ? (con.log("movie"), huluId + "?s=1") : (con.log("not a movie"), huluId + "?s=" + j.$("div.DetailsDropdown > div > div > button.Select__control > div.Select__single-value, div.DetailsDropdown > div > div > div.Select__control > div.Select__single-value").first().text().replace(/\D+/g, ""));
                },
                uiSelector: function(selector) {
                    selector.insertBefore(j.$("#LevelTwo__scroll-area > div > div > div.Details__subnav").first());
                }
            },
            init(page) {
                function startCheck() {
                    $("html").addClass("miniMAL-hide"), "watch" !== page.url.split("/")[3] && "series" !== page.url.split("/")[3] && "movie" !== page.url.split("/")[3] || utils.waitUntilTrue((function() {
                        return "series" !== page.url.split("/")[3] || j.$("div.DetailsDropdown > div > div > button.Select__control > div.Select__single-value, div.DetailsDropdown > div > div > .Select__control > div.Select__single-value").first().text();
                    }), (function() {
                        return __awaiter(this, void 0, void 0, (function*() {
                            var tempId, reqUrl;
                            (yield (tempId = utils.urlPart(window.location.href, 4), reqUrl = "https://discover.hulu.com/content/v3/entity?language=en&eab_ids=" + tempId.substring(tempId.length - 36, tempId.length), 
                            api.request.xhr("GET", reqUrl).then(response => {
                                var json = JSON.parse(response.responseText);
                                if (json.items[0].genre_names.includes("Anime") || json.items[0].genre_names.includes("Animation")) {
                                    if (episode = parseInt(json.items[0].number), json.items[0].season ? (huluId = json.items[0].series_id, 
                                    season = parseInt(json.items[0].season), name = json.items[0].series_name, movie = !1) : (huluId = json.items[0].id, 
                                    season = 1, name = json.items[0].name, "series" !== window.location.href.split("/")[3] && (movie = !0)), 
                                    season >= 1 && 0 == movie && "watch" === window.location.href.split("/")[3]) {
                                        var reqUrl2 = "https://discover.hulu.com/content/v4/hubs/series/" + huluId + "/season/" + season + "?offset=0&limit=999&schema=9&referralHost=production";
                                        return api.request.xhr("GET", reqUrl2).then(r => {
                                            var json2 = JSON.parse(r.responseText);
                                            return season > 1 && (episode = episode - json2.items[0].number + 1, name = name + " season " + season), 
                                            nextEp = void 0 !== typeof json2.items[episode + 1] ? Hulu.domain + "/watch/" + json2.items[episode + 1].id : void 0, 
                                            con.log(huluId), con.log(name), con.log("episode: " + episode + " season: " + season), 
                                            void 0 !== huluId;
                                        });
                                    }
                                    return con.log(huluId), con.log(name), con.log("episode: " + episode + " season: " + season), 
                                    void 0 !== huluId;
                                }
                            }))) && (page.handlePage(), $("html").removeClass("miniMAL-hide"), "series" === page.url.split("/")[3] && $("body").on("DOMSubtreeModified", "div.DetailsDropdown > div > div > button.Select__control > div.Select__single-value", (function() {
                                j.$("#malp").remove(), page.UILoaded = !1, page.handlePage(), $("html").removeClass("miniMAL-hide");
                            })));
                        }));
                    }));
                }
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(303).toString()), startCheck(), utils.urlChangeDetect((function() {
                    page.url = window.location.href, page.UILoaded = !1, $("#flashinfo-div, #flash-div-bottom, #flash-div-top").remove(), 
                    con.log("url change"), startCheck();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(1), __webpack_require__(2), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        var tabPage;
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Aniwatch;
        }));
        const Aniwatch = {
            name: "Aniwatch",
            domain: "https://aniwatch.me",
            database: "Aniwatch",
            type: "anime",
            isSyncPage: function(url) {
                return "stream" === tabPage || "w2g" === tabPage;
            },
            sync: {
                getTitle: function(url) {
                    return "stream" === tabPage ? j.$("h1.md-headline.no-margin > span.border-right.pr-5").text() : j.$("h2.md-title > span.border-right > a").text();
                },
                getIdentifier: function(url) {
                    return "stream" === tabPage ? url.split("/")[4] : j.$("h2.md-title > span.border-right > a").attr("href").split("/")[2];
                },
                getOverviewUrl: function(url) {
                    return Aniwatch.domain + "/anime/" + Aniwatch.sync.getIdentifier(url);
                },
                getEpisode: function(url) {
                    return "stream" === tabPage ? parseInt(utils.urlPart(url, 5)) : j.$("h2.md-title > span.desc-color").text().replace(/\D+/g, "");
                },
                nextEpUrl: function(url) {
                    if ("stream" === tabPage && !j.$("#anilyr-nextEpi").is("[disabled=disabled]")) return url.replace(/\d+$/, parseInt(utils.urlPart(url, 5)) + 1);
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("md-content > div > div.responsive-anime.anime-boxes-margin > h1").text();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    selector.insertBefore(j.$("#enable-ani-cm > div > section.section-padding > div > md-content > div > div > md-content > div").first());
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                function loaded() {
                    $("#flashinfo-div, #flash-div-bottom, #flash-div-top, #malp").remove(), page.url = window.location.href, 
                    page.UILoaded = !1, "anime" === page.url.split("/")[3] ? void 0 === (tabPage = j.$(".md-tab.md-active").text().toLowerCase()) || "stream" !== tabPage && "overview" !== tabPage || utils.waitUntilTrue((function() {
                        return !(!j.$("md-content > div > div.responsive-anime.anime-boxes-margin > h1").text().length && !j.$("h1.md-headline.no-margin > span.border-right.pr-5").text().length);
                    }), (function() {
                        console.log("pagehandle"), page.handlePage();
                    })) : "watch2gether" === page.url.split("/")[3] && j.$("h2.md-title > span.border-right > a").text() && j.$("h2.md-title > span.desc-color").text() && (tabPage = "w2g", 
                    page.handlePage());
                }
                api.storage.addStyle(__webpack_require__(305).toString()), utils.changeDetect(loaded, () => "watch2gether" === window.location.href.split("/")[3] ? window.location.href + j.$("h2.md-title > span.border-right > a").text() + j.$("h2.md-title > span.desc-color").text().replace(/\D+/g, "") : window.location.href + "/" + j.$(".md-tab.md-active").text()), 
                loaded(), $(document).on("keydown", (function(e) {
                    116 == (e.which || e.keyCode) && loaded();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, con, api, utils) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return Hidive;
        }));
        const Hidive = {
            name: "Hidive",
            domain: "https://www.hidive.com",
            type: "anime",
            isSyncPage: function(url) {
                return "stream" === url.split("/")[3];
            },
            sync: {
                getTitle: function(url) {
                    return j.$("#TitleDetails").text();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                getOverviewUrl: function(url) {
                    return Hidive.domain + j.$("#TitleDetails").attr("href");
                },
                getEpisode: function(url) {
                    var temp = url.split("/")[5];
                    return /^\d/.test(temp) ? Number(temp.slice(8)) : Number(temp.slice(4));
                },
                nextEpUrl: function(url) {
                    var nextEp = j.$("#StreamNextEpisode .episode-play").attr("data-key");
                    return nextEp ? nextEp !== url.split("/")[5] ? Hidive.domain + "/stream/" + j.$("#StreamNextEpisode .episode-play").attr("data-videotitle") + "/" + nextEp : void 0 : nextEp;
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("div.text-container a").text().replace("Score It", "").trim();
                },
                getIdentifier: function(url) {
                    return url.split("/")[4];
                },
                uiSelector: function(selector) {
                    j.$('<div class="container"> <p id="malp">' + selector.html() + "</p></div>").insertAfter(j.$("div.details").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("div.episode-slider > div > div > div.cell > div:nth-child(1) > div.hitbox").filter((function() {
                            return !j.$(this).find("div.na").length && (!(!j.$(this).find(".player > a").attr("data-playurl") || window.location.href.split("/")[4] !== j.$(this).find(".player > a").attr("data-playurl").split("/")[4]) || void 0);
                        }));
                    },
                    elementUrl: function(selector) {
                        return selector.find("div.player > a").attr("data-playurl");
                    },
                    elementEp: function(selector) {
                        var temp = selector.find("div.player > a").attr("data-key");
                        return temp && /^\d/.test(temp) ? Number(temp.slice(8)) : temp ? Number(temp.slice(4)) : 0;
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(307).toString()), j.$(document).ready((function() {
                    "stream" !== page.url.split("/")[3] && "tv" !== page.url.split("/")[3] && "movies" !== page.url.split("/")[3] || void 0 === page.url.split("/")[4] || (page.handlePage(), 
                    utils.urlChangeDetect((function() {
                        con.info("Check"), page.handlePage();
                    })));
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(1), __webpack_require__(0), __webpack_require__(2));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return JaiminisBox;
        }));
        const JaiminisBox = {
            name: "JaiminisBox",
            domain: "https://jaiminisbox.com",
            type: "manga",
            isSyncPage: function(url) {
                return "read" === url.split("/")[4];
            },
            sync: {
                getTitle: function(url) {
                    return j.$("div.tbtitle > div.text > a").first().text();
                },
                getIdentifier: function(url) {
                    return JaiminisBox.sync.getOverviewUrl(url).split("/")[5];
                },
                getOverviewUrl: function(url) {
                    return j.$("div.tbtitle > div.text > a").first().attr("href");
                },
                getEpisode: function(url) {
                    return url.split("/")[8];
                },
                nextEpUrl: function(url) {
                    var nextUrl = j.$("div.tbtitle > ul.dropdown > li> a[href='" + j.$("div.tbtitle > div.text > a").eq(1).attr("href") + "']").parent().prev().find("a").attr("href");
                    return nextUrl || void 0;
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("h1.title").first().text().trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 5);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("h1.title").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("div.group > div.element");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("div.title > a").first().attr("href"), JaiminisBox.domain);
                    },
                    elementEp: function(selector) {
                        return parseInt(JaiminisBox.overview.list.elementUrl(selector).split("/")[8]);
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(309).toString()), j.$(document).ready((function() {
                    page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(j, utils, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return FallenAngels;
        }));
        const FallenAngels = {
            name: "FallenAngels",
            domain: "https://manga.fascans.com/",
            type: "manga",
            isSyncPage: function(url) {
                return void 0 !== url.split("/")[5] && url.split("/")[5].length > 0;
            },
            sync: {
                getTitle: function(url) {
                    return j.$("#navbar-collapse-1 > ul > li:nth-child(1) > a").text().replace(/manga$/gi, "").trim();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                getOverviewUrl: function(url) {
                    return j.$("#navbar-collapse-1 > ul > li:nth-child(1) > a").attr("href");
                },
                getEpisode: function(url) {
                    return url.split("/")[5];
                },
                nextEpUrl: function(url) {
                    var script = j.$("body > div.container-fluid > script")[0].innerHTML;
                    if (script = (script = (script = script.match(/next_chapter\s*=\s*".*"/gim))[0].match(/"(.*?)"/gm))[0].replace(/(^"|"$)/gm, "")) return script;
                }
            },
            overview: {
                getTitle: function(url) {
                    return j.$("h2.widget-title").first().text();
                },
                getIdentifier: function(url) {
                    return utils.urlPart(url, 4);
                },
                uiSelector: function(selector) {
                    selector.insertAfter(j.$("h2.widget-title").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("ul.chapters > li");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("h5 > a").first().attr("href"), FallenAngels.domain);
                    },
                    elementEp: function(selector) {
                        return utils.absoluteLink(selector.find("h5 > a").first().attr("href"), FallenAngels.domain).split("/")[5];
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(311).toString()), j.$(document).ready((function() {
                    "manga" === page.url.split("/")[3] && page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(3), __webpack_require__(2), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, j, con, api) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return animestrue;
        }));
        const animestrue = {
            name: "animestrue",
            domain: "https://www.animestrue.net",
            type: "anime",
            isSyncPage: function(url) {
                return void 0 !== url.split("/")[6] && -1 !== url.split("/")[6].indexOf("episodio");
            },
            sync: {
                getTitle: function(url) {
                    return url.split("/")[5].match(/\d+/gim) > 1 ? utils.getBaseText($("div.anime-nome > a, #pageTitle").first()) + " season " + url.split("/")[5].match(/\d+/gim) : utils.getBaseText($("div.anime-nome > a, #pageTitle").first());
                },
                getIdentifier: function(url) {
                    return url.split("/")[4] + "?s=" + url.split("/")[5].match(/\d+/gim);
                },
                getOverviewUrl: function(url) {
                    return animestrue.domain + "/anime/" + url.split("/")[4] + "/" + url.split("/")[5];
                },
                getEpisode: function(url) {
                    return url.split("/")[6].match(/\d+/gim);
                },
                nextEpUrl: function(url) {
                    var nextEp = j.$("ul.episodios > li.active").next().find("div > a").attr("href");
                    if (nextEp) return utils.absoluteLink(nextEp, animestrue.domain);
                }
            },
            overview: {
                getTitle: function(url) {
                    return animestrue.sync.getTitle(url);
                },
                getIdentifier: function(url) {
                    return animestrue.sync.getIdentifier(url);
                },
                uiSelector: function(selector) {
                    selector.insertBefore(j.$("#pageTitle").first());
                },
                list: {
                    offsetHandler: !1,
                    elementsSelector: function() {
                        return j.$("#listar_animes > li > div > div > table > tbody > tr");
                    },
                    elementUrl: function(selector) {
                        return utils.absoluteLink(selector.find("td > a").first().attr("href"), animestrue.domain);
                    },
                    elementEp: function(selector) {
                        return animestrue.sync.getEpisode(utils.absoluteLink(selector.find("td > a").first().attr("href"), animestrue.domain));
                    }
                }
            },
            init(page) {
                if ("Just a moment..." == document.title) return con.log("loading"), void page.cdn();
                api.storage.addStyle(__webpack_require__(313).toString()), j.$(document).ready((function() {
                    page.handlePage();
                }));
            }
        };
    }).call(this, __webpack_require__(2), __webpack_require__(3), __webpack_require__(1), __webpack_require__(0));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, api, con) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return anilistClass;
        }));
        var _provider_AniList_helper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8), _pages_pages__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10), _provider_AniList_entryClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21), _provider_AniList_list__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(25), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class anilistClass {
            constructor(url) {
                this.url = url, this.page = null, this.tempAnimelist = null, this.tempMangalist = null;
                var first = !0;
                utils.changeDetect(() => {
                    this.url = window.location.href, this.init();
                }, () => {
                    if (!first) {
                        if (null !== this.page && "bookmarks" == this.page.page && $(".lists").length) return $(".lists").first().height();
                        var ogUrl = $('meta[property="og:url"]').attr("content");
                        return void 0 !== ogUrl && ogUrl.split("/").length > 4 ? ogUrl.split("/").slice(0, 6).join("/") : ogUrl = window.location.href;
                    }
                    first = !1;
                }), this.url.indexOf("access_token=") > -1 && this.init(), api.storage.addStyle(__webpack_require__(315).toString());
            }
            init() {
                this.url.indexOf("access_token=") > -1 && this.authentication();
                var urlpart = utils.urlPart(this.url, 3);
                "anime" != urlpart && "manga" != urlpart || (this.page = {
                    page: "detail",
                    id: utils.urlPart(this.url, 4),
                    malid: NaN,
                    type: urlpart
                }, this.siteSearch(), this.streamingUI(), _provider_AniList_helper__WEBPACK_IMPORTED_MODULE_0__.b(this.page.id, this.page.type).then(malid => {
                    this.page.malid = malid, con.log("page", this.page), this.malToKiss();
                }));
                var urlpart4 = utils.urlPart(this.url, 5);
                "animelist" != urlpart4 && "mangalist" != urlpart4 || (this.page = {
                    page: "bookmarks",
                    type: urlpart4.substring(0, 5)
                }, this.bookmarks());
            }
            authentication() {
                try {
                    utils.checkDoubleExecution();
                } catch (e) {
                    con.error(e);
                }
                var tokens = /access_token=[^&]+/gi.exec(this.url);
                if (null != tokens && void 0 !== tokens[0] && tokens[0]) {
                    var token = tokens[0].toString().replace(/access_token=/gi, "");
                    con.log("Token Found", token), api.settings.set("anilistToken", token).then(() => {
                        $(document).ready((function() {
                            $(".page-content .container").html('\n            <div style="text-align: center; margin-top: 50px; background-color: white; border: 1px solid lightgrey; padding: 10px;">\n              <h1>MAL-Sync</h1>\n              <br>\n              ' + api.storage.lang("anilistClass_authentication") + "\n            </div>\n          ");
                        }));
                    });
                }
            }
            getMalUrl() {
                return __awaiter(this, void 0, void 0, (function*() {
                    var urlpart = utils.urlPart(this.url, 3);
                    if ("anime" == urlpart || "manga" == urlpart) {
                        var aniListId = utils.urlPart(this.url, 4);
                        return _provider_AniList_helper__WEBPACK_IMPORTED_MODULE_0__.b(aniListId, urlpart).then(malId => malId ? "https://myanimelist.net/" + urlpart + "/" + malId + "/" + utils.urlPart(this.url, 5) : "");
                    }
                    return "";
                }));
            }
            malToKiss() {
                con.log("malToKiss"), $(".mal_links").remove(), utils.getMalToKissArray(this.page.type, this.page.malid).then(links => {
                    var html = "";
                    for (var pageKey in links) {
                        var page = links[pageKey], tempHtml = "", tempUrl = "";
                        for (var streamKey in page) {
                            var stream = page[streamKey];
                            tempHtml += `\n          <div class="mal_links" style="margin-top: 5px;">\n            <a target="_blank" href="${stream.url}">\n              ${stream.title}\n            </a>\n          </div>`, 
                            tempUrl = stream.url;
                        }
                        html += `\n          <div id="${pageKey}Links" class="mal_links" style="\n            background: rgb(var(--color-foreground));\n            border-radius: 3px;\n            display: block;\n            padding: 8px 12px;\n            width: 100%;\n            margin-bottom: 16px;\n            font-size: 1.2rem;\n\n          ">\n            <img src="${utils.favicon(tempUrl.split("/")[2])}">\n            <span style="font-weight: 500; line-height: 16px; vertical-align: middle;">${pageKey}</span>\n            <span title="${pageKey}" class="remove-mal-sync" style="float: right; cursor: pointer;">x</span>\n            ${tempHtml}\n          </div>`;
                    }
                    $(document).ready((function() {
                        $(".mal_links").remove(), $(".sidebar .data").before(html), $(".remove-mal-sync").click((function() {
                            var key = $(this).attr("title");
                            api.settings.set(key, !1), location.reload();
                        }));
                    }));
                });
            }
            siteSearch() {
                if (api.settings.get("SiteSearch")) {
                    var This = this;
                    $(document).ready((function() {
                        con.log("Site Search"), $("#mal-sync-search-links").remove(), $(".sidebar .data").before('\n        <div id="mal-sync-search-links" style="\n            background: rgb(var(--color-foreground));\n            border-radius: 3px;\n            display: block;\n            padding: 8px 12px;\n            width: 100%;\n            margin-bottom: 16px;\n            font-size: 1.2rem;\n        ">\n          <span style="font-weight: 500; line-height: 16px; vertical-align: middle;">' + api.storage.lang("Search") + '</span>\n          <div class="MALSync-search"><a>[' + api.storage.lang("Show") + ']</a></div><br class="mal_links" />\n        </div>\n      '), 
                        api.storage.addStyle("#AniList.mal_links img{background-color: #898989;}"), $(".MALSync-search").one("click", () => {
                            var title = $('meta[property="og:title"]').attr("content"), titleEncoded = encodeURI(title), html = "", imgStyle = "position: relative; top: 0px;";
                            for (var key in _pages_pages__WEBPACK_IMPORTED_MODULE_1__.a) {
                                var page = _pages_pages__WEBPACK_IMPORTED_MODULE_1__.a[key];
                                if (page.type === This.page.type) {
                                    var linkContent = `<img style="${imgStyle}" src="${utils.favicon(page.domain)}"> ${page.name}`;
                                    if (void 0 === page.completeSearchTag) var link = `<a target="_blank" href="${page.searchUrl(titleEncoded)}">\n              ${linkContent}\n            </a>`; else link = page.completeSearchTag(title, linkContent);
                                    var googleSeach = "";
                                    void 0 !== page.googleSearchDomain && (googleSeach = `<a target="_blank" href="https://www.google.com/search?q=${titleEncoded}+site:${page.googleSearchDomain}">\n              <img style="${imgStyle}" src="${utils.favicon("google.com")}">\n            </a>`), 
                                    html += `<div class="mal_links" id="${key}" style="padding: 1px 0;">\n              ${link}\n              ${googleSeach}\n          </div>`;
                                }
                            }
                            $(".MALSync-search").html(html);
                        });
                    }));
                }
            }
            streamingUI() {
                return __awaiter(this, void 0, void 0, (function*() {
                    con.log("Streaming UI"), $("#mal-sync-stream-div").remove();
                    var malObj = new _provider_AniList_entryClass__WEBPACK_IMPORTED_MODULE_2__.a(this.url);
                    yield malObj.init();
                    var streamUrl = malObj.getStreamingUrl();
                    void 0 !== streamUrl && $(document).ready((function() {
                        return __awaiter(this, void 0, void 0, (function*() {
                            $("#mal-sync-stream-div").remove(), $("h1").first().append(`\n        <div class="data title progress" id="mal-sync-stream-div" style="margin-top: -2px; display: inline-block; position: relative; top: 2px;">\n          <a class="mal-sync-stream" title="${streamUrl.split("/")[2]}" target="_blank" style="margin: 0 0;" href="${streamUrl}">\n            <img src="${utils.favicon(streamUrl.split("/")[2])}">\n          </a>\n        </div>`);
                            var resumeUrlObj = yield malObj.getResumeWaching(), continueUrlObj = yield malObj.getContinueWaching();
                            con.log("Resume", resumeUrlObj, "Continue", continueUrlObj), void 0 !== continueUrlObj && continueUrlObj.ep === malObj.getEpisode() + 1 ? $("#mal-sync-stream-div").append(`<a class="nextStream" title="${api.storage.lang("overview_Continue_" + malObj.type)}" target="_blank" style="margin: 0 5px 0 0; color: #BABABA;" href="${continueUrlObj.url}">\n              <img src="${api.storage.assetUrl("double-arrow-16px.png")}" width="16" height="16">\n            </a>`) : void 0 !== resumeUrlObj && resumeUrlObj.ep === malObj.getEpisode() && $("#mal-sync-stream-div").append(`<a class="resumeStream" title="${api.storage.lang("overview_Resume_Episode_" + malObj.type)}" target="_blank" style="margin: 0 5px 0 0; color: #BABABA;" href="${resumeUrlObj.url}">\n              <img src="${api.storage.assetUrl("arrow-16px.png")}" width="16" height="16">\n            </a>`);
                        }));
                    }));
                }));
            }
            bookmarks() {
                var This = this;
                $(document).ready(() => {
                    if ($(".list-entries .entry, .list-entries .entry-card").not(".malSyncDone").each((index, el) => {
                        $(el).addClass("malSyncDone");
                        var streamUrl = utils.getUrlFromTags($(el).find(".notes").first().attr("label"));
                        if (void 0 !== streamUrl) {
                            con.log(streamUrl), $(el).find(".title a").first().after(`\n            <a class="mal-sync-stream mal-rem" title="${streamUrl.split("/")[2]}" target="_blank" style="margin: 0 0; max-height: 14px;" href="${streamUrl}">\n              <img src="${utils.favicon(streamUrl.split("/")[2])}">\n            </a>`);
                            var label = $(el).find(".notes").first().attr("label");
                            void 0 !== label && ("" === (label = label.replace(/(malSync|last)::[\d\D]+::/, "").replace(/#,/, "")).trim() || "," === label.trim() ? $(el).find(".notes").first().css("visibility", "hidden") : $(el).find(".notes").first().attr("label", label));
                        }
                    }), "anime" == this.page.type) {
                        if (null != this.tempAnimelist) return void fullListCallback(this.tempAnimelist);
                    } else if (null != this.tempMangalist) return void fullListCallback(this.tempMangalist);
                    var listProvider = new _provider_AniList_list__WEBPACK_IMPORTED_MODULE_3__.a(1, this.page.type);
                    function fullListCallback(list) {
                        con.log(list), $.each(list, (index, en) => __awaiter(this, void 0, void 0, (function*() {
                            if (con.log("en", en), void 0 !== en.malid && null !== en.malid && en.malid) {
                                var element = $('.entry:not(.malSyncDone2) a[href^="/' + This.page.type + "/" + en.id + '/"], .entry-card:not(.malSyncDone2) a[href^="/' + This.page.type + "/" + en.id + '/"]').first().parent();
                                con.log(element), element.parent().addClass("malSyncDone2");
                                var resumeUrlObj = yield utils.getResumeWaching(This.page.type, en.cacheKey), continueUrlObj = yield utils.getContinueWaching(This.page.type, en.cacheKey), curEp = en.watchedEp;
                                con.log("Resume", resumeUrlObj, "Continue", continueUrlObj), void 0 !== continueUrlObj && continueUrlObj.ep === curEp + 1 ? element.prepend(`<a class="nextStream mal-rem" title="Continue watching" target="_blank" style="margin: -2px 5px 0 0; color: #BABABA;" href="${continueUrlObj.url}">\n                  <img src="${api.storage.assetUrl("double-arrow-16px.png")}" width="16" height="16">\n                </a>`) : void 0 !== resumeUrlObj && resumeUrlObj.ep === curEp && element.prepend(`<a class="resumeStream mal-rem" title="Resume watching" target="_blank" style="margin: -2px 5px 0 0; color: #BABABA;" href="${resumeUrlObj.url}">\n                  <img src="${api.storage.assetUrl("arrow-16px.png")}" width="16" height="16">\n                </a>`), 
                                utils.epPredictionUI(en.malid, en.cacheKey, This.page.type, prediction => {
                                    prediction && element.parent().find(".progress").append(prediction.tag);
                                });
                            }
                        })));
                    }
                    listProvider.compact = !0, listProvider.get().then(list => {
                        "anime" == this.page.type ? this.tempAnimelist = list : this.tempMangalist = list, 
                        fullListCallback(list);
                    }).catch(e => {
                        con.error(e), listProvider.flashmError(e);
                    });
                });
            }
        }
    }).call(this, __webpack_require__(2), __webpack_require__(0), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, api, con) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return kitsuClass;
        }));
        var _pages_pages__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10), _provider_Kitsu_entryClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22), _provider_Kitsu_list__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(26), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class kitsuClass {
            constructor(url) {
                this.url = url, this.page = null, this.same = !1, this.tempAnimelist = null, this.tempMangalist = null;
                var oldUrl = window.location.href.split("/").slice(0, 5).join("/");
                utils.changeDetect(() => {
                    if (this.same = !1, null !== this.page && "detail" == this.page.page) {
                        var tempUrl = window.location.href.split("/").slice(0, 5).join("/");
                        tempUrl === oldUrl && (this.same = !0), oldUrl = tempUrl;
                    }
                    this.url = window.location.href, this.init();
                }, () => null !== this.page && "bookmarks" == this.page.page && $(".library-content").length ? $(".library-content").first().height() : window.location.href), 
                $(document).ready(() => {
                    utils.waitUntilTrue((function() {
                        return $(".global-container").length;
                    }), () => {
                        this.init();
                    });
                }), api.storage.addStyle(__webpack_require__(317).toString());
            }
            init() {
                return __awaiter(this, void 0, void 0, (function*() {
                    this.url.indexOf("?mal-sync=authentication") > -1 && this.authentication();
                    var urlpart = utils.urlPart(this.url, 3);
                    if ("anime" == urlpart || "manga" == urlpart) {
                        if (this.same && void 0 !== this.page && "undefined" !== this.page.malObj) return this.streamingUI(), 
                        this.siteSearch(), void this.malToKiss();
                        var malObj = new _provider_Kitsu_entryClass__WEBPACK_IMPORTED_MODULE_1__.a(this.url);
                        yield malObj.init(), this.page = {
                            page: "detail",
                            id: malObj.kitsuId,
                            malid: malObj.id,
                            type: urlpart,
                            malObj: malObj
                        }, con.log("page", this.page), this.streamingUI(), this.siteSearch(), this.malToKiss();
                    }
                    if ("library" == utils.urlPart(this.url, 5)) {
                        var type = "anime";
                        "manga" == utils.urlParam(this.url, "media") && (type = "manga"), this.page = {
                            page: "bookmarks",
                            type: type
                        }, con.log("page", this.page), this.bookmarks();
                    }
                }));
            }
            authentication() {
                try {
                    utils.checkDoubleExecution();
                } catch (e) {
                    con.error(e);
                }
                $(document).ready((function() {
                    $("body").after('\n        <div id="mal-sync-login" style="text-align: center; margin-top: 50px; background-color: white; border: 1px solid lightgrey; padding: 10px; max-width: 600px; margin-left: auto; margin-right: auto;">\n          <h1>MAL-Sync</h1>\n          <br>\n          <p style="text-align: left;">\n            ' + api.storage.lang("kitsuClass_authentication_text") + '\n          </p>\n          <div class="modal-content">\n            <input type="email" id="email" placeholder="Email" required>\n            <input type="password" id="pass" name="password" placeholder="' + api.storage.lang("kitsuClass_authentication_Password") + '" required>\n          </div>\n          <div class="form-cta" style="margin-top: 30px;">\n            <button class="btn button--primary" type="submit" id="mal-sync-button">\n              ' + api.storage.lang("kitsuClass_authentication_Login") + "\n            </button>\n          </div>\n        </div>\n      "), 
                    $("#mal-sync-login #mal-sync-button").click((function() {
                        $("#mal-sync-login #mal-sync-button").attr("disabled", "disabled"), $.ajax({
                            type: "POST",
                            url: "https://kitsu.io/api/oauth/token",
                            data: "grant_type=password&username=" + encodeURIComponent($("#mal-sync-login #email").val()) + "&password=" + encodeURIComponent($("#mal-sync-login #pass").val()),
                            success: function(result) {
                                var token = result.access_token;
                                con.info("token", token), api.settings.set("kitsuToken", token).then(() => {
                                    $("#mal-sync-login").html("<h1>MAL-Sync</h1><br>" + api.storage.lang("kitsuClass_authentication_Success"));
                                });
                            },
                            error: function(result) {
                                try {
                                    if (con.error(result), $("#mal-sync-login #mal-sync-button").prop("disabled", !1), 
                                    "invalid_grant" == result.responseJSON.error) return void utils.flashm(api.storage.lang("kitsuClass_authentication_Wrong"));
                                    utils.flashm(result.responseJSON.error_description);
                                } catch (e) {
                                    con.error(e), utils.flashm(result.responseText);
                                }
                            }
                        });
                    })), utils.waitUntilTrue((function() {
                        return $("body h1").length;
                    }), () => {
                        $("body h1").remove();
                    });
                }));
            }
            getMalUrl() {
                return __awaiter(this, void 0, void 0, (function*() {
                    return null !== this.page && "detail" == this.page.page && this.page.malid ? "https://myanimelist.net/" + this.page.type + "/" + this.page.malid + "/" + utils.urlPart(this.url, 5) : "";
                }));
            }
            streamingUI() {
                return __awaiter(this, void 0, void 0, (function*() {
                    con.log("Streaming UI"), $("#mal-sync-stream-div").remove();
                    var malObj = this.page.malObj, streamUrl = malObj.getStreamingUrl();
                    void 0 !== streamUrl && $(document).ready((function() {
                        return __awaiter(this, void 0, void 0, (function*() {
                            $(".media--title h3").first().after(`\n        <div class="data title progress" id="mal-sync-stream-div" style="display: inline-block; position: relative; top: -4px; display: inline;">\n          <a class="mal-sync-stream" title="${streamUrl.split("/")[2]}" target="_blank" style="margin: 0 0;" href="${streamUrl}">\n            <img src="${utils.favicon(streamUrl.split("/")[2])}">\n          </a>\n        </div>`);
                            var resumeUrlObj = yield malObj.getResumeWaching(), continueUrlObj = yield malObj.getContinueWaching();
                            con.log("Resume", resumeUrlObj, "Continue", continueUrlObj), void 0 !== continueUrlObj && continueUrlObj.ep === malObj.getEpisode() + 1 ? $("#mal-sync-stream-div").append(`<a class="nextStream" title="${api.storage.lang("overview_Continue_" + malObj.type)}" target="_blank" style="margin: 0 5px 0 0; color: #BABABA;" href="${continueUrlObj.url}">\n              <img src="${api.storage.assetUrl("double-arrow-16px.png")}" width="16" height="16">\n            </a>`) : void 0 !== resumeUrlObj && resumeUrlObj.ep === malObj.getEpisode() && $("#mal-sync-stream-div").append(`<a class="resumeStream" title="${api.storage.lang("overview_Resume_Episode_" + malObj.type)}" target="_blank" style="margin: 0 5px 0 0; color: #BABABA;" href="${resumeUrlObj.url}">\n              <img src="${api.storage.assetUrl("arrow-16px.png")}" width="16" height="16">\n            </a>`);
                        }));
                    }));
                }));
            }
            malToKiss() {
                con.log("malToKiss"), $(".mal_links").remove(), utils.getMalToKissArray(this.page.type, this.page.malid).then(links => {
                    var html = "";
                    for (var pageKey in links) {
                        var page = links[pageKey], tempHtml = "", tempUrl = "";
                        for (var streamKey in page) {
                            var stream = page[streamKey];
                            tempHtml += `\n          <div class="mal_links" style="margin-top: 5px;">\n            <a target="_blank" href="${stream.url}">\n              ${stream.title}\n            </a>\n          </div>`, 
                            tempUrl = stream.url;
                        }
                        html += `\n          <div id="${pageKey}Links" class="mal_links library-state with-header" style="\n            background: white;\n            margin-bottom: 15px;\n            border-radius: 3px;\n            display: block;\n            padding: 8px 12px;\n            width: 100%;\n            font-size: 12px;\n\n          ">\n            <img src="${utils.favicon(tempUrl.split("/")[2])}">\n            <span style="font-weight: 500; line-height: 16px; vertical-align: middle;">${pageKey}</span>\n            <span title="${pageKey}" class="remove-mal-sync" style="float: right; cursor: pointer;">x</span>\n            ${tempHtml}\n          </div>`;
                    }
                    $(document).ready((function() {
                        $("#mal-sync-search-links").length ? $("#mal-sync-search-links").first().after(html) : $(".media-summary").first().after(html), 
                        $(".remove-mal-sync").click((function() {
                            var key = $(this).attr("title");
                            api.settings.set(key, !1), location.reload();
                        }));
                    }));
                });
            }
            siteSearch() {
                if (api.settings.get("SiteSearch")) {
                    var This = this;
                    $(document).ready((function() {
                        con.log("Site Search"), $("#mal-sync-search-links").remove(), $(".media-summary").first().after('\n        <div id="mal-sync-search-links" style="\n            background: white;\n            margin-bottom: 15px;\n            border-radius: 3px;\n            display: block;\n            padding: 8px 12px;\n            width: 100%;\n            font-size: 12px;\n        " class="library-state with-header">\n          <span style="font-weight: 500; line-height: 16px; vertical-align: middle;">' + api.storage.lang("Search") + '</span>\n          <div class="MALSync-search"><a>[' + api.storage.lang("Show") + "]</a></div>\n        </div>\n      "), 
                        api.storage.addStyle("#AniList.mal_links img{background-color: #898989;}"), $(".MALSync-search").one("click", () => {
                            var title = $('meta[property="og:title"]').attr("content"), titleEncoded = encodeURI(title), html = "", imgStyle = "position: relative; top: 0px;";
                            for (var key in _pages_pages__WEBPACK_IMPORTED_MODULE_0__.a) {
                                var page = _pages_pages__WEBPACK_IMPORTED_MODULE_0__.a[key];
                                if (page.type === This.page.type) {
                                    var linkContent = `<img style="${imgStyle}" src="${utils.favicon(page.domain)}"> ${page.name}`;
                                    if (void 0 === page.completeSearchTag) var link = `<a target="_blank" href="${page.searchUrl(titleEncoded)}">\n              ${linkContent}\n            </a>`; else link = page.completeSearchTag(title, linkContent);
                                    var googleSeach = "";
                                    void 0 !== page.googleSearchDomain && (googleSeach = `<a target="_blank" href="https://www.google.com/search?q=${titleEncoded}+site:${page.googleSearchDomain}">\n              <img style="${imgStyle}" src="${utils.favicon("google.com")}">\n            </a>`), 
                                    html += `<div class="mal_links" id="${key}" style="padding: 1px 0;">\n              ${link}\n              ${googleSeach}\n          </div>`;
                                }
                            }
                            $(".MALSync-search").html(html);
                        });
                    }));
                }
            }
            bookmarks() {
                var This = this;
                $(document).ready(() => {
                    if ("anime" == this.page.type) {
                        if (null != this.tempAnimelist) return void fullListCallback(this.tempAnimelist);
                    } else if (null != this.tempMangalist) return void fullListCallback(this.tempMangalist);
                    var listProvider = new _provider_Kitsu_list__WEBPACK_IMPORTED_MODULE_2__.a(1, this.page.type);
                    function fullListCallback(list) {
                        var cover = !0;
                        $(".library-list tbody tr").length && (cover = !1), con.log(list), $.each(list, (index, en) => __awaiter(this, void 0, void 0, (function*() {
                            if (con.log("en", en), void 0 !== en.malId && null !== en.malId && en.malId) {
                                var element = $('.library-grid-popover:not(.malSyncDone2) a[href^="/' + This.page.type + "/" + en.kitsuSlug + '"], .library-list tbody tr:not(.malSyncDone2) a[href^="/' + This.page.type + "/" + en.kitsuSlug + '"]').first().parent().parent().parent();
                                con.log(element), element.addClass("malSyncDone2");
                                var streamUrl = utils.getUrlFromTags(en.tags);
                                void 0 !== streamUrl && (con.log(streamUrl), cover ? element.prepend(`\n                  <a class="mal-sync-stream mal-rem" title="${streamUrl.split("/")[2]}" target="_blank" style="margin: 0 0; z-index: 22; position:absolute; left: 0px; top: 0px; background-color: #ffffff5c; padding: 0 5px 3px 5px;" href="${streamUrl}">\n                    <img src="${utils.favicon(streamUrl.split("/")[2])}">\n                  </a>`) : element.find(".title-wrapper").append(`\n                  <a class="mal-sync-stream mal-rem" title="${streamUrl.split("/")[2]}" target="_blank" style="padding: 0 5px;" href="${streamUrl}">\n                    <img src="${utils.favicon(streamUrl.split("/")[2])}">\n                  </a>`));
                                var resumeUrlObj = yield utils.getResumeWaching(This.page.type, en.cacheKey), continueUrlObj = yield utils.getContinueWaching(This.page.type, en.cacheKey), curEp = en.watchedEp;
                                con.log("Resume", resumeUrlObj, "Continue", continueUrlObj), void 0 !== continueUrlObj && continueUrlObj.ep === curEp + 1 ? cover ? element.prepend(`<a class="nextStream mal-rem" title="Continue watching" target="_blank" style="color: #BABABA; z-index: 22; position:absolute; top: 0px; left: 26px; background-color: #ffffff5c; padding: 0 5px 3px 5px;" href="${continueUrlObj.url}">\n                    <img src="${api.storage.assetUrl("double-arrow-16px.png")}" width="16" height="16">\n                  </a>`) : element.find(".title-wrapper").append(`<a class="nextStream mal-rem" title="Continue watching" target="_blank" style="padding: 0;" href="${continueUrlObj.url}">\n                    <img src="${api.storage.assetUrl("double-arrow-16px.png")}" width="16" height="16">\n                  </a>`) : void 0 !== resumeUrlObj && resumeUrlObj.ep === curEp && (cover ? element.prepend(`<a class="resumeStream mal-rem" title="Resume watching" target="_blank" style="color: #BABABA; z-index: 22; position:absolute; top: 0px; left: 26px; background-color: #ffffff5c; padding: 0 5px 3px 5px;" href="${resumeUrlObj.url}">\n                    <img src="${api.storage.assetUrl("arrow-16px.png")}" width="16" height="16">\n                  </a>`) : element.find(".title-wrapper").append(`<a class="resumeStream mal-rem" title="Resume watching" target="_blank" style="padding: 0;" href="${resumeUrlObj.url}">\n                    <img src="${api.storage.assetUrl("arrow-16px.png")}" width="16" height="16">\n                  </a>`)), 
                                utils.epPredictionUI(en.malId, en.cacheKey, This.page.type, prediction => {
                                    prediction && element.parent().find(".entry-unit, .progress-cell > span:last-of-type").append(prediction.tag);
                                });
                            }
                        })));
                    }
                    listProvider.get().then(list => {
                        "anime" == this.page.type ? this.tempAnimelist = list : this.tempMangalist = list, 
                        fullListCallback(list);
                    }).catch(e => {
                        con.error(e), listProvider.flashmError(e);
                    });
                });
            }
        }
    }).call(this, __webpack_require__(2), __webpack_require__(0), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(utils, api, con) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return simklClass;
        }));
        var _provider_Simkl_entryClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23), _provider_Simkl_list__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16), _pages_pages__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10), _provider_Simkl_helper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7), vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17), _malkiss_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(167), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        class simklClass {
            constructor(url) {
                this.url = url, this.page = null, utils.urlChangeDetect(() => {
                    clearInterval(this.interval), this.interval = utils.waitUntilTrue((function() {
                        return !($("#global_div").length && 1 !== parseInt($("#global_div").css("opacity")) || $("#tvMainTable").length && 1 !== parseInt($("#tvMainTable").css("opacity")));
                    }), () => {
                        this.url = window.location.href, this.init();
                    }, 1e3);
                }), api.storage.addStyle(__webpack_require__(321).toString()), $(document).ready(() => {
                    this.init();
                });
            }
            init() {
                return __awaiter(this, void 0, void 0, (function*() {
                    con.log(this.url), clearInterval(this.interval2), this.url.indexOf("apps/chrome/mal-sync") > -1 && this.authentication();
                    var urlpart = utils.urlPart(this.url, 3), url2part = utils.urlPart(this.url, 4);
                    if (("anime" == urlpart || "manga" == urlpart) && !isNaN(url2part)) {
                        var malObj = new _provider_Simkl_entryClass__WEBPACK_IMPORTED_MODULE_0__.a(this.url);
                        return yield malObj.init(), this.page = {
                            page: "detail",
                            id: malObj.simklId,
                            malid: malObj.id,
                            type: urlpart,
                            malObj: malObj
                        }, con.log("page", this.page), $("#malkiss").length || $(".SimklTVAboutBlockTitle, .simkltvdetailmobilesummaryinfo").after('<div id="malkiss"></div>'), 
                        this.malkiss && this.malkiss.$destroy(), this.malkiss = new vue__WEBPACK_IMPORTED_MODULE_4__.a({
                            el: "#malkiss",
                            render: h => h(_malkiss_vue__WEBPACK_IMPORTED_MODULE_5__.a)
                        }).$children[0], this.streamingUI(), this.malToKiss(), void this.siteSearch();
                    }
                    ("anime" != urlpart && "manga" != urlpart || "all" !== url2part || (this.page = {
                        page: "bookmarks",
                        type: urlpart
                    }, this.bookmarksAnime()), "anime" == url2part || "manga" == url2part) && ("watching" === utils.urlPart(this.url, 5) && (this.page = {
                        page: "bookmarks",
                        type: url2part
                    }, this.bookmarksProfile()));
                }));
            }
            getMalUrl() {
                return __awaiter(this, void 0, void 0, (function*() {
                    var urlpart = utils.urlPart(this.url, 3);
                    if ("anime" == urlpart || "manga" == urlpart) {
                        var simklId = utils.urlPart(this.url, 4);
                        return _provider_Simkl_helper__WEBPACK_IMPORTED_MODULE_3__.f(simklId).then(malId => malId ? "https://myanimelist.net/" + urlpart + "/" + malId + "/" + utils.urlPart(this.url, 5) : "");
                    }
                    return "";
                }));
            }
            authentication() {
                try {
                    utils.checkDoubleExecution();
                } catch (e) {
                    con.error(e);
                }
                try {
                    var code = utils.urlParam(this.url, "code");
                    if (!code) throw "No code found!";
                    _provider_Simkl_helper__WEBPACK_IMPORTED_MODULE_3__.a("https://api.simkl.com/oauth/token", JSON.stringify({
                        code: code,
                        client_id: _provider_Simkl_helper__WEBPACK_IMPORTED_MODULE_3__.b,
                        client_secret: "3f883e8e6cdd60d2d5e765aaf0612953f743dc77f44c422af98b38e083cf038b",
                        redirect_uri: "https://simkl.com/apps/chrome/mal-sync/connected/",
                        grant_type: "authorization_code"
                    }), !1, "POST").then(access_token => {
                        if (void 0 !== access_token.error || void 0 === access_token.access_token) throw access_token;
                        return api.settings.set("simklToken", access_token.access_token);
                    }).then(access_token => {
                        $(".firstStage").addClass("HideImportant"), $(".secondStage").removeClass("HideImportant"), 
                        $(".secondStage .SimklTVKodiheaddesc").css("text-align", "center");
                    }).catch(e => {
                        ee(e);
                    });
                } catch (e) {
                    ee(e);
                }
                function ee(e) {
                    con.error(e), $(".firstStage .SimklTVKodititletext, .secondStage .SimklTVKodititletext").text("Something went wrong");
                }
            }
            streamingUI() {
                return __awaiter(this, void 0, void 0, (function*() {
                    con.log("Streaming UI");
                    var malObj = this.page.malObj, streamUrl = malObj.getStreamingUrl();
                    if (void 0 !== streamUrl) {
                        this.malkiss.streamUrl = streamUrl;
                        var resumeUrlObj = yield malObj.getResumeWaching(), continueUrlObj = yield malObj.getContinueWaching();
                        con.log("Resume", resumeUrlObj, "Continue", continueUrlObj), void 0 !== continueUrlObj && continueUrlObj.ep === malObj.getEpisode() + 1 ? this.malkiss.continueUrl = continueUrlObj.url : void 0 !== resumeUrlObj && resumeUrlObj.ep === malObj.getEpisode() && (this.malkiss.resumeUrl = resumeUrlObj.url);
                    } else this.malkiss.streamUrl = null;
                }));
            }
            malToKiss() {
                con.log("malToKiss"), utils.getMalToKissArray(this.page.type, this.page.malid).then(links => {
                    this.malkiss.links = links;
                });
            }
            siteSearch() {
                if (api.settings.get("SiteSearch")) {
                    con.log("PageSearch");
                    var newSearch = [], title = $("h1").first().text().trim(), titleEncoded = encodeURI(title);
                    for (var key in _pages_pages__WEBPACK_IMPORTED_MODULE_2__.a) {
                        var page = _pages_pages__WEBPACK_IMPORTED_MODULE_2__.a[key];
                        if (page.type === this.page.type) {
                            var tempAdd = {
                                favicon: utils.favicon(page.domain),
                                name: page.name,
                                search: "",
                                googleSeach: ""
                            };
                            void 0 === page.completeSearchTag && (tempAdd.search = page.searchUrl(titleEncoded));
                            void 0 !== page.googleSearchDomain && (tempAdd.googleSeach = `https://www.google.com/search?q=${titleEncoded}+site:${page.googleSearchDomain}`), 
                            newSearch.push(tempAdd);
                        }
                    }
                    this.malkiss.pageSearch = newSearch;
                }
            }
            bookmarksProfile() {
                var listProvider = new _provider_Simkl_list__WEBPACK_IMPORTED_MODULE_1__.a(1, this.page.type);
                listProvider.get().then(list => {
                    $.each(list, (index, en) => __awaiter(this, void 0, void 0, (function*() {
                        con.log("en", en);
                        var element = $('a[href^="/' + this.page.type + "/" + en.uid + '"]');
                        if (element && !element.hasClass("malSyncDone2")) {
                            element.addClass("malSyncDone2");
                            var streamUrl = utils.getUrlFromTags(en.tags);
                            if (void 0 !== streamUrl) {
                                con.log(streamUrl), element.after(`\n            <a class="mal-sync-stream mal-rem" onclick="event.stopPropagation();" title="${streamUrl.split("/")[2]}" target="_blank" style="display: inline-block; height: 0; position: relative; top: -11px; margin-left: 5px;" href="${streamUrl}">\n              <img src="${utils.favicon(streamUrl.split("/")[2])}">\n            </a>`);
                                var resumeUrlObj = yield utils.getResumeWaching(this.page.type, en.cacheKey), continueUrlObj = yield utils.getContinueWaching(this.page.type, en.cacheKey), curEp = en.watchedEp;
                                con.log("Resume", resumeUrlObj, "Continue", continueUrlObj), void 0 !== continueUrlObj && continueUrlObj.ep === curEp + 1 ? element.parent().append(`<a class="nextStream mal-rem" onclick="event.stopPropagation();" title="Continue watching" target="_blank" style="display: inline-block; height: 0; position: relative; top: -11px; margin-left: 5px; color: #BABABA;" href="${continueUrlObj.url}">\n                <img src="${api.storage.assetUrl("double-arrow-16px.png")}" width="16" height="16">\n              </a>`) : void 0 !== resumeUrlObj && resumeUrlObj.ep === curEp && element.parent().append(`<a class="resumeStream mal-rem" onclick="event.stopPropagation();" title="Resume watching" target="_blank" style="display: inline-block; height: 0; position: relative; top: -11px; margin-left: 5px; color: #BABABA;" href="${resumeUrlObj.url}">\n                <img src="${api.storage.assetUrl("arrow-16px.png")}" width="16" height="16">\n              </a>`);
                            }
                        }
                    })));
                }).catch(e => {
                    con.error(e), listProvider.flashmError(e);
                });
            }
            bookmarksAnime() {
                var This = this, listProvider = new _provider_Simkl_list__WEBPACK_IMPORTED_MODULE_1__.a(1, this.page.type);
                listProvider.get().then(list => {
                    function exec() {
                        con.info("list"), $.each(list, (index, en) => __awaiter(this, void 0, void 0, (function*() {
                            var element = $("#c" + en.uid);
                            if (element && element.length && !element.hasClass("malSyncDone2")) {
                                element.addClass("malSyncDone2").css("position", "relative");
                                var streamUrl = utils.getUrlFromTags(en.tags);
                                if (void 0 !== streamUrl) {
                                    con.log(streamUrl), element.append(`\n              <a class="mal-sync-stream mal-rem" onclick="event.stopPropagation();" title="${streamUrl.split("/")[2]}" target="_blank" style="position: absolute; z-index: 10; right: 0; top: 0; background-color: #00000057; padding: 5px;" href="${streamUrl}">\n                <img src="${utils.favicon(streamUrl.split("/")[2])}">\n              </a>`);
                                    var resumeUrlObj = yield utils.getResumeWaching(This.page.type, en.cacheKey), continueUrlObj = yield utils.getContinueWaching(This.page.type, en.cacheKey), curEp = en.watchedEp;
                                    con.log("Resume", resumeUrlObj, "Continue", continueUrlObj), void 0 !== continueUrlObj && continueUrlObj.ep === curEp + 1 ? element.append(`<a class="nextStream mal-rem" onclick="event.stopPropagation();" title="Continue watching" target="_blank" style="position: absolute; z-index: 10; right: 0; top: 26px; background-color: #00000057; padding: 5px;" href="${continueUrlObj.url}">\n                  <img src="${api.storage.assetUrl("double-arrow-16px.png")}" width="16" height="16">\n                </a>`) : void 0 !== resumeUrlObj && resumeUrlObj.ep === curEp && element.append(`<a class="resumeStream mal-rem" onclick="event.stopPropagation();" title="Resume watching" target="_blank" style="position: absolute; z-index: 10; right: 0; top: 26px; background-color: #00000057; padding: 5px;" href="${resumeUrlObj.url}">\n                  <img src="${api.storage.assetUrl("arrow-16px.png")}" width="16" height="16">\n                </a>`);
                                }
                            }
                        })));
                    }
                    exec(), this.interval2 = utils.changeDetect(() => {
                        exec();
                    }, () => $("#tv_best_left_addContainer li").length + $("#tv_best_left_addContainer > div").height());
                }).catch(e => {
                    con.error(e), listProvider.flashmError(e);
                });
            }
        }
    }).call(this, __webpack_require__(2), __webpack_require__(0), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, con) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return scheduleUpdate;
        }));
        var __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        function scheduleUpdate() {
            return __awaiter(this, void 0, void 0, (function*() {
                yield function() {
                    return __awaiter(this, void 0, void 0, (function*() {
                        return api.request.xhr("GET", "https://myanimelist.net/anime/season/schedule").then(response => __awaiter(this, void 0, void 0, (function*() {
                            console.groupCollapsed("MyAnimeList Scheduler"), con.log("Recived");
                            var found = 0, parsed = $.parseHTML(response.responseText), se = ".js-seasonal-anime-list-key-";
                            se = se + "monday, " + se + "tuesday ," + se + "wednesday ," + se + "thursday ," + se + "friday ," + se + "saturday ," + se + "sunday";
                            var seasons = $(parsed).find(se).find(".seasonal-anime");
                            seasons.length && (yield function() {
                                return __awaiter(this, void 0, void 0, (function*() {
                                    var cacheArray = yield api.storage.list(), deleted = 0;
                                    $.each(cacheArray, (function(index, cache) {
                                        /^mal\/[^/]+\/(release|eps|aniSch)$/.test(index) && (api.storage.remove(index), 
                                        deleted++);
                                    })), con.log("Cache Cleared [" + deleted + "]");
                                }));
                            }()), seasons.each((function() {
                                if ($(this).find(".info .remain-time").text().match(/\w+\ \d+.\ \d+,\ \d+:\d+\ \(JST\)/i)) {
                                    var malId = $(this).find("a.link-title").attr("href").split("/")[4], jpdate = $(this).find(".info .remain-time").text().trim(), day = jpdate.split(" ")[1].replace(",", "").trim(), month = jpdate.split(" ")[0].trim();
                                    month = "JanFebMarAprMayJunJulAugSepOctNovDec".indexOf(month) / 3 + 1;
                                    var year = jpdate.split(" ")[2].replace(",", "").trim(), time = jpdate.split(" ")[3].trim(), minute = time.split(":")[1], timestamp = function(year, month, day, hour, minute, second) {
                                        return new Date(Date.UTC(year, month - 1, day, hour, minute, second)).getTime() - 324e5;
                                    }(year, month, day, time.split(":")[0], minute, 0);
                                    con.log(malId, timestamp), api.storage.set("mal/" + malId + "/release", timestamp);
                                    var episode = $(this).find(".eps a span").last().text();
                                    episode.match(/^\d+/) && api.storage.set("mal/" + malId + "/eps", parseInt(episode.match(/^\d+/)[0]));
                                }
                                found++;
                            })), con.log("Schedule updated (" + found + ")"), console.groupEnd();
                        })));
                    }));
                }(), yield function anilistScheduler(page = 0) {
                    return __awaiter(this, void 0, void 0, (function*() {
                        var variables = {
                            page: page
                        };
                        return api.request.xhr("POST", {
                            url: "https://graphql.anilist.co",
                            headers: {
                                "Content-Type": "application/json",
                                Accept: "application/json"
                            },
                            data: JSON.stringify({
                                query: "\n    query($page: Int){\n      Page(page: $page, perPage: 50){\n        pageInfo{\n          hasNextPage\n        }\n        media (type: ANIME, status: RELEASING) {\n          id\n          idMal\n          nextAiringEpisode{\n            episode\n            airingAt\n          }\n        }\n      }\n    }\n  ",
                                variables: variables
                            })
                        }).then(response => {
                            console.groupCollapsed("Anilist Scheduler " + page);
                            var res = JSON.parse(response.responseText);
                            if (void 0 !== res.errors) return con.log("Anilist api limit", res), void setTimeout((function() {
                                anilistScheduler(page);
                            }), 6e4);
                            if (void 0 === res.data.Page.media) throw "anilistScheduler empty";
                            return con.log(res.data.Page.pageInfo), res.data.Page.media.forEach((function(el) {
                                var malId = el.idMal;
                                if (malId && "null" !== malId && null != malId && null != el.nextAiringEpisode && el.nextAiringEpisode.episode > 1) {
                                    var elObj = {
                                        aniId: el.id,
                                        currentEp: el.nextAiringEpisode.episode - 1,
                                        nextEpTime: el.nextAiringEpisode.airingAt
                                    };
                                    con.log(elObj), api.storage.set("mal/" + malId + "/aniSch", elObj);
                                }
                            })), con.log(res), console.groupEnd(), res.data.Page.pageInfo.hasNextPage ? anilistScheduler(page + 1) : void 0;
                        });
                    }));
                }();
            }));
        }
    }).call(this, __webpack_require__(0), __webpack_require__(1));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    (function(api, j, con, utils) {
        __webpack_require__.d(__webpack_exports__, "a", (function() {
            return firebaseNotification;
        }));
        var __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        function firebaseNotification() {
            return __awaiter(this, void 0, void 0, (function*() {
                var schedule = yield api.storage.get("timestampUpdate/firebaseNotification");
                (void 0 === schedule || j.$.now() - schedule > 6e5) && (!function checkNotifications() {
                    con.log("checkNotifications");
                    api.request.xhr("GET", "https://kissanimelist.firebaseio.com/Data2/Notification/Current.json").then(response => __awaiter(this, void 0, void 0, (function*() {
                        var current = parseInt(JSON.parse(response.responseText));
                        if (isNaN(current)) con.error("Could not read current Notification number"); else {
                            con.log("Current Notification", current);
                            var last = parseInt(yield api.storage.get("firebaseNotification")), next = last + 1;
                            if (null == typeof last || isNaN(last)) return void api.storage.set("firebaseNotification", current);
                            if (current >= next) {
                                var notificationUrl = "https://kissanimelist.firebaseio.com/Data2/Notification/list/N" + next + ".json";
                                api.request.xhr("GET", notificationUrl).then(response => __awaiter(this, void 0, void 0, (function*() {
                                    var message = JSON.parse(response.responseText);
                                    "null" !== message && null !== message ? j.$(document).ready((function() {
                                        var flashm = utils.flashm('<div style="text-align: left;">' + message + '</div><button class="okChangelog" style="background-color: transparent; border: none; color: rgb(255,64,129);margin-top: 10px;cursor: pointer;">Close</button>', {
                                            permanent: !0,
                                            position: "top"
                                        });
                                        flashm.find(".okChangelog").click((function() {
                                            flashm.remove(), api.storage.set("firebaseNotification", next).then((function() {
                                                checkNotifications();
                                            }));
                                        }));
                                    })) : (con.info("Notification empty", response.responseText), api.storage.set("firebaseNotification", next).then((function() {
                                        checkNotifications();
                                    })));
                                })));
                            } else con.log("No new notifications");
                        }
                    })));
                }(), api.storage.set("timestampUpdate/firebaseNotification", j.$.now()));
            }));
        }
    }).call(this, __webpack_require__(0), __webpack_require__(3), __webpack_require__(1), __webpack_require__(2));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("div", {
            staticClass: "page-content"
        }, [ _c("div", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: !_vm.metaObj && !_vm.error,
                expression: "!metaObj && !error"
            } ],
            staticClass: "mdl-progress mdl-js-progress mdl-progress__indeterminate",
            staticStyle: {
                width: "100%",
                position: "absolute",
                top: "0"
            },
            attrs: {
                id: "loadOverview"
            }
        }), _vm._v(" "), _vm.error ? _c("span", {
            staticClass: "mdl-chip mdl-chip--deletable",
            staticStyle: {
                margin: "auto",
                "margin-top": "16px",
                display: "table"
            }
        }, [ _c("span", {
            staticClass: "mdl-chip__text"
        }, [ _vm._v("Error") ]), _vm._v(" "), _c("button", {
            staticClass: "mdl-chip__action",
            attrs: {
                type: "button"
            },
            on: {
                click: function($event) {
                    return _vm.clickRender();
                }
            }
        }, [ _c("i", {
            staticClass: "material-icons"
        }, [ _vm._v("refresh") ]) ]) ]) : _vm._e(), _vm._v(" "), _vm.metaObj ? _c("div", {
            staticClass: "mdl-grid"
        }, [ _c("div", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: _vm.statistics.length,
                expression: "statistics.length"
            } ],
            staticClass: "mdl-cell bg-cell mdl-cell--1-col mdl-cell--8-col-tablet mdl-cell--6-col-phone mdl-shadow--4dp stats-block malClear",
            staticStyle: {
                "min-width": "120px"
            }
        }, [ _c("ul", {
            staticClass: "mdl-list mdl-grid mdl-grid--no-spacing mdl-cell mdl-cell--12-col",
            staticStyle: {
                display: "flex",
                "justify-content": "space-around"
            }
        }, _vm._l(_vm.statistics, (function(stat) {
            return _c("li", {
                staticClass: "mdl-list__item mdl-list__item--two-line",
                staticStyle: {
                    padding: "0",
                    "padding-left": "10px",
                    "padding-right": "3px",
                    "min-width": "18%"
                }
            }, [ _c("span", {
                staticClass: "mdl-list__item-primary-content"
            }, [ _c("span", [ _vm._v("\n                " + _vm._s(stat.title) + "\n            ") ]), _vm._v(" "), _c("span", {
                staticClass: "mdl-list__item-sub-title",
                domProps: {
                    innerHTML: _vm._s(stat.body)
                }
            }) ]) ]);
        })), 0) ]), _vm._v(" "), _c("div", {
            staticClass: "mdl-grid mdl-cell bg-cell mdl-shadow--4dp coverinfo malClear",
            staticStyle: {
                display: "block",
                "flex-grow": "100",
                "min-width": "70%"
            }
        }, [ _c("div", {
            staticClass: "mdl-card__media mdl-cell mdl-cell--2-col",
            staticStyle: {
                "background-color": "transparent",
                float: "left",
                "padding-right": "16px"
            }
        }, [ _c("clazy-load", {
            staticClass: "malImage malClear",
            staticStyle: {
                width: "100%",
                height: "auto"
            },
            attrs: {
                src: _vm.image
            }
        }, [ _c("img", {
            staticStyle: {
                height: "auto",
                width: "100%"
            },
            attrs: {
                src: _vm.image
            }
        }) ]) ], 1), _vm._v(" "), _c("div", {
            staticClass: "mdl-cell mdl-cell--12-col"
        }, [ _c("a", {
            staticClass: "mdl-button mdl-button--icon mdl-js-button mdl-js-ripple-effect malClear malLink",
            staticStyle: {
                float: "right"
            },
            attrs: {
                href: _vm.displayUrl,
                target: "_blank"
            }
        }, [ _c("i", {
            staticClass: "material-icons"
        }, [ _vm._v("open_in_new") ]) ]), _vm._v(" "), _c("h1", {
            staticClass: "malTitle mdl-card__title-text malClear",
            staticStyle: {
                "padding-left": "0px",
                overflow: "visible"
            },
            domProps: {
                innerHTML: _vm._s(_vm.title)
            }
        }), _vm._v(" "), _c("div", {
            staticClass: "malAltTitle mdl-card__supporting-text malClear",
            staticStyle: {
                padding: "10px 0 0 0px",
                overflow: "visible"
            }
        }, _vm._l(_vm.altTitle, (function(altTitl) {
            return _c("div", {
                staticClass: "mdl-chip",
                staticStyle: {
                    "margin-right": "5px"
                }
            }, [ _c("span", {
                staticClass: "mdl-chip__text"
            }, [ _vm._v(_vm._s(altTitl)) ]) ]);
        })), 0) ]), _vm._v(" "), _c("div", {
            staticClass: "malDescription malClear mdl-cell mdl-cell--10-col",
            staticStyle: {
                overflow: "hidden"
            }
        }, [ _c("p", {
            staticStyle: {
                color: "black"
            },
            domProps: {
                innerHTML: _vm._s(_vm.description)
            }
        }), _vm._v(" "), _c("div", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: _vm.streaming,
                expression: "streaming"
            } ],
            staticClass: "mdl-card__actions mdl-card--border",
            staticStyle: {
                "padding-left": "0"
            },
            domProps: {
                innerHTML: _vm._s(_vm.streaming)
            }
        }) ]) ]), _vm._v(" "), _c("div", {
            staticClass: "mdl-cell bg-cell mdl-cell--4-col mdl-cell--8-col-tablet mdl-shadow--4dp data-block mdl-grid mdl-grid--no-spacing malClear"
        }, [ _vm.prediction && _vm.prediction.prediction.airing ? _c("li", {
            staticClass: "mdl-list__item",
            staticStyle: {
                width: "100%"
            }
        }, [ _vm._v(_vm._s(_vm.prediction.text)) ]) : _vm._e(), _vm._v(" "), _c("table", {
            attrs: {
                border: "0",
                cellpadding: "0",
                cellspacing: "0",
                width: "100%"
            }
        }, [ _c("tbody", [ _c("li", {
            staticClass: "mdl-list__item mdl-list__item--three-line",
            staticStyle: {
                width: "100%"
            }
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content"
        }, [ _c("span", [ _vm._v(_vm._s(_vm.lang("UI_Status")) + " ") ]), _vm._v(" "), _c("span", {
            staticClass: "mdl-list__item-text-body"
        }, [ _c("select", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.malStatus,
                expression: "malStatus"
            } ],
            staticClass: "inputtext js-anime-status-dropdown mdl-textfield__input",
            staticStyle: {
                outline: "none"
            },
            attrs: {
                disabled: !this.renderObj || !this.renderObj.login,
                name: "myinfo_status",
                id: "myinfo_status"
            },
            on: {
                change: function($event) {
                    var $$selectedVal = Array.prototype.filter.call($event.target.options, (function(o) {
                        return o.selected;
                    })).map((function(o) {
                        return "_value" in o ? o._value : o.value;
                    }));
                    _vm.malStatus = $event.target.multiple ? $$selectedVal : $$selectedVal[0];
                }
            }
        }, [ _c("option", {
            attrs: {
                selected: "selected",
                value: "1"
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Status_watching_" + _vm.renderObj.type))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "2"
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Status_Completed"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "3"
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Status_OnHold"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "4"
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Status_Dropped"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "6"
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Status_planTo_" + _vm.renderObj.type))) ]) ]) ]) ]) ]), _vm._v(" "), _c("li", {
            staticClass: "mdl-list__item mdl-list__item--three-line",
            staticStyle: {
                width: "100%"
            }
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content"
        }, [ _c("span", [ _vm._v(_vm._s(_vm.utils.episode(_vm.renderObj.type))) ]), _vm._v(" "), _c("span", {
            staticClass: "mdl-list__item-text-body"
        }, [ _c("input", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.malEpisode,
                expression: "malEpisode"
            } ],
            staticClass: "inputtext mdl-textfield__input",
            staticStyle: {
                width: "35px",
                display: "inline-block"
            },
            attrs: {
                disabled: !this.renderObj || !this.renderObj.login,
                type: "text",
                id: "myinfo_watchedeps",
                name: "myinfo_watchedeps",
                size: "3",
                value: "6"
            },
            domProps: {
                value: _vm.malEpisode
            },
            on: {
                input: function($event) {
                    $event.target.composing || (_vm.malEpisode = $event.target.value);
                }
            }
        }), _vm._v(" / "), _vm.prediction ? _c("span", {
            domProps: {
                innerHTML: _vm._s(_vm.prediction.tag)
            }
        }) : _vm._e(), _vm._v(" "), _vm.renderObj && _vm.renderObj.totalEp ? _c("span", {
            attrs: {
                id: "curEps"
            }
        }, [ _vm._v(_vm._s(_vm.renderObj.totalEp)) ]) : _c("span", [ _vm._v("?") ]) ]), _vm._v(" "), _vm._m(0) ]) ]), _vm._v(" "), _c("li", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: "manga" == _vm.renderObj.type,
                expression: "renderObj.type == 'manga'"
            } ],
            staticClass: "mdl-list__item mdl-list__item--three-line",
            staticStyle: {
                width: "100%"
            }
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content"
        }, [ _c("span", [ _vm._v(_vm._s(_vm.lang("UI_Volume"))) ]), _vm._v(" "), _c("span", {
            staticClass: "mdl-list__item-text-body"
        }, [ _c("input", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.malVolume,
                expression: "malVolume"
            } ],
            staticClass: "inputtext mdl-textfield__input",
            staticStyle: {
                width: "35px",
                display: "inline-block"
            },
            attrs: {
                disabled: !this.renderObj || !this.renderObj.login,
                type: "text",
                id: "myinfo_volumes",
                name: "myinfo_volumes",
                size: "3",
                value: "6"
            },
            domProps: {
                value: _vm.malVolume
            },
            on: {
                input: function($event) {
                    $event.target.composing || (_vm.malVolume = $event.target.value);
                }
            }
        }), _vm._v(" / "), _vm.renderObj && _vm.renderObj.totalVol ? _c("span", {
            attrs: {
                id: "curVolumes"
            }
        }, [ _vm._v(_vm._s(_vm.renderObj.totalVol)) ]) : _c("span", [ _vm._v("?") ]) ]), _vm._v(" "), _vm._m(1) ]) ]), _vm._v(" "), _c("li", {
            staticClass: "mdl-list__item mdl-list__item--three-line",
            staticStyle: {
                width: "100%"
            }
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content"
        }, [ _c("span", [ _vm._v(_vm._s(_vm.lang("UI_Score")) + " ") ]), _vm._v(" "), _c("span", {
            staticClass: "mdl-list__item-text-body"
        }, [ _c("select", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.malScore,
                expression: "malScore"
            } ],
            staticClass: "inputtext mdl-textfield__input",
            staticStyle: {
                outline: "none"
            },
            attrs: {
                disabled: !this.renderObj || !this.renderObj.login,
                name: "myinfo_score",
                id: "myinfo_score"
            },
            on: {
                change: function($event) {
                    var $$selectedVal = Array.prototype.filter.call($event.target.options, (function(o) {
                        return o.selected;
                    })).map((function(o) {
                        return "_value" in o ? o._value : o.value;
                    }));
                    _vm.malScore = $event.target.multiple ? $$selectedVal : $$selectedVal[0];
                }
            }
        }, [ _c("option", {
            attrs: {
                value: "",
                selected: "selected"
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Score_Not_Rated"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "10"
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Score_Masterpiece"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "9"
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Score_Great"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "8"
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Score_VeryGood"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "7"
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Score_Good"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "6"
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Score_Fine"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "5"
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Score_Average"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "4"
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Score_Bad"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "3"
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Score_VeryBad"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "2"
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Score_Horrible"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "1"
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Score_Appalling"))) ]) ]) ]) ]) ]), _vm._v(" "), _c("li", {
            staticClass: "mdl-list__item",
            staticStyle: {
                width: "100%"
            }
        }, [ _vm.renderObj && _vm.renderObj.addAnime ? _c("input", {
            staticClass: "inputButton btn-middle flat js-anime-update-button mdl-button mdl-js-button mdl-button--raised mdl-button--accent",
            staticStyle: {
                "margin-right": "5px"
            },
            attrs: {
                type: "button",
                name: "myinfo_submit",
                value: "Add",
                "data-upgraded": ",MaterialButton",
                disabled: !_vm.renderObj || !_vm.renderObj.login
            },
            on: {
                click: function($event) {
                    return _vm.malSync();
                }
            }
        }) : _c("input", {
            staticClass: "inputButton btn-middle flat js-anime-update-button mdl-button mdl-js-button mdl-button--raised mdl-button--colored",
            staticStyle: {
                "margin-right": "5px"
            },
            attrs: {
                type: "button",
                name: "myinfo_submit",
                value: _vm.lang("Update"),
                "data-upgraded": ",MaterialButton",
                disabled: !_vm.renderObj || !_vm.renderObj.login
            },
            on: {
                click: function($event) {
                    return _vm.malSync();
                }
            }
        }), _vm._v(" "), _vm.editUrl && _vm.renderObj ? _c("small", [ _c("a", {
            attrs: {
                href: _vm.editUrl,
                target: "_blank"
            }
        }, [ _vm._v(_vm._s(_vm.lang("overview_EditDetails"))) ]) ]) : _vm._e(), _vm._v(" "), _vm.renderObj && _vm.renderObj.addAnime || void 0 === _vm.renderObj.delete ? _vm._e() : _c("input", {
            staticClass: "mdl-button mdl-js-button mdl-button--raised mdl-button--accent",
            staticStyle: {
                "margin-left": "auto"
            },
            attrs: {
                type: "button",
                value: _vm.lang("Remove")
            },
            on: {
                click: function($event) {
                    return _vm.remove();
                }
            }
        }), _vm._v(" "), _c("i", {
            staticClass: "material-icons",
            staticStyle: {
                "margin-right": "0",
                "margin-left": "auto",
                cursor: "pointer"
            },
            on: {
                click: function($event) {
                    return _vm.reload();
                }
            }
        }, [ _vm._v("autorenew") ]) ]) ]) ]) ]), _vm._v(" "), _c("div", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: _vm.related.length,
                expression: "related.length"
            } ],
            staticClass: "mdl-grid mdl-grid--no-spacing mdl-cell bg-cell mdl-cell--4-col mdl-cell--8-col-tablet mdl-shadow--4dp related-block alternative-list mdl-grid malClear"
        }, [ _c("ul", {
            staticClass: "mdl-list"
        }, _vm._l(_vm.related, (function(relatedType) {
            return _c("li", {
                staticClass: "mdl-list__item mdl-list__item--two-line"
            }, [ _c("span", {
                staticClass: "mdl-list__item-primary-content"
            }, [ _c("span", [ _vm._v("\n              " + _vm._s(relatedType.type) + "\n            ") ]), _vm._v(" "), _c("span", {
                staticClass: "mdl-list__item-sub-title"
            }, _vm._l(relatedType.links, (function(link) {
                return _c("div", [ _c("a", {
                    attrs: {
                        href: link.url
                    }
                }, [ _vm._v(_vm._s(link.title)) ]), _vm._v(" "), _c("span", {
                    domProps: {
                        innerHTML: _vm._s(link.statusTag)
                    }
                }) ]);
            })), 0) ]) ]);
        })), 0) ]), _vm._v(" "), _c("div", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: _vm.kiss2mal && Object.keys(_vm.kiss2mal).length,
                expression: "kiss2mal && Object.keys(kiss2mal).length"
            } ],
            staticClass: "mdl-grid mdl-grid--no-spacing bg-cell mdl-cell mdl-cell--4-col mdl-cell--8-col-tablet mdl-shadow--4dp mdl-grid alternative-list stream-block malClear"
        }, [ _c("ul", {
            staticClass: "mdl-list stream-block-inner"
        }, _vm._l(_vm.kiss2mal, (function(streams, page) {
            return _c("li", {
                staticClass: "mdl-list__item mdl-list__item--three-line"
            }, [ _c("span", {
                staticClass: "mdl-list__item-primary-content"
            }, [ _c("span", [ _c("img", {
                staticStyle: {
                    "padding-bottom": "3px"
                },
                attrs: {
                    src: _vm.getMal2KissFavicon(streams)
                }
            }), _vm._v("\n              " + _vm._s(page) + "\n            ") ]), _vm._v(" "), _c("span", {
                staticClass: "mdl-list__item-text-body",
                attrs: {
                    id: "KissAnimeLinks"
                }
            }, _vm._l(streams, (function(stream) {
                return _c("div", {
                    staticClass: "mal_links"
                }, [ _c("a", {
                    attrs: {
                        target: "_blank",
                        href: stream.url
                    }
                }, [ _vm._v(_vm._s(stream.title)) ]) ]);
            })), 0) ]) ]);
        })), 0) ]), _vm._v(" "), _c("div", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: _vm.characters.length > 0,
                expression: "characters.length > 0"
            } ],
            staticClass: "mdl-grid mdl-grid--no-spacing mdl-cell bg-cell mdl-cell--12-col mdl-shadow--4dp characters-block mdl-grid malClear"
        }, [ _c("div", {
            staticClass: "mdl-card__actions clicker"
        }, [ _c("h1", {
            staticClass: "mdl-card__title-text",
            staticStyle: {
                float: "left"
            }
        }, [ _vm._v(_vm._s(_vm.lang("overview_Characters"))) ]) ]), _vm._v(" "), _c("div", {
            staticClass: "mdl-grid mdl-card__actions mdl-card--border",
            staticStyle: {
                "justify-content": "space-between"
            },
            attrs: {
                id: "characterList"
            }
        }, [ _vm._l(_vm.characters, (function(character) {
            return _c("div", [ _c("div", {
                staticClass: "mdl-grid",
                staticStyle: {
                    width: "126px"
                }
            }, [ _c("clazy-load", {
                staticStyle: {
                    width: "100%",
                    height: "auto"
                },
                attrs: {
                    src: character.img,
                    margin: "200px 0px",
                    threshold: .1,
                    ratio: .1
                }
            }, [ _c("img", {
                staticStyle: {
                    height: "auto",
                    width: "100%"
                },
                attrs: {
                    src: character.img
                }
            }) ]), _vm._v(" "), _c("div", {
                domProps: {
                    innerHTML: _vm._s(character.html)
                }
            }) ], 1) ]);
        })), _vm._v(" "), _vm._l(10, (function(n) {
            return _c("div", {
                staticClass: "listPlaceholder",
                staticStyle: {
                    height: "0"
                }
            }, [ _c("div", {
                staticClass: "mdl-grid",
                staticStyle: {
                    width: "126px"
                }
            }) ]);
        })) ], 2) ]), _vm._v(" "), _vm.openingSongs.length || _vm.endingSongs.length ? _c("div", {
            staticClass: "mdl-grid mdl-cell bg-cell mdl-cell--12-col mdl-shadow--4dp info-block mdl-grid malClear"
        }, [ _vm.openingSongs.length ? _c("li", {
            staticClass: "mdl-list__item mdl-list__item--three-line mdl-cell mdl-cell--6-col mdl-cell--12-col-tablet",
            staticStyle: {
                padding: "0",
                height: "auto"
            }
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content",
            staticStyle: {
                height: "auto"
            }
        }, [ _c("span", [ _vm._v(_vm._s(_vm.lang("overview_OpeningTheme"))) ]), _vm._v(" "), _c("span", {
            staticClass: "mdl-list__item-text-body",
            staticStyle: {
                height: "auto"
            }
        }, _vm._l(_vm.openingSongs, (function(openingSong) {
            return _c("span", {
                staticStyle: {
                    display: "block",
                    color: "rgb(255,64,129)"
                }
            }, [ _vm._v("\n                " + _vm._s(openingSong) + "\n              ") ]);
        })), 0) ]) ]) : _vm._e(), _vm._v(" "), _vm.endingSongs.length ? _c("li", {
            staticClass: "mdl-list__item mdl-list__item--three-line mdl-cell mdl-cell--6-col mdl-cell--12-col-tablet",
            staticStyle: {
                padding: "0",
                height: "auto"
            }
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content",
            staticStyle: {
                height: "auto"
            }
        }, [ _c("span", [ _vm._v(_vm._s(_vm.lang("overview_EndingTheme"))) ]), _vm._v(" "), _c("span", {
            staticClass: "mdl-list__item-text-body",
            staticStyle: {
                height: "auto"
            }
        }, _vm._l(_vm.endingSongs, (function(endingSong) {
            return _c("span", {
                staticStyle: {
                    display: "block",
                    color: "rgb(255,64,129)"
                }
            }, [ _vm._v("\n                " + _vm._s(endingSong) + "\n              ") ]);
        })), 0) ]) ]) : _vm._e() ]) : _vm._e(), _vm._v(" "), _c("div", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: _vm.info.length,
                expression: "info.length"
            } ],
            staticClass: "mdl-grid mdl-grid--no-spacing mdl-cell bg-cell mdl-cell--12-col mdl-shadow--4dp info-block mdl-grid malClear"
        }, [ _c("div", {
            staticClass: "mdl-grid mdl-grid--no-spacing mdl-cell mdl-cell--12-col mdl-shadow--4dp info-block mdl-grid malClear"
        }, [ _c("ul", {
            staticClass: "mdl-grid mdl-grid--no-spacing mdl-list mdl-cell mdl-cell--12-col"
        }, _vm._l(_vm.info, (function(inf) {
            return _c("li", {
                staticClass: "mdl-list__item mdl-list__item--three-line mdl-cell mdl-cell--3-col mdl-cell--4-col-tablet",
                staticStyle: {
                    height: "auto"
                }
            }, [ _c("span", {
                staticClass: "mdl-list__item-primary-content",
                staticStyle: {
                    height: "auto"
                }
            }, [ _c("span", [ _vm._v("\n                " + _vm._s(inf.title) + "\n              ") ]), _vm._v(" "), _c("span", {
                staticClass: "mdl-list__item-text-body",
                domProps: {
                    innerHTML: _vm._s(inf.body)
                }
            }) ]) ]);
        })), 0) ]) ]) ]) : _vm._e() ]);
    };
    render._withStripped = !0;
    var minimalApp_overviewvue_type_script_lang_js_ = __webpack_require__(44).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(minimalApp_overviewvue_type_script_lang_js_, render, [ function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("a", {
            staticClass: "js-anime-increment-episode-button",
            attrs: {
                href: "javascript:void(0)",
                target: "_blank"
            }
        }, [ _c("i", {
            staticClass: "fa fa-plus-circle ml4"
        }) ]);
    }, function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("a", {
            staticClass: "js-anime-increment-episode-button",
            attrs: {
                href: "javascript:void(0)",
                target: "_blank"
            }
        }, [ _c("i", {
            staticClass: "fa fa-plus-circle ml4"
        }) ]);
    } ], !1, null, null, null);
    component.options.__file = "src/minimal/minimalApp/overview.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("div", {
            attrs: {
                id: "material"
            }
        }, [ _c("div", {
            staticClass: "scroll"
        }, [ _vm.syncMode ? _vm._e() : _c("entry", {
            attrs: {
                obj: _vm.syncPage.malObj
            }
        }), _vm._v(" "), _vm.syncMode ? _vm._e() : _c("input-button", {
            attrs: {
                label: "Url",
                state: _vm.searchClass.getUrl()
            },
            on: {
                clicked: _vm.setPage
            }
        }), _vm._v(" "), _vm.syncMode ? _vm._e() : _c("input-button", {
            attrs: {
                label: _vm.lang("correction_Offset"),
                state: _vm.offset,
                type: "number"
            },
            on: {
                clicked: _vm.setOffset,
                change: function(val) {
                    return _vm.inputOffset = val;
                }
            }
        }), _vm._v(" "), _vm.inputOffset && "0" !== _vm.inputOffset ? _c("div", {
            attrs: {
                id: "offsetUi"
            }
        }, [ _vm._l(5, (function(index) {
            return _c("div", {
                key: index,
                staticClass: "offsetBox"
            }, [ _c("div", {
                staticClass: "mdl-color--primary top"
            }, [ _vm._v(_vm._s(index)) ]), _vm._v(" "), _c("div", {
                staticClass: "bottom",
                class: {
                    active: parseInt(_vm.currentStateEp) === _vm.calcEpOffset(index)
                }
            }, [ _vm._v(_vm._s(_vm.calcEpOffset(index))) ]) ]);
        })), _vm._v(" "), _vm._m(0), _vm._v(" "), _vm._m(1) ], 2) : _vm._e(), _vm._v(" "), _c("search", {
            attrs: {
                keyword: _vm.searchClass.getSanitizedTitel(),
                type: _vm.searchClass.getNormalizedType(),
                syncMode: _vm.syncMode,
                currentId: _vm.searchClass.getId()
            },
            on: {
                clicked: function($event) {
                    return _vm.setPage($event.url, $event.id);
                }
            }
        }) ], 1), _vm._v(" "), _c("a", {
            staticClass: "close",
            on: {
                click: function($event) {
                    return _vm.close();
                }
            }
        }, [ _vm._v("CLOSE") ]) ]);
    };
    render._withStripped = !0;
    var Search_correctionAppvue_type_script_lang_js_ = __webpack_require__(53).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(Search_correctionAppvue_type_script_lang_js_, render, [ function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("div", {
            staticClass: "offsetBox"
        }, [ _c("div", {
            staticClass: "mdl-color--primary top"
        }, [ this._v("...") ]), this._v(" "), _c("div", {
            staticClass: "bottom"
        }, [ this._v("...") ]) ]);
    }, function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("div", {
            staticClass: "offsetBox"
        }, [ _c("div", {
            staticClass: "mdl-color--primary top"
        }, [ this._v("∞") ]), this._v(" "), _c("div", {
            staticClass: "bottom"
        }, [ this._v("∞") ]) ]);
    } ], !1, null, null, null);
    component.options.__file = "src/_provider/Search/correctionApp.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _obj, _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("div", {
            class: (_obj = {
                "pop-over": !_vm.navigation
            }, _obj[_vm.options.theme] = !0, _obj),
            staticStyle: {
                height: "100%"
            },
            attrs: {
                id: "material"
            }
        }, [ _c("div", {
            staticClass: "mdl-layout mdl-js-layout mdl-layout--fixed-header mdl-layout--fixed-tabs mdl-shadow--2dp"
        }, [ _c("header", {
            staticClass: "mdl-layout__header",
            staticStyle: {
                "min-height": "0"
            }
        }, [ _c("button", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: _vm.backbutton,
                expression: "backbutton"
            } ],
            staticClass: "mdl-button mdl-js-button mdl-button--icon mdl-layout__drawer-button",
            staticStyle: {
                display: "none"
            },
            attrs: {
                id: "backbutton"
            },
            on: {
                click: function($event) {
                    return _vm.backbuttonClick();
                }
            }
        }, [ _c("i", {
            staticClass: "material-icons"
        }, [ _vm._v("arrow_back") ]) ]), _vm._v(" "), _c("div", {
            staticClass: "mdl-layout__header-row"
        }, [ _c("button", {
            staticClass: "mdl-button mdl-js-button mdl-button--icon mdl-layout__drawer-button",
            style: _vm.backbuttonBookStyle,
            attrs: {
                id: "book"
            },
            on: {
                click: function($event) {
                    return _vm.bookClick();
                }
            }
        }, [ _c("i", {
            staticClass: "material-icons md-48 bookIcon"
        }, [ _vm._v(_vm._s(_vm.bookIcon)) ]) ]), _vm._v(" "), _c("div", {
            staticClass: "mdl-textfield mdl-js-textfield mdl-textfield--expandable",
            class: {
                "is-dirty": _vm.currentTab == _vm.tabs.search.title
            },
            staticStyle: {
                "margin-left": "-57px",
                "margin-top": "3px",
                "padding-left": "40px"
            },
            style: _vm.backbuttonSearchStyle,
            attrs: {
                id: "SearchButton"
            }
        }, [ _vm._m(0), _vm._v(" "), _c("div", {
            staticClass: "mdl-textfield__expandable-holder"
        }, [ _c("input", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.keyword,
                expression: "keyword"
            } ],
            staticClass: "mdl-textfield__input",
            attrs: {
                type: "text",
                id: "headMalSearch"
            },
            domProps: {
                value: _vm.keyword
            },
            on: {
                keyup: function($event) {
                    return _vm.keywordSet();
                },
                input: function($event) {
                    $event.target.composing || (_vm.keyword = $event.target.value);
                }
            }
        }), _vm._v(" "), _c("label", {
            staticClass: "mdl-textfield__label",
            attrs: {
                for: "headMalSearch"
            }
        }) ]) ]), _vm._v(" "), _vm._m(1), _vm._v(" "), _vm._m(2) ]), _vm._v(" "), _c("div", {
            staticClass: "mdl-layout__tab-bar mdl-js-ripple-effect"
        }, [ _c("a", {
            staticClass: "mdl-layout__tab",
            class: {
                "is-active": _vm.currentTab == _vm.tabs.overview.title
            },
            on: {
                click: function($event) {
                    return _vm.selectTab(_vm.tabs.overview.title);
                }
            }
        }, [ _vm._v(_vm._s(_vm.lang("minimalApp_Overview"))) ]), _vm._v(" "), _c("a", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: _vm.showReviewAndRecom,
                expression: "showReviewAndRecom"
            } ],
            staticClass: "mdl-layout__tab reviewsTab",
            class: {
                "is-active": _vm.currentTab == _vm.tabs.reviews.title
            },
            on: {
                click: function($event) {
                    return _vm.selectTab(_vm.tabs.reviews.title);
                }
            }
        }, [ _vm._v(_vm._s(_vm.lang("minimalApp_Reviews"))) ]), _vm._v(" "), _c("a", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: _vm.showReviewAndRecom,
                expression: "showReviewAndRecom"
            } ],
            staticClass: "mdl-layout__tab recommendationTab",
            class: {
                "is-active": _vm.currentTab == _vm.tabs.recommendations.title
            },
            on: {
                click: function($event) {
                    return _vm.selectTab(_vm.tabs.recommendations.title);
                }
            }
        }, [ _vm._v(_vm._s(_vm.lang("minimalApp_Recommendations"))) ]), _vm._v(" "), _c("a", {
            staticClass: "mdl-layout__tab settingsTab",
            class: {
                "is-active": _vm.currentTab == _vm.tabs.settings.title
            },
            on: {
                click: function($event) {
                    return _vm.selectTab(_vm.tabs.settings.title);
                }
            }
        }, [ _vm._v(_vm._s(_vm.lang("minimalApp_Settings"))) ]) ]) ]), _vm._v(" "), _c("main", {
            staticClass: "mdl-layout__content",
            staticStyle: {
                height: "100%"
            }
        }, [ _c("section", {
            staticClass: "mdl-layout__tab-panel",
            class: {
                "is-active": _vm.currentTab == _vm.tabs.overview.title
            },
            attrs: {
                id: "fixed-tab-1"
            }
        }, [ _c("overviewVue", {
            attrs: {
                renderObj: _vm.renderObj
            }
        }) ], 1), _vm._v(" "), _c("section", {
            staticClass: "mdl-layout__tab-panel",
            class: {
                "is-active": _vm.currentTab == _vm.tabs.reviews.title
            },
            attrs: {
                id: "fixed-tab-2"
            }
        }, [ _c("reviewsVue", {
            attrs: {
                url: _vm.renderMalUrl,
                state: _vm.currentTab == _vm.tabs.reviews.title
            }
        }) ], 1), _vm._v(" "), _c("section", {
            staticClass: "mdl-layout__tab-panel",
            class: {
                "is-active": _vm.currentTab == _vm.tabs.recommendations.title
            },
            attrs: {
                id: "fixed-tab-3"
            }
        }, [ _c("recommendationsVue", {
            attrs: {
                url: _vm.renderMalUrl,
                state: _vm.currentTab == _vm.tabs.recommendations.title
            }
        }) ], 1), _vm._v(" "), _c("section", {
            staticClass: "mdl-layout__tab-panel",
            class: {
                "is-active": _vm.popOver
            },
            attrs: {
                id: "fixed-tab-4"
            }
        }, [ _vm.currentTab == _vm.tabs.bookmarks.title ? _c("bookmarksVue", {
            attrs: {
                state: _vm.tabs.bookmarks.state,
                listType: _vm.tabs.bookmarks.type
            }
        }, [ _c("div", {
            staticClass: "mdl-grid",
            staticStyle: {
                "justify-content": "space-around"
            },
            attrs: {
                id: "malList"
            }
        }, [ _c("select", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.tabs.bookmarks.type,
                expression: "tabs.bookmarks.type"
            } ],
            staticClass: "inputtext mdl-textfield__input mdl-cell mdl-cell--12-col",
            staticStyle: {
                outline: "none",
                "background-color": "white",
                border: "none"
            },
            attrs: {
                name: "myinfo_score",
                id: "userListType"
            },
            on: {
                change: function($event) {
                    var $$selectedVal = Array.prototype.filter.call($event.target.options, (function(o) {
                        return o.selected;
                    })).map((function(o) {
                        return "_value" in o ? o._value : o.value;
                    }));
                    _vm.$set(_vm.tabs.bookmarks, "type", $event.target.multiple ? $$selectedVal : $$selectedVal[0]);
                }
            }
        }, [ _c("option", {
            attrs: {
                value: "anime"
            }
        }, [ _vm._v("Anime") ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "manga"
            }
        }, [ _vm._v("Manga") ]) ]), _vm._v(" "), _c("select", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.tabs.bookmarks.state,
                expression: "tabs.bookmarks.state"
            } ],
            staticClass: "inputtext mdl-textfield__input mdl-cell mdl-cell--12-col",
            staticStyle: {
                outline: "none",
                "background-color": "white",
                border: "none"
            },
            attrs: {
                name: "myinfo_score",
                id: "userListState"
            },
            on: {
                change: function($event) {
                    var $$selectedVal = Array.prototype.filter.call($event.target.options, (function(o) {
                        return o.selected;
                    })).map((function(o) {
                        return "_value" in o ? o._value : o.value;
                    }));
                    _vm.$set(_vm.tabs.bookmarks, "state", $event.target.multiple ? $$selectedVal : $$selectedVal[0]);
                }
            }
        }, [ _c("option", {
            domProps: {
                value: 7
            }
        }, [ _vm._v(_vm._s(_vm.lang("All"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                selected: ""
            },
            domProps: {
                value: 1
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Status_watching_" + _vm.tabs.bookmarks.type))) ]), _vm._v(" "), _c("option", {
            domProps: {
                value: 2
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Status_Completed"))) ]), _vm._v(" "), _c("option", {
            domProps: {
                value: 3
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Status_OnHold"))) ]), _vm._v(" "), _c("option", {
            domProps: {
                value: 4
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Status_Dropped"))) ]), _vm._v(" "), _c("option", {
            domProps: {
                value: 6
            }
        }, [ _vm._v(_vm._s(_vm.lang("UI_Status_planTo_" + _vm.tabs.bookmarks.type))) ]) ]) ]) ]) : _vm._e(), _vm._v(" "), _vm.currentTab == _vm.tabs.search.title ? _c("searchVue", {
            attrs: {
                keyword: _vm.tabs.search.keyword,
                type: _vm.tabs.search.type
            },
            on: {
                clicked: _vm.searchClick
            }
        }, [ _c("div", {
            staticClass: "mdl-grid",
            staticStyle: {
                "justify-content": "space-around"
            }
        }, [ _c("select", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.tabs.search.type,
                expression: "tabs.search.type"
            } ],
            staticClass: "inputtext mdl-textfield__input mdl-cell mdl-cell--12-col",
            staticStyle: {
                outline: "none",
                "background-color": "white",
                border: "none"
            },
            attrs: {
                name: "myinfo_score",
                id: "userListType"
            },
            on: {
                change: function($event) {
                    var $$selectedVal = Array.prototype.filter.call($event.target.options, (function(o) {
                        return o.selected;
                    })).map((function(o) {
                        return "_value" in o ? o._value : o.value;
                    }));
                    _vm.$set(_vm.tabs.search, "type", $event.target.multiple ? $$selectedVal : $$selectedVal[0]);
                }
            }
        }, [ _c("option", {
            attrs: {
                value: "anime"
            }
        }, [ _vm._v("Anime") ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "manga"
            }
        }, [ _vm._v("Manga") ]) ]) ]) ]) : _vm._e(), _vm._v(" "), _vm.currentTab == _vm.tabs.updateCheck.title ? _c("updateCheckVue") : _vm._e(), _vm._v(" "), _vm.currentTab == _vm.tabs.listSync.title ? _c("listSyncVue", {
            attrs: {
                listType: _vm.tabs.listSync.type
            }
        }, [ _c("select", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.tabs.listSync.type,
                expression: "tabs.listSync.type"
            } ],
            staticClass: "typeSelect-updateCheck",
            staticStyle: {
                "margin-bottom": "20px"
            },
            on: {
                change: [ function($event) {
                    var $$selectedVal = Array.prototype.filter.call($event.target.options, (function(o) {
                        return o.selected;
                    })).map((function(o) {
                        return "_value" in o ? o._value : o.value;
                    }));
                    _vm.$set(_vm.tabs.listSync, "type", $event.target.multiple ? $$selectedVal : $$selectedVal[0]);
                }, function($event) {
                    return _vm.rebuildListSync();
                } ]
            }
        }, [ _c("option", {
            attrs: {
                value: "anime"
            }
        }, [ _vm._v("Anime") ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "manga"
            }
        }, [ _vm._v("Manga") ]) ]) ]) : _vm._e(), _vm._v(" "), _vm.currentTab == _vm.tabs.cleanTags.title ? _c("cleanTagsVue") : _vm._e() ], 1), _vm._v(" "), _c("section", {
            staticClass: "mdl-layout__tab-panel",
            class: {
                "is-active": _vm.currentTab == _vm.tabs.settings.title
            },
            attrs: {
                id: "fixed-tab-5"
            }
        }, [ _c("div", {
            staticClass: "page-content malClear",
            attrs: {
                id: "malConfig"
            }
        }, [ _c("settingsVue", {
            attrs: {
                page: _vm.page
            }
        }) ], 1) ]) ]) ]) ]);
    };
    render._withStripped = !0;
    var minimal_minimalAppvue_type_script_lang_js_ = __webpack_require__(32).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(minimal_minimalAppvue_type_script_lang_js_, render, [ function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("label", {
            staticClass: "mdl-button mdl-js-button mdl-button--icon",
            attrs: {
                for: "headMalSearch"
            }
        }, [ _c("i", {
            staticClass: "material-icons"
        }, [ this._v("search") ]) ]);
    }, function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("button", {
            staticClass: "mdl-button mdl-js-button mdl-button--icon mdl-layout__drawer-button",
            staticStyle: {
                left: "initial",
                right: "40px"
            },
            attrs: {
                id: "material-fullscreen"
            }
        }, [ _c("i", {
            staticClass: "material-icons md-48"
        }, [ this._v("fullscreen") ]) ]);
    }, function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("button", {
            staticClass: "mdl-button mdl-js-button mdl-button--icon mdl-layout__drawer-button",
            staticStyle: {
                left: "initial",
                right: "0"
            },
            attrs: {
                id: "close-info-popup"
            }
        }, [ _c("i", {
            staticClass: "material-icons close"
        }, [ this._v("close") ]) ]);
    } ], !1, null, null, null);
    component.options.__file = "src/minimal/minimalApp.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("div", {
            staticClass: "inputButton"
        }, [ _c("div", {
            staticClass: "group"
        }, [ "checkbox" === _vm.type ? _c("input", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.inputString,
                expression: "inputString"
            } ],
            attrs: {
                required: "",
                type: "checkbox"
            },
            domProps: {
                checked: Array.isArray(_vm.inputString) ? _vm._i(_vm.inputString, null) > -1 : _vm.inputString
            },
            on: {
                change: function($event) {
                    var $$a = _vm.inputString, $$el = $event.target, $$c = !!$$el.checked;
                    if (Array.isArray($$a)) {
                        var $$i = _vm._i($$a, null);
                        $$el.checked ? $$i < 0 && (_vm.inputString = $$a.concat([ null ])) : $$i > -1 && (_vm.inputString = $$a.slice(0, $$i).concat($$a.slice($$i + 1)));
                    } else _vm.inputString = $$c;
                }
            }
        }) : "radio" === _vm.type ? _c("input", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.inputString,
                expression: "inputString"
            } ],
            attrs: {
                required: "",
                type: "radio"
            },
            domProps: {
                checked: _vm._q(_vm.inputString, null)
            },
            on: {
                change: function($event) {
                    _vm.inputString = null;
                }
            }
        }) : _c("input", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.inputString,
                expression: "inputString"
            } ],
            attrs: {
                required: "",
                type: _vm.type
            },
            domProps: {
                value: _vm.inputString
            },
            on: {
                input: function($event) {
                    $event.target.composing || (_vm.inputString = $event.target.value);
                }
            }
        }), _vm._v(" "), _c("span", {
            staticClass: "bar"
        }), _vm._v(" "), _c("label", [ _vm._v(_vm._s(_vm.label)) ]) ]), _vm._v(" "), _vm.inputString !== _vm.state ? _c("button", {
            on: {
                click: _vm.click
            }
        }, [ _vm._v("Update") ]) : _vm._e() ]);
    };
    render._withStripped = !0;
    var components_inputButtonvue_type_script_lang_js_ = __webpack_require__(55).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(components_inputButtonvue_type_script_lang_js_, render, [], !1, null, null, null);
    component.options.__file = "src/_provider/Search/components/inputButton.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _vm.obj ? _c("div", {
            staticClass: "entry"
        }, [ _c("a", {
            staticClass: "result",
            staticStyle: {
                cursor: "pointer"
            },
            attrs: {
                href: _vm.obj.getDisplayUrl(),
                target: "_blank"
            }
        }, [ _c("div", {
            staticClass: "image"
        }, [ _vm.image ? _c("img", {
            attrs: {
                src: _vm.image
            }
        }) : _vm._e() ]), _vm._v(" "), _c("div", {
            staticClass: "right"
        }, [ _c("span", {
            staticClass: "title"
        }, [ _vm._v(_vm._s(_vm.obj.name)) ]), _vm._v(" "), _vm.obj.addAnime ? _vm._e() : _c("p", [ _vm._v(_vm._s(_vm.lang("UI_Status")) + " " + _vm._s(_vm.statusText(_vm.status))) ]), _vm._v(" "), _vm.obj.addAnime ? _vm._e() : _c("p", [ _vm._v(_vm._s(_vm.lang("UI_Score")) + " " + _vm._s(_vm.score)) ]), _vm._v(" "), _vm.obj.addAnime ? _vm._e() : _c("p", [ _vm._v("\n        " + _vm._s(_vm.utilsepisode(_vm.obj.type)) + " " + _vm._s(_vm.episode)), _vm.obj.totalEp ? _c("span", {
            attrs: {
                id: "curEps"
            }
        }, [ _vm._v("/" + _vm._s(_vm.obj.totalEp)) ]) : _c("span", [ _vm._v("/?") ]) ]) ]) ]) ]) : _vm._e();
    };
    render._withStripped = !0;
    var components_entryvue_type_script_lang_js_ = __webpack_require__(56).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(components_entryvue_type_script_lang_js_, render, [], !1, null, null, null);
    component.options.__file = "src/_provider/Search/components/entry.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("div", {
            staticClass: "search"
        }, [ _c("div", {
            staticClass: "input"
        }, [ _c("div", {
            staticClass: "group"
        }, [ _c("input", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.searchKeyword,
                expression: "searchKeyword"
            } ],
            attrs: {
                type: "text",
                required: ""
            },
            domProps: {
                value: _vm.searchKeyword
            },
            on: {
                focus: function($event) {
                    return _vm.inputFocus();
                },
                input: function($event) {
                    $event.target.composing || (_vm.searchKeyword = $event.target.value);
                }
            }
        }), _vm._v(" "), _c("span", {
            staticClass: "bar"
        }), _vm._v(" "), _c("label", [ _vm._v(_vm._s(_vm.lang("correction_Search"))) ]) ]) ]), _vm._v(" "), _c("div", {
            staticClass: "loadingBar"
        }, [ _c("div", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: _vm.loading,
                expression: "loading"
            } ],
            staticClass: "mdl-progress mdl-js-progress mdl-progress__indeterminate",
            staticStyle: {
                width: "100%"
            }
        }, [ _c("div", {
            staticClass: "progressbar bar bar1",
            staticStyle: {
                width: "0%"
            }
        }), _vm._v(" "), _c("div", {
            staticClass: "bufferbar bar bar2",
            staticStyle: {
                width: "100%"
            }
        }), _vm._v(" "), _c("div", {
            staticClass: "auxbar bar bar3",
            staticStyle: {
                width: "0%"
            }
        }) ]) ]), _vm._v(" "), _vm.searchKeyword ? _c("div", {
            staticClass: "results"
        }, [ _c("a", {
            staticClass: "result",
            staticStyle: {
                cursor: "pointer"
            },
            attrs: {
                href: ""
            },
            on: {
                click: function($event) {
                    return _vm.clickItem($event, "");
                }
            }
        }, [ _c("div", {
            staticClass: "image"
        }), _vm._v(" "), _c("div", {
            staticClass: "right"
        }, [ _c("span", {
            staticClass: "title"
        }, [ _vm._v(_vm._s(_vm.lang("correction_NoEntry"))) ]), _vm._v(" "), _c("p", [ _vm._v(_vm._s(_vm.lang("correction_NoMal"))) ]) ]) ]), _vm._v(" "), _vm._l(_vm.items, (function(item) {
            return _c("a", {
                key: item.id,
                staticClass: "result",
                class: {
                    active: _vm.currentId === item.id
                },
                attrs: {
                    href: item.url
                },
                on: {
                    click: function($event) {
                        return _vm.clickItem($event, item);
                    }
                }
            }, [ _c("div", {
                staticClass: "image"
            }, [ _c("img", {
                attrs: {
                    src: item.image
                }
            }) ]), _vm._v(" "), _c("div", {
                staticClass: "right"
            }, [ _c("span", {
                staticClass: "title"
            }, [ _vm._v(_vm._s(item.name)) ]), _vm._v(" "), _c("p", [ _vm._v(_vm._s(_vm.lang("search_Type")) + " " + _vm._s(item.media_type)) ]), _vm._v(" "), _c("p", [ _vm._v(_vm._s(_vm.lang("search_Score")) + " " + _vm._s(item.score)) ]), _vm._v(" "), _c("p", [ _vm._v(_vm._s(_vm.lang("search_Year")) + " " + _vm._s(item.year)) ]) ]) ]);
        })) ], 2) : _vm._e() ]);
    };
    render._withStripped = !0;
    var components_searchvue_type_script_lang_js_ = __webpack_require__(54).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(components_searchvue_type_script_lang_js_, render, [], !1, null, null, null);
    component.options.__file = "src/_provider/Search/components/search.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("div", {
            staticClass: "page-content malClear",
            attrs: {
                id: "malRecommendations"
            }
        }, [ _c("div", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: "" == _vm.xhr,
                expression: "xhr == ''"
            } ],
            staticClass: "mdl-progress mdl-js-progress mdl-progress__indeterminate",
            staticStyle: {
                width: "100%",
                position: "absolute"
            },
            attrs: {
                id: "loadOverview"
            }
        }), _vm._v(" "), _c("span", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: "" != _vm.xhr && "" == _vm.recommendations,
                expression: "xhr != '' && recommendations == ''"
            } ],
            staticClass: "mdl-chip",
            staticStyle: {
                margin: "auto",
                "margin-top": "16px",
                display: "table"
            }
        }, [ _c("span", {
            staticClass: "mdl-chip__text"
        }, [ _vm._v(_vm._s(_vm.lang("NothingFound"))) ]) ]), _vm._v(" "), "" != _vm.xhr ? _c("div", {
            staticClass: "mdl-grid",
            domProps: {
                innerHTML: _vm._s(_vm.recommendations)
            }
        }) : _vm._e() ]);
    };
    render._withStripped = !0;
    var minimalApp_recommendationsvue_type_script_lang_js_ = __webpack_require__(45).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(minimalApp_recommendationsvue_type_script_lang_js_, render, [], !1, null, null, null);
    component.options.__file = "src/minimal/minimalApp/recommendations.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("ul", {
            staticClass: "demo-list-control mdl-list",
            staticStyle: {
                margin: "0px",
                padding: "0px"
            }
        }, [ _c("div", {
            staticClass: "mdl-grid"
        }, [ _c("div", {
            staticClass: "mdl-cell bg-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp",
            staticStyle: {
                display: "none"
            },
            attrs: {
                id: "page-config"
            }
        }), _vm._v(" "), _vm.page && _vm.page.UILoaded ? _c("correction", {
            attrs: {
                page: _vm.page
            }
        }) : _vm._e(), _vm._v(" "), _c("div", {
            staticClass: "mdl-cell bg-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp"
        }, [ _c("div", {
            staticClass: "mdl-card__title mdl-card--border"
        }, [ _c("h2", {
            staticClass: "mdl-card__title-text"
        }, [ _vm._v(_vm._s(_vm.lang("settings_General"))) ]) ]), _vm._v(" "), _c("li", {
            staticClass: "mdl-list__item"
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content"
        }, [ _vm._v("\n          " + _vm._s(_vm.lang("settings_Mode")) + "\n        ") ]), _vm._v(" "), _vm._m(0) ]), _vm._v(" "), _c("login", {
            attrs: {
                option: "syncMode"
            }
        }), _vm._v(" "), "SIMKL" == _vm.options.syncMode ? _c("dropdown", {
            attrs: {
                option: "syncModeSimkl",
                text: "Manga Sync Mode"
            }
        }, [ _c("option", {
            attrs: {
                value: "MAL"
            }
        }, [ _vm._v("MyAnimeList") ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "ANILIST"
            }
        }, [ _vm._v("AniList") ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "KITSU"
            }
        }, [ _vm._v("Kitsu") ]) ]) : _vm._e(), _vm._v(" "), "SIMKL" == _vm.options.syncMode ? _c("login", {
            attrs: {
                option: "syncModeSimkl"
            }
        }) : _vm._e(), _vm._v(" "), _c("li", {
            staticClass: "mdl-list__item"
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content"
        }, [ _vm._v("\n          " + _vm._s(_vm.lang("settings_Animesync")) + "\n        ") ]), _vm._v(" "), _c("span", {
            staticClass: "mdl-list__item-secondary-action"
        }, [ _c("select", {
            staticClass: "inputtext mdl-textfield__input",
            staticStyle: {
                outline: "none"
            },
            attrs: {
                name: "myinfo_score",
                id: "autoTrackingModeanime"
            }
        }, [ _c("option", {
            attrs: {
                value: "video"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Animesync_Video"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "instant"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Animesync_Instant"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "manual"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Animesync_Manual"))) ]) ]) ]) ]), _vm._v(" "), _c("li", {
            staticClass: "mdl-list__item"
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content"
        }, [ _vm._v("\n          " + _vm._s(_vm.lang("settings_Mangasync")) + "\n        ") ]), _vm._v(" "), _c("span", {
            staticClass: "mdl-list__item-secondary-action"
        }, [ _c("select", {
            staticClass: "inputtext mdl-textfield__input",
            staticStyle: {
                outline: "none"
            },
            attrs: {
                name: "myinfo_score",
                id: "autoTrackingModemanga"
            }
        }, [ _c("option", {
            attrs: {
                value: "instant"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Animesync_Instant"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "manual"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Animesync_Manual"))) ]) ]) ]) ]), _vm._v(" "), _c("numberInput", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: "video" == _vm.options.autoTrackingModeanime || "video" == _vm.options.autoTrackingModemanga,
                expression: "options.autoTrackingModeanime == 'video' || options.autoTrackingModemanga == 'video'"
            } ],
            attrs: {
                option: "videoDuration",
                min: 10,
                max: 99
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_AutoTracking_Video", [ _vm.options.videoDuration ]))) ]), _vm._v(" "), _c("numberInput", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: "instant" == _vm.options.autoTrackingModeanime || "instant" == _vm.options.autoTrackingModemanga,
                expression: "options.autoTrackingModeanime == 'instant' || options.autoTrackingModemanga == 'instant'"
            } ],
            attrs: {
                option: "delay"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_AutoTracking_Instant", [ _vm.options.delay ]))) ]), _vm._v(" "), _c("shortcut", {
            attrs: {
                option: "correctionShort"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Shortcuts_Correction"))) ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "localSync"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_LocalSync")) + "\n        "), _c("a", {
            staticStyle: {
                "margin-left": "auto",
                "margin-right": "10px"
            },
            attrs: {
                href: "https://github.com/lolamtisch/MALSync/wiki/Local-Sync",
                target: "_blank"
            }
        }, [ _vm._v("[INFO]") ]) ]), _vm._v(" "), _c("li", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: _vm.options.localSync,
                expression: "options.localSync"
            } ],
            staticClass: "mdl-list__item"
        }, [ _c("button", {
            staticClass: "mdl-button mdl-js-button mdl-button--raised mdl-button--colored",
            attrs: {
                type: "button",
                id: "export"
            },
            on: {
                click: function($event) {
                    return _vm.exportFallbackSync();
                }
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_LocalSync_Export"))) ]), _vm._v(" "), _c("fileUpload", {
            staticStyle: {
                "margin-left": "15px"
            },
            on: {
                upload: _vm.importFallbackSync
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_LocalSync_Import"))) ]) ], 1) ], 1), _vm._v(" "), _c("div", {
            staticClass: "mdl-cell bg-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp"
        }, [ _c("div", {
            staticClass: "mdl-card__title mdl-card--border"
        }, [ _c("h2", {
            staticClass: "mdl-card__title-text"
        }, [ _vm._v(_vm._s(_vm.lang("settings_StreamingSite"))) ]), _vm._v(" "), _c("tooltip", [ _vm._v(_vm._s(_vm.lang("settings_StreamingSite_text"))) ]) ], 1), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "SiteSearch"
            }
        }, [ _vm._v(_vm._s(_vm.lang("Search"))) ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "Kissanime"
            }
        }, [ _vm._v("KissAnime") ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "9anime"
            }
        }, [ _vm._v("9anime") ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "Crunchyroll"
            }
        }, [ _vm._v("Crunchyroll") ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "Netflix"
            }
        }, [ _vm._v("Netflix") ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "Gogoanime"
            }
        }, [ _vm._v("Gogoanime") ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "Twistmoe"
            }
        }, [ _vm._v("twist.moe") ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "Anime4you"
            }
        }, [ _vm._v("Anime4You (Ger)") ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "Aniwatch"
            }
        }, [ _vm._v("Aniwatch") ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "Kissmanga"
            }
        }, [ _vm._v("KissManga") ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "Mangadex"
            }
        }, [ _vm._v("MangaDex") ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "MangaNelo"
            }
        }, [ _vm._v("MangaNelo") ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "Novelplanet"
            }
        }, [ _vm._v("Novelplanet") ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "Proxeranime"
            }
        }, [ _vm._v("Proxer (Anime)") ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "Proxermanga"
            }
        }, [ _vm._v("Proxer (Manga)") ]) ], 1), _vm._v(" "), _c("div", {
            staticClass: "mdl-cell bg-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp"
        }, [ _vm._m(1), _vm._v(" "), _c("li", {
            staticClass: "mdl-list__item"
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content"
        }, [ _vm._v("\n          " + _vm._s(_vm.lang("settings_Thumbnails")) + "\n          "), _c("tooltip", [ _c("span", {
            domProps: {
                innerHTML: _vm._s(_vm.lang("settings_Thumbnails_text"))
            }
        }) ]) ], 1), _vm._v(" "), _c("span", {
            staticClass: "mdl-list__item-secondary-action"
        }, [ _c("select", {
            staticClass: "inputtext mdl-textfield__input",
            staticStyle: {
                outline: "none"
            },
            attrs: {
                name: "myinfo_score",
                id: "malThumbnail"
            }
        }, [ _c("option", {
            attrs: {
                value: "144"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Thumbnails_Large"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "100"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Thumbnails_Medium"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "60"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Thumbnails_Small"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "0"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Thumbnails_Default"))) ]) ]) ]) ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "friendScore"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_FriendScore"))) ]) ], 1), _vm._v(" "), _c("div", {
            staticClass: "mdl-cell bg-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp"
        }, [ _vm._m(2), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "epPredictions"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_epPredictions"))) ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "malTags"
            }
        }, [ _vm._v("\n        " + _vm._s(_vm.lang("settings_malTags")) + "\n        "), _c("tooltip", {
            attrs: {
                direction: "bottom"
            }
        }, [ _c("span", {
            domProps: {
                innerHTML: _vm._s(_vm.lang("settings_malTags_Text"))
            }
        }) ]) ], 1), _vm._v(" "), _c("checkbox", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: _vm.options.malTags,
                expression: "options.malTags"
            } ],
            attrs: {
                option: "malContinue"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_malContinue"))) ]), _vm._v(" "), _c("checkbox", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: _vm.options.malTags,
                expression: "options.malTags"
            } ],
            attrs: {
                option: "malResume"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_malResume"))) ]) ], 1), _vm._v(" "), _c("div", {
            staticClass: "mdl-cell bg-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp"
        }, [ _vm._m(3), _vm._v(" "), _vm._m(4), _vm._v(" "), _c("span", {
            staticClass: "option-extension",
            staticStyle: {
                display: "none"
            }
        }, [ _c("checkbox", {
            attrs: {
                option: "minimalWindow"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_miniMAL_window"))) ]) ], 1), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "floatButtonStealth"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_miniMAL_floatButtonStealth"))) ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "floatButtonHide"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_miniMAL_floatButtonHide"))) ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "autoCloseMinimal"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_miniMAL_autoCloseMinimal"))) ]), _vm._v(" "), _vm.commands ? _c("li", {
            staticClass: "mdl-list__item"
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content"
        }, [ _vm._v("\n          " + _vm._s(_vm.lang("settings_miniMAL_Open")) + "\n        ") ]), _vm._v(" "), _c("span", {
            staticClass: "mdl-list__item-secondary-action"
        }, [ _vm._v("\n          " + _vm._s(_vm.commands._execute_browser_action.shortcut) + "\n          "), _vm.commands._execute_browser_action.shortcut ? _vm._e() : _c("span", [ _c("a", {
            attrs: {
                href: "https://github.com/lolamtisch/MALSync/wiki/Shortcuts",
                target: "_blank"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_miniMAL_NotSet"))) ]) ]) ]) ]) : _vm._e(), _vm._v(" "), _c("li", {
            staticClass: "mdl-list__item"
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content"
        }, [ _vm._v("\n          " + _vm._s(_vm.lang("settings_miniMAL_Display")) + "\n        ") ]), _vm._v(" "), _c("span", {
            staticClass: "mdl-list__item-secondary-action"
        }, [ _c("select", {
            staticClass: "inputtext mdl-textfield__input",
            staticStyle: {
                outline: "none"
            },
            attrs: {
                name: "myinfo_score",
                id: "posLeft"
            }
        }, [ _c("option", {
            attrs: {
                value: "left"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_miniMAL_Display_Left"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "right"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_miniMAL_Display_Right"))) ]) ]) ]) ]), _vm._v(" "), _c("li", {
            staticClass: "mdl-list__item",
            staticStyle: {
                display: "inline-block",
                width: "49%"
            }
        }, [ _c("div", {
            staticClass: "mdl-textfield mdl-js-textfield mdl-textfield--floating-label",
            staticStyle: {
                width: "100%"
            }
        }, [ _c("input", {
            staticClass: "mdl-textfield__input",
            attrs: {
                type: "text",
                step: "1",
                id: "miniMalHeight"
            },
            domProps: {
                value: _vm.options.miniMalHeight
            }
        }), _vm._v(" "), _c("label", {
            staticClass: "mdl-textfield__label",
            attrs: {
                for: "miniMalHeight"
            }
        }, [ _vm._v("\n            " + _vm._s(_vm.lang("settings_miniMAL_Height")) + "\n          ") ]) ]) ]), _vm._v(" "), _c("li", {
            staticClass: "mdl-list__item",
            staticStyle: {
                display: "inline-block",
                width: "50%"
            }
        }, [ _c("div", {
            staticClass: "mdl-textfield mdl-js-textfield mdl-textfield--floating-label",
            staticStyle: {
                width: "100%"
            }
        }, [ _c("input", {
            staticClass: "mdl-textfield__input",
            attrs: {
                type: "text",
                step: "1",
                id: "miniMalWidth"
            },
            domProps: {
                value: _vm.options.miniMalWidth
            }
        }), _vm._v(" "), _c("label", {
            staticClass: "mdl-textfield__label",
            attrs: {
                for: "miniMalWidth"
            }
        }, [ _vm._v("\n            " + _vm._s(_vm.lang("settings_miniMAL_Width")) + "\n          ") ]) ]) ]) ], 1), _vm._v(" "), _c("div", {
            staticClass: "mdl-cell bg-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp"
        }, [ _c("div", {
            staticClass: "mdl-card__title mdl-card--border"
        }, [ _c("h2", {
            staticClass: "mdl-card__title-text"
        }, [ _vm._v(_vm._s(_vm.lang("settings_Video_Player"))) ]) ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "autofull"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Video_Fullscreen"))) ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "autoresume"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Video_Resume"))) ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "autoNextEp"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_autoNextEp"))) ]), _vm._v(" "), _vm.isExtension() ? _c("shortcut", {
            attrs: {
                option: "nextEpShort"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Shortcuts_Next_Episode"))) ]) : _vm._e(), _vm._v(" "), _vm.isExtension() ? _c("shortcut", {
            attrs: {
                option: "introSkipFwd"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Shortcuts_Skip_Forward"))) ]) : _vm._e(), _vm._v(" "), _vm.isExtension() ? _c("shortcut", {
            attrs: {
                option: "introSkipBwd"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Shortcuts_Skip_Backward"))) ]) : _vm._e(), _vm._v(" "), _vm.isExtension() ? _c("numberInput", {
            attrs: {
                option: "introSkip",
                min: 5
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_introSkip", [ _vm.options.introSkip ]))) ]) : _vm._e() ], 1), _vm._v(" "), _c("div", {
            staticClass: "mdl-cell bg-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp",
            staticStyle: {
                display: "none"
            },
            attrs: {
                id: "updateCheck"
            }
        }, [ _c("div", {
            staticClass: "mdl-card__title mdl-card--border"
        }, [ _c("h2", {
            staticClass: "mdl-card__title-text"
        }, [ _vm._v(_vm._s(_vm.lang("settings_UpdateCheck"))) ]), _vm._v(" "), _c("tooltip", [ _vm._v("\n          " + _vm._s(_vm.lang("settings_UpdateCheck_Text")) + "\n        ") ]), _vm._v(" "), _c("div", {
            staticStyle: {
                "margin-left": "auto"
            },
            attrs: {
                id: "updateCheckAgo"
            }
        }) ], 1), _vm._v(" "), _c("li", {
            staticClass: "mdl-list__item"
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content"
        }, [ _vm._v("\n          " + _vm._s(_vm.lang("settings_Interval")) + "\n        ") ]), _vm._v(" "), _c("span", {
            staticClass: "mdl-list__item-secondary-action"
        }, [ _c("select", {
            staticClass: "inputtext mdl-textfield__input",
            staticStyle: {
                outline: "none"
            },
            attrs: {
                name: "updateCheckTime",
                id: "updateCheckTime"
            }
        }, [ _c("option", {
            attrs: {
                value: "0"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Interval_Off"))) ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "60"
            }
        }, [ _vm._v("1h") ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "240"
            }
        }, [ _vm._v("4h") ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "720"
            }
        }, [ _vm._v("12h") ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "1440"
            }
        }, [ _vm._v("24h") ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "2880"
            }
        }, [ _vm._v("48h") ]) ]) ]) ]), _vm._v(" "), _c("span", {
            staticClass: "updateCheckEnable",
            staticStyle: {
                display: "none"
            }
        }, [ _c("checkbox", {
            attrs: {
                option: "updateCheckNotifications"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Notifications"))) ]) ], 1), _vm._v(" "), _c("li", {
            staticClass: "mdl-list__item updateCheckEnable",
            staticStyle: {
                display: "none"
            }
        }, [ _c("button", {
            staticClass: "mdl-button mdl-js-button mdl-button--raised mdl-button--colored",
            attrs: {
                type: "button",
                id: "updateCheckUi"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Debugging"))) ]) ]) ]), _vm._v(" "), _c("div", {
            staticClass: "mdl-cell bg-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp"
        }, [ _vm._m(5), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "presenceHidePage"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_presenceHidePage"))) ]) ], 1), _vm._v(" "), _c("div", {
            staticClass: "mdl-cell bg-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp"
        }, [ _c("div", {
            staticClass: "mdl-card__title mdl-card--border"
        }, [ _c("h2", {
            staticClass: "mdl-card__title-text"
        }, [ _vm._v(_vm._s(_vm.lang("settings_ETC"))) ]) ]), _vm._v(" "), _c("checkbox", {
            attrs: {
                option: "forceEn"
            }
        }, [ _vm._v("Force english") ]), _vm._v(" "), _c("span", {
            staticClass: "option-extension",
            staticStyle: {
                display: "none"
            }
        }, [ _c("checkbox", {
            attrs: {
                option: "userscriptMode"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Userscriptmode"))), _c("tooltip", {
            attrs: {
                direction: "bottom"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_Userscriptmode_Text"))) ]) ], 1) ], 1), _vm._v(" "), _c("span", {
            staticClass: "option-extension-popup",
            staticStyle: {
                display: "none"
            }
        }, [ _c("checkbox", {
            attrs: {
                option: "strictCookies"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_StrictCookies"))), _c("tooltip", [ _vm._v(_vm._s(_vm.lang("settings_StrictCookies_Text"))) ]) ], 1) ], 1), _vm._v(" "), _c("span", {
            staticClass: "option-extension",
            staticStyle: {
                display: "none"
            }
        }, [ _c("checkbox", {
            attrs: {
                option: "highlightAllEp"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_highlightAllEp"))), _c("tooltip", [ _vm._v(_vm._s(_vm.lang("settings_highlightAllEp_Text"))) ]) ], 1) ], 1), _vm._v(" "), _vm._m(6), _vm._v(" "), _c("li", {
            staticClass: "mdl-list__item"
        }, [ _c("button", {
            staticClass: "mdl-button mdl-js-button mdl-button--raised mdl-button--colored",
            attrs: {
                type: "button",
                id: "clearCache"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_ClearCache"))) ]), _vm._v(" "), _c("button", {
            staticClass: "mdl-button mdl-js-button mdl-button--raised mdl-button--colored",
            staticStyle: {
                "margin-left": "20px"
            },
            attrs: {
                type: "button",
                id: "cleanTagsUi"
            }
        }, [ _vm._v("Clean Tags") ]) ]) ], 1), _vm._v(" "), _c("div", {
            staticClass: "mdl-cell bg-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp",
            class: {
                open: _vm.isOpen
            },
            attrs: {
                id: "contributer"
            },
            on: {
                click: function($event) {
                    return _vm.myOpen();
                }
            }
        }, [ _c("div", {
            staticStyle: {
                display: "table",
                width: "100%"
            }
        }, [ _vm._l(_vm.contributer, (function(contributerGroup, group) {
            return [ _c("div", {
                staticClass: "group"
            }, [ _vm._v(_vm._s(group)) ]), _vm._v(" "), _vm._l(contributerGroup, (function(contr) {
                return _c("div", {
                    staticClass: "inline-block"
                }, [ _c("div", {
                    staticClass: "user"
                }, [ _c("div", {
                    staticClass: "image align-middle"
                }, [ contr.gif ? _c("clazy-load", {
                    attrs: {
                        src: contr.gif
                    }
                }, [ _c("img", {
                    staticClass: "lazy init gif",
                    staticStyle: {
                        "max-width": "100%"
                    },
                    attrs: {
                        src: contr.gif
                    }
                }) ]) : _vm._e(), _vm._v(" "), _c("clazy-load", {
                    attrs: {
                        src: contr.image
                    }
                }, [ _c("img", {
                    staticClass: "lazy init",
                    staticStyle: {
                        "max-width": "100%"
                    },
                    attrs: {
                        src: contr.image
                    }
                }) ]) ], 1), _vm._v(" "), _c("div", {
                    staticClass: "text align-middle"
                }, [ _c("div", {
                    staticClass: "name",
                    style: "color:" + contr.color,
                    attrs: {
                        title: contr.name
                    }
                }, [ _vm._v("\n                  " + _vm._s(contr.name) + "\n                ") ]), _vm._v(" "), contr.subText ? _c("div", {
                    staticClass: "subtext"
                }, [ _vm._v(_vm._s(contr.subText)) ]) : _vm._e() ]) ]) ]);
            })) ];
        })), _vm._v(" "), _vm._m(7), _vm._v(" "), _c("a", {
            staticClass: "discord",
            attrs: {
                rel: "noreferrer",
                href: "https://discordapp.com/invite/cTH4yaw"
            }
        }, [ _c("div", {
            staticStyle: {
                height: "20px",
                margin: "-15px",
                "margin-top": "15px",
                background: "-webkit-linear-gradient(top, #ffffff 0%,#738bd7 74%)"
            }
        }), _vm._v(" "), _c("clazy-load", {
            staticStyle: {
                background: "linear-gradient(to bottom, #738bd7 0%,#738bd7 64%,#697ec4 64%,#697ec4 100%)",
                "background-color": "#697ec4",
                position: "relative",
                overflow: "hidden",
                "margin-left": "-15px",
                "margin-right": "-15px",
                "margin-bottom": "-15px",
                "margin-top": "15px"
            },
            attrs: {
                src: "https://discordapp.com/api/guilds/358599430502481920/widget.png?style=banner3"
            }
        }, [ _c("img", {
            staticStyle: {
                margin: "auto",
                display: "block"
            },
            attrs: {
                src: "https://discordapp.com/api/guilds/358599430502481920/widget.png?style=banner3"
            }
        }) ]) ], 1) ], 2) ]), _vm._v(" "), _c("div", {
            staticClass: "mdl-cell bg-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp"
        }, [ _c("li", {
            staticClass: "mdl-list__item"
        }, [ _c("div", {
            staticStyle: {
                "line-height": "30px"
            }
        }, [ _c("clazy-load", {
            attrs: {
                tag: "a",
                rel: "noreferrer",
                href: _vm.version.link,
                src: _vm.version.img
            }
        }, [ _c("img", {
            attrs: {
                src: _vm.version.img
            }
        }), _vm._v(" "), _c("span", {
            attrs: {
                slot: "placeholder"
            },
            slot: "placeholder"
        }, [ _vm._v("\n              " + _vm._s(_vm.lang("Loading")) + "\n            ") ]) ]), _vm._v(" "), _c("br"), _vm._v(" "), _c("clazy-load", {
            attrs: {
                tag: "a",
                rel: "noreferrer",
                href: "https://discordapp.com/invite/cTH4yaw",
                src: "https://img.shields.io/discord/358599430502481920.svg?style=flat-square&logo=discord&label=Chat%20%2F%20Support&colorB=7289DA"
            }
        }, [ _c("img", {
            attrs: {
                src: "https://img.shields.io/discord/358599430502481920.svg?style=flat-square&logo=discord&label=Chat%20%2F%20Support&colorB=7289DA"
            }
        }), _vm._v(" "), _c("span", {
            attrs: {
                slot: "placeholder"
            },
            slot: "placeholder"
        }, [ _vm._v("\n              " + _vm._s(_vm.lang("Loading")) + "\n            ") ]) ]), _vm._v(" "), _c("br"), _vm._v(" "), _c("clazy-load", {
            attrs: {
                tag: "a",
                rel: "noreferrer",
                href: "https://github.com/lolamtisch/MALSync",
                src: "https://img.shields.io/github/last-commit/lolamtisch/malsync.svg?style=flat-square&logo=github&logoColor=white&label=Github"
            }
        }, [ _c("img", {
            attrs: {
                src: "https://img.shields.io/github/last-commit/lolamtisch/malsync.svg?style=flat-square&logo=github&logoColor=white&label=Github"
            }
        }), _vm._v(" "), _c("span", {
            attrs: {
                slot: "placeholder"
            },
            slot: "placeholder"
        }, [ _vm._v("\n              " + _vm._s(_vm.lang("Loading")) + "\n            ") ]) ]), _vm._v(" "), _c("br"), _vm._v(" "), _c("clazy-load", {
            attrs: {
                tag: "a",
                rel: "noreferrer",
                href: "https://github.com/lolamtisch/MALSync/issues",
                src: "https://img.shields.io/github/issues/lolamtisch/MALSync.svg?style=flat-square&logo=github&logoColor=white"
            }
        }, [ _c("img", {
            attrs: {
                src: "https://img.shields.io/github/issues/lolamtisch/MALSync.svg?style=flat-square&logo=github&logoColor=white"
            }
        }), _vm._v(" "), _c("span", {
            attrs: {
                slot: "placeholder"
            },
            slot: "placeholder"
        }, [ _vm._v("\n              " + _vm._s(_vm.lang("Loading")) + "\n            ") ]) ]), _vm._v(" "), _c("br"), _vm._v(" "), _c("clazy-load", {
            attrs: {
                tag: "a",
                rel: "noreferrer",
                href: "https://chrome.google.com/webstore/detail/mal-sync/kekjfbackdeiabghhcdklcdoekaanoel?hl=en",
                src: "https://img.shields.io/badge/Chrome-Download-brightgreen.svg?style=flat-square&label=Chrome&logo=google%20chrome&logoColor=white"
            }
        }, [ _c("img", {
            attrs: {
                src: "https://img.shields.io/badge/Chrome-Download-brightgreen.svg?style=flat-square&label=Chrome&logo=google%20chrome&logoColor=white"
            }
        }), _vm._v(" "), _c("span", {
            attrs: {
                slot: "placeholder"
            },
            slot: "placeholder"
        }, [ _vm._v("\n              " + _vm._s(_vm.lang("Loading")) + "\n            ") ]) ]), _vm._v(" "), _c("br"), _vm._v(" "), _c("clazy-load", {
            attrs: {
                tag: "a",
                rel: "noreferrer",
                href: "https://addons.mozilla.org/en-US/firefox/addon/mal-sync",
                src: "https://img.shields.io/badge/Firefox-Download-brightgreen.svg?style=flat-square&label=Firefox&logo=mozilla%20firefox&logoColor=white"
            }
        }, [ _c("img", {
            attrs: {
                src: "https://img.shields.io/badge/Firefox-Download-brightgreen.svg?style=flat-square&label=Firefox&logo=mozilla%20firefox&logoColor=white"
            }
        }), _vm._v(" "), _c("span", {
            attrs: {
                slot: "placeholder"
            },
            slot: "placeholder"
        }, [ _vm._v("\n              " + _vm._s(_vm.lang("Loading")) + "\n            ") ]) ]), _vm._v(" "), _c("br"), _vm._v(" "), _c("clazy-load", {
            attrs: {
                tag: "a",
                rel: "noreferrer",
                href: "https://greasyfork.org/de/scripts/372847-mal-sync",
                src: "https://img.shields.io/badge/Userscript-Download-brightgreen.svg?style=flat-square&label=Userscript&logo=javascript&logoColor=white"
            }
        }, [ _c("img", {
            attrs: {
                src: "https://img.shields.io/badge/Userscript-Download-brightgreen.svg?style=flat-square&label=Userscript&logo=javascript&logoColor=white"
            }
        }), _vm._v(" "), _c("span", {
            attrs: {
                slot: "placeholder"
            },
            slot: "placeholder"
        }, [ _vm._v("\n              " + _vm._s(_vm.lang("Loading")) + "\n            ") ]) ]) ], 1) ]) ]) ], 1) ]);
    };
    render._withStripped = !0;
    var minimalApp_settingsvue_type_script_lang_js_ = __webpack_require__(33).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(minimalApp_settingsvue_type_script_lang_js_, render, [ function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("span", {
            staticClass: "mdl-list__item-secondary-action"
        }, [ _c("select", {
            staticClass: "inputtext mdl-textfield__input",
            staticStyle: {
                outline: "none"
            },
            attrs: {
                name: "myinfo_score",
                id: "syncMode"
            }
        }, [ _c("option", {
            attrs: {
                value: "MAL"
            }
        }, [ this._v("MyAnimeList") ]), this._v(" "), _c("option", {
            attrs: {
                value: "ANILIST"
            }
        }, [ this._v("AniList") ]), this._v(" "), _c("option", {
            attrs: {
                value: "KITSU"
            }
        }, [ this._v("Kitsu") ]), this._v(" "), _c("option", {
            attrs: {
                value: "SIMKL"
            }
        }, [ this._v("Simkl") ]) ]) ]);
    }, function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("div", {
            staticClass: "mdl-card__title mdl-card--border"
        }, [ _c("h2", {
            staticClass: "mdl-card__title-text"
        }, [ this._v("MyAnimeList") ]) ]);
    }, function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("div", {
            staticClass: "mdl-card__title mdl-card--border"
        }, [ _c("h2", {
            staticClass: "mdl-card__title-text"
        }, [ this._v("MyAnimeList / AniList / Kitsu / Simkl") ]) ]);
    }, function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("div", {
            staticClass: "mdl-card__title mdl-card--border"
        }, [ _c("h2", {
            staticClass: "mdl-card__title-text"
        }, [ this._v("miniMAL") ]) ]);
    }, function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("li", {
            staticClass: "mdl-list__item"
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content"
        }, [ this._v("\n          Theme\n        ") ]), this._v(" "), _c("span", {
            staticClass: "mdl-list__item-secondary-action"
        }, [ _c("select", {
            staticClass: "inputtext mdl-textfield__input",
            staticStyle: {
                outline: "none"
            },
            attrs: {
                name: "myinfo_score",
                id: "theme"
            }
        }, [ _c("option", {
            attrs: {
                value: "light"
            }
        }, [ this._v("Light") ]), this._v(" "), _c("option", {
            attrs: {
                value: "dark"
            }
        }, [ this._v("Dark") ]), this._v(" "), _c("option", {
            attrs: {
                value: "serial"
            }
        }, [ this._v("Serial") ]) ]) ]) ]);
    }, function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("div", {
            staticClass: "mdl-card__title mdl-card--border"
        }, [ _c("h2", {
            staticClass: "mdl-card__title-text"
        }, [ this._v("Discord Rich Presence") ]), this._v(" "), _c("a", {
            staticStyle: {
                "margin-left": "auto"
            },
            attrs: {
                href: "https://github.com/lolamtisch/MALSync/wiki/Discord-Rich-Presence",
                target: "_blank"
            }
        }, [ this._v(" More Info") ]) ]);
    }, function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("li", {
            staticClass: "mdl-list__item"
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content"
        }, [ this._v("\n          List Sync\n        ") ]), this._v(" "), _c("span", {
            staticClass: "mdl-list__item-secondary-action"
        }, [ _c("button", {
            staticClass: "mdl-button mdl-js-button mdl-button--raised mdl-button--colored",
            attrs: {
                type: "button",
                id: "listSyncUi"
            }
        }, [ this._v("Sync") ]) ]) ]);
    }, function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("div", {
            staticClass: "user pop"
        }, [ _c("div", {
            staticClass: "image align-middle"
        }, [ _c("i", {
            staticClass: "material-icons",
            staticStyle: {
                color: "white",
                padding: "4px 4px",
                cursor: "pointer"
            }
        }, [ this._v("\n              arrow_right_alt\n            ") ]) ]) ]);
    } ], !1, null, null, null);
    component.options.__file = "src/minimal/minimalApp/settings.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("div", {
            staticClass: "page-content malClear",
            attrs: {
                id: "malReviews"
            }
        }, [ _c("div", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: "" == _vm.xhr,
                expression: "xhr == ''"
            } ],
            staticClass: "mdl-progress mdl-js-progress mdl-progress__indeterminate",
            staticStyle: {
                width: "100%",
                position: "absolute"
            },
            attrs: {
                id: "loadOverview"
            }
        }), _vm._v(" "), _c("span", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: "" != _vm.xhr && "" == _vm.reviews,
                expression: "xhr != '' && reviews == ''"
            } ],
            staticClass: "mdl-chip",
            staticStyle: {
                margin: "auto",
                "margin-top": "16px",
                display: "table"
            }
        }, [ _c("span", {
            staticClass: "mdl-chip__text"
        }, [ _vm._v(_vm._s(_vm.lang("NothingFound"))) ]) ]), _vm._v(" "), "" != _vm.xhr ? _c("div", {
            staticClass: "mdl-grid",
            domProps: {
                innerHTML: _vm._s(_vm.reviews)
            }
        }) : _vm._e() ]);
    };
    render._withStripped = !0;
    var minimalApp_reviewsvue_type_script_lang_js_ = __webpack_require__(52).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(minimalApp_reviewsvue_type_script_lang_js_, render, [], !1, null, null, null);
    component.options.__file = "src/minimal/minimalApp/reviews.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("div", {
            staticClass: "mdl-grid bg-cell",
            staticStyle: {
                display: "block"
            }
        }, [ _c("h5", [ _vm._v("This script removes all malsync::xxxxx:: from your list.") ]), _vm._v(" "), _c("button", {
            staticClass: "mdl-button mdl-js-button mdl-button--raised mdl-button--colored",
            staticStyle: {
                "margin-bottom": "20px"
            },
            attrs: {
                type: "button",
                disabled: _vm.animeLoading
            },
            on: {
                click: function($event) {
                    return _vm.cleanTags();
                }
            }
        }, [ _vm._v("Clean Up Mal-Sync Tags") ]), _vm._v(" "), _c("br"), _vm._v("\n  Anime:\n  "), _vm.animeLoading && !_vm.animelistLength ? _c("span", [ _vm._v("Loading") ]) : _vm._e(), _vm._v(" "), _vm.animelistLength ? _c("span", [ _vm._v(_vm._s(_vm.animelistLength - _vm.animelist.length) + "/" + _vm._s(_vm.animelistLength)) ]) : _vm._e(), _vm._v(" "), _c("br"), _vm._v("\n  Manga:\n  "), _vm.mangaLoading && !_vm.mangalistLength ? _c("span", [ _vm._v("Loading") ]) : _vm._e(), _vm._v(" "), _vm.mangalistLength ? _c("span", [ _vm._v(_vm._s(_vm.mangalistLength - _vm.mangalist.length) + "/" + _vm._s(_vm.mangalistLength)) ]) : _vm._e(), _c("br") ]);
    };
    render._withStripped = !0;
    var cleanTags_cleanTagsvue_type_script_lang_js_ = __webpack_require__(51).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(cleanTags_cleanTagsvue_type_script_lang_js_, render, [], !1, null, null, null);
    component.options.__file = "src/minimal/minimalApp/cleanTags/cleanTags.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("div", {
            staticClass: "mdl-grid bg-cell",
            staticStyle: {
                display: "block"
            }
        }, [ _vm._m(0), _vm._v(" "), _c("div", [ _vm._t("default") ], 2), _vm._v(" "), _c("div", {
            staticStyle: {
                display: "inline-block",
                "margin-right": "40px",
                "padding-left": "10px",
                "margin-bottom": "20px"
            },
            style: _vm.getTypeColor(_vm.getType("myanimelist.net"))
        }, [ _vm._v("\n    MyAnimeList "), _vm.listProvider.mal.master ? _c("span", [ _vm._v("(Master)") ]) : _vm._e(), _c("br"), _vm._v(" "), _c("span", {
            domProps: {
                innerHTML: _vm._s(_vm.listProvider.mal.text)
            }
        }), _c("br"), _vm._v(" "), _vm.listProvider.mal.list ? _c("span", [ _vm._v("List: " + _vm._s(_vm.listProvider.mal.list.length)) ]) : _vm._e(), _c("br"), _vm._v(" "), _c("br") ]), _vm._v(" "), _c("div", {
            staticStyle: {
                display: "inline-block",
                "margin-right": "40px",
                "padding-left": "10px",
                "margin-bottom": "20px"
            },
            style: _vm.getTypeColor(_vm.getType("anilist.co"))
        }, [ _vm._v("\n    AniList "), _vm.listProvider.anilist.master ? _c("span", [ _vm._v("(Master)") ]) : _vm._e(), _c("br"), _vm._v(" "), _c("span", {
            domProps: {
                innerHTML: _vm._s(_vm.listProvider.anilist.text)
            }
        }), _vm._v(" "), _c("br"), _vm._v(" "), _vm.listProvider.anilist.list ? _c("span", [ _vm._v("List: " + _vm._s(_vm.listProvider.anilist.list.length)) ]) : _vm._e(), _c("br"), _vm._v(" "), _c("br") ]), _vm._v(" "), _c("div", {
            staticStyle: {
                display: "inline-block",
                "margin-right": "40px",
                "padding-left": "10px",
                "margin-bottom": "20px"
            },
            style: _vm.getTypeColor(_vm.getType("kitsu.io"))
        }, [ _vm._v("\n    Kitsu "), _vm.listProvider.kitsu.master ? _c("span", [ _vm._v("(Master)") ]) : _vm._e(), _c("br"), _vm._v(" "), _c("span", {
            domProps: {
                innerHTML: _vm._s(_vm.listProvider.kitsu.text)
            }
        }), _c("br"), _vm._v(" "), _vm.listProvider.kitsu.list ? _c("span", [ _vm._v("List: " + _vm._s(_vm.listProvider.kitsu.list.length)) ]) : _vm._e(), _c("br"), _vm._v(" "), _c("br") ]), _vm._v(" "), _c("div", {
            staticStyle: {
                display: "inline-block",
                "margin-right": "40px",
                "padding-left": "10px",
                "margin-bottom": "20px"
            },
            style: _vm.getTypeColor(_vm.getType("simkl.com"))
        }, [ _vm._v("\n    Simkl "), _vm.listProvider.simkl.master ? _c("span", [ _vm._v("(Master)") ]) : _vm._e(), _c("br"), _vm._v(" "), _c("span", {
            domProps: {
                innerHTML: _vm._s(_vm.listProvider.simkl.text)
            }
        }), _c("br"), _vm._v(" "), _vm.listProvider.simkl.list ? _c("span", [ _vm._v("List: " + _vm._s(_vm.listProvider.simkl.list.length)) ]) : _vm._e(), _c("br"), _vm._v(" "), _c("br") ]), _c("br"), _vm._v(" "), _c("button", {
            staticClass: "mdl-button mdl-js-button mdl-button--raised mdl-button--colored",
            staticStyle: {
                "margin-bottom": "20px"
            },
            attrs: {
                type: "button",
                disabled: !_vm.listReady
            },
            on: {
                click: function($event) {
                    return _vm.syncList();
                }
            }
        }, [ _vm._v("Sync") ]), _vm._v(" "), "webextension" == _vm.apiType() ? _c("button", {
            staticClass: "mdl-button mdl-js-button mdl-button--raised mdl-button--colored",
            staticStyle: {
                "margin-bottom": "20px",
                float: "right"
            },
            attrs: {
                type: "button"
            },
            on: {
                click: function($event) {
                    return _vm.backgroundClick();
                }
            }
        }, [ _vm.isBackgroundEnabled ? [ _vm._v("\n      Background Sync Enabled\n    ") ] : [ _vm._v("\n      Sync in Background\n    ") ] ], 2) : _vm._e(), _vm._v(" "), _vm.listLength ? _c("span", [ _vm._v(_vm._s(_vm.listLength - _vm.listSyncLength) + "/" + _vm._s(_vm.listLength)) ]) : _vm._e(), _vm._v(" "), _vm._l(_vm.list, (function(item, index) {
            return item.diff ? _c("div", {
                key: index,
                staticStyle: {
                    border: "1px solid black",
                    display: "flex",
                    "flex-wrap": "wrap",
                    "margin-bottom": "10px"
                }
            }, [ _c("div", {
                staticStyle: {
                    width: "100%",
                    "border-bottom": "1px solid black",
                    padding: "0px 5px"
                }
            }, [ _vm._v(_vm._s(item.master.title)) ]), _vm._v(" "), _c("div", {
                staticStyle: {
                    width: "50px",
                    "border-right": "1px solid black",
                    padding: "5px"
                }
            }, [ _vm._v("\n      " + _vm._s(index) + "\n    ") ]), _vm._v(" "), item.master && item.master.uid ? _c("div", {
                staticClass: "master",
                staticStyle: {
                    "background-color": "#ffd5d5",
                    "border-right": "1px solid black",
                    padding: "5px 10px",
                    width: "70px"
                },
                style: _vm.getTypeColor(_vm.getType(item.master.url))
            }, [ _vm._v("\n      ID: "), _c("a", {
                attrs: {
                    target: "_blank",
                    href: item.master.url
                }
            }, [ _vm._v(_vm._s(item.master.uid)) ]), _c("br"), _vm._v("\n      EP: " + _vm._s(item.master.watchedEp)), _c("br"), _vm._v("\n      Status: " + _vm._s(item.master.status)), _c("br"), _vm._v("\n      Score: " + _vm._s(item.master.score) + "\n    ") ]) : _vm._e(), _vm._v(" "), _vm._l(item.slaves, (function(slave) {
                return _c("div", {
                    key: slave.uid,
                    staticClass: "slave",
                    staticStyle: {
                        "border-right": "1px solid black",
                        padding: "5px 10px",
                        width: "100px"
                    },
                    style: _vm.getTypeColor(_vm.getType(slave.url))
                }, [ _vm._v("\n      ID: "), _c("a", {
                    attrs: {
                        target: "_blank",
                        href: slave.url
                    }
                }, [ _vm._v(_vm._s(slave.uid)) ]), _c("br"), _vm._v("\n      EP: " + _vm._s(slave.watchedEp) + "\n        "), slave.diff && slave.diff.watchedEp ? _c("span", {
                    staticStyle: {
                        color: "green"
                    }
                }, [ _vm._v("→ " + _vm._s(slave.diff.watchedEp)) ]) : _vm._e(), _c("br"), _vm._v("\n      Status: " + _vm._s(slave.status) + "\n        "), slave.diff && slave.diff.status ? _c("span", {
                    staticStyle: {
                        color: "green"
                    }
                }, [ _vm._v("→ " + _vm._s(slave.diff.status)) ]) : _vm._e(), _c("br"), _vm._v("\n      Score: " + _vm._s(slave.score) + "\n        "), slave.diff && slave.diff.score ? _c("span", {
                    staticStyle: {
                        color: "green"
                    }
                }, [ _vm._v("→ " + _vm._s(slave.diff.score)) ]) : _vm._e() ]);
            })) ], 2) : _vm._e();
        })), _vm._v(" "), _vm.missing.length ? _c("div", [ _c("h2", [ _vm._v("Missing") ]), _vm._v(" "), _vm._l(_vm.missing, (function(item) {
            return _c("div", {
                staticStyle: {
                    border: "1px solid black",
                    display: "flex",
                    "flex-wrap": "wrap",
                    "margin-bottom": "10px"
                }
            }, [ _c("div", {
                staticStyle: {
                    width: "50px",
                    "border-right": "1px solid black",
                    padding: "5px"
                }
            }, [ _c("a", {
                attrs: {
                    target: "_blank",
                    href: item.url
                }
            }, [ _vm._v(_vm._s(item.malId)) ]) ]), _vm._v(" "), _c("div", {
                staticStyle: {
                    padding: "5px 10px"
                },
                style: _vm.getTypeColor(item.syncType)
            }, [ _vm._v("\n        " + _vm._s(item.title)), _c("br"), _vm._v("\n        EP: " + _vm._s(item.watchedEp)), _c("br"), _vm._v("\n        Status: " + _vm._s(item.status)), _c("br"), _vm._v("\n        Score: " + _vm._s(item.score) + "\n      ") ]), _vm._v(" "), item.error ? _c("div", {
                staticStyle: {
                    color: "red",
                    width: "100%",
                    "border-top": "1px solid"
                }
            }, [ _vm._v(_vm._s(item.error)) ]) : _vm._e() ]);
        })) ], 2) : _vm._e() ], 2);
    };
    render._withStripped = !0;
    var listSync_listSyncvue_type_script_lang_js_ = __webpack_require__(50).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(listSync_listSyncvue_type_script_lang_js_, render, [ function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("div", {
            staticStyle: {
                "margin-bottom": "20px"
            }
        }, [ this._v("\n    This feature is still in alpha. Use at your own risk. More info\n    "), _c("a", {
            attrs: {
                href: "https://github.com/lolamtisch/MALSync/wiki/List-Sync"
            }
        }, [ this._v("Here") ]) ]);
    } ], !1, null, null, null);
    component.options.__file = "src/minimal/minimalApp/listSync/listSync.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("div", {
            staticClass: "simkltvdetailonline",
            class: {
                Minimized: _vm.classes.minimized,
                Search: _vm.classes.search
            },
            attrs: {
                id: "malkiss"
            }
        }, [ _c("div", {
            staticClass: "simkltvdetailonlinehead"
        }, [ _c("div", {
            staticClass: "simkltvdetailonlineheadleft"
        }, [ _c("div", {
            staticClass: "simkltvdetailonlineheadtitle"
        }, [ _vm._v("Stream online:") ]), _vm._v(" "), _vm.streamUrl ? _c("a", {
            staticClass: "simkltvdetailonlineheadbutton simkltvdetailonlineheadbuttonstream",
            attrs: {
                href: _vm.streamUrl,
                target: "_blank"
            }
        }, [ _c("div", {
            staticClass: "simkltvdetailonlineheadbuttonimage"
        }, [ _c("img", {
            attrs: {
                src: _vm.favicon(_vm.streamUrl.split("/")[2]),
                alt: "",
                title: _vm.streamUrl.split("/")[2]
            }
        }) ]) ]) : _vm._e(), _vm._v(" "), _vm.continueUrl ? _c("a", {
            staticClass: "simkltvdetailonlineheadbutton",
            attrs: {
                href: _vm.continueUrl,
                target: "_blank"
            }
        }, [ _c("div", {
            staticClass: "simkltvdetailonlineheadbuttontitle"
        }, [ _vm._v("Watch next episode") ]), _vm._v(" "), _c("div", {
            staticClass: "simkltvdetailonlineheadbuttonico",
            staticStyle: {
                "margin-top": "-4px"
            }
        }) ]) : _vm._e(), _vm._v(" "), _vm.resumeUrl && !_vm.continueUrl ? _c("a", {
            staticClass: "simkltvdetailonlineheadbutton",
            attrs: {
                href: _vm.resumeUrl,
                target: "_blank"
            }
        }, [ _c("div", {
            staticClass: "simkltvdetailonlineheadbuttontitle"
        }, [ _vm._v("Resume episode") ]), _vm._v(" "), _c("img", {
            staticStyle: {
                filter: "invert(1)",
                "margin-top": "-1px"
            },
            attrs: {
                src: _vm.assetUrl("arrow-16px.png"),
                width: "16",
                height: "16"
            }
        }) ]) : _vm._e(), _vm._v(" "), null === _vm.links || Object.keys(_vm.links).length ? _c("div", {
            staticClass: "simkltvdetailonlineheadbutton Sources",
            on: {
                click: function($event) {
                    return _vm.toggleMinimized();
                }
            }
        }, [ null !== _vm.links && Object.keys(_vm.links).length ? _c("div", {
            staticClass: "simkltvdetailonlineheadbuttontitle"
        }, [ _vm._v(_vm._s(Object.keys(_vm.links).length) + " streaming sources") ]) : _c("div", {
            staticClass: "simkltvdetailonlineheadbuttontitle"
        }, [ _vm._v("Loading") ]), _vm._v(" "), _c("div", {
            staticClass: "simkltvdetailonlineheadbuttonicoarrow"
        }) ]) : _vm._e(), _vm._v(" "), null !== _vm.pageSearch ? _c("div", {
            staticClass: "simkltvdetailonlineheadbutton Search",
            on: {
                click: function($event) {
                    return _vm.toggleSearch();
                }
            }
        }, [ _c("div", {
            staticClass: "simkltvdetailonlineheadbuttontitle"
        }, [ _vm._v("Search") ]), _vm._v(" "), _c("div", {
            staticClass: "simkltvdetailonlineheadbuttonicoarrow"
        }) ]) : _vm._e() ]), _vm._v(" "), _c("div", {
            staticClass: "simkltvdetailonlineheadright",
            on: {
                click: function($event) {
                    return _vm.pressMinimized();
                }
            }
        }, [ _vm._m(0) ]) ]), _vm._v(" "), _c("div", {
            staticClass: "simkltvdetailonlineitems Search"
        }, _vm._l(_vm.pageSearch, (function(page) {
            return _c("div", {
                staticClass: "simkltvdetailonlineitemsearch"
            }, [ _c("a", {
                staticClass: "simkltvdetailonlineitemsearchhref",
                attrs: {
                    href: page.search,
                    target: "_blank"
                }
            }, [ _c("div", {
                staticClass: "simkltvdetailonlineitemsearchico"
            }, [ _c("img", {
                staticClass: "simkltvdetailonlineitemsearchicoimg",
                attrs: {
                    src: page.favicon
                }
            }) ]), _vm._v(" "), _c("div", {
                staticClass: "simkltvdetailonlineitemsearchtitle"
            }, [ _vm._v(_vm._s(page.name)) ]) ]), _vm._v(" "), page.googleSeach.length ? _c("a", {
                staticClass: "simkltvdetailonlineitemsearchgoogle",
                attrs: {
                    href: page.googleSeach,
                    target: "_blank"
                }
            }) : _vm._e() ]);
        })), 0), _vm._v(" "), _c("div", {
            staticClass: "simkltvdetailonlineitems Links"
        }, [ null === _vm.links ? _c("div", [ _vm._v("Loading") ]) : _vm._e(), _vm._v(" "), _vm._l(_vm.links, (function(streams, page) {
            return _c("div", {
                staticClass: "simkltvdetailonlineitem"
            }, [ _c("div", {
                staticClass: "simkltvdetailonlineitemtop"
            }, [ _c("div", {
                staticClass: "simkltvdetailonlineitemico"
            }, [ _c("img", {
                attrs: {
                    src: _vm.getMal2KissFavicon(streams),
                    alt: ""
                }
            }) ]), _vm._v(" "), _c("div", {
                staticClass: "simkltvdetailonlineitemname"
            }, [ _vm._v(_vm._s(page)) ]), _vm._v(" "), _c("div", {
                staticClass: "simkltvdetailonlineitemclose",
                on: {
                    click: function($event) {
                        return _vm.removeSource(page);
                    }
                }
            }) ]), _vm._v(" "), _c("div", {
                staticClass: "simkltvdetailonlineitemlinks"
            }, _vm._l(streams, (function(stream) {
                return _c("a", {
                    staticClass: "simkltvdetailonlineitemhref",
                    attrs: {
                        target: "_blank",
                        href: stream.url
                    }
                }, [ _vm._v(_vm._s(stream.title)) ]);
            })), 0) ]);
        })) ], 2) ]);
    };
    render._withStripped = !0;
    var simkl_malkissvue_type_script_lang_js_ = __webpack_require__(57).a, componentNormalizer = (__webpack_require__(319), 
    __webpack_require__(5)), component = Object(componentNormalizer.a)(simkl_malkissvue_type_script_lang_js_, render, [ function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("div", {
            staticClass: "simkltvdetailonlineheadrightclose"
        }, [ _c("div", {
            staticClass: "simkltvdetailonlineheadrightname",
            staticStyle: {
                "--data-online-block-title": "'MAL-Sync'"
            }
        }), this._v(" "), _c("div", {
            staticClass: "simkltvdetailonlineheadrightcloseico"
        }) ]);
    } ], !1, null, "55d18076", null);
    component.options.__file = "src/simkl/malkiss.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("div", [ _c("button", {
            staticClass: "mdl-button mdl-js-button mdl-button--primary refresh-updateCheck",
            on: {
                click: function($event) {
                    return _vm.load();
                }
            }
        }, [ _vm._v("\n    " + _vm._s(_vm.lang("updateCheck_Refresh")) + "\n  ") ]), _vm._v(" "), _c("button", {
            staticClass: "mdl-button mdl-js-button mdl-button--accent startCheck-updateCheck",
            on: {
                click: function($event) {
                    return _vm.startCheck();
                }
            }
        }, [ _vm._v("\n    " + _vm._s(_vm.lang("updateCheck_StartCheck")) + "\n  ") ]), _vm._v(" "), _c("button", {
            staticClass: "mdl-button mdl-js-button mdl-button--accent notification-updateCheck",
            on: {
                click: function($event) {
                    return _vm.notificationTest();
                }
            }
        }, [ _vm._v("\n    " + _vm._s(_vm.lang("updateCheck_NotificationCheck")) + "\n  ") ]), _vm._v(" "), _c("select", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.listType,
                expression: "listType"
            } ],
            staticClass: "typeSelect-updateCheck",
            staticStyle: {
                float: "right"
            },
            on: {
                change: function($event) {
                    var $$selectedVal = Array.prototype.filter.call($event.target.options, (function(o) {
                        return o.selected;
                    })).map((function(o) {
                        return "_value" in o ? o._value : o.value;
                    }));
                    _vm.listType = $event.target.multiple ? $$selectedVal : $$selectedVal[0];
                }
            }
        }, [ _c("option", {
            attrs: {
                value: "anime"
            }
        }, [ _vm._v("Anime") ]), _vm._v(" "), _c("option", {
            attrs: {
                value: "manga"
            }
        }, [ _vm._v("Manga") ]) ]), _vm._v(" "), _c("table", {
            staticClass: "mdl-data-table mdl-js-data-table mdl-data-table__cell--non-numeric mdl-shadow--2dp",
            staticStyle: {
                "white-space": "normal"
            }
        }, [ _c("tr", [ _c("th", {
            staticClass: "mdl-data-table__cell--non-numeric"
        }), _vm._v(" "), _c("th", [ _vm._v(_vm._s(_vm.lang("updateCheck_Episode"))) ]), _vm._v(" "), _c("th", [ _vm._v(_vm._s(_vm.lang("updateCheck_Message"))) ]) ]), _vm._v(" "), _vm._l(_vm.items, (function(item) {
            return _c("tr", {
                key: item.uid,
                style: {
                    backgroundColor: item.trColor
                }
            }, [ _c("th", {
                staticClass: "mdl-data-table__cell--non-numeric"
            }, [ _c("button", {
                staticClass: "mdl-button mdl-js-button mdl-button--icon delete-updateCheck",
                on: {
                    click: function($event) {
                        return _vm.deleteItem(item);
                    }
                }
            }, [ _c("i", {
                staticClass: "material-icons"
            }, [ _vm._v("delete") ]) ]), _vm._v(" "), _c("a", {
                staticStyle: {
                    color: "black"
                },
                attrs: {
                    href: item.url
                }
            }, [ _vm._v("\n          " + _vm._s(item.title) + "\n        ") ]) ]), _vm._v(" "), _c("th", [ _vm._v(_vm._s(item.episode)) ]), _vm._v(" "), _c("th", [ _vm._v(_vm._s(item.error)) ]) ]);
        })) ], 2), _vm._v(" "), _c("div", {
            staticClass: "history"
        }, [ _c("h3", [ _vm._v(_vm._s(_vm.lang("updateCheck_NotificationHistory"))) ]), _vm._v(" "), _vm._l(_vm.history, (function(historyItem) {
            return _c("a", {
                key: historyItem.id,
                staticClass: "mdl-cell bg-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--2dp mdl-grid",
                staticStyle: {
                    "text-decoration": "none !important",
                    color: "black"
                },
                attrs: {
                    href: historyItem.url
                }
            }, [ _c("img", {
                staticStyle: {
                    margin: "-8px 0px -8px -8px",
                    height: "100px",
                    width: "64px",
                    "background-color": "grey"
                },
                attrs: {
                    src: historyItem.iconUrl
                }
            }), _vm._v(" "), _c("div", {
                staticClass: "mdl-cell",
                staticStyle: {
                    "flex-grow": "100",
                    cursor: "pointer",
                    "margin-top": "0",
                    "margin-bottom": "0"
                }
            }, [ _c("span", {
                staticStyle: {
                    "font-size": "20px",
                    "font-weight": "400",
                    "line-height": "1"
                }
            }, [ _vm._v(_vm._s(historyItem.title)) ]), _vm._v(" "), _c("p", {
                staticStyle: {
                    "margin-bottom": "0",
                    "line-height": "20px",
                    "padding-top": "3px"
                }
            }, [ _vm._v(_vm._s(historyItem.message)) ]), _vm._v(" "), _c("p", {
                staticStyle: {
                    "margin-bottom": "0",
                    "line-height": "20px"
                }
            }, [ _vm._v(_vm._s(historyItem.timeDiff)) ]) ]) ]);
        })) ], 2) ]);
    };
    render._withStripped = !0;
    var minimalApp_updateCheckvue_type_script_lang_js_ = __webpack_require__(49).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(minimalApp_updateCheckvue_type_script_lang_js_, render, [], !1, null, null, null);
    component.options.__file = "src/minimal/minimalApp/updateCheck.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("div", [ _c("div", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: _vm.loading,
                expression: "loading"
            } ],
            staticClass: "mdl-progress mdl-js-progress mdl-progress__indeterminate",
            staticStyle: {
                width: "100%",
                position: "fixed",
                "z-index": "30",
                "max-width": "1377px",
                "margin-left": "auto",
                "margin-right": "auto"
            },
            attrs: {
                id: "loadMalSearchPop"
            }
        }, [ _c("div", {
            staticClass: "progressbar bar bar1",
            staticStyle: {
                width: "0%"
            }
        }), _c("div", {
            staticClass: "bufferbar bar bar2",
            staticStyle: {
                width: "100%"
            }
        }), _c("div", {
            staticClass: "auxbar bar bar3",
            staticStyle: {
                width: "0%"
            }
        }) ]), _vm._v(" "), _vm._t("default"), _vm._v(" "), _vm.loading || _vm.items.length || _vm.errorText ? _vm._e() : _c("span", {
            staticClass: "mdl-chip",
            staticStyle: {
                margin: "auto",
                "margin-top": "16px",
                display: "table"
            }
        }, [ _c("span", {
            staticClass: "mdl-chip__text"
        }, [ _vm._v(_vm._s(_vm.lang("NoEntries"))) ]) ]), _vm._v(" "), _vm.cache && _vm.errorText ? _vm._e() : _c("div", {
            staticClass: "mdl-grid",
            staticStyle: {
                "justify-content": "space-around"
            },
            attrs: {
                id: "malList"
            }
        }, [ _vm._l(_vm.items, (function(item) {
            return [ _c("bookmarksItem", {
                key: item.uid,
                ref: item.uid,
                refInFor: !0,
                attrs: {
                    item: item
                }
            }) ];
        })), _vm._v(" "), _vm._l(10, (function(n) {
            return _c("div", {
                staticClass: "listPlaceholder mdl-cell mdl-cell--2-col mdl-cell--4-col-tablet mdl-cell--6-col-phone mdl-shadow--2dp mdl-grid ",
                staticStyle: {
                    cursor: "pointer",
                    height: "0px",
                    padding: "0",
                    width: "210px",
                    "margin-top": "0",
                    "margin-bottom": "0",
                    visibility: "hidden"
                }
            });
        })) ], 2), _vm._v(" "), _vm.errorText ? _c("span", {
            staticClass: "mdl-chip",
            staticStyle: {
                margin: "16px auto 70px auto",
                display: "table",
                "padding-right": "5px",
                border: "2px solid red"
            },
            on: {
                click: function($event) {
                    !_vm.loading && _vm.load();
                }
            }
        }, [ _c("span", {
            staticClass: "mdl-chip__text",
            domProps: {
                innerHTML: _vm._s(_vm.errorText)
            }
        }), _vm._v(" "), _vm._m(0) ]) : _vm._e() ], 2);
    };
    render._withStripped = !0;
    var minimalApp_bookmarksvue_type_script_lang_js_ = __webpack_require__(46).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(minimalApp_bookmarksvue_type_script_lang_js_, render, [ function() {
        var _h = this.$createElement, _c = this._self._c || _h;
        return _c("button", {
            staticClass: "mdl-chip__action",
            attrs: {
                type: "button"
            }
        }, [ _c("i", {
            staticClass: "material-icons"
        }, [ this._v("autorenew") ]) ]);
    } ], !1, null, null, null);
    component.options.__file = "src/minimal/minimalApp/bookmarks.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("div", [ _c("div", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: _vm.loading,
                expression: "loading"
            } ],
            staticClass: "mdl-progress mdl-js-progress mdl-progress__indeterminate",
            staticStyle: {
                width: "100%",
                position: "absolute"
            },
            attrs: {
                id: "loadMalSearchPop"
            }
        }), _vm._v(" "), _vm._t("default"), _vm._v(" "), _c("div", {
            staticClass: "mdl-grid"
        }, [ _vm.loading || _vm.items.length ? _vm._e() : _c("span", {
            staticClass: "mdl-chip",
            staticStyle: {
                margin: "auto",
                "margin-top": "16px",
                display: "table"
            }
        }, [ _c("span", {
            staticClass: "mdl-chip__text"
        }, [ _vm._v(_vm._s(_vm.lang("NoEntries"))) ]) ]), _vm._v(" "), _vm._l(_vm.items, (function(item) {
            return _c("a", {
                key: item.id,
                staticClass: "mdl-cell bg-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--2dp mdl-grid searchItem nojs",
                staticStyle: {
                    cursor: "pointer"
                },
                attrs: {
                    href: item.url
                },
                on: {
                    click: function($event) {
                        return _vm.clickItem($event, item);
                    }
                }
            }, [ _c("img", {
                staticStyle: {
                    margin: "-8px 0px -8px -8px",
                    height: "100px",
                    width: "64px",
                    "background-color": "grey"
                },
                attrs: {
                    src: item.image
                }
            }), _vm._v(" "), _c("div", {
                staticClass: "mdl-cell",
                staticStyle: {
                    "flex-grow": "100",
                    cursor: "pointer",
                    "margin-top": "0",
                    "margin-bottom": "0"
                }
            }, [ _c("span", {
                staticStyle: {
                    "font-size": "20px",
                    "font-weight": "400",
                    "line-height": "1"
                }
            }, [ _vm._v(_vm._s(item.name)) ]), _vm._v(" "), _c("p", {
                staticStyle: {
                    "margin-bottom": "0",
                    "line-height": "20px",
                    "padding-top": "3px"
                }
            }, [ _vm._v(_vm._s(_vm.lang("search_Type")) + " " + _vm._s(item.media_type)) ]), _vm._v(" "), _c("p", {
                staticStyle: {
                    "margin-bottom": "0",
                    "line-height": "20px"
                }
            }, [ _vm._v(_vm._s(_vm.lang("search_Score")) + " " + _vm._s(item.score)) ]), _vm._v(" "), _c("p", {
                staticStyle: {
                    "margin-bottom": "0",
                    "line-height": "20px"
                }
            }, [ _vm._v(_vm._s(_vm.lang("search_Year")) + " " + _vm._s(item.year)) ]) ]) ]);
        })) ], 2) ], 2);
    };
    render._withStripped = !0;
    var minimalApp_searchvue_type_script_lang_js_ = __webpack_require__(48).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(minimalApp_searchvue_type_script_lang_js_, render, [], !1, null, null, null);
    component.options.__file = "src/minimal/minimalApp/search.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("div", {
            staticClass: "mdl-cell mdl-cell--2-col mdl-cell--4-col-tablet mdl-cell--6-col-phone mdl-shadow--2dp mdl-grid bookEntry",
            staticStyle: {
                position: "relative",
                height: "293px",
                padding: "0",
                width: "210px"
            },
            attrs: {
                title: _vm.prediction && _vm.prediction.text
            }
        }, [ _c("div", {
            staticClass: "data title",
            staticStyle: {
                "background-color": "#cdcdcd",
                width: "100%",
                position: "relative",
                "padding-top": "5px"
            }
        }, [ _c("div", {
            staticStyle: {
                position: "absolute",
                top: "0",
                left: "0",
                right: "0",
                bottom: "0",
                overflow: "hidden"
            }
        }, [ _c("clazy-load", {
            staticStyle: {
                position: "absolute",
                top: "0",
                left: "0",
                right: "0",
                bottom: "0",
                overflow: "hidden"
            },
            attrs: {
                src: _vm.imageHi,
                margin: "200px 0px",
                threshold: .1,
                ratio: .1
            }
        }, [ _c("img", {
            attrs: {
                src: _vm.imageHi,
                width: "100%"
            }
        }) ]) ], 1), _vm._v(" "), _vm.prediction && _vm.prediction.text ? _c("div", {
            staticClass: "mdl-shadow--2dp",
            staticStyle: {
                position: "absolute",
                top: "0",
                right: "0",
                "background-color": "rgba(255, 255, 255, 0.9)",
                padding: "0px 5px",
                margin: "5px 0",
                "text-align": "center"
            }
        }, [ _vm._v("\n      " + _vm._s(_vm.preTexter) + "\n    ") ]) : _vm._e(), _vm._v(" "), _vm.item.score ? _c("div", {
            staticStyle: {
                position: "absolute",
                top: "0",
                left: "0",
                padding: "0px 5px",
                margin: "5px 0",
                "text-align": "center"
            }
        }, [ _c("div", {
            staticStyle: {
                width: "38px",
                height: "38px",
                position: "relative"
            }
        }, [ _c("i", {
            staticClass: "material-icons",
            staticStyle: {
                color: "#3f51b5",
                position: "absolute",
                left: "0",
                top: "0px",
                "font-size": "38px"
            }
        }, [ _vm._v("star") ]), _vm._v(" "), _c("div", {
            staticStyle: {
                color: "white",
                position: "absolute",
                left: "0",
                top: "0px",
                right: "0",
                bottom: "0px",
                "text-align": "center",
                "line-height": "38px",
                "padding-top": "1px"
            }
        }, [ _vm._v(_vm._s(_vm.item.score)) ]) ]) ]) : _vm._e(), _vm._v(" "), _c("a", {
            staticStyle: {
                position: "absolute",
                top: "0",
                left: "0",
                right: "0",
                bottom: "0"
            },
            attrs: {
                href: _vm.item.url
            }
        }), _vm._v(" "), _c("span", {
            staticClass: "mdl-shadow--2dp",
            staticStyle: {
                position: "absolute",
                bottom: "0",
                display: "inline-flex",
                "background-color": "rgba(255, 255, 255, 0.9)",
                "padding-top": "5px",
                "align-items": "center",
                "justify-content": "space-between",
                left: "0",
                right: "0",
                "padding-right": "8px",
                "padding-left": "8px",
                "padding-bottom": "8px"
            }
        }, [ _c("a", {
            staticStyle: {
                color: "black",
                "text-decoration": "none"
            },
            attrs: {
                href: _vm.item.url
            }
        }, [ _vm._v("\n        " + _vm._s(_vm.item.title) + "\n      ") ]), _vm._v(" "), _c("div", {
            staticClass: "mdl-progress",
            staticStyle: {
                position: "absolute",
                top: "-4px",
                left: "0"
            },
            attrs: {
                id: "p1"
            }
        }, [ _c("div", {
            staticClass: "progressbar bar bar1",
            style: _vm.progress
        }), _vm._v(" "), _vm.hasTotalEp ? _c("div", {
            staticClass: "bufferbar bar bar2",
            staticStyle: {
                width: "calc(100% + 1px)"
            }
        }) : _vm._e(), _vm._v(" "), _vm.prediction && _vm.prediction.tagEpisode ? _c("div", {
            staticClass: "predictionbar bar kal-ep-pre",
            style: _vm.predictionBar
        }) : _vm._e(), _vm._v(" "), _c("div", {
            staticClass: "auxbar bar bar3",
            staticStyle: {
                width: "0%"
            }
        }) ]), _vm._v(" "), _c("div", {
            staticClass: "data progress mdl-chip mdl-chip--contact mdl-color--indigo-100",
            staticStyle: {
                float: "right",
                "line-height": "20px",
                height: "20px",
                "padding-right": "4px",
                "margin-left": "5px"
            }
        }, [ _c("div", {
            staticClass: "link mdl-chip__contact mdl-color--primary mdl-color-text--white",
            staticStyle: {
                "line-height": "20px",
                height: "20px",
                "margin-right": "0"
            },
            attrs: {
                title: "[" + _vm.item.watchedEp + "/" + _vm.item.totalEp + "]"
            }
        }, [ _vm._v(_vm._s(_vm.item.watchedEp)) ]), _vm._v(" "), _vm.streamUrl ? _c("a", {
            staticClass: "mal-sync-stream",
            staticStyle: {
                margin: "0 5px"
            },
            attrs: {
                title: _vm.streamUrl.split("/")[2],
                target: "_blank",
                href: _vm.streamUrl
            }
        }, [ _c("img", {
            attrs: {
                src: _vm.favicon(_vm.streamUrl.split("/")[2])
            }
        }) ]) : _vm._e(), _vm._v(" "), _vm.continueUrl ? _c("a", {
            staticClass: "nextStream",
            staticStyle: {
                margin: "0 5px 0 0",
                color: "#BABABA"
            },
            attrs: {
                title: _vm.lang("overview_Continue_" + _vm.item.type),
                target: "_blank",
                href: _vm.continueUrl
            }
        }, [ _c("img", {
            attrs: {
                src: _vm.assetUrl("double-arrow-16px.png"),
                width: "16",
                height: "16"
            }
        }) ]) : _vm._e(), _vm._v(" "), _vm.resumeUrl ? _c("a", {
            staticClass: "resumeStream",
            staticStyle: {
                margin: "0 5px 0 0",
                color: "#BABABA"
            },
            attrs: {
                title: _vm.lang("overview_Resume_Episode_" + _vm.item.type),
                target: "_blank",
                href: _vm.resumeUrl
            }
        }, [ _c("img", {
            attrs: {
                src: _vm.assetUrl("arrow-16px.png"),
                width: "16",
                height: "16"
            }
        }) ]) : _vm._e() ]) ]) ]) ]);
    };
    render._withStripped = !0;
    var minimalApp_bookmarksItemvue_type_script_lang_js_ = __webpack_require__(47).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(minimalApp_bookmarksItemvue_type_script_lang_js_, render, [], !1, null, null, null);
    component.options.__file = "src/minimal/minimalApp/bookmarksItem.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("li", {
            staticClass: "mdl-list__item"
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content"
        }, [ _vm._t("default") ], 2), _vm._v(" "), _c("span", {
            staticClass: "mdl-list__item-secondary-action"
        }, [ _c("label", {
            staticClass: "mdl-switch mdl-js-switch mdl-js-ripple-effect",
            attrs: {
                for: _vm.option
            }
        }, [ _c("input", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.value,
                expression: "value"
            } ],
            staticClass: "mdl-switch__input",
            attrs: {
                type: "checkbox",
                id: _vm.option
            },
            domProps: {
                checked: Array.isArray(_vm.value) ? _vm._i(_vm.value, null) > -1 : _vm.value
            },
            on: {
                change: function($event) {
                    var $$a = _vm.value, $$el = $event.target, $$c = !!$$el.checked;
                    if (Array.isArray($$a)) {
                        var $$i = _vm._i($$a, null);
                        $$el.checked ? $$i < 0 && (_vm.value = $$a.concat([ null ])) : $$i > -1 && (_vm.value = $$a.slice(0, $$i).concat($$a.slice($$i + 1)));
                    } else _vm.value = $$c;
                }
            }
        }) ]) ]) ]);
    };
    render._withStripped = !0;
    var components_settingsCheckboxvue_type_script_lang_js_ = __webpack_require__(34).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(components_settingsCheckboxvue_type_script_lang_js_, render, [], !1, null, null, null);
    component.options.__file = "src/minimal/minimalApp/components/settingsCheckbox.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("li", {
            staticClass: "mdl-list__item"
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content"
        }, [ _vm._t("default"), _vm._v(" "), _c("div", {
            directives: [ {
                name: "show",
                rawName: "v-show",
                value: 1 === Object.keys(_vm.value).length,
                expression: "Object.keys(value).length === 1"
            } ]
        }, [ _c("tooltip", {
            attrs: {
                tagStyle: "color: #8a1818; font-size: 20px; padding-bottom: 0;",
                iconText: "info"
            }
        }, [ _vm._v(_vm._s(_vm.lang("settings_shortcut_tooltip"))) ]) ], 1) ], 2), _vm._v(" "), _c("span", {
            staticClass: "mdl-list__item-secondary-action"
        }, [ Object.keys(_vm.value).length ? _c("div", {
            staticClass: "icon material-icons close-icon",
            on: {
                click: function($event) {
                    _vm.value = {};
                }
            }
        }, [ _vm._v("\n      close\n    ") ]) : _vm._e(), _vm._v(" "), _c("div", {
            staticClass: "mdl-textfield mdl-js-textfield"
        }, [ _c("input", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.display,
                expression: "display"
            } ],
            staticClass: "mdl-textfield__input",
            class: {
                rec: _vm.rec,
                tempRec: _vm.tempRec
            },
            domProps: {
                value: _vm.display
            },
            on: {
                keydown: function($event) {
                    return $event.preventDefault(), _vm.keyDown($event);
                },
                keyup: function($event) {
                    return _vm.keyUp($event);
                },
                blur: function($event) {
                    return _vm.focusLost();
                },
                input: function($event) {
                    $event.target.composing || (_vm.display = $event.target.value);
                }
            }
        }) ]) ]) ]);
    };
    render._withStripped = !0;
    var components_settingsShortcutvue_type_script_lang_js_ = __webpack_require__(39).a, componentNormalizer = (__webpack_require__(182), 
    __webpack_require__(5)), component = Object(componentNormalizer.a)(components_settingsShortcutvue_type_script_lang_js_, render, [], !1, null, "29cae25a", null);
    component.options.__file = "src/minimal/minimalApp/components/settingsShortcut.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("li", {
            staticClass: "mdl-list__item"
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content"
        }, [ _vm._t("default") ], 2), _vm._v(" "), _c("span", {
            staticClass: "mdl-list__item-secondary-action"
        }, [ _c("div", {
            staticClass: "mdl-textfield mdl-js-textfield",
            staticStyle: {
                "min-width": "35px",
                "max-width": "35px",
                width: "100%",
                padding: "0"
            }
        }, [ _c("input", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.value,
                expression: "value"
            } ],
            staticClass: "mdl-textfield__input",
            staticStyle: {
                "text-align": "center"
            },
            attrs: {
                type: "number",
                step: _vm.step,
                min: _vm.min,
                max: _vm.max,
                id: _vm.option
            },
            domProps: {
                value: _vm.value
            },
            on: {
                input: function($event) {
                    $event.target.composing || (_vm.value = $event.target.value);
                }
            }
        }) ]) ]) ]);
    };
    render._withStripped = !0;
    var components_settingsNumberInputvue_type_script_lang_js_ = __webpack_require__(35).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(components_settingsNumberInputvue_type_script_lang_js_, render, [], !1, null, null, null);
    component.options.__file = "src/minimal/minimalApp/components/settingsNumberInput.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("div", {
            staticClass: "mdl-cell bg-cell mdl-cell--6-col mdl-cell--8-col-tablet mdl-shadow--4dp",
            style: _vm.wrong ? "border: 1px solid red;" : ""
        }, [ _c("div", {
            staticClass: "mdl-cell",
            staticStyle: {
                width: "100%"
            }
        }, [ _vm._v("\n    The correction functionality was moved into a seperate popup for faster and better integeration. You can access it "), _vm.keys ? [ _vm._v("with the shortcut '" + _vm._s(_vm.keys) + "' or") ] : _vm._e(), _vm._v(" by clicking "), _c("a", {
            on: {
                click: function($event) {
                    return $event.stopPropagation(), _vm.openPopup($event);
                }
            }
        }, [ _vm._v("here") ]), _vm._v(".\n  ") ], 2) ]);
    };
    render._withStripped = !0;
    var minimalApp_correctionvue_type_script_lang_js_ = __webpack_require__(43).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(minimalApp_correctionvue_type_script_lang_js_, render, [], !1, null, null, null);
    component.options.__file = "src/minimal/minimalApp/correction.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("li", {
            staticClass: "mdl-list__item"
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content"
        }, [ _vm._v("\n    " + _vm._s(_vm.text) + "\n  ") ]), _vm._v(" "), _c("span", {
            staticClass: "mdl-list__item-secondary-action"
        }, [ _c("select", {
            directives: [ {
                name: "model",
                rawName: "v-model",
                value: _vm.value,
                expression: "value"
            } ],
            staticClass: "inputtext mdl-textfield__input",
            staticStyle: {
                outline: "none"
            },
            attrs: {
                name: "myinfo_score"
            },
            on: {
                change: function($event) {
                    var $$selectedVal = Array.prototype.filter.call($event.target.options, (function(o) {
                        return o.selected;
                    })).map((function(o) {
                        return "_value" in o ? o._value : o.value;
                    }));
                    _vm.value = $event.target.multiple ? $$selectedVal : $$selectedVal[0];
                }
            }
        }, [ _vm._t("default") ], 2) ]) ]);
    };
    render._withStripped = !0;
    var components_settingsDropdownvue_type_script_lang_js_ = __webpack_require__(36).a, componentNormalizer = __webpack_require__(5), component = Object(componentNormalizer.a)(components_settingsDropdownvue_type_script_lang_js_, render, [], !1, null, null, null);
    component.options.__file = "src/minimal/minimalApp/components/settingsDropdown.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("span", [ _vm.button ? _c("button", {
            staticClass: "mdl-button mdl-js-button mdl-button--raised mdl-button--colored",
            on: {
                click: function($event) {
                    return _vm.buttonClick();
                }
            }
        }, [ _vm._t("default") ], 2) : [ _c("input", {
            attrs: {
                type: "file"
            },
            on: {
                change: function($event) {
                    return _vm.handleFileUpload($event);
                }
            }
        }), _vm._v(" "), "webextension" == _vm.type() ? _c("p", {
            staticClass: "info"
        }, [ _vm._v("If you have problems please retry in "), _c("a", {
            attrs: {
                href: "#"
            },
            on: {
                click: function($event) {
                    return _vm.openWindow($event);
                }
            }
        }, [ _vm._v("this window") ]) ]) : _vm._e() ] ], 2);
    };
    render._withStripped = !0;
    var components_settingsFileUploadvue_type_script_lang_js_ = __webpack_require__(37).a, componentNormalizer = (__webpack_require__(180), 
    __webpack_require__(5)), component = Object(componentNormalizer.a)(components_settingsFileUploadvue_type_script_lang_js_, render, [], !1, null, "4b3e3631", null);
    component.options.__file = "src/minimal/minimalApp/components/settingsFileUpload.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var render = function() {
        var _vm = this, _h = _vm.$createElement, _c = _vm._self._c || _h;
        return _c("li", {
            staticClass: "mdl-list__item"
        }, [ _c("span", {
            staticClass: "mdl-list__item-primary-content",
            on: {
                click: function($event) {
                    return _vm.init();
                }
            }
        }, [ _vm._v("\n    " + _vm._s(_vm.pageName) + "\n    "), _vm.username ? _c("i", {
            staticClass: "material-icons"
        }, [ _vm._v("check_circle_outline") ]) : _c("i", {
            staticClass: "material-icons wrong"
        }, [ _vm._v("highlight_off") ]) ]), _vm._v(" "), _c("span", {
            staticClass: "mdl-list__item-secondary-action"
        }, [ _c("a", {
            attrs: {
                target: "_blank",
                href: _vm.pageAuth
            }
        }, [ _vm.username ? [ _vm._v("\n        " + _vm._s(_vm.username) + "\n      ") ] : [ _vm._v("\n        " + _vm._s(_vm.lang("settings_Authenticate")) + "\n      ") ] ], 2) ]) ]);
    };
    render._withStripped = !0;
    var components_settingsLoginvue_type_script_lang_js_ = __webpack_require__(41).a, componentNormalizer = (__webpack_require__(184), 
    __webpack_require__(5)), component = Object(componentNormalizer.a)(components_settingsLoginvue_type_script_lang_js_, render, [], !1, null, "50365ef6", null);
    component.options.__file = "src/minimal/minimalApp/components/settingsLogin.vue";
    __webpack_exports__.a = component.exports;
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    __webpack_require__.r(__webpack_exports__), function(con, api, j) {
        var _pages_syncPage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(71), _myanimelist_myanimelistClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89), _anilist_anilistClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(151), _kitsu_kitsuClass__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(152), _simkl_simklClass__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(153), _utils_scheduler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(154), _utils_firebaseNotification__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(155), _utils_player__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(27), _pages_pages__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(10), __awaiter = function(thisArg, _arguments, P, generator) {
            return new (P || (P = Promise))((function(resolve, reject) {
                function fulfilled(value) {
                    try {
                        step(generator.next(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function rejected(value) {
                    try {
                        step(generator.throw(value));
                    } catch (e) {
                        reject(e);
                    }
                }
                function step(result) {
                    var value;
                    result.done ? resolve(result.value) : (value = result.value, value instanceof P ? value : new P((function(resolve) {
                        resolve(value);
                    }))).then(fulfilled, rejected);
                }
                step((generator = generator.apply(thisArg, _arguments || [])).next());
            }));
        };
        function main() {
            if (window.location.href.indexOf("myanimelist.net") > -1) new _myanimelist_myanimelistClass__WEBPACK_IMPORTED_MODULE_1__.a(window.location.href).init(); else if (window.location.href.indexOf("anilist.co") > -1) new _anilist_anilistClass__WEBPACK_IMPORTED_MODULE_2__.a(window.location.href); else if (window.location.href.indexOf("kitsu.io") > -1) new _kitsu_kitsuClass__WEBPACK_IMPORTED_MODULE_3__.a(window.location.href); else if (window.location.href.indexOf("simkl.com") > -1) new _simkl_simklClass__WEBPACK_IMPORTED_MODULE_4__.a(window.location.href); else {
                try {
                    if (function() {
                        try {
                            return window.self !== window.top;
                        } catch (e) {
                            return !0;
                        }
                    }()) throw "iframe";
                    var page = new _pages_syncPage__WEBPACK_IMPORTED_MODULE_0__.a(window.location.href, _pages_pages__WEBPACK_IMPORTED_MODULE_8__.b);
                } catch (e) {
                    return con.info(e), void Object(_utils_player__WEBPACK_IMPORTED_MODULE_7__.a)((function(item) {
                        api.storage.set("iframePlayer", item);
                    }));
                }
                page.init(), api.storage.set("iframePlayer", "null"), setInterval((function() {
                    return __awaiter(this, void 0, void 0, (function*() {
                        var item = yield api.storage.get("iframePlayer");
                        void 0 !== item && "null" != item && (page.setVideoTime(item, (function(time) {})), 
                        api.storage.set("iframePlayer", "null"));
                    }));
                }), 2e3);
            }
            Object(_utils_firebaseNotification__WEBPACK_IMPORTED_MODULE_6__.a)(), Object(_utils_player__WEBPACK_IMPORTED_MODULE_7__.b)(shortcut => {
                switch (con.log("[content] Shortcut", shortcut), shortcut.shortcut) {
                  case "correctionShort":
                    page.openCorrectionUi();
                }
            });
        }
        console.log("%cMAL-Sync", "font-size: 40px; padding-bottom: 3px; color: white; text-shadow: -1px -1px #2e51a2, 1px -1px #2e51a2, -1px 1px #2e51a2, 1px 1px #2e51a2, 2px 2px #2e51a2, 3px 3px #2e51a2;", "Version: " + api.storage.version()), 
        api.settings.init().then(() => {
            main(), function() {
                __awaiter(this, void 0, void 0, (function*() {
                    var schedule = yield api.storage.get("timestampUpdate/release");
                    (void 0 === schedule || j.$.now() - schedule > 3456e5) && (yield Object(_utils_scheduler__WEBPACK_IMPORTED_MODULE_5__.a)(), 
                    api.storage.set("timestampUpdate/release", j.$.now()));
                }));
            }();
        });
    }.call(this, __webpack_require__(1), __webpack_require__(0), __webpack_require__(3));
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var _node_modules_to_string_loader_src_to_string_js_node_modules_css_loader_index_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_less_loader_dist_cjs_js_node_modules_vue_loader_lib_index_js_vue_loader_options_settingsFileUpload_vue_vue_type_style_index_0_id_4b3e3631_lang_less_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(38);
    __webpack_require__.n(_node_modules_to_string_loader_src_to_string_js_node_modules_css_loader_index_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_less_loader_dist_cjs_js_node_modules_vue_loader_lib_index_js_vue_loader_options_settingsFileUpload_vue_vue_type_style_index_0_id_4b3e3631_lang_less_scoped_true___WEBPACK_IMPORTED_MODULE_0__).a;
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, ".info[data-v-4b3e3631] {\n  height: 0;\n  padding: 0;\n  margin: 0;\n}\n", "" ]);
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var _node_modules_to_string_loader_src_to_string_js_node_modules_css_loader_index_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_less_loader_dist_cjs_js_node_modules_vue_loader_lib_index_js_vue_loader_options_settingsShortcut_vue_vue_type_style_index_0_id_29cae25a_lang_less_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(40);
    __webpack_require__.n(_node_modules_to_string_loader_src_to_string_js_node_modules_css_loader_index_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_less_loader_dist_cjs_js_node_modules_vue_loader_lib_index_js_vue_loader_options_settingsShortcut_vue_vue_type_style_index_0_id_29cae25a_lang_less_scoped_true___WEBPACK_IMPORTED_MODULE_0__).a;
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, ".mdl-textfield__input[data-v-29cae25a] {\n  text-align: right;\n}\n.mdl-textfield__input[data-v-29cae25a]:focus {\n  border-bottom: 1px solid green;\n}\n.mdl-textfield__input.rec[data-v-29cae25a] {\n  border-bottom: 1px solid red;\n}\n.mdl-textfield__input.tempRec[data-v-29cae25a] {\n  border-bottom: 1px solid orange;\n}\n.mdl-textfield[data-v-29cae25a] {\n  width: auto;\n  padding: 0;\n}\n.close-icon[data-v-29cae25a] {\n  vertical-align: middle;\n  margin-bottom: 3px;\n  cursor: pointer;\n}\n.mdl-list__item-secondary-action[data-v-29cae25a] {\n  display: flex;\n  align-items: center;\n}\n", "" ]);
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var _node_modules_to_string_loader_src_to_string_js_node_modules_css_loader_index_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_less_loader_dist_cjs_js_node_modules_vue_loader_lib_index_js_vue_loader_options_settingsLogin_vue_vue_type_style_index_0_id_50365ef6_lang_less_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(42);
    __webpack_require__.n(_node_modules_to_string_loader_src_to_string_js_node_modules_css_loader_index_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_less_loader_dist_cjs_js_node_modules_vue_loader_lib_index_js_vue_loader_options_settingsLogin_vue_vue_type_style_index_0_id_50365ef6_lang_less_scoped_true___WEBPACK_IMPORTED_MODULE_0__).a;
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, ".material-icons[data-v-50365ef6] {\n  margin-left: 5px;\n}\n.material-icons.wrong[data-v-50365ef6] {\n  color: red;\n  cursor: pointer;\n}\n", "" ]);
}, function(module, exports, __webpack_require__) {
    (function(global) {
        var scope = void 0 !== global && global || "undefined" != typeof self && self || window, apply = Function.prototype.apply;
        function Timeout(id, clearFn) {
            this._id = id, this._clearFn = clearFn;
        }
        exports.setTimeout = function() {
            return new Timeout(apply.call(setTimeout, scope, arguments), clearTimeout);
        }, exports.setInterval = function() {
            return new Timeout(apply.call(setInterval, scope, arguments), clearInterval);
        }, exports.clearTimeout = exports.clearInterval = function(timeout) {
            timeout && timeout.close();
        }, Timeout.prototype.unref = Timeout.prototype.ref = function() {}, Timeout.prototype.close = function() {
            this._clearFn.call(scope, this._id);
        }, exports.enroll = function(item, msecs) {
            clearTimeout(item._idleTimeoutId), item._idleTimeout = msecs;
        }, exports.unenroll = function(item) {
            clearTimeout(item._idleTimeoutId), item._idleTimeout = -1;
        }, exports._unrefActive = exports.active = function(item) {
            clearTimeout(item._idleTimeoutId);
            var msecs = item._idleTimeout;
            msecs >= 0 && (item._idleTimeoutId = setTimeout((function() {
                item._onTimeout && item._onTimeout();
            }), msecs));
        }, __webpack_require__(187), exports.setImmediate = "undefined" != typeof self && self.setImmediate || void 0 !== global && global.setImmediate || this && this.setImmediate, 
        exports.clearImmediate = "undefined" != typeof self && self.clearImmediate || void 0 !== global && global.clearImmediate || this && this.clearImmediate;
    }).call(this, __webpack_require__(65));
}, function(module, exports, __webpack_require__) {
    (function(global, process) {
        !function(global, undefined) {
            "use strict";
            if (!global.setImmediate) {
                var registerImmediate, html, channel, messagePrefix, onGlobalMessage, nextHandle = 1, tasksByHandle = {}, currentlyRunningATask = !1, doc = global.document, attachTo = Object.getPrototypeOf && Object.getPrototypeOf(global);
                attachTo = attachTo && attachTo.setTimeout ? attachTo : global, "[object process]" === {}.toString.call(global.process) ? registerImmediate = function(handle) {
                    process.nextTick((function() {
                        runIfPresent(handle);
                    }));
                } : !function() {
                    if (global.postMessage && !global.importScripts) {
                        var postMessageIsAsynchronous = !0, oldOnMessage = global.onmessage;
                        return global.onmessage = function() {
                            postMessageIsAsynchronous = !1;
                        }, global.postMessage("", "*"), global.onmessage = oldOnMessage, postMessageIsAsynchronous;
                    }
                }() ? global.MessageChannel ? ((channel = new MessageChannel).port1.onmessage = function(event) {
                    runIfPresent(event.data);
                }, registerImmediate = function(handle) {
                    channel.port2.postMessage(handle);
                }) : doc && "onreadystatechange" in doc.createElement("script") ? (html = doc.documentElement, 
                registerImmediate = function(handle) {
                    var script = doc.createElement("script");
                    script.onreadystatechange = function() {
                        runIfPresent(handle), script.onreadystatechange = null, html.removeChild(script), 
                        script = null;
                    }, html.appendChild(script);
                }) : registerImmediate = function(handle) {
                    setTimeout(runIfPresent, 0, handle);
                } : (messagePrefix = "setImmediate$" + Math.random() + "$", onGlobalMessage = function(event) {
                    event.source === global && "string" == typeof event.data && 0 === event.data.indexOf(messagePrefix) && runIfPresent(+event.data.slice(messagePrefix.length));
                }, global.addEventListener ? global.addEventListener("message", onGlobalMessage, !1) : global.attachEvent("onmessage", onGlobalMessage), 
                registerImmediate = function(handle) {
                    global.postMessage(messagePrefix + handle, "*");
                }), attachTo.setImmediate = function(callback) {
                    "function" != typeof callback && (callback = new Function("" + callback));
                    for (var args = new Array(arguments.length - 1), i = 0; i < args.length; i++) args[i] = arguments[i + 1];
                    var task = {
                        callback: callback,
                        args: args
                    };
                    return tasksByHandle[nextHandle] = task, registerImmediate(nextHandle), nextHandle++;
                }, attachTo.clearImmediate = clearImmediate;
            }
            function clearImmediate(handle) {
                delete tasksByHandle[handle];
            }
            function runIfPresent(handle) {
                if (currentlyRunningATask) setTimeout(runIfPresent, 0, handle); else {
                    var task = tasksByHandle[handle];
                    if (task) {
                        currentlyRunningATask = !0;
                        try {
                            !function(task) {
                                var callback = task.callback, args = task.args;
                                switch (args.length) {
                                  case 0:
                                    callback();
                                    break;

                                  case 1:
                                    callback(args[0]);
                                    break;

                                  case 2:
                                    callback(args[0], args[1]);
                                    break;

                                  case 3:
                                    callback(args[0], args[1], args[2]);
                                    break;

                                  default:
                                    callback.apply(undefined, args);
                                }
                            }(task);
                        } finally {
                            clearImmediate(handle), currentlyRunningATask = !1;
                        }
                    }
                }
            }
        }("undefined" == typeof self ? void 0 === global ? this : global : self);
    }).call(this, __webpack_require__(65), __webpack_require__(188));
}, function(module, exports) {
    var cachedSetTimeout, cachedClearTimeout, process = module.exports = {};
    function defaultSetTimout() {
        throw new Error("setTimeout has not been defined");
    }
    function defaultClearTimeout() {
        throw new Error("clearTimeout has not been defined");
    }
    function runTimeout(fun) {
        if (cachedSetTimeout === setTimeout) return setTimeout(fun, 0);
        if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) return cachedSetTimeout = setTimeout, 
        setTimeout(fun, 0);
        try {
            return cachedSetTimeout(fun, 0);
        } catch (e) {
            try {
                return cachedSetTimeout.call(null, fun, 0);
            } catch (e) {
                return cachedSetTimeout.call(this, fun, 0);
            }
        }
    }
    !function() {
        try {
            cachedSetTimeout = "function" == typeof setTimeout ? setTimeout : defaultSetTimout;
        } catch (e) {
            cachedSetTimeout = defaultSetTimout;
        }
        try {
            cachedClearTimeout = "function" == typeof clearTimeout ? clearTimeout : defaultClearTimeout;
        } catch (e) {
            cachedClearTimeout = defaultClearTimeout;
        }
    }();
    var currentQueue, queue = [], draining = !1, queueIndex = -1;
    function cleanUpNextTick() {
        draining && currentQueue && (draining = !1, currentQueue.length ? queue = currentQueue.concat(queue) : queueIndex = -1, 
        queue.length && drainQueue());
    }
    function drainQueue() {
        if (!draining) {
            var timeout = runTimeout(cleanUpNextTick);
            draining = !0;
            for (var len = queue.length; len; ) {
                for (currentQueue = queue, queue = []; ++queueIndex < len; ) currentQueue && currentQueue[queueIndex].run();
                queueIndex = -1, len = queue.length;
            }
            currentQueue = null, draining = !1, function(marker) {
                if (cachedClearTimeout === clearTimeout) return clearTimeout(marker);
                if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) return cachedClearTimeout = clearTimeout, 
                clearTimeout(marker);
                try {
                    cachedClearTimeout(marker);
                } catch (e) {
                    try {
                        return cachedClearTimeout.call(null, marker);
                    } catch (e) {
                        return cachedClearTimeout.call(this, marker);
                    }
                }
            }(timeout);
        }
    }
    function Item(fun, array) {
        this.fun = fun, this.array = array;
    }
    function noop() {}
    process.nextTick = function(fun) {
        var args = new Array(arguments.length - 1);
        if (arguments.length > 1) for (var i = 1; i < arguments.length; i++) args[i - 1] = arguments[i];
        queue.push(new Item(fun, args)), 1 !== queue.length || draining || runTimeout(drainQueue);
    }, Item.prototype.run = function() {
        this.fun.apply(null, this.array);
    }, process.title = "browser", process.browser = !0, process.env = {}, process.argv = [], 
    process.version = "", process.versions = {}, process.on = noop, process.addListener = noop, 
    process.once = noop, process.off = noop, process.removeListener = noop, process.removeAllListeners = noop, 
    process.emit = noop, process.prependListener = noop, process.prependOnceListener = noop, 
    process.listeners = function(name) {
        return [];
    }, process.binding = function(name) {
        throw new Error("process.binding is not supported");
    }, process.cwd = function() {
        return "/";
    }, process.chdir = function(dir) {
        throw new Error("process.chdir is not supported");
    }, process.umask = function() {
        return 0;
    };
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(190);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, 'body::-webkit-scrollbar {\n  display: none !important;\n}\n#material .mdl-card__supporting-text {\n  width: initial;\n}\n.mdl-layout__header .mdl-textfield__label:after {\n  background-color: red !important;\n}\n#fixed-tab-1 .loading,\n#fixed-tab-1 .loaded {\n  -o-transition: opacity 0.3s linear;\n  -moz-transition: opacity 0.3s linear;\n  -webkit-transition: opacity 0.3s linear;\n  transition: opacity 0.3s linear;\n}\n#fixed-tab-1 .loading {\n  opacity: 0.5;\n}\n#fixed-tab-1 .loaded {\n  opacity: 1;\n}\n@media (min-width: 840px) {\n  #fixed-tab-1 .stats-block > ul {\n    justify-content: left !important;\n  }\n}\n.alternative-list .mdl-list {\n  max-width: 100%;\n  margin: 0;\n  padding: 0;\n}\n.alternative-list .mdl-list__item {\n  height: auto;\n}\n.alternative-list .mdl-list__item-primary-content {\n  height: auto !important;\n}\n.alternative-list .mdl-list__item-primary-content a {\n  display: inline-block;\n}\n.alternative-list .mdl-list__item-text-body {\n  height: auto !important;\n}\n.coverinfo .mdl-chip {\n  height: auto;\n}\n.coverinfo .mdl-chip .mdl-chip__text {\n  white-space: normal;\n  line-height: 24px;\n}\n.mdl-layout__container {\n  background-color: white;\n}\n.mdl-layout {\n  max-width: 1385px;\n  margin-left: auto;\n  margin-right: auto;\n  position: relative;\n  background-color: #f9f9f9;\n}\n.mdl-layout__content {\n  scrollbar-width: thin;\n}\n.mdl-layout__content::-webkit-scrollbar {\n  width: 10px !important;\n  background-color: #F5F5F5;\n}\n.mdl-layout__content::-webkit-scrollbar-thumb {\n  background-color: #c1c1c1 !important;\n}\na {\n  text-decoration: none;\n}\n.mdl-layout__tab-panel a:hover {\n  text-decoration: underline;\n}\n.bg-cell {\n  background-color: #fefefe;\n}\n#material.simple-header .mdl-layout__header .mdl-layout__tab-bar-container {\n  display: none;\n}\n.newEp {\n  position: absolute;\n  background-color: #dedede;\n  height: 25px;\n  width: 29px;\n  top: 3px;\n  right: -4px;\n  background-repeat: no-repeat;\n  background-position: 4px 3px;\n  background-image: url(https://github.com/google/material-design-icons/blob/master/social/1x_web/ic_notifications_none_black_18dp.png?raw=true);\n}\n.searchItem {\n  text-decoration: none !important;\n  color: black;\n}\n#material .mdl-layout__drawer-button {\n  background-color: transparent;\n}\n#material .mdl-layout__drawer-button:hover {\n  background-color: rgba(158, 158, 158, 0.2);\n}\n#material .mdl-layout__tab-bar {\n  background-color: transparent;\n}\n#material .mdl-layout__tab {\n  cursor: pointer;\n}\n#material.settings-only .mdl-layout__header .mdl-layout__tab-bar-container,\n#material.pop-over .mdl-layout__header .mdl-layout__tab-bar-container {\n  display: none;\n}\n#material.settings-only #fixed-tab-5.mdl-layout__tab-panel {\n  display: block !important;\n}\n#characterList .loading {\n  background-color: #cdcdcd;\n  min-height: 196px;\n}\n.malImage.loading {\n  background-color: #cdcdcd;\n  padding-bottom: 133.33%;\n}\n#Mal-Sync-Popup #material-fullscreen {\n  display: none !important;\n}\n#Mal-Sync-Popup .settings-only #book.open .bookIcon {\n  display: none;\n}\n#Mal-Sync-Popup .settings-only #book.open .settingsIcon {\n  display: block !important;\n}\n#material a.button_edit {\n  text-decoration: none;\n  background-color: #efefef;\n  border-bottom: 1px solid #ebebeb;\n  font-size: 10px;\n  line-height: 1em;\n  margin: 0;\n  opacity: 1;\n  padding: 2px 4px;\n  -webkit-transition-duration: 0.3s;\n  transition-duration: 0.3s;\n  -webkit-transition-property: all;\n  transition-property: all;\n  -webkit-transition-timing-function: ease-in-out;\n  transition-timing-function: ease-in-out;\n  display: inline-block;\n  font-family: Avenir, lucida grande, tahoma, verdana, arial, sans-serif;\n  height: 9px;\n}\n#material a.button_edit.reading,\n#material a.button_edit.watching {\n  background-color: #2db039;\n  color: #fff;\n}\n#material a.button_edit.reading:hover,\n#material a.button_edit.watching:hover {\n  opacity: 0.7;\n}\n#material a.button_edit.plantoread,\n#material a.button_edit.plantowatch {\n  background-color: #c3c3c3;\n  color: #fff;\n}\n#material a.button_edit.plantoread:hover,\n#material a.button_edit.plantowatch:hover {\n  opacity: 0.7;\n}\n#material a.button_edit.completed {\n  background-color: #26448f;\n  color: #fff;\n}\n#material a.button_edit.completed:hover {\n  opacity: 0.7;\n}\n#material a.button_edit.on-hold {\n  background-color: #f1c83e;\n  color: #fff;\n}\n#material a.button_edit.dropped {\n  background-color: #a12f31;\n  color: #fff;\n}\n#material a.button_edit.dropped:hover {\n  opacity: 0.7;\n}\n#material #contributer {\n  padding: 15px;\n  padding-bottom: 0;\n}\n#material #contributer .group {\n  display: none;\n  text-transform: uppercase;\n  font-size: 12px;\n  padding: 5px 0px;\n  font-weight: bold;\n  color: #707070;\n  opacity: 0;\n  -webkit-transition: 1s;\n  -o-transition: 1s;\n  transition: 1s;\n}\n#material #contributer .user {\n  height: 40px;\n  display: inline-block;\n  white-space: nowrap;\n  overflow: hidden;\n}\n#material #contributer .user .image {\n  position: relative;\n  vertical-align: middle!important;\n  display: inline-block;\n  height: 32px;\n  width: 32px;\n  margin-right: 10px;\n  border-radius: 50%;\n  overflow: hidden;\n  border: 1px solid #e0e0e0;\n}\n#material #contributer .user .image .gif {\n  position: absolute;\n  display: none;\n}\n#material #contributer .user .text {\n  vertical-align: middle!important;\n  display: none;\n  line-height: 100%;\n}\n#material #contributer .user.pop .image {\n  background-color: #3f51b5;\n}\n#material #contributer .discord {\n  display: none;\n}\n#material #contributer .inline-block {\n  display: inline-block;\n}\n#material #contributer.open {\n  padding-bottom: 15px;\n}\n#material #contributer.open .group {\n  opacity: 1;\n  display: block;\n}\n#material #contributer.open .user {\n  display: block;\n}\n#material #contributer.open .user .image .gif {\n  display: block;\n}\n#material #contributer.open .user .text {\n  display: inline-block;\n}\n#material #contributer.open .user.pop {\n  display: none;\n}\n#material #contributer.open .discord {\n  display: block;\n}\n#material #contributer.open .inline-block {\n  display: block;\n}\n#offsetUi {\n  display: flex;\n  justify-content: space-around;\n}\n#offsetUi .offsetBox {\n  text-align: center;\n  min-width: 40px;\n}\n#offsetUi .offsetBox .top {\n  padding: 5px 10px;\n}\n#offsetUi .offsetBox .bottom {\n  padding: 5px 10px;\n}\n#material.dark p,\n#material.serial p {\n  color: #ffffff !important;\n}\n#material.dark .mdl-layout__header,\n#material.serial .mdl-layout__header {\n  background-color: #212121;\n}\n#material.dark .mdl-layout__container,\n#material.serial .mdl-layout__container {\n  background-color: #2b2b2b;\n}\n#material.dark .mdl-layout__content,\n#material.serial .mdl-layout__content {\n  background-color: #212121;\n}\n#material.dark .mdl-layout__content a,\n#material.serial .mdl-layout__content a {\n  color: #F43B7A;\n}\n#material.dark #malList .mdl-cell div.mdl-shadow--2dp,\n#material.serial #malList .mdl-cell div.mdl-shadow--2dp {\n  background-color: #484848e6 !important;\n}\n#material.dark #malList .mdl-cell div span,\n#material.serial #malList .mdl-cell div span {\n  background-color: #484848e6 !important;\n}\n#material.dark #malList .mdl-cell div span a,\n#material.serial #malList .mdl-cell div span a {\n  color: #ffffff !important;\n}\n#material.dark #malReviews .lightLink,\n#material.serial #malReviews .lightLink {\n  color: white;\n}\n#material.dark .bg-cell,\n#material.serial .bg-cell {\n  background-color: #484848;\n}\n#material.dark .bg-cell .mdl-chip__text,\n#material.serial .bg-cell .mdl-chip__text {\n  background-color: #dedede !important;\n}\n#material.dark .bg-cell .mdl-card__supporting-text,\n#material.serial .bg-cell .mdl-card__supporting-text {\n  color: #ffffff !important;\n}\n#material.dark .bg-cell .mdl-card__title-text,\n#material.serial .bg-cell .mdl-card__title-text {\n  color: #ffffff !important;\n}\n#material.dark .bg-cell li,\n#material.serial .bg-cell li {\n  color: #ffffff !important;\n}\n#material.dark .bg-cell li span,\n#material.serial .bg-cell li span {\n  color: #ffffff !important;\n}\n#material.dark .bg-cell div.data.title,\n#material.serial .bg-cell div.data.title {\n  background-color: #484848 !important;\n}\n#material.dark div.mdl-grid,\n#material.serial div.mdl-grid {\n  color: #ffffff;\n}\n#material.dark div.mdl-grid #updateCheckAgo,\n#material.serial div.mdl-grid #updateCheckAgo {\n  color: #ffffff !important;\n}\n#material.dark #malNotOnMal,\n#material.serial #malNotOnMal {\n  background-color: #ffffff;\n}\n#material.dark .mdl-textfield__input,\n#material.serial .mdl-textfield__input {\n  background-color: #484848 !important;\n}\n#material.dark .mdl-layout__content::-webkit-scrollbar,\n#material.serial .mdl-layout__content::-webkit-scrollbar {\n  background-color: #484848;\n}\n#material.dark .mdl-layout__content::-webkit-scrollbar-thumb,\n#material.serial .mdl-layout__content::-webkit-scrollbar-thumb {\n  background-color: #ffffff !important;\n}\n#material.dark .mdl-layout__content,\n#material.serial .mdl-layout__content {\n  scrollbar-color: #ffffff #484848;\n}\n#material.dark .mdl-progress .bufferbar,\n#material.serial .mdl-progress .bufferbar {\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7)), linear-gradient(to right, #4c61d6, #4c61d6);\n}\n#material.dark .mdl-progress .auxbar,\n#material.serial .mdl-progress .auxbar {\n  visibility: hidden !important;\n}\n#material.dark .mdl-switch.is-checked .mdl-switch__thumb,\n#material.serial .mdl-switch.is-checked .mdl-switch__thumb {\n  background-color: #4c61d6;\n}\n#material.dark .mdl-switch.is-checked .mdl-switch__track,\n#material.serial .mdl-switch.is-checked .mdl-switch__track {\n  background-color: #6e7fdd;\n}\n#material.dark .mdl-layout.is-upgraded .mdl-layout__tab.is-active::after,\n#material.serial .mdl-layout.is-upgraded .mdl-layout__tab.is-active::after {\n  background-color: #F43B7A !important;\n}\n#material.dark .mdl-layout__content a:not(table .mdl-data-table),\n#material.serial .mdl-layout__content a:not(table .mdl-data-table) {\n  color: #F43B7A !important;\n}\n#material.dark .mdl-textfield__label,\n#material.serial .mdl-textfield__label {\n  color: #F43B7A;\n}\n#material.dark .mdl-textfield,\n#material.serial .mdl-textfield {\n  color: #ffffff;\n}\n#material.dark .mdl-textfield .mdl-textfield__label,\n#material.serial .mdl-textfield .mdl-textfield__label {\n  color: #F43B7A !important;\n}\n#material.dark .mdl-textfield .mdl-textfield__label:after,\n#material.serial .mdl-textfield .mdl-textfield__label:after {\n  background-color: #F43B7A;\n}\n#material.dark #characterList .loading,\n#material.serial #characterList .loading {\n  background-color: #212121;\n}\n#material.dark .malImage.loading,\n#material.serial .malImage.loading {\n  background-color: #212121;\n}\n#material.dark .searchItem,\n#material.serial .searchItem {\n  color: #ffffff;\n}\n#material.dark .discord div:not(.loaded),\n#material.serial .discord div:not(.loaded) {\n  background-image: -webkit-linear-gradient(top, #484848 0%, #738bd7 74%) !important;\n}\n#material.dark div .history h3,\n#material.serial div .history h3 {\n  color: #ffffff;\n}\n#material.dark div .history a,\n#material.serial div .history a {\n  color: #F43B7A !important;\n}\n@keyframes flicker {\n  0% {\n    opacity: 0.27861;\n  }\n  5% {\n    opacity: 0.34769;\n  }\n  10% {\n    opacity: 0.23604;\n  }\n  15% {\n    opacity: 0.90626;\n  }\n  20% {\n    opacity: 0.18128;\n  }\n  25% {\n    opacity: 0.83891;\n  }\n  30% {\n    opacity: 0.65583;\n  }\n  35% {\n    opacity: 0.67807;\n  }\n  40% {\n    opacity: 0.26559;\n  }\n  45% {\n    opacity: 0.84693;\n  }\n  50% {\n    opacity: 0.96019;\n  }\n  55% {\n    opacity: 0.08594;\n  }\n  60% {\n    opacity: 0.20313;\n  }\n  65% {\n    opacity: 0.71988;\n  }\n  70% {\n    opacity: 0.53455;\n  }\n  75% {\n    opacity: 0.37288;\n  }\n  80% {\n    opacity: 0.71428;\n  }\n  85% {\n    opacity: 0.70419;\n  }\n  90% {\n    opacity: 0.7003;\n  }\n  95% {\n    opacity: 0.36108;\n  }\n  100% {\n    opacity: 0.24387;\n  }\n}\n@keyframes fadein {\n  0% {\n    box-shadow: 0 0 2px 0px #bddbe040;\n    filter: brightness(30);\n    opacity: 0.1;\n  }\n  2% {\n    -webkit-filter: contrast(0) brightness(0);\n    filter: contrast(0) brightness(0);\n    opacity: 0;\n  }\n  40% {\n    filter: contrast(1) brightness(1.1) saturate(1.1);\n    opacity: 1;\n  }\n  100% {\n    filter: contrast(1) brightness(1) saturate(1);\n    opacity: 1;\n  }\n}\n#material.serial .mdl-layout__header {\n  box-shadow: 0 0 10px 0px #bddbe04f;\n}\n#material.serial .bg-cell,\n#material.serial .bookEntry,\n#material.serial #malList select {\n  position: relative;\n  border-radius: 7px;\n  overflow: hidden;\n  box-shadow: 0 0 10px 0px #bddbe040;\n  animation: fadein 2s;\n}\n#material.serial .bg-cell::after,\n#material.serial .bookEntry::after,\n#material.serial #malList select::after {\n  content: " ";\n  display: block;\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  background: rgba(18, 16, 16, 0.03);\n  opacity: 0;\n  z-index: 99;\n  pointer-events: none;\n  animation: flicker 1.15s infinite;\n}\n#material.serial .mdl-layout {\n  filter: contrast(130%);\n}\n#material.serial .mdl-layout__content::-webkit-scrollbar-thumb {\n  box-shadow: 0 0 31px 24px #feffff;\n}\n#material.serial .mdl-layout__content::-webkit-scrollbar {\n  background-color: transparent !important;\n}\n#material.serial img {\n  filter: contrast(130%);\n  background-blend-mode: screen, difference, lighten;\n}\n#material.serial .mdl-layout__header {\n  position: relative;\n  border-radius: 0px;\n}\n#material.serial .mdl-layout__header::before {\n  filter: saturate(2);\n  content: \'\';\n  position: absolute;\n  background-image: url(https://i.imgur.com/U1DCaLV.gif);\n  background-size: cover;\n  top: -209px;\n  left: 0;\n  right: 0;\n  bottom: 0;\n}\n#material.serial::after {\n  content: " ";\n  display: block;\n  position: absolute;\n  top: 0;\n  left: 0;\n  bottom: 0;\n  right: 0;\n  background: linear-gradient(rgba(18, 16, 16, 0) 50%, rgba(0, 0, 0, 0.5) 50%), linear-gradient(90deg, rgba(255, 0, 0, 0.12), rgba(0, 255, 0, 0.04), rgba(0, 0, 255, 0.12));\n  z-index: 99;\n  background-size: 100% 3px, 3px 100%;\n  pointer-events: none;\n  opacity: 0.4;\n}\n@keyframes turn-off {\n  100% {\n    transform: scale(1, 1) translate3d(0, 0, 0);\n    -webkit-filter: brightness(1);\n    filter: brightness(1);\n    opacity: 1;\n  }\n  80% {\n    transform: scale(1, 1.3) translate3d(0, 0, 0);\n    -webkit-filter: brightness(1);\n    filter: brightness(1);\n    opacity: 1;\n  }\n  40% {\n    transform: scale(1.3, 0.001) translate3d(0, 0, 0);\n    -webkit-filter: brightness(10);\n    filter: brightness(10);\n  }\n  0% {\n    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);\n    transform: scale(0, 0.0001) translate3d(0, 0, 0);\n    -webkit-filter: brightness(50);\n    filter: brightness(50);\n  }\n}\n#cr #material.serial .mdl-layout__container {\n  background-color: black;\n}\n#cr #material.serial .mdl-layout__container .mdl-layout {\n  animation: turn-off 1s linear;\n  animation-fill-mode: backwards;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(192);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '::-webkit-scrollbar {\n  display: none;\n}\n#material {\n  all: initial;\n  color: white;\n  font-family: "Helvetica", "Arial", sans-serif;\n  font-size: 14px;\n  font-weight: 400;\n  line-height: 20px;\n}\n#material * {\n  box-sizing: border-box;\n}\n#material .scroll {\n  overflow-y: auto;\n  max-height: 80vh;\n  scrollbar-width: none;\n}\n#material .close {\n  display: block;\n  margin-top: 15px;\n  text-align: center;\n  cursor: pointer;\n}\n#material .mdl-color--primary {\n  background-color: #3f51b5;\n}\n#material p {\n  font-weight: 400;\n  line-height: 24px;\n  font-size: 14px;\n  letter-spacing: 0;\n  margin: 0 0 16px;\n}\n#material a {\n  color: #F43B7A;\n  text-decoration: none !important;\n}\n#material .search .input {\n  width: 100%;\n}\n#material .result {\n  cursor: pointer;\n  display: flex;\n  margin-bottom: 15px;\n  background-color: #484848;\n  max-width: 400px;\n}\n#material .result.active {\n  border: 1px solid #F43B7A;\n  border-style: dashed;\n}\n#material .result .image {\n  height: 100px;\n  width: 64px;\n  min-width: 64px;\n  background-color: grey;\n}\n#material .result .image img {\n  height: 100%;\n  width: 100%;\n  object-fit: cover;\n}\n#material .result .right {\n  flex-grow: 100;\n  cursor: pointer;\n  margin-top: 0;\n  margin-bottom: 0;\n  padding: 5px 10px;\n  display: flex;\n  flex-direction: column;\n  justify-content: space-between;\n}\n#material .result .right .title {\n  font-size: 20px;\n  font-weight: 400;\n  line-height: 1;\n  margin-bottom: 3px;\n}\n#material .result .right p {\n  margin-bottom: 0;\n  line-height: 20px;\n  color: white;\n}\n#material .inputButton {\n  display: flex;\n  align-items: center;\n}\n#material .inputButton .group {\n  width: 100%;\n}\n#material .group {\n  position: relative;\n  margin-bottom: 15px;\n  margin-top: 25px;\n}\n#material .group input {\n  font-size: 18px;\n  padding: 10px 10px 10px 5px;\n  display: block;\n  background-color: transparent;\n  color: white;\n  width: 100%;\n  border: none;\n  background-color: #484848;\n  border-bottom: 1px solid white;\n}\n#material .group input:focus {\n  outline: none;\n}\n#material .group label {\n  color: #999;\n  font-size: 18px;\n  font-weight: normal;\n  position: absolute;\n  pointer-events: none;\n  left: 5px;\n  top: 10px;\n  transition: 0.2s ease all;\n  -moz-transition: 0.2s ease all;\n  -webkit-transition: 0.2s ease all;\n}\n#material .group input:focus ~ label,\n#material .group input:valid ~ label {\n  left: 0;\n  top: -20px;\n  font-size: 14px;\n  color: #F43B7A;\n}\n#material .group .bar {\n  position: relative;\n  display: block;\n}\n#material .group .bar:before,\n#material .group .bar:after {\n  content: \'\';\n  height: 2px;\n  width: 0;\n  bottom: 0px;\n  position: absolute;\n  background: #F43B7A;\n  transition: 0.2s ease all;\n  -moz-transition: 0.2s ease all;\n  -webkit-transition: 0.2s ease all;\n}\n#material .group .bar:before {\n  left: 50%;\n}\n#material .group .bar:after {\n  right: 50%;\n}\n#material .group input:focus ~ .bar:before,\n#material .group input:focus ~ .bar:after {\n  width: 50%;\n}\n#material .mdl-progress {\n  display: block;\n  position: relative;\n  height: 3px;\n  width: 500px;\n  max-width: 100%;\n}\n#material .mdl-progress > .bar {\n  display: block;\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  width: 0%;\n  transition: width 0.2s linear;\n}\n#material .mdl-progress > .bar1 {\n  background-color: #3f51b5;\n  animation-name: indeterminate1;\n  animation-duration: 2s;\n  animation-iteration-count: infinite;\n  animation-timing-function: linear;\n}\n@keyframes indeterminate1 {\n  0% {\n    left: 0%;\n    width: 0%;\n  }\n  50% {\n    left: 25%;\n    width: 75%;\n  }\n  75% {\n    left: 100%;\n    width: 0%;\n  }\n}\n#material .loadingBar {\n  position: relative;\n}\n#material .loadingBar .mdl-progress {\n  position: absolute;\n  top: -9px;\n}\n#material button {\n  margin-top: 10px;\n  margin-left: 10px;\n  background-color: #3f51b5;\n  color: white;\n  border: none;\n  border-radius: 2px;\n  position: relative;\n  height: 42px;\n  padding: 0 16px;\n  display: inline-block;\n  font-size: 14px;\n  font-weight: 500;\n  text-transform: uppercase;\n  letter-spacing: 0;\n  cursor: pointer;\n  text-decoration: none;\n  text-align: center;\n  line-height: 36px;\n  vertical-align: middle;\n}\n#material #offsetUi {\n  display: flex;\n  justify-content: space-around;\n}\n#material #offsetUi .offsetBox {\n  text-align: center;\n  min-width: 40px;\n  margin-left: 5px;\n  margin-right: 5px;\n}\n#material #offsetUi .offsetBox .top {\n  padding: 5px 10px;\n}\n#material #offsetUi .offsetBox .bottom {\n  padding: 5px 10px;\n}\n#material #offsetUi .offsetBox .bottom.active {\n  border: 1px solid #F43B7A;\n  border-top: 0;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(194);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: #d5f406;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: #d5f406;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#footer {\n  z-index: 2;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  height: auto !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(196);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: #72cefe;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: #72cefe;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#footer {\n  z-index: 2;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(198);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: #694ba1;\n}\n.mal-sync-active {\n  background-color: #002966 !important;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: #694ba1;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#MalData select option {\n  background-color: white;\n}\nbody.dark #MalData select option {\n  background-color: #1c1b26 !important;\n}\n#malp {\n  margin: 0;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(200);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: white;\n}\n.mal-sync-active {\n  background-color: #b2d1ff !important;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: white;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp {\n  background-color: #555;\n  padding: 10px 7px 5px 7px;\n}\n#malp span {\n  color: white;\n}\n#malp select > * {\n  background-color: #555 !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(202);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: inherit;\n}\n.mal-sync-active {\n  background-color: #cee1ff;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: inherit;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp {\n  margin: 0;\n}\n#malp span {\n  color: inherit;\n}\n#malp select > * {\n  background-color: white !important;\n}\n@media only screen and (max-width: 1440px) {\n  #malp .MalLogin {\n    width: 100%;\n  }\n}\n.MALSyncDark #MalData select option {\n  background-color: black !important;\n}\n.MALSyncDark .mal-sync-active {\n  background-color: #0e1d35;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(204);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: #ffc119;\n}\n.mal-sync-active {\n  background-color: #002966 !important;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: #ffc119;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp * {\n  font-size: 13px;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(206);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: white;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: white;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n.mal-sync-active a {\n  background-color: #72abff !important;\n}\n#flashinfo-div {\n  z-index: 100 !important;\n}\n#malp #malVolumes,\n#malp #malEpisodes {\n  float: none;\n  display: inline-block;\n  border-radius: 0;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(208);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: white;\n}\n.mal-sync-active {\n  background-color: #bbbbbb;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: white;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp {\n  color: white;\n}\n#flash-div-top button,\n#flash-div-bottom button,\n#flashinfo-div button {\n  background: none;\n  box-shadow: none;\n  -moz-box-shadow: none;\n  -webkit-box-shadow: none;\n}\n#flash-div-top .undoButton,\n#flash-div-bottom .undoButton,\n#flashinfo-div .undoButton {\n  margin-left: auto;\n  margin-right: auto;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(210);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #0066ff;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(212);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: white;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: white;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp {\n  margin-top: 1rem;\n  border-top: 0 solid hsla(0, 0%, 100%, 0.05);\n  border-width: 1px 0;\n  font-size: 14px;\n  padding: 10px 5px 0;\n  padding-top: 1rem;\n}\n#malp select {\n  display: inline-block;\n  width: auto;\n}\n#malp input {\n  display: inline-block;\n}\n.my-float.open-info-popup {\n  height: 100%;\n  width: 100%;\n  margin: 0 !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(214);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: inherit;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: inherit;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n.miniMAL-Fullscreen .open-info-popup.floatbutton,\n.miniMAL-hide .open-info-popup.floatbutton,\n.miniMAL-Fullscreen #flashinfo-div,\n.miniMAL-hide #flashinfo-div,\n.miniMAL-Fullscreen #flash-div-bottom,\n.miniMAL-hide #flash-div-bottom,\n.miniMAL-Fullscreen #flash-div-top,\n.miniMAL-hide #flash-div-top {\n  display: none !important;\n}\n#malp {\n  max-width: 700px;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(216);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: inherit;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: inherit;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n.miniMAL-Fullscreen .open-info-popup.floatbutton,\n.miniMAL-hide .open-info-popup.floatbutton,\n.miniMAL-Fullscreen #flashinfo-div,\n.miniMAL-hide #flashinfo-div,\n.miniMAL-Fullscreen #flash-div-bottom,\n.miniMAL-hide #flash-div-bottom,\n.miniMAL-Fullscreen #flash-div-top,\n.miniMAL-hide #flash-div-top {\n  display: none !important;\n}\n#malp {\n  max-width: 700px;\n  margin: 0;\n}\n.noApiKey [data-qa-id="moreButton"] {\n  background-color: red;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(218);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: white;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: white;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n.miniMAL-Fullscreen .open-info-popup.floatbutton,\n.miniMAL-hide .open-info-popup.floatbutton,\n.miniMAL-Fullscreen #flashinfo-div,\n.miniMAL-hide #flashinfo-div,\n.miniMAL-Fullscreen #flash-div-bottom,\n.miniMAL-hide #flash-div-bottom,\n.miniMAL-Fullscreen #flash-div-top,\n.miniMAL-hide #flash-div-top {\n  display: none !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(220);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\nsection.main .content-wrapper .theatre .theatre-info {\n  margin-bottom: 1rem;\n}\n#flashinfo-div {\n  z-index: 99999 !important;\n}\n#malp,\n#malTotal,\n#AddMalDiv,\n#AddMal {\n  color: #999 !important;\n}\n#malStatus,\n#malUserRating,\n#malEpisodes {\n  background: transparent !important;\n  color: #d5015b !important;\n}\n#malStatus option,\n#malUserRating option,\n#malEpisodes option {\n  background: black !important;\n  color: #d5015b !important;\n}\n#malRating {\n  color: #d5015b !important;\n}\n.mal-sync-active .episode-label-wrap {\n  background-color: #002966;\n  background-color: #002966ba;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(222);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: #694ba1;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: #694ba1;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#MalData select option {\n  background-color: white;\n}\nbody.dark #MalData select option {\n  background-color: #1c1b26 !important;\n}\n#malp {\n  margin: 0;\n}\n#malp .info {\n  display: block;\n}\n#malp #malEpisodes {\n  display: inline-block;\n  border: 0;\n  padding: 0;\n  margin-bottom: 4px;\n}\n#malp select {\n  margin-left: -3px !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(224);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: white;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: white;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n.mal-sync-active a {\n  background-color: #72abff !important;\n}\n#flashinfo-div {\n  z-index: 100 !important;\n}\n#malp #malVolumes,\n#malp #malEpisodes {\n  float: none;\n  display: inline-block;\n  border-radius: 0;\n}\n#MalData {\n  display: initial !important;\n}\n.cap-header:visited {\n  color: #fff !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(226);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: white;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: white;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp * {\n  color: white;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(228);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: inherit;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: inherit;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n.mal-sync-active {\n  border: 2px solid #002966 !important;\n}\n#malp {\n  margin: 10px;\n  max-width: 1000px;\n}\n#malp select option {\n  color: white;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(230);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: #72cefe;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: #72cefe;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n.mal-sync-active {\n  background-color: #cfe2ff;\n}\n#malp select option {\n  background-color: white;\n  color: black;\n}\n#malp #MalData > * {\n  white-space: nowrap;\n}\n#malp select,\n#malp input,\n#malp a,\n#malp #malTotalVol,\n#malp #malTotalCha {\n  display: inline-block;\n  color: #07c;\n}\n#malp .info {\n  border: none;\n  padding: 0;\n  color: inherit;\n  margin: 0;\n  width: auto;\n  font-weight: 600;\n  color: #696969;\n  font-size: 100%;\n  font-family: roboto, sans-serif;\n  margin-right: 5px;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(232);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #a21e2d !important;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp select,\na,\ninput,\nspan {\n  color: #bbb !important;\n}\n#malp select option {\n  color: #bbb !important;\n  background-color: #161616 !important;\n}\n#servers .server ul.episodes li a.active {\n  background-color: #47040c !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(234);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: white;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: white;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp {\n  font-size: 14px;\n  padding: 10px 0 10px;\n  padding-top: 1rem;\n  padding-bottom: 1rem;\n}\n#malRating,\n#AddMal {\n  text-decoration: underline;\n}\n.info {\n  border-left: 0px;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(236);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\nhtml #malp select option {\n  color: black !important;\n  background-color: white !important;\n}\nhtml.dark #malp select,\nhtml.dark a,\nhtml.dark input,\nhtml.dark span {\n  color: #ccc !important;\n}\nhtml.dark #malp select option {\n  color: #ccc !important;\n  background-color: #111 !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(238);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\ndiv#app.dark-theme a,\ndiv#app.dark-theme span,\ndiv#app.dark-theme input,\ndiv#app.dark-theme select {\n  color: white !important;\n}\ndiv#app.dark-theme #malp select option {\n  color: white !important;\n  background-color: black !important;\n}\ndiv#app.light-theme select option {\n  color: black !important;\n  background-color: white !important;\n}\n#malp {\n  margin: 20px;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(240);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #b8daff;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#MalData > * {\n  white-space: nowrap;\n}\n#malp select,\n#malp input,\n#malp a,\n#malp #malTotalVol,\n#malp #malTotalCha {\n  display: inline-block !important;\n}\n#malp select option {\n  color: black !important;\n  background-color: white !important;\n}\n#malp {\n  background-color: #fff;\n  border-radius: 3px;\n  box-shadow: 0 0 30px 0 rgba(0, 0, 0, 0.1);\n  padding: 15px 20px 20px;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(242);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp a,\nselect,\ninput,\n#malTotal {\n  color: white !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(244);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\nhtml #malp select option {\n  color: black !important;\n  background-color: white !important;\n}\ni.my-float.open-info-popup {\n  padding-right: 0px !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(246);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(248);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp {\n  margin-top: 10px;\n}\n#malp select option {\n  color: black !important;\n  background-color: white !important;\n}\n.mal-sync-active {\n  border-top: 2px solid #002966 !important;\n  border-bottom: 2px solid #002966 !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(250);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp {\n  font-family: arial, helvetica, sans-serif;\n  max-width: 90%;\n  margin-left: 10px;\n  color: white!important;\n}\n#malp a,\n#malp select,\n#malp input,\n#malp span {\n  color: white!important;\n}\n#malp select option {\n  color: white !important;\n  background-color: black !important;\n}\n#MalData > * {\n  white-space: nowrap;\n}\n#malp select,\n#malp input,\n#malp a,\n#malp #malTotalVol,\n#malp #malTotalCha {\n  display: inline-block !important;\n}\n.mal-sync-active .infoept {\n  background-color: #002966;\n}\n.mal-sync-active div {\n  color: white !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(252);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: white;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: white;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp {\n  margin-bottom: 10px;\n}\n#malp a:hover {\n  color: #e3474b;\n}\n#MalData > * {\n  white-space: nowrap;\n}\n#malp select,\n#malp input,\n#malp a,\n#malp #malTotalVol,\n#malp #malTotalCha {\n  display: inline-block !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(254);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp select option {\n  color: white !important;\n  background-color: black !important;\n}\n#malp a,\nselect,\ninput,\nspan {\n  color: white !important;\n}\n.mal-sync-active {\n  border-top: 2px solid #002966 !important;\n  border-bottom: 2px solid #002966 !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(256);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp span,\nselect,\ninput,\na {\n  color: white !important;\n}\n#malp select option {\n  color: white !important;\n  background-color: black !important;\n}\n#malp {\n  padding-left: 10px;\n  padding-right: 10px;\n}\n#malp .info {\n  background-color: transparent;\n  border: none;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(258);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp select option {\n  color: black !important;\n  background-color: white !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(260);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#flashinfo-div {\n  z-index: 100 !important;\n}\n#malp #malVolumes,\n#malp #malEpisodes,\n#malp span {\n  float: none;\n  display: inline-block;\n  border-radius: 0;\n  margin-top: 0;\n}\n#malp select option {\n  color: black !important;\n  background-color: white !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(262);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #00bcd4;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp select option {\n  color: black !important;\n  background-color: white !important;\n}\n.mal-sync-active {\n  background-color: inherit  !important;\n}\n.mal-sync-active .da-tbl-text {\n  background-color: #00bcd4 !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(264);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #98cff0;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp {\n  margin: 10px;\n}\n#malp select option {\n  color: black !important;\n  background-color: white !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(266);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #98cff0;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malthing {\n  background-color: white;\n  float: left;\n  margin-top: 10px;\n  width: calc(100% - 20px);\n  padding: 10px;\n}\n#MalData > span > span.info {\n  color: black !important;\n}\n#malp select option {\n  color: black !important;\n  background-color: white !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(268);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #98cff0;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malthing {\n  background-color: white;\n  font-size: 15px;\n  margin: 15px 0;\n  padding: 10px;\n}\n#MalData > span > span.info {\n  color: black !important;\n}\n#malp select option {\n  color: black !important;\n  background-color: white !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(270);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: white;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: white;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp {\n  margin-bottom: 10px;\n}\n#malp a:hover {\n  color: #e3474b;\n}\n#MalData > * {\n  white-space: nowrap;\n}\n#malp select,\n#malp input,\n#malp a,\n#malp #malTotalVol,\n#malp #malTotalCha {\n  display: inline-block !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(272);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #428bca !important;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp span,\n#malp span a {\n  color: white !important;\n  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.4) !important;\n}\n#malp select option {\n  color: white !important;\n  background-color: black !important;\n}\n#malp .info {\n  background-color: transparent;\n  border: none;\n}\n.mal-sync-active {\n  border: 2px solid #428bca !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(274);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(276);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: white;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: white;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp select option {\n  color: black !important;\n  background-color: white !important;\n}\n#malp span {\n  background: none !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(278);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: inherit;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: inherit;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(280);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(282);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #b8daff;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp select option {\n  color: black !important;\n  background-color: white !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(284);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: #c2382b;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: white;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: #c2382b;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\nbody:not(.dark) .mal-sync-active {\n  border: 2px solid red !important;\n  background-color: inherit !important;\n}\nbody.dark .mal-sync-active {\n  border: 2px solid white !important;\n  background-color: inherit !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(286);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp {\n  font-size: 15px;\n}\n#malp select option {\n  color: black !important;\n  background-color: white !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(288);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp select option {\n  color: black !important;\n  background-color: white !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(290);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(292);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: white;\n}\n.mal-sync-active {\n  background-color: #f93822;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: white;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp {\n  padding-top: 20px;\n  max-width: 1000px;\n  margin-left: auto;\n  margin-right: auto;\n}\n#MalData {\n  align-items: baseline;\n}\n#malp select option {\n  color: white !important;\n  background-color: black !important;\n}\n.mal-sync-active {\n  border: 2px solid #f93822 !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(294);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: white;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: white;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp {\n  padding-top: 10px;\n}\n#malp select option {\n  color: white !important;\n  background-color: black !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(296);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #b8daff;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(298);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp {\n  font-family: arial, helvetica, sans-serif;\n  max-width: 90%;\n  margin-left: 10px;\n  color: white!important;\n}\n#malp a,\n#malp select,\n#malp input,\n#malp span {\n  color: white!important;\n}\n#malp select option {\n  color: white !important;\n  background-color: black !important;\n}\n#MalData > * {\n  white-space: nowrap;\n}\n#malp select,\n#malp input,\n#malp a,\n#malp #malTotalVol,\n#malp #malTotalCha {\n  display: inline-block !important;\n}\n.mal-sync-active .infoept {\n  background-color: #002966;\n}\n.mal-sync-active div {\n  color: white !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(300);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: white;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: white;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(302);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #b8daff;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp select option {\n  color: black !important;\n  background-color: white !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(304);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n.miniMAL-Fullscreen .open-info-popup.floatbutton,\n.miniMAL-hide .open-info-popup.floatbutton,\n.miniMAL-Fullscreen #flashinfo-div,\n.miniMAL-hide #flashinfo-div,\n.miniMAL-Fullscreen #flash-div-bottom,\n.miniMAL-hide #flash-div-bottom,\n.miniMAL-Fullscreen #flash-div-top,\n.miniMAL-hide #flash-div-top {\n  display: none !important;\n}\n#flashinfo-div {\n  z-index: 20000 !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(306);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: white;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: white;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malStatus,\n#malUserRating {\n  display: inline-block !important;\n}\n#malUserRating {\n  margin-left: 3px !important;\n}\n#malp {\n  margin-left: 10px;\n  margin-right: 10px;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(308);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: transparent !important;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp {\n  margin: 10px;\n}\n#MalData {\n  justify-content: space-evenly !important;\n}\n#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: white;\n}\n#malp select option {\n  color: white !important;\n  background-color: #222325 !important;\n}\n.mal-sync-active {\n  box-shadow: 0px 5px 0px #0183b5;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(310);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: white !important;\n}\n.mal-sync-active {\n  background-color: blue;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: white !important;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(312);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #b8daff;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(314);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, '#malStatus,\n#malTotal,\n#malEpisodes,\n#malUserRating,\n#malRating,\n#malVolumes,\n#malTotalVol,\n#malTotalCha,\n#AddMal {\n  color: black;\n}\n.mal-sync-active {\n  background-color: #002966;\n}\n#malp select option {\n  background-color: #111111;\n}\n#malp #malStatus,\n#malp #malUserRating,\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  font-size: inherit;\n  font-family: inherit;\n  background: transparent;\n  border-width: 1px;\n  border-color: grey;\n  text-decoration: none;\n  outline: medium none;\n  border-width: 0px;\n  height: auto;\n  padding: 0;\n  margin: 0;\n  line-height: 1;\n}\n#malp #malEpisodes,\n#malp #malVolumes,\n#malp #malEpisodes {\n  text-align: center;\n  border-bottom-width: 1px;\n}\n#malp #malEpisodes:focus,\n#malp #malVolumes:focus,\n#malp #malEpisodes:focus {\n  border-color: black;\n}\n#malSyncProgress.ms-loading {\n  height: 4px;\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n  background-color: #ddd;\n}\n#malSyncProgress.ms-loading:before {\n  display: block;\n  position: absolute;\n  content: "";\n  left: -200px;\n  width: 200px;\n  height: 4px;\n  background-color: #2980b9;\n  animation: loading 2s linear infinite;\n}\n@keyframes loading {\n  from {\n    left: -200px;\n    width: 30%;\n  }\n  50% {\n    width: 30%;\n  }\n  70% {\n    width: 70%;\n  }\n  80% {\n    left: 50%;\n  }\n  95% {\n    left: 120%;\n  }\n  to {\n    left: 100%;\n  }\n}\n#malSyncProgress.ms-done .ms-progress {\n  width: 100% !important;\n  background-color: #ff4081 !important;\n  transition: background-color 1s !important;\n}\n#malp * {\n  color: white !important;\n}\n#malp span {\n  margin-right: 5px;\n}\n', "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(316);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, ".site-theme-dark .nextStream img,\n.entry-card .nextStream img,\n.site-theme-dark .resumeStream img,\n.entry-card .resumeStream img {\n  filter: invert(100%);\n}\n.entry-card .mal-sync-stream {\n  position: absolute;\n  max-height: 17px !important;\n  left: 7px;\n  top: -17px;\n  background: rgba(var(--color-overlay), 0.8);\n  border-radius: 100% 100% 0 0;\n}\n.entry-card .mal-sync-stream img {\n  padding: 5px;\n  padding-top: 7px;\n}\n.entry-card .nextStream,\n.entry-card .resumeStream {\n  position: absolute;\n  max-height: 17px !important;\n  right: 7px;\n  top: -15px;\n  margin-right: 0px !important;\n  background: rgba(var(--color-overlay), 0.8);\n  border-radius: 100% 100% 0 0;\n}\n.entry-card .nextStream img,\n.entry-card .resumeStream img {\n  margin: 5px;\n  margin-top: 7px;\n}\n", "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(318);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, "", "" ]);
}, function(module, __webpack_exports__, __webpack_require__) {
    "use strict";
    var _node_modules_to_string_loader_src_to_string_js_node_modules_css_loader_index_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_less_loader_dist_cjs_js_node_modules_vue_loader_lib_index_js_vue_loader_options_malkiss_vue_vue_type_style_index_0_id_55d18076_lang_less_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(58);
    __webpack_require__.n(_node_modules_to_string_loader_src_to_string_js_node_modules_css_loader_index_js_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_less_loader_dist_cjs_js_node_modules_vue_loader_lib_index_js_vue_loader_options_malkiss_vue_vue_type_style_index_0_id_55d18076_lang_less_scoped_true___WEBPACK_IMPORTED_MODULE_0__).a;
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, ".Sources[data-v-55d18076] {\n  min-width: 178px;\n}\n.simkltvdetailonlineheadbuttonstream[data-v-55d18076] {\n  width: auto;\n  min-width: auto;\n}\n", "" ]);
}, function(module, exports, __webpack_require__) {
    var result = __webpack_require__(322);
    module.exports = "string" == typeof result ? result : result.toString();
}, function(module, exports, __webpack_require__) {
    (module.exports = __webpack_require__(4)(!1)).push([ module.i, ".nextStream img,\n.resumeStream img {\n  filter: invert(100%);\n}\n", "" ]);
} ]);