// ==UserScript== // @name Popup Search Enhance DIY // @name:zh Popup Search Enhance DIY: 快捷搜索增强版 // @author csxo, lkytal // @namespace csxo // @version 0.1.0 // @icon https://github.com/lkytal/GM/raw/master/icons/search.png // @homepage https://github.com/csxo/ // @homepageURL https://github.com/csxo/ // @description Popup search box and translate button (etc) for selected texts (Enhanced by csxo) // @description:zh 为选中文字弹出搜索和翻译的快捷按钮(由 csxo 增强定制:Fluent长方形面板、自由缩放、卡片拖拽排序、自定义展示数量) // @license AGPL-3.0-or-later & CC-BY-NC-SA-4.0 // @include * // @exclude */test/*.html* // @exclude http://acid3.acidtests.org/* // @exclude http://www.acfun.tv/* // @exclude http://www.sf-express.com/* // @exclude http://furk.net/* // @connect google.com // @connect google.cn // @grant GM_xmlhttpRequest // @grant GM_addStyle // @grant GM_openInTab // @grant GM_setClipboard // @grant GM_download // @grant GM_getValue // @grant GM_setValue // @grant GM_registerMenuCommand // @grant GM_info // @run-at document-end // @inject-into auto // @require https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.6.0.min.js // @connect google.com // @connect google.cn // @connect caiyunai.com // @connect deepl.com // @connect aircode.run // @charset UTF-8 // @supportURL https://github.com/csxo/ // ==/UserScript== "use strict"; ; var CopyText, GetOpt, GetTextboxSelection, InTextBox, OnEngine, OpenSet, OpenUrl, PopupInit, PopupLoad, ReadOpt, SaveOpt, SettingWin, ShowBar, UpdateLog, UpdateNotified, addAdditionalCSS, addCSS, ajaxError, doHideBar, doRequest, eventFromTextbox, fixPos, getLastRange, get_selection_offsets, hideBar, isChrome, log, needPrefix, onCopy, onTranslate, parseTranslationCaiyun, parseTranslationDeepl, parseTranslationDeeplX, parseTranslationGoogle, popData, hasProp = {}.hasOwnProperty; window.$ = window.jQuery = jQuery.noConflict(true); popData = { count: 0, mouseIn: 0, bTrans: 0, additionalCSSLoaded: 0, codeVersion: 8, text: "", mousedownEvent: null, fadeEvent: [], icons: { neweggIcon: "data:image/x-icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAABMLAAATCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAT/8zAE//WgBP/2YAT/9mAE//PwBP/x4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABR/zAAUf+iAFH/7QBY//8AXv//AGD//wBg//8AWv//AFX//wBR/8wAUf97AFH/GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABT/wwAU/+iAFv//wBt//8AgP//AIX//wCG//8Ahf//AIT//wCB//8Aff//AHH//wBj//8AU//wAFP/cgBT/wYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVf8kAFX/2wBr//8Aiv//AJD//wCV//8AmP//AJn//wCZ//8Al///AJP//wCO//8AiP//AIL//wB2//8AY///AFX/2wBV/y0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFf/FQBX/94AdP//AJX//wCe//8Apf//AKr//wCt//8Arv//AK7//wCs//8AqP//AKL//wCb//8Ak///AIr//wCB//8Aa///AFf/8wBX/0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWf+6AHX//wCd//8AqP//ALH//wC3//8AvP//AL///wDA//8Bv///A77//wW7//8Gt///BrD//wan//8Fnf//A5L//wKG//8Bcv//AFn//ABZ/2kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFz/SwBs//8Aof//AK7//wC5//8Awf//AMb//wDK//8By///Bc3//wrO//8Ozv//Ecz//xPJ//8Uw///E7v//xCx//8Mpf//CJj//wWL//8Cef//AGX//wBc/1oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAX//AAI7//wCx//8Avf//AMb//wDM//8A0P//BNT//wrW//8R2P//GNn//x7Z//8j2f//Jtf//ybT//8lzf//IcX//xy5//8VrP//Dpz//wiO//8DeP//AF//+QBf/z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGH/HgBh//wArv//AL7//wDI//8A0P//ANT//wXX//8O2v//F93//yDf//8p4P//MeL//zbj//874v//POD//zvc//831f//MMz//ye///8dr///E5///wuP//8Ddf//AGH/5wBh/xUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZP9jAH///wC6//8Ax///AND//wDV//8F2P//D9v//xnd//8l4P//MOL//zrk//9D5v//S+j//1Ho//9T6P//VOb//0/j//9I2///PdH//zDC//8jsf//Fp///wyO//8Ccf//AGT/sQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABn/4oAkP//AML//wDN//8A1P//BNj//w7b//8Z3f//JuD//zPj//9A5f//TOj//1fq//9g7P//Zu3//2ru//9q7f//aOv//2Hn//9X3///SNP//zfD//8lsP//Fp3//wuL//8Bbf//AGf/SwAAAAAAAAAAAAAAAAAAAAAAAAAAAGr/nACb//8AyP//ANH//wHW//8K2v//F93//yXg//8z4///Qub//1Hp//9e7P//au7//3Pw//968v//f/L//4Dz//9+8f//eO///27q//9g4f//TdP//znB//8lrf//FZj//wd+//8Aav/YAGr/AwAAAAAAAAAAAAAAAAAAAAAAbf+WAJ3//wDL//8A1P//Btj//xLc//8g3///MOL//0Dl//9R6f//Yez//2/v//988v//hvT//432//+S9v//k/f//5L2//+M9f//g/H//3br//9i3///TdD//za9//8hp///EZL//wJ0//8Abf9aAAAAAAAAAAAAAAAAAAAAAABw/3sAl///AM3//wHV//8L2v//Gd3//yng//865P//TOj//17s//9v7///f/L//4z1//+W9///nvn//6L6//+k+v//ovr//575//+V9v//ifL//3fp//9g3P//R8v//y62//8an///CYT//wBw/8wAAAAAAAAAAAAAAAAAAAAAAHP/UQCM//8Azv//BNb//xDb//8f3v//MeL//0Pm//9X6v//au7//3zy//+M9f//mfj//6T6//+r/P//sP3//7H9//+w/f//q/z//6T6//+Y9///iPH//3Lm//9Y1///PcL//ySr//8Slf//AXb//wBz/zAAAAAAAAAAAAAAAAAAd/8SAHf//ADN//8H1v//FNz//yXg//835P//S+j//2Ds//9z8P//hvT//5b3//+k+v//rvz//7X+//+2/v//tv7//7b+//+1/v//rvz//6P5//+U9f//gO3//2Xg//9Kzv//L7j//xmg//8Ggf//AHf/hwAAAAAAAAAAAAAAAAAAAAAAev+uALD//wnX//8X3f//KeD//zzl//9R6f//Zu3//3ry//+N9v//nvn//6v8//+1/v//tv7//7b+//+2/v//tv7//7b+//+1/v//q/z//534//+J8v//cOf//1TW//85wf//IKr//wyO//8Aev/SAAAAAAAAAAAAAAAAAAAAAAB9/zwAj///CtX//xnc//8r4f//P+X//1Tq//9q7v//f/L//5L2//+i+v//sP3//7b+//+2/v//tv7//7b+//+2/v//tv7//7b+//+w/f//ovr//5D0//956///Xd3//0DK//8ms///Epv//wB9//wAff8MAAAAAAAAAAAAAAAAAAAAAACA/6UFq///Gtv//yzh//9A5f//Vur//2vu//+A8///k/f//6T6//+x/f//tv7//7b+//+2/v//sf7//7b+//+2/v//tv7//7H9//+k+v//kvb//3zv//9h4f//RdD//yq6//8Vov//AoL//wCA/zMAAAAAAAAAAAAAAAAAAAAAAIP/GwCD//MSw///K+D//z/l//9U6v//au7//3/y//+S9v//ovr//7D9//+2/v//tv7//7b+//+2/v//tv7//7b+//+2/v//sP3//6L6//+S9v//ffD//2Pl//9G1f//LMD//xeo//8Dh///AIP/VAAAAAAAAAAAAAAAAAAAAAAAAAAAAIb/VAeg//8j0///POX//1Hp//9m7f//evL//432//+e+f//q/z//7X+//+2/v//tv7//7b+//+2/v//tv7//7X+//+r/P//nvn//432//958f//Yeb//0bY//8sxP//GK3//wOM//8Ahv9jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIn/eA6q//824v//S+f//2Ds//9z8P//hvT//5b3//+k+v//rvz//7X+//+2/v//tv7//7b+//+1/v//rvz//6T6//+W9///hvT//3Pv//9c5///Qtn//yrH//8Xsf//A47//wCJ/1cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIv/nBOt//862v//V+n//2ru//988v//jPX//5n4//+k+v//q/z//7D9//+x/f//sP3//6v8//+k+v//mfj//4z1//988v//au7//1Tl//882P//Jsf//xSy//8Cj///AIv/RQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI7/eBKp//84z///Xuv//2/v//9/8v//jPX//5b3//+e+f//ovr//6T6//+i+v//nvn//5b3//+M9f//f/L//2/v//9e7P//SuT//zTX//8gxv//ELL//wGP//8Ajv8bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJH/VACR//Muw///YOv//2/u//988v//hvT//432//+S9v//k/f//5L2//+N9v//hvT//3zy//9v7///Yez//1Hp//8+4f//K9X//xnF//8Jq///AJH/0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJP/LQCT/9Uhtf//Tdv//2rt//9z8P//evL//3/y//+A8///f/L//3ry//9z8P//au7//17s//9R6f//QuX//zHe//8h0v//EsH//wKd//8Ak/9mAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJX/AwCV/2kAlf/tKLz//1vn//9m7P//au7//2vu//9q7v//Zu3//2Ds//9X6v//TOj//0Dl//8y4v//JNn//xXM//8Fqv//AJX/zACV/wYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACX/w8Al/+NAJf/8xmw//85zv//U+b//1Tp//9R6f//S+j//0Pm//865P//L+H//yTc//8Wz///Bqz//wCX/9gAl/8eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmf8JAJn/UQCZ/64Amf/2DKf//xe1//8Zuv//HcP//xjB//8Puf//Bqr//wCZ//MAmf+KAJn/DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACb/wwAm/8zAJv/YwCb/3UAm/+ZAJv/mQCb/4EAm/9LAJv/DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///////A///+AB//+AAH//AAA//gAAH/4AAA/8AAAH/AAAA/gAAAH4AAAB+AAAAPgAAAB4AAAAeAAAAHgAAAA4AAAAPAAAADwAAAAeAAAAHgAAAB8AAAAfgAAAH8AAAB/gAAAf8AAAP/gAAD/8AAA//wAAf//AAP//+AP/////8=", baiduFyIcon: "data:image/x-icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPzbt074plC+9Y0e9PWIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1jR70+KZQvvzbuEwAAAAAAAAAAAAAAAD6wYWE9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//rBhYQAAAAA/Nu4TPWIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//zbuEz4plC+9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/+KZQvvaOIPL1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1jh/y9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/2kyr//vDh//vRpP/3okf/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//aRJv////////////7w4f/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/3oET//u/g//7v4P/2lCz/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9o8i/////////////vDh//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//ekS/////////////aWMP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/2jyL////////////96tb/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/96RL////////////9pYw//WIFP/1iBT/96NJ//ecO//2mDP/9pIn//WNHv////////////3q1v/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/3pEv////////////2ljD/9YgU//m5df////////////////////////////////////////v3//3n0P/948j//N/A//zdvf/817H//Nex//ixZP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//ekS/////////////aWMP/1iBT/9o8i//aYM//3n0L/96BD//elTf/4qFT////////////+8ub/+bt4//rAhP/7zJr//Ny5//3r2P/94sb/9Y0d//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/96RL////////////9pYw//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP////////////3s2f/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/3pEv////////////2ljD/9YgU//WIFP/2kCX/+saO//m9ff/5tWz/+Kxc/////////////vLl//aOIP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//ekS/////////////aWMP/1iBT/9YgU//rGjv/+7+D//vfu//748P////////////////////////////////////////////rHkP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/96RL////////////9pYw//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFf////////////727f/3okf/+KtZ//mzav/5tGv/9YgV//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/3pEv////////////2ljD/9po3//rGjv/4qlb/9Y4f//WIFP/1iBT/9YgU/////////////vjx//WIFP/1iBT/9pg0//m3cP/6x5D/9Y0d//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//ekS/////////////aWMP/1iBT/+KdS//3kyv///Pn//N6+//m1bf/2jyP//eXM//rEiv/2mjf/+bl0//3o0v/////////////////82rb/9Y0d//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/817H//Nex//zXsf/817H//OHD////////////9pYw//WIFP/1iBT/9YgU//irWv/969j///////758//6xYz/+bJn//7x5P/////////////////////////////////+7dz/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU///////////////////////////////////////2ljD/9YgU//WIFP/1iBT/9YgU//WKGP/5vHv///r1////////////////////////+fT//N28//rCh//4rFz/9po3//WLGv/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9pgz//aYM//2mDP/9pgz//aYM//2mDP/9pgz//WKGP/1iBT/9YgU//WIFP/1iBT/9YgU//WJF//83r7//////////////////eLF//WMHP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/+8uY///////+7t7//efP////////////+9Km//WJF//1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//irWv//////+9Wr//aOIP/2jiD//eXM////////////+86e//WIFf/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//rDiP/+9+///vfv//m2bv/1iBT/9YgU//WIFP/1jh///vLm//rJlf/1iBX/9YgU//WIFP/2kyn//vPn////////////+sWN//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/+seQ////////////+bl1//WIFP/2kCX//vLm//758////fv//efQ//zhxP/82bP/+9Gk//rJlP/82bT///////////////7//eLF//aXMv/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/6x5D////////////5uXX/9YgU//aYM//4sGL/+LBj//m4cv/5vHr/+sOJ//vLmP/70qb//Nm0//zfwP/+9Or////////////6xo//9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WMHP/2kCT/9pAk//WLGv/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WNHv/837//+r+B//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/2jiDy9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9o4g8vimUL71iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/4plC+/Ny5TPWIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//zbuEwAAAAA+sGFhPWIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/6wYWEAAAAAAAAAAAAAAAA/Nu4TPimUL71jh/y9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WIFP/1iBT/9YgU//WOH/L4plC+/Ny5TAAAAAAAAAAA4AAAB4AAAAGAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABgAAAAeAAAAc=", handianIcon: "data:image/x-icon;base64,AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAABILAAASCwAAAAAAAAAAAAAAALHlAACw8gAAsPIAALDyAACw8gAAsPIAALDyAACw8gAAsPIAALDy0NDw/f//////////bGzR9wAAsPICArHyBgay8gAAsPKoqOT6//////r6/f8iIrv0AACw8gAAsPIAALDyAACw8gAAsPIAALDyAACw8gAAsPIAAKjyJia72wAAsf8AALD/AACw/wAAsP8AALD/AACw/wAAsP8AALD/AACw/wAAsP/Fxe3///////////9tbdL/AACw/wAAsP8AALD/AACw/4qK2////////////y0tvv8AALD/AACw/wAAsP8AALD/AACw/wAAsP8AALD/AACw/wAArv8LC7L+AACx8gAAsP8AALD/AACw/wAAsP8AALD/AACw/wAAsP8AALD/AACw/7u76v///////////z09w/8AALD/AACw/wAAsP8AALD/XFzN////////////WFjL/wAAsP8AALD/AACw/wAAsP8AALD/AACw/wAAsP8AALD/AACx/wAArvQAALHyAACw/wAAsP8AALD/AACw/wAAsP8AALD/AACw/wAAsP8AALD/lZXe////////////Hx+6/wAAsP8AALD/AACw/wAAsP9aWsz///////////9iYs7/AACw/wAAsP8AALD/AACw/wAAsP8AALD/AACw/wAAsP8AALH/AACv8wAAsfIAALD/AACw/wAAsP8AALD/AACw/wAAsP8AALD/AACw/wAAsP9HR8b//////+Xl9/8AALD/AACw/wAAsP8AALD/AACw/1xczf///////////yYmvP8AALD/AACw/wAAsP8AALD/AACw/wAAsP8AALD/AACw/wAAr/8FBbHxAACx8gEBsP8FBbL/AACw/wAAsP8AALD/AACw/wAAsP8AALD/AACw/zU1wP//////8/P7/wYGsv8AALD/AACw/wAAsP8AALD/XFzN////////////QUHE/wAAsP8AALD/AACw/wAAsP8AALD/AACw/wAAsP8AALD/AACp/yMjuesAALHySUnH/+/v+v8SErb/AACw/wAAsP8AALD/AACw/wAAsP8AALD/NDTA////////////OjrC/wAAsP8AALD/AACw/wAAsP9gYM7///////////9JScf/AACw/wAAsP8AALD/AACw/wAAsP8AALD/AACw/wAAsP8AAK7/CAiy8RsbufOKitv//////3R01P8AALD/AACw/yUlu/8oKLz/AACw/wAAsP+MjNv///////////+Bgdj/AACw/wAAsP8AALD/AACw/zY2wf///////////3Bw0/8AALD/AACw/wAAsP8AALD/AACw/wAAsP8AALD/AACw/wAAsv8AAK7zNDTB9aSk4///////i4vb/wAAsP/Dw+z///////////+treb/iIja//z8/v///////////4SE2f8AALD/a2vR/3x81v82NsH/R0fG////////////9fX8/2pq0f9cXM3/s7Pn/9PT8f94eNX/AACw/wAAsP8AALD/AACw/wEAsPIrK730m5vg//////91ddT/KCi8////////////////////////////////////////////8PD6/+fn+P////////////////////////////////////////////////////////////////9bW8z/AACw/wAAsP8AALD/AACw8goKsvN2dtX//////8rK7/8AALD/y8vv//T0/P//////3t71/+zs+f/u7vr/8/P7//////////////////////////////////////////////////Dw+v/9/f7//////////////////////z8/xP8AALD/AACw/wAAsP8AALDyAACx8mho0P//////1dXy/wAAsP8tLb7/Gxu4/wQEsf9cXM3//////3t71v8AALD/Ly+//xcXt/9eXs3////////////q6vj/LCy+/x8fuv86OsL/Fha3/wAAsP9JScf/ZGTP/2Fhzv8oKLz/AACw/wsLs//Bwez/8vL7/0tLx/YYGLjzgoLY//////+Tk97/AACw/wAAsP8AALD/AACw/5mZ3////////////05OyP8AALD/AACw/yYmvP///////////52d4f8AALD/AACw/wAAsP8XF7f/dXXU/ycnvP8AALD/AACw/wAAsP8AALD/nJzg////////////wcHs/IGB2Pjq6vj//////8vL7/8AALD/AACw/wAAsP8AALD/cHDT////////////ysrv/wAAsP8AALD/VFTK////////////bGzR/wAAsP8AALD/AACw/6qq5f//////29v0/wAAsP8AALD/AACw/yAguv////////////////+Ojtz5Tk7J9ry86v///////////6qq5f8AALD/AACw/wAAsP9UVMr////////////NzfD/AACw/wAAsP8ODrT/8vL7//////+Tk97/AACw/wAAsP9ra9H////////////T0/H/AACw/wAAsP8AALD/kZHd////////////hYXZ/wAAsfIQELbzeHjV/////////////////9DQ8P9eXs3/AACw/4mJ2v////////////7+//97e9b/SEjG/6qq5f////////////X1/P91ddT/eHjV//39/v///////////6Sk4/8AALD/AACw/1lZzP///////////+bm9/8AALD/AACw8gAAsfIAALD/cnLT//////////////////////+kpOP/bm7S////////////////////////////////////////////////////////////////////////////7u76/yoqvf9vb9L/////////////////k5Pe/wAAsv8AAK7zAACx8hERtf8fH7r/x8fu/////////////////3Z21f8vL7/////////////l5ff/1tby//f3/f/9/f7///////////////////////////////////////////////////////////////////////Pz+/8WFrf/AACu/woKsvAAALHyBASx/wAAsP+Fhdn///////////9iYs7/AACw/wAAsP/p6fj//////2Rkz/8AALD/AACw/0dHxv////////////X1/P+goOL/3t71/////////////v7///r6/f//////////////////////gYHY/wAAsP8AAKj/Kiu76QAAsPIAALD/AACw/3x81v//////xMTt/wAAsP8AALD/Ghq4//7+////////aWnR/wAAsP8AALD/CAiy/+/v+v//////xcXt/wAAsP83N8H///////////9+ftf/AACw/0ZGxv/g4PX///////////+amuD/AACw/wAAr/8GB7HwAACv8gAAsf8AALD/lZXe///////k5Pf/Cgqz/wAAsP92dtX///////////9yctP/AACw/wAAsP8AALD/1dXy//////+6uur/AACw/wkJs//39/3//////1dXy/8AALD/AACw/42N3P///////////8rK7/8AALD/AACw/wAAsPQAALDyAACx/ygovP+cnOD////////////x8fv/+/v+/////////////////+7u+v81NcD/AACw/yUlu//k5Pf//////8/P8P8DA7H/OzvC//v7/v//////wsLs/yYmvP+AgNj/6Oj4////////////5OT3/wAAsP8AAKf/Kiq76wAAsPIAALH/IyO7/6Ki4v/////////////////////////////////////////////////+/v///v7///////////////////j4/f/7+/7/////////////////////////////////////////////////ODjB/wAArP8XF7bsAACw8gAAsf8AALD/ubnp////////////w8Ps/wUFsv+zs+f////////////y8vv/8vL7///////////////////////9/f7//f3+///////////////////////29vz/+vr9//////////////////////91ddT/AACx/wAAr/MAALDyAACx/wAAsP/Cwuz///////////+rq+X/AACw/zU1wP///////////5KS3f8NDbT/KCi8/4qK2////////////35+1/9ERMX/39/1/////////////////zw8w/8KCrP/Z2fQ//Ly+////////////7i46f8AALD/AACw8gAAsPIAALH/AACw/7m56f///////////1tbzP8AALD/MDC/////////////hoba/wAAsP8AALD/ERG1//n5/f//////dnbV/wAAsP8AALD/x8fu////////////WFjL/wAAsP8AALD/lpbe////////////2Njz/wAAsP8AALHyAACw8gAAsP8AALD/bW3S////////////ICC6/wAAsP9YWMv////////////NzfD/HBy5/wAAsP9HR8b///////////+jo+L/AACw/wAAsP99fdf////////////Bwez/AACw/wAAsP9VVcr////////////Q0PD/AACw/wAAsPIAALHyAACw/wAAsP8HB7L/f3/X/09PyP8AALD/AACw/1NTyv////////////////8gILr/AACw/zMzwP///////////5WV3v8AALD/AACw/3x81v///////////+np+P8CArH/AACw/wAAsP9ubtL/ubnp/zg4wf8AALD/AACx8gAAsfIAALD/AACw/wAAsP8AALD/AACw/wAAsP8AALD/QEDE/////////////////y4uvv8AALD/TU3I////////////k5Pe/wAAsP8AALD/QEDE/////////////////yQku/8AALD/AACw/wAAsP8AALD/AACw/wAAsP8AALDyAACx8gAAsP8AALD/AACw/wAAsP8AALD/AACw/wAAsP8BAbD/2dnz//////+2tuj/AACw/wAAsP+Ghtr////////////Hx+7/AACw/wAAsP8AALD/09Px////////////IiK7/wAAsP8AALD/AgKx/w0NtP8AALD/AACw/wAAsPIAALH/AACx/wAAsf8AALH/AACx/wAAsf8AALH/AACx/wAAsf8aGrn/YmLP/w4Otf8AALH/AACx/5SU3v///////////6ys5v8AALD/AACw/wAAsf8zM8H/tbXo/1VVy/8AALH/AACx/wAAsf8AAKz/Jye6/wsLs/8AAKr/AACs/wAAseUAAK/yAACv8gAAr/IAAK/yAACv8gAAr/IAAK/yAACv8gAAr/IAAK/yAACv8gAAr/IAAK/yXl7M9///////////PDzB9QEBr/IBAa/yAACv8gEBr/IEBLDyAACv8gAAr/IAAK/yAACu8g8PtPItLbz0DxCz8B4eud0XF7bWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", baiduIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAASzSURBVFhH7ZZNbBtFFMf//ljbtZ2149hp4zgkKamSNNDykapQKEH5QCKiBYGgIkpVQasegiok1CIOHCpRDkjcQIhbJUo5waUSB8SHBAWJCCRQgJRQmjaNEyd2nMTfG9u7y5v1prbT9doBRb3wk9aembc78595b96M4b4xWcYdxKj+3zH+F7ApAQZD4QMz/RipzOr/lc0JgIzulhTGnozjmX0xWMzF+DUZZdQ7ZbjsMomTaxa3KQGt3gTOjQp4aZjHGyN2HNozo1qAod1hXDydxoXX0ni4I662VmdTAg50SWhpqlfKHMfhyIBbKd/TBowdNqDJ5yC7A8cHY2huUExVqVmAkd50SldhMhU/8dWbYOWAx+6+joDfp7YCu9q98Fmm1Zo+VQWw8VjAsXSVkX2QJEm1ALFEDjkRaPaayedFpyeSAkRzUZAeFQUYyLK3NYFTfT/i2MEbaK5PYnK+DkvRmGIXRRFf/xQlQcBcJFcm7PfpDILLdWpNH9OOfWfPquUyfLyEt0YSGHq0E73dPJyGBXz3lxfB4E1wchzjv87jk/FWJAUOiTUbmvkw7QoRv0yGcPGyGwnBAD9PYmn5hBz5qcKu0DwL2LvDDwo497Kt0EDEE2m8eT6P8Ws8XA5AyNJSZwo25qLtFJu8ZRmrAo8mdx4nBpbQ01GPP69F8N4XfkzOkggNFZouYO7cuaP8ZYfdhgYXkM0DEZpYJivB48hhO5+jwJQRWgGmFjwkyoyB7jk88kAAbt6Bh+5vw+vPZWG3qh1tQDsGaE0WVoo+ZeTyIuJJaiNdvF3CC/sXceFMHh+dEXFyMAKfU1ASlc0CtPuLK8fobHXATu1aaApgPvn2NxNWVlOFBmLiShB/BC3KTI71RXF6pAl+3zY0emw4cagRb4/G4XGSXwjmko3c5meVigKWkhac+pDDZ9+EcP7zJbxzKYDltB2DXTN4caDutlTb2+PD0ceT4EzAjbnCTlnn5mKOXKZWNlDxQsIGYBaO/CvSv4ka+vdm8cpwCoEd7rJ9v04qLeD9T6O4Msfh1adF7GzxIEzb9t1LPvw8BUgaQVjTjYgt+1DXNJ0BTgSavGXZsBRRlDC/uIqPv1rDD1cbYONkpAQgnLAqk9EaSbunEljwHNk/i+NP8WgNNFYcnMFsLX4Pnj0goX93BOG4FQsxq5KsKk1TVwBb5cGeEI4+wVPHXrW1Op0dzTh52IPRg4vKWaGHrgCPExjpN8Lt5tWW2nE6tuH5Pjv2tFPi0EFXwF2NgL+R0t6/xO1yosP1t1rTRldAmrZOnhKQVsTXCmfIqSVtdAVMh2gPzxf2dOlpVyupdAYzmXvVmja6AnLkvg++9OP67BJdSIwUyTKWV9MILiYRiqSQWctDoGclLiht7AlHU8p7TPD3EwLGaf/rUTUPsHtBe0MSve0JuJwmuoDIiKyICIaziGXpSmaqg1WeQ08bh10tNrgsMayJNkzMmHF5qgHRBJ0QOiPUlIhYCJjoYf8yPYo36Ctp/UvVrlzVQctGqvMirRiZqvWu64J1WCd5GpRdv/LUPxNwa3AGlSkJKvasaKYj26jYq0+tRIDWCbZVlI51S0DZjLaY0rFqcsHWAfwDnVStvcSt8MwAAAAASUVORK5CYII=", bingIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAACeklEQVRYhe2Wy2sTURTGu1fapOZRTKj2kaag1VaTNA9NjHkWLS3diC5q6wNc+A+EIkVw40ZRFBeuirgQF1JfuFBboYiIzb2TmdimCA0YWyupqalBTRo/F4M3KE0mhrR2kQsfDHPvOfOb794zZ6qErlb8T1VVACoAFYANDcD7dKAWFahFBd7TvL4AvE8HobsNqSmK1FuC6WP71gQiP4C3GeGe3fg9Zk54EHI35ub9evBenSi/fm0AhJ5dDCAy4Abn0ILa1CCGGlCrCsLhnRAO7QAxK0CMMlBb3R+QZQUId7ch0u9EYuwBVhs/s1l8fnIX00dtIEY5eF9LeQG+RWfYdeLZKGaHTiLS70TkuAvR4TP48vIpm19+MwFqURZ1ZooGAIAf8+/B2TWgZgVCzm0IuRtFHagH6awF72vBytek6EgmDWpVSTpRNEA2k0awYxN4T1PeZCFXA6hZwWKWxh+CWtXlAYhdHgK3f6ukpdSqxqfb11kcMckLVknhMuxtZ4lmA4MIOeslATiHFrFLARbH2TUFtyE/gF8PYpKzRIuP7oAYZZIAwY7NWJ6cEM/BSgbEIINQigNCVys4uwZz187nPkan/CCdW1Z9I96rAzHIMBsYZOuj505Lula4F/j1CO6tRnz0Fku6MHIF1KIEMclBrSpQqwrEKANn1yJ+b4Stm795EcRUW3oZ/r0V7872IZOI50ryYwzJV2NIvh5HenGB3f8eiyIy4AK1KCUfXhQAK7GD2xHcU42pI2bM3biApRePkQoHkQpPIvH8Pj5cHUa4tx3EUIOQq6GonP8EIEoP3tPEegK1KEXZ6sA5tCV1y439Q1IBqABUANZDvwDe9YuA3jr3dgAAAABJRU5ErkJggg==", translateIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAExklEQVRoge2Y+08UVxTH/dNmtYRHwNKHDW1tIWl/sK1QbFoSitXa9i642wWxKIK0ysOCLBSwBSWQslpboD54SGVNbAkB0cqjIIic+5jTH2b2gczM7o7DzpLsyfeHzeydmfM5994z555dEoEdrV22e5AEsNuDJIDdHiQB7PYgCRBpRJoLDtazggbzym9g+fX0je+oDQCfXGDL62iJCRlbhnhcAdLdsPzUGu+D9uVPLH4A+Q00Gp/WNnBhFRfXogLoGRUJB1DZyyUC+05GNbjvThLANEDPmChqYVuVU0UlAqnHoaiZBfVZQO5unigAtQNmckhuDU0UgJ9HxKEmFlShjjLcIBHI9EBhEytsZKWXEmYGojEuMKucSgTc3Szh9kA0dmdGVu69fk8kNMBXHSzDDVkeeLQsh193dzOJwMsVFLQnIGEARqfVSJdfDnm6sIppLpAInOrnejcmCgAiHmpiEoGXSuHvf9VJIF1MIpBSBg83T0uCAvjn5D2lIBH44BxlHPsnhIOARKCyVzf8iQWAgW+wRKDEy1KPg0TgtUq6Yli9xhWgIBLAM4q5NaEqf7cThu5rJx97AAobdVJJwGaX5APnQgBpLuif0AaQA5qal1sGeTRqHuTFFyPX3iYBGMeLwyLdHYq98iOlDB6vGFPHZq3DEeqXmAG4wF//EuErp7iVPViSm37naS4gXREmLVaTEd85Y3QWjQFgbQM7b25yfW857R0XwZQ5syiPTOsmUNNW2Gi0kGIAuOYXjsBScTiBdLEoT2GJAoCI3/v4nlIo8TL/nPWRjgeAkHFhFSnHF2lVzD/BsWl5bFqemJE3oigXzQN8rLWJKccSL3v3DJ1fNTkJ4Y2JlkGjz/aLAmz9EiveK//ur6bzT2JmWFzDlLLQK/JqI0+BeYC3TtNwB8O9N81w4Q81r795Ss1mE7MRnmAeQCLQfoPreW+CQZbx7dNUIpBdQe8+kJXiT+/sZg2Ag8DRdtY7Lr5oYxKBTI/GmP3V1Dcprk6Kq5NidskI5taUWghV93NE/PA8lQhkuOEpbBvAc+qbEAUNRo9r+9NoU37dySQCDidML8iI+MuIytM9alQCWglw/Z5YBzRgMABYWUel5D5Yr27ctQ31BPfReaNVZCXANb9AxHXAombth3qHdQHab6jbtycs3sohzuGEqXndtWclwG9+9d2M42GtPf3KCfrPY21X3q+jEoH0zSv+9pR6tq7q0yXfFgCFQYnfVoa5/55n8M+pju47Sb/t4UG5urlyLs2uoFQHwUqADDfdWx5Slke70M2pog83M1RcjtyWHLirvZWtBIheOVU02Jt4RlFBdRA4cYWf9fE6H6/z8doBXjvAP29V/fv0R+2tbA+AwvBoRUbEK+Nqujzwg0bhsLKOqS6QCOx2wta1ZydAbg1VDgz5gbTbdUt7mX/TqQ6o82kMsAcgt4YuriIizizKWeWQ6YHsCtDruAzdF5keyPRAXi0VW+bABoC8QOwtsXgDBGO/IwHyauiCpd7HG8C4mNsBAMWtFveFgOGrlWb7QibkINBxM0J7NCbvnZcidBe3JQu9d5Ye62DhOtqurcNtrMTLSrzsyObrxzrYkXb2umHstxEgnkoC2K0kgN1KAtitJIDd+h//4oa1H68RnAAAAABJRU5ErkJggg==", deeplIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAMAAADDpiTIAAAACXBIWXMAAAsTAAALEwEAmpwYAAADAFBMVEVHcEwiPVT///8EHTt7ipn///8AFzb///8PJ0MHJksGJEE0TGH///8CHjwIJ0L///8AGDUEIz7///////8AFjX///8FHDoAFjQCHzsEIDwAGzf///8FHz8BHDoNKEQDGzkBHjo2TWMMJkL///8FHz////8AFjMzS2IEHz0AFzWVoKr///8DGzcEHz8NJ0MEHjwDHjkGIj7///9hdYaTnan///9oeokHKEA4TmMAFjIDIUANJkMAGDQNJkOVoKsGIDssRV8IJ0AxSF8FID7///8DHzsBHDqrs74WMU4WMUoIJ0P///8pQFmSoqwAGTYqQlsBGzYGIj5LYnUFIkAKJ0QdNlACGDz///8FIT////8aNE8fN1ECGzn///8NKERdb38AGTGRnKgBHz1/kJ2bp7EAGDQAFzNoeojEy9IzSmK6wsgGHz51hpQMJkIJJkImPVpleIkRKUYHIDxEWG4vR14CGDb///98i5sAFTOrtb7Dx9Ccp7L///+EkZ8HIj0ZMU0PKUR1iJV9i5ojPVVOYXb///+LmqYoQlmXprCuuMMuRVxjcoU/Vmx7ipl6ipkHJktmd4oYLUhkc4YAHzlPYXVleYeUoq3///9EYHP///+qtL3///8AGjqerLUAGDcAGDEPKkb///8QK0YMKEQQK0cAGDYNKkYNKEYJJUIOKEMII0EOKkYAGzkLJkMIJUEQLEgNJ0UOKUQEID4OKEYAFjQABCUAGTcAAB8AASIACysHIz8LJ0UADSwCIDyJl6QACSkAEDALJ0QAEjEGJUEAFDIBHjwAABMOKEENKkMAAB0QKkYAABsAGjhbb39YbH0ABicFITwFIj8AABYAABjt7vG2v8cPKEMADi4qRFpuf4+6wsrq6/Dm6OxxgpFUaHknQViLmqaHlqK4xMpEWW4jPVWfq7azu8ULJkGbqbPp6+4/VmssRlzN09nR190AHTsRLEmFlKEAABX9//8KJkMAAA0ULkkVL0suR16grrgOJkNNYnMAGzW+xMy8w8p5iZZ2iJZjrmqMAAAAoHRSTlMA0B7f0BxULdAt/qkhRU0jNP0fDNAZ4FdgSUsX3tqA4X2zRBDjAV241OKeKzvM8u1ZUC+lnQmkhqha8PNR3bFAsly70A7l45nLyHkUuq3cxlVUqfvXwzAp7SW5tHcG9qkcofugq2NNqa+wrbmi7fzNo+CJsa9xRbrUspaeMaTyzOGxsKm2NLDcnK2zpMDSyyunv7KOvq2aSLdEkz33ocXQN/nTDAAAGEpJREFUeNrsnflzk8cZxzO42NQ2h6HYmNMQYkJt40ACKQ4ph6EQINwJkNAwQzKUoUkTmpBS2kyTmXamLT2n/aHnzL56X1uWLdmSdQvLtw3Gh5ANVgzhmgTUciZVSJppp1PJbhMOv6+1so733ff7+RN2P9rd77PPu3rgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGA4LEzfmZeXkpK3cwrGQn1MSZm19p0Vrx76yqFXf796ef7Yb2JI1MTE7MMbp+046S3jNXyZe8/s4tcP5mMdUA0rs1dv21PNV5jN5H/whlc2/unPWAXUwbjpa/aUm8idlJby1X957mAeBod9Rj4yc16AJ/fD9+7YsmQiBohtJuw9MlU32PQHVwFzQ9m0x7IXYpAYnv786QVNhlItEaMsY+OuBRgnVtme88w8A5GE1xUuyx2PoWJy88/aXdjLS88/Ka3gdZlfnbwSw8UaYzf/NKnJUFFKyJAKVKYWTB+HEWOL7H0HtvpJuBjmzZw0FoPGDiOWr2jx8iR8eN3stE2IhIzw4JJHk47RTH9/YYgPRsIJGDwGot/Sx4slo58Y/ow1OT/E+Ck++u165omjJCL43qKf547AEDIf/UT3AROvm/FWcvpDGEelRr9NL4YX/cSPAmWpc78+BiOpTMbsezujjAyXyuoViIRKJJ02+okeBY7NTstahwFlPvqJoQ1Gwoe/OxoNQ0qKfvkRRj9RCV54+HA+xlUppEQe/UQp3zNnUjqGVgmMyNoSefSTPgokozos/7Nf8qLMhoZhRD9UhxUe/Q5k+CtIjPBv3ZjzE/QOqyD6iWDiTUXrD+7EQMuTdclRi34S1eHPVr01+UEMtgqin4gCxP+d4sfHYbzVEP3EOPoEGoZkxsjFb8Qi+okeBXSr0hajKiCj6Pdako6PQfSTqg5/46Vk9ArIJ/rFfvO/dxUod83d/yYGXw7R77cnvTyJO9oKV8f6JSMxAYmPfr0JmP4QZv5Y0rewD8gg+pUmRoDgUSDgn/H0aMxDoliQE7/oJ7YPVLrmjMEVUaKiX9FxniSY4D4w9Wu5OArE/+y3aVEw+n3xyEsCF4HgUQCfk8ab0fvmpgbiHf1EFfCnFkx/FpMSP6aMee6ki8iJ0OekKA3Ga/N/5LVpvbxZVgL0f06KF4biwcrsxzY0+YlWXvP//4YhHAVizbjpazL8RJ6EGobwOWmMV/+Z8xIf/cRvCY8VLcPnpDE8+22WSfSTeGHoWNIPknEajE3dN/vwoSa5RD+JF4a2zv0+qsMxYPvap7aWEyVQfnLOfJQGo8yIrN2Fx3mTIgTQBveBNNwSRjX6TQ5GPwMxE2WgLeV1uCWMcvQrI0oidEv4bewDaoh+4gr0Tk1LhgLDZuImmUc/qX0gEw1Dw2Th6NXTZB/90DAUy+iXUUmUCxqGohD9iKJBw1Dkhb/JL09TUPRDw1DUo9+PUv2EBdAwFMnqv1yJ0U+6YQifk9JEv0wdrzWzIwAJfU6ahUgYdvRLVWr0k2oYmvHSZigwNCkKj36iVJS7Duz/IyZYmvFZWwpZ2vzvviX0lqxH77B09DuS2dBAzIRV+N6kl/fihSGJ6FduKCUME3p/Hi8Mia3+jEU/MfDC0ODRLyt066c1sy9A/wtDuTgKsHPrF0F1WLcKLwypIvqJKoAXhu7c/Be/UaiGzf9uBfDC0BfRL7j5EzNRGaEXhrZgH3hoIPppifrQljagYSh90vPz1Lb639swNFK9/0uYvnhRUq8SGz6j2jCUljtendM/YvPP5gajXylRMypuGHpz/9sye+YlkQ1DqqsOj8xab/PyWsx/P4ZXVPbC0IS9RxL2wKs8bwlV9cJQMPoVNKkz+onfEqrohaFQ9DNgzu/Dn7EmZwH7079y/qOzsfoPvg/0Fi3LYr1bJG9XQQKf95b5PmDidcU5KUzP/9Ldhccx0+KRkBiKXme5ODzrxxkGYsZES+0Drjmz2P39z3Hh9De0AX/IZvR2IG9RBk5/Q/NZ9dNsXg5MyCn0Y3rDoHLGfCYFmFyA339YVPQ+n89i/edIE+Y2vCzAu15ksFksNxMHwLCLghs2s7cA/MZfgZkNl62rmVsC5m/ACTB8vE+x1iAwZfUeTCtFMeBJ1vaA7b+oNmFew+eF361jS4BxxQ2YVQoa1m9nS4AxT2JSqfaAYraeFZuwdgcmlQZhG1unwIl/vRnvIdQIgnBCuQZsY+tOcOw7tnj+fARiaLE0Nlo6XHyVMi3QbFvKlgDf64hXG4BAXM3WHofQ2dXVeeGT1rYaPS8oTwDTqGcZE+Bf8fkhCoEOq7XzNPc5Z2tvtTeWK0+BUb9mTABbXAQw2hyf/o27l67uepfSFBj1ZbZ6QX5l08Th5+91dtzgBqPT3mGEAAkk5ZclsV8BTHr7OU6E6zd9lScgQOIE+FJJzFcAY3PdDU6c9z1eDQRgWABjs56T5Jy1WgMBmBXANNT8c9xFqwsCsCqAoK/jhqTTaYAAjApQ3XZ9aAG4280mCMCkAMa6i1w4OFs0EIBBAQS9Laz55y57DBCAQQECjtPhCcDdsggQgDkBBNunYc4/d8phhADMCWAMewHgOEvLCQjAmgBefdjzz11yChCAMQGE+vPhC8B18xCAMQGq7KcoBBBaIABjAgQ+pph/7ly9AAHYEsB9jUaA0w4IwJYAQvNVGgG49ioIwJYAvotUAnwEARgTwHmJSoBWCKBuAT6GAFgBIICKzwAQgLkU0Ekz///ogQCM1QFaTtAIcAN1ANYEMHhoBOhzYgVg7Taw7T0KAc53640nIABTt4F0p8Artjq3CQKwtAK0WKhiAHfJ45P998IQgAIj1X1w//fCbRajBgIw0xNoucDR0mjVGyEAIwKQQNvfqQ04o6+R86MBEIBuCbjG0dPX3VgpQAAWBCABz+UIDODed8g2EkIAKjTunkgEkHEkhAC0m4A7IgNkGwkhACVHG4f8OKD2PwqKhBCAuhgw1AsRtT32jiuKiYQQgN6ARsldoNPq1ertnUqJhBAggl3A0l4r2gXwidOlIYKrvrtPGZEQAkRyEqyuswxeFL7YYxl4GEBw1ejPiEZCCKBsAUIvhdov3K9ArdVZ/fnP26i3NopFwmoBAihbACIELPaSvjsLw5cvdDvdd9UMjJa2rsGPia3yeVIWAkSsgNHts7feunqutravU3D0eDoC905q8CjQeknmkRACDMeBKt5rqa+p8VlaDETQDH5asJ2WdSSEAMMtDgshJE4Lesfgd8hnbsqiNAgBYn9aaO4Z/GGJ8z0yiIQQIA4KlPtuyjYSQoB4cFRvtVyXZySEAPE5KRg7RKrDiY6EECBe+4BMIyEEiJ8C1c6OM7KLhBAgjhj11nq5RUIIEN+jgKWdMhIKQtUAggABFC9AfyQ8+WHYkVAwepvr7D2tra3d7VZfCy9oIIDCBQhGwhaP7Up4kdDta7d1Xh7Ij+/d6Lv1UZ0+6sdFCJCAfUAfTiQ0uZ3Wi/d8jvxvizXa/eUQIDGRUKRhqKvNNvAbF7w11sHajk5Hu78cAiRIAZGGobPN/ZHwqK1N7L8pP/Q1GyGA0gWQaBgKRUK+0X1WvO20xFcJARQvgETD0PmettvSX5rVuTQQQOkCSFWHPxjq2QGPCwIoXwCphqG4/TUlBEj4UeB4JAbcitZfU0KARC8Chub28xEY4NELEIAFAfqrw276VwduOAIQgA0BQg1DHst1WgMuNAsQgBEBJBqGpP6RJAABWBFgIBLW0gnwQVT+nRYCyCcSOkU+JxX7d1q7EQIwJEB/JPTRvERZ4oYATAlANGbPbZrn53wCBGBKACI4/0khwFl7FQRgS4AqupdIW7UQgC0BNK1UOaCkHAKwJQBvpRLgXT0EYEuA8hK6O0GLBgIwJYDrNpUAXVGoBkMAWQlggQCqFsBvoxLgKrYAdR8Cr7XgEKjqGOgogwCMFYLsdIUgDQRgrRRM8wflpxwoBbO2Bejfpflv0npcBjEmAAl0Uwhg8+I6mDUBBGf4bUFn24wQgDUBiNsR1zIQBJAdnv+yd+5BUV13HN/CsGZ4+aAoGFCjImIMATSKqY8YNYna+o7RmEmdRpuxPpoxfUwmbadN2iRNH390pu1/7WXvZWFfyMK+kfD2tSguCIsEgkbtWk1q9Wb6SKfTsmBMDHfZvct9nvv9/OWM/MGc34dzzu/c3++cmMvCuswUBCBOAIPVGmP8rzSjLJzEGaDaOxBT/Ls9wvSIQwBlYLfZ6kZ+80BsVUE+tIYRJADDNje3OK11w/92nY8h/o7mJgoCECKAweZwXy0ru1Y/cltkDE9Tll0JVlMQgBQB2jpujVwI80Hn8C1hUZ+mLDvbINglMRBA7tk/cNx5/b5bwhhDNAN6GwS7IAQCyL34t3ZdHHVLGFPd7PtL5PhbgywFAUgQ4Ey1yz3qOqA+V0O9ocnqPhfpaWK/o5qCACQIYK/nfoC0uz3cLRw8z/Vp+L/tXmGfGIEAci7+nNdGX7jSHv7/ujZvx7n7bwvsv+TpEPplAQgg1+Lv8HMf+Q34HSOVXmcoX7Pbc+NfHw9fGPzRtbMuf7CewmXRJAhwptrq6e3nvAjWeTzw+RTPUGZHg8ffeft2l7uhNVAtwpMBEECexb+d83rAC45RV0Ezn70YgQcjSBGAqWps4C77uOp2CXwZPARQ3rkv6zh9gzu/62xlpX84CAJIfe7rvNnP/XnXK8sTkhBA0tm/xuu5zhX+/l6nVZ5fCQJIeu7beYm7vM/vYPFsHOECcJ77jqR+HTI+JA8BZD73LbtQLvArQBBATee+sqR+EEAx574Xu1pZPB9PuADhxX+QM/W7ft+5LwQgU4CIi3//TWeb/L8eBBjPqR5zzNAUsFrbzBWRjuoZc7CD+9z3xmkHa4AAKhaAYa3e0yc8t3p7b5af8Dtba0Z/rAsv/tyVPZcbGqsYJUxQECBe6r2dvZfvFWzc6Ttn9bi+vKGzOrk/+sqc+kEAARZ27+infbt73Q4b88Wf8XB+9L0zKHPqBwHG/UWvmbuP/33GabV/NvtH+JmyAdlTPwgwzsW/vmMwUsl2n3f4aee7zT4KTf0gwPimf5d/rFv9y4NDu7t7zT5fniJudbRRigIC8I6/w/t+lKedrUHn9Qjnvg6bAQKoWgDG1XAnSufep59cjJD6NbMMRUEANQtgqPeXxUd3u2JSPwgQP74Ik3s0+ns9VsWkfhAgbqqDZ+OK/4B8JT8QQMgFwPq3eML/d4WlfhAg7gnA2cc//BzdHhBAnQIYrA7+8b+qoHNfCDDeCaCbb/jfU2LqBwHipMbKN/XzeBU8+0MAvmdAzR/wTP3k6vaAAKJwzPMxn/h/qtjUDwLEB83rRZ9z/krlhx8C8CHA61nHbucxCgKQJIDBcYPXFsAPAcgSgGkc4CXAbQhAmADH3+MlwAkIQJgAvN50Kyv7BAJoWwDMAKQJELwEATQtQCuvWoA7nRCAsHOAtjO8vgK7IQBhAtg6+Ahw2ctAAOkF+I2YXwNP9/MQoNdqgACS89xv28UrvuCXBpxgKQggOak//E+taGNlsP4z9vj3ORkIID1T3nBZxBssNrYn/YYZdBkggAwzgKgCMI7BmAXoUscKQNwM8DOriALwmALONjIQQAaSDonafMs4bsYW/4/cPgoCyEDGjF2iDhcbY2dYezsDAeQgb+tPRR0uQ1swlvj/z1tNQQBZWLhD3DJse2t7LK1gAbXEn15DmAA719Dijlh14z+ixf9Dd41a3q6r9b39I7IEmPBdsXdftmAUAz483aaWDQBl8b2VSpYAmU9/S+xBszWWjxX/S271xJ+ybyrWEUb2zFCFyKM25tPOvR016om/0fzAw6QJkPRyyCL2uDVZ3RFqQ641NLMqer3aYn5rImkC6PQzWbGnAIrxNXZy9An2lXe02SkVUbWpiLj4SzIFhG8Bb+wavO+2iL8OhF92VtGfP1VBb38nkzwBdPoCc60Ew8ewLmdn+ZWL1/q6+y6fZZzuxhpKTeEfwvTkbALjr0vY194kyfgZmAqfK9jgdDq9rW02iqFURt2O1XkkCqD7468raakG0cCMQKkP+idHN+rIJDs/mabA2CcAtpZXS3SkMju/BQaMuf+zVAVeXUVs/HV5aQcKmygjAh0p/sae3D8QHP8hJi3d0YNJIFL42dDB9Ad1ZLNx2bu7bAg2V/hpU+Lv03TEk1cy65HkEAI+ip4Vb+oTdFogY/qCXJo2ViDmX9j8hVoOFu/VaYXMLaU5J+laBH6E2lralPNKmk5LJKXnnzdbMAmMHP2cevx7y6boNEbaLwt8VVAgfPRb+OysEp32SNDvm2nS/FbAaGuZv3Rhhk6TJOlTEk3a3grQ9NRF+jk6zZJUnB8wW7Qb/iMrSosSdJombeVTmk0JK3170vfqtE7qtJS5Ju2dDhvtoZbEl2brgE43MeuhQs2dDtM9u745LQHBv/uJaMYjydpKCYdSvxceRuDvsXb6gsSTtFYUGJr91yxd+BjCfl8+MC98OqwBAyqMNJ34q2+vRcg5Tod9ZvLjT5uGUr8pCHeElDCZJTwlrPI9j9RvjJRwydyT5KaERiObXLAyDXEegynzniC1YMh4iu6Zu2TZbgR5bIgtGKJ7CvdkpSLAUSGzYMgeSl6/YRKiGxOZ01LWmWg7OdEfTv0WTc9AaHmcDn+tjqDUryentCgJYeVB3sKla5KrLGT0kJiHUj+Eny9zssOnwwTM/kOp32tI/eJLCb9eHlB3wZAx3O2B1C9ufvCdt8+rumCI7jl8YDXOfeMnYes+NRcMhSY/s2EnojjO02GVFgwNl/wcykbqJ0RKqMKCITtKfoRDjQVDVdvXb0DJj1CEC4ZUtA4MpX4tuU+noeRHQJLmpeQeUcfpcLjVM3HJ8gcRNIEVSD9gVsVXQvpU4YEifPUTgVULcpNZxd8wFJq8fgZSP5EmgeWHHv03bT+l3MXfEmrZtDgNqZ9o7P7+u3NracXu/WhT7itFmQiTiDz23P5nJ1cptt73zWKEX2zy0l5XZsEQG0K9rzRkDp8OKyolNBpt7Lrf4aOvhKfDyioYonvWbVuG1E/CdSBcMBRSzOlwXeGe/RMRFUkZKRhSgAIVRlvLmqWT8hASyU8FslLkv2wwnPpNXYRWT3nWgXA7qbxfCUdaPbH4y0baN2aGmmRLCSsslWj1lJkE/bZE2S4bZEMz30DqJ/tWQJ+S0yPHOkAfyXlZj5IfJShQfFCGrYDNt6cY3R7K2QpIvQ7QR36+CgOvoK1A+NJZ6Qww0sn5iL/C1oGhlFA6AUybszHmSlsHVhYkVxqlKRgy7XoBJZ+KY6L+pakmulaKs0F28y8w3krcCux/4vFTEhQMGV88OgejrUhKZj0zWfzaYeOKYgy1QsmYvlj8giHL/EkYacWSqQ/fMCTuFDB/AsZZybvBcDupXcSaMctXIYCiyZs0Y/2LdZR46wAEUDprVx2db6JFu2QKAiifjfMOiHfvMARQwTKQtzvryUAVBNAy2SufarGJkRJCAJWQOm2bGOuAAQKoRwEx7p+3QwAVMXz/vLAFQ00PQAAVkSH4k2SVX4EAqiKpSNgnycwQQG1kpgtZMAQBVIiQBUMQQI0IWDAEAdSJYAVDEEC9KaEgBUMQQMUpoRAFQxBAzfmAvjRnvG1EEEDdpwJbS1eMr50UAqicvenjayeFAOo/FRhXOykEICAlHG4nrYUAGt4KFMd9wxAEIGUdKAjFpQAEIGYd+HFcWwEIQM46oE/J4X+zBAQgaivwvI/v66QQgKytwEq+r5NCALLg/TopBCCNiVkPHbZBAA2TF36dNObaYQhAIBk87p+HAGTmA1kpubHVDkMAQteBpPT8gBkCaDwljKGdFAKQnBLG0E4KAYhWIHo7KQQgm6jtpBCA9JQwSjspBCA/JRyznRTdwRpgrHZS3A+gkZQwUjspbgjRBhHbSXFHkFaI1E4KATTDBM52UgigHdZmL04cVTAEATSVD2wZlRJCAI2dCqTnnzdDAE2nhK8VbK/6/PJxCKC9lHDL6+HTYSME0G5KOO+JR+00BNAwJbM2300JIYBmU8JcemgSOAMBNJsSLi+dW0czf4YAmiV1dcphwyYIoGF2ztrxpxIMg4bJyN6fhFHQtgJ5GAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/r9RMApGATIAALdU/n0kQtC3AAAAAElFTkSuQmCC", googleIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFcUlEQVRoge2ZW1AbVRjHQ7HWS7VirU6d6fiiM17qi1Wr40zfbMdxnJiWChQKVOqUTi/TAQFxFHDq9KbY0qvaDpZeoBtCCMRyb4GQAiEphCY03IJkAyQ2JZBsFshtjw+ZrsuJJHR3m4UxZ85T8v2/8//N7tlzznd4PIS/uDv3DsIAXDsIA3DtIAzAtYMwAPtJny6L2dScl6MpLjbIbll0d23GPvto4K61oTuVp7kHWN+QUWKQ4Z4ZMO9GAKJqTPV2zX6On8BLFUkIKvcSBACgHxvL1ZZ81nJw860j+b0Si9MOmR53Yjma4gz1xQz1xY1NuYyGZsX9Bw2Zpmmrz9wRnejx0i3Uf1eWJ1SOdkAMteaup0RfsDA68xTr6tJsLtxn68xA1X/GLC3dIhlphxgQVB7BOUBUefyQw+wzhLmnny+PnyvyOfE2A34PYtjefpxjgBP9UtKNZKQ9cHBcWz4EMOQwQ+9bSAFWSRKnPE7SzcEeJHB8pFAwiJkgho85nMR7b/9GtZLWVRhU8u2dyxDAobsizgDKjK1UK99rrgaVvFWzDwIQonLOAHpsKNXKeX1dUMkSoeD+7GVBOtrBGQD5/fE1pXVgPiqZpYeqKjHIFsoTcBOelZKEoKpraAtVlast4QxANHsOAABSlKeCqi4PN1ElH934hjOAXaqzEMBt62CE8PPAqhpTJyVeH4EEiX+EACvE2yZcDoghuvVYAMmy0mhyEnsI74ab2YzcMwTgIfzM7iIIYGzKuroyea74ZEWBL4wA4EDXBabumQM8JhTUmrr8X6QXJYn+we/Vp1tdDgCAFxDp6uCrXigAeAj/GXFstek2xDAydT9RcYLcML9cuePHHqFv34G5pwTyw+y4ZwWAh/AjhYI0daHViUEYuGdGazPoMZPvoAMAwNzT6xsyWHPPFoCvPyuO/bLj1DVUrrMZx53YhAtDcQuEtEt1lk337AJAPQLhb1cchwBWiOMWDQAP4RcONUAAa6QpiwngynAzBHBpuDHoSreAALL8VgkAwDW0ZXlZzOIAWF2Z7HBP+zNobegb1XsWAQAP4aeqzvkDAAAmXfgnsh8WHMAToq3v13+dojx9RFd21dDcYFZ3TgyRiwDU3IQnWVGwIACiyuNTVefqzGrqGR8A4CW8ky4cxS0obnETHn8GL+FlWllhbv2n3nLMPUV60jtMJ/v/jGv7eW3NvuVlsWTpal1dWq99xJ9hxut6py6NG4BNzXljDyqKAICO8f6NzXkBvpLLy2IuDTf6M7Tf76N/KqDtPklRQH0rDulEkULBfIT7O8+7CS/EQP9cRk+24Wa2y/uv+1MD1x9KHn3rKDQlghbF2ARYWrq5zz5Kjm2ZsdNYmA50XaACILSrQzQ0W1uPUcf+468bNJIsEQo0k8NkkqoxVegArhhm7XCyuovojf2d5gqZ5KqhOXQAXRNDVIDsO5fojU0tVtNOQgcAqmcV0y2t7eg4SSZZG8o7snqzmgpgc+EB7jUC9DMDVb4Mjfc0NN3TA/DfJP+ur33YJFHl28adGADATXjerU8PKcALku2TDy7FyJajLZ7/ahopFCCo3CfMpPsNoA/Ao9SnqE06pnytandQ7SpJonikzSc5qhMzveejrczqLiIAvE92Ex7JqCKh/ZdXpDuhB7KsNPrDhsz8vopJlwMAgHtmvlKeYWSdIQAP4X/actD/4pE6uXV2o2K8Xzk+MIiZnF6373cvIETG1levp7LgniEAD+E/Kdq6W/Wryjo4Fwa1GXHL8b6KN6v3smOdFQCyr5GmxLXlH9aJSgyyxr81nRP6zgl90z0tgsqP6sRJioLXq/cwraQ/UgDOOvcOwgBcOwgDcO0gDMC1g/85wD+li3AIT+EGpwAAAABJRU5ErkJggg==", linkIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAACKElEQVRYw+2WO2/TUBhAz+eELVLtZOUHMObRIT+AnaUMTDAgwVDcREJCEZUgAgkYUJxkaTcGJISUoSNj2ZuQoWPZWWJ76MCQ+mNIghznUYe4VKriyb6SfY6/171idW3lGq8013xtBG6WgCCfIDi8EB0amnoIuvvfBBReu0WnHlo6sXr2T0FeAeaVCiha9YotB8A8se+KaMYrtY+8YsuxejaCNBZGbd05EIbnepWGopVxOpxB0akCWD27skhiPQHhvVto1qLwUE38lcj2Ku15NbFOCnwV48Mi+Dg6Fav77LtXah8R6CEGiQqcevmGH4J/BvFn/lLxAVSNtBAkWoT5CTwSaiYSila97fbxiBS8RNfvAl+QM0XzQCYKH+WdjM4pToGd9dpQOFAxam6+4Vtde19E3kTh42p/tKgz/llAEGdQCLXUYnhjFXgsgXn9fBnc6ldN0eAd8PTS7y+bA/PgKnS8QvN+FD5+PAdOgTvLxm+sCKjQcQuzk0zgLAoXxFH0MZAByonshobqx1Ee7fLUGFWe535UhqqYguxOopTt7ZVXhS8VCC5Sv0c33MaYfkdV98MpsvpVU0ZhT/A8kAruAX33PHdkbrkd0ek+DteHaPAibs5XKcKhBPpgsN3qyHE9bW65XyYScXe6dQVmJKyMuyMG/qDY/JYEPO52/Aul7paaB+HFbHevhlAHbl21AMBQ4W1Kg6+BGmkMeRLnvJekwOZYvhG4uQJ/ANn7OVGZK3rWAAAAAElFTkSuQmCC", taobaoIcon: "data:image/png;base64,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", yahooIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD6klEQVRoge2Y2U8TQRzH/ZOWbbG0VKOIUaGlBUUQwqEcUQwSwCPRRMUHTTTxFhTqgyQkHlF5sZEE1CePRxWNJ8YaZWdv6NLtsYcPqLTb6ZZut4wkO/k+zu8338/Od9uZXUNg+KrWGuQOLADUDiwA1A4sANQOLADUDiwA1A4sANQOLADUDkwGoDxVXG9f/gKl69AAzJ89p5ox6JrtqxuA8lWjAZg7OSDNzmok87yOVwmA9BKq0osGACrgcEafPcsEINwYzt6hxEVVeg0LOEvzAiAwHNjXRp8+zbAFEtveoV9O+6sNp1FmGLJsU74ABIaDYkfsxUv4GiRJlpXrl8uANGJfUbjunnwjtMTgcsen30EXir18ReB2nVoxGDTgf2F0VN9Szn9kZFm5FPoBXUwIBPRDCBzOfwpfvqIqiuZhRx6OM82toNT9bxpRZDMZgMBwqsovcxx8u3t6s3fA7QtjY5pS6edPtqPTgBmDRwlm9x4lFoMgzIdpn19vH0pc0akpTZX4KAjc6405MX4W4o8e02ZAVVVVTXz5ClxuaAm5sSz++nUKsCjOHT8BnTx3ciDycFwYHpk/fYbv62daWimvDzicpgEQGC4Mj0BfhujkZHp2Ka9P+h5KQf32jd5em6n5wq3R9M5s514zAYgiW3RSm4fFEb58NSVyzS0yy6ZATj3RP/ClAyiiCBwlpgJgOHCWJj5+ghDIMte1f3EO19evRKNJRhRhcCjrz0s6QOz58/RpJtwHqEov9LAk8zxV4Zk/e06V5eSnyB88tJy2QuCmdlfPXygIAIHh7N6uZJdLDExKbGSOY5paltlTGAloutH1uwoFQGB4+NogJEjJ7gGgq3O4JGgAZIaFps68KyVuz3RSWowT7a/JqaEGQHw8AZ1m5p2Y2rJNjcehAPzRY7l2E67fSO4wN3Cq4AAEhku/ZqEA9M76XFtpMklVeFYCIPHpMxygti4fACkUyjTNbID37wsBELl7b4UA4tPTUACmviEfAL7/IGqApuacAS5e+hsgiVy/YaUA3sHva1kvzeli2zoit++IExOR+w90ppn9Dnz+AgXg9nebu1ChAGSGgQLwhw7n1qrIxra1UxUe4HITtuLCA+B2asu28PkLUPeqqgojAbpmB+2rXvras7VCJ9kEbv9TqSjxN28LAGArjn/4mJiZkb6HZACUSCSTdZ2RmJnJDqCqYjBoPgBV5TfgWDP0Hm0SQHhwyHwActNm/vCRRXG9fVx3D7evi23vYFpamYZGuraO3rFTT7V1TEOj/hdsqtLLNDVz3QcoT1UBIvTfyAJALQsAtSwA1LIAUMsCQC0LALUsANRa9QC/AVjYN7+D2LKVAAAAAElFTkSuQmCC", wikiIcon: "data:image/png;base64,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", jdIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAQCSURBVGhD7ZhbSBRRGMfPzM5uu+7qesvdzFZLLTVrM7sQGBSUroF2oSIqgpSKHoUuUPZQkaESdJGKMhCkSJJ6UpCKArvZzUsGaaZppZWKreuue5mZ08YexrRxZncNZxbm97LftzPMnP85/3PmnA97DTQgkMHRb8AS8ALGLJQOLZ4gIHiDBXsCyUJCIwkQGkmA0EgChEYSIDSSAKEJeAF+7Ubh8Pfc6K+1niQhtPNVQqzckzDAwarmqHwSZSxgUbOxBUmKpSvVq9dGrlmmCZNj6IpXCL8bhT+/0fUP7ReKBreub4sMa8w9/Pl5HwXRVe8Ri4XomisDGYlNpsK+HrtPKqbFQjpTyPFMOXMLRdK2YfJHj7P1rbOu9Z/mGlS3apO2x8k4LcVYaFoErDi3sP6AivAk46Fto81138pKzBXv/lKCEyVPUwsWEZP7QzQnMjxIlbY54cZTY8dNzSqmMTR5JON9xRfaCzOJZA7gxNyNCx61Re+PQX8AyrVv06d2B68EsUxiN5h8VvSlx7otKpSDNvPeazYXSiZDRAL+QOhjrpYrmFJbQ1FXwwj3IIhMgHscIjbMPTIPJcDiOP/ERaOEFdEJAECu3pMvQzGANZXmUa4xEKEAgOtNqjgUA2fD4BeOHYkoBQBiljYZhQB8d3RxDYEoBWAzlAb0nXJDf+aax6IUAHBZiBqF7mkwwrWUilMAhM4x32NKZkqzIE4BFNk/hEK3gJlKjn2dKAVQZksXhWKgIuZrAkwAtH+0NKEYgNSQOQoUsuGXAEjTTAcBGYb5dBjkBVKtlc5RlICUzPBQrkb6NwIkybwAKGW+nWb5oH/1l1Yx6ya+c0fQxLPGOPwSQA07BlAIQIRS/R99CMnW0r57zPiuiswzcD/dn3dD59fRNhSD2CSV6r+NALS8+LjtIrN5ww+VRkdxraFu/BFAd951MX1kXBfEelb0HWhp6sjJtHagFMTmGQoXE3yd47sAaB0qu8N4lNixlPcdXkA5W66/X5ZhrmcebNTWFEcE8zfPVwGQbDrbU25GmSJblxU+lfZDymp7dbt9V1pLWoGd6XuQrKmvTUj2ypo8VQl73dX+YJMu3aCYgdHW3qHqs915FWMePdVoPJbIWv8YV5XQ52hPmxSMmWkS2syu3m7Hu9eOmuaJGzV9dsT9irgUNXfrvS2rjBQt/nCiEyUTWF6Y+PiodpLPPG9pkQ1cdvDyvOKdWi+WtSmXVYwHDbWHJ2u974QR+0/HtPctKdvtTev/hu9uFn8YFCerk5+VRIXzLHCcYFhsvCxrY9DxM7oHL1Ot3UuuFOjjeWzDil+VOREgmsrclJEECI0kQGgkAUIjCRAaSYDQSAKEZmw3GqBIFhIWAH4DD9ZjsqVbIzoAAAAASUVORK5CYII=", eBayIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAACXBIWXMAAAsTAAALEwEAmpwYAAAD+UlEQVRoge2XX2hbVRzH067isAzUBwfqgzL/zDHoZCqis2wgA4U9iVNB9qJSURHG1idhwhBBVkTUh01EER2CVEHRPVgVhk/Dm6Rt/jRpbZe/Tdo0Jk2afze99+NDb3pzb07S0jU9iPfwewi/3+/8zvdzzsk557pQXP9pk6/AAZCtwAGQrcABkK3AAZCtwAGQrcABkK3AAZCtwAGQrcABkK3AAdj5UZc+R6+YVk/h6W9J66XstaRFXiE+jO/+7gAEBoifNSw0KM7x9OPfT3CAmWdBo7lFh+zJMycsCZUQ7j78D+DZ3R2A6JA5WOoDezT4MIUx9DrtWiWA0mPpUvzTkjB7sstbqAOA/yG0lbbS19v0cbNL6AlLqORG6ZUHkPnMDCWG8e5h9nkBQP4Xs0vuR0to5pkOQ3cfoKSYofHbDGc900Kg4X8QxYX/gOUfUrzaeegd2EL7CQwYtr4TanHBIix+iuJi6Ysml07oyA0A+PYRHSJzieUxypPUIqhp6gvUYlQCFK+y9BXxMwQPE33dAjB5F6n3yI2y9CV/n8Ddx+xzZC5SGKP0FyUPek0AoBUJHLSE8j9vOHdtAsFDFH4HXTCMsGlF83fuB+qLlqia2GydWqy5KMFDWwIID6KV7aXVBPHThI8Reoq5lyn80VFHhJJH4C+PM3+e2NusZhsuve00Zb/dzO5tdfVSnW4ppuE/YElz91GeFA+sJo2bNfuN1Z/Cc4vRvTrX0F8hf0VQRFdbL93NAQQPi2Y0Juicudhm5i4bCbbjMn/F7KsmG0Kr9lN/rWUubfL8aHHNvSSej0rYbqs5MUD6Q6NU6IjFX/jN8HtvNW9lvYrSw/KvlkytzOTdWwW4fkosa/Mt3ThGpx6z+FcL+O7BvYv0SNPUVFF6iL4pRt0KwOxJgaZalIm9nSwxbCav3wNTj9rr6CpaAb1Oxd/wrOK+megblrTlsRsACBwUAGgruG+yZ0bfIvkuyXMkz5H/qWkFLjQAHheU0lUir7HwkemZuHNbAZQeKkHBwHMvWNIm7kCrCNKAhY+NnPAx07lyjdT7xE7j24fiwncv4aOGefq3F8BF+Ch6tWURSsyfZ/ppQoNEXhVDrrV/vmucBy+azvRIJx3bDLC2+s2PsA1b84lUi+DeheJi8RPT2frJ0l2Atb009QjJd8iNUvKizqMV0WvoNbQiaoKVa2QvEz9LcMDyFgJyo6RHml41Or77dh6gDZXt08lQ0PQatb3mgezXG5T17Gb8dtO8e7oH0Mamj5P73rDQk1w/RXkCrYQaJ32h9UN2G61bdXfM5CtwAGQrcABkK3AAZCtwAGQrcABkK3AAZCtwAGQrcABkK3AAZCv4vwP8CyqoTA3RSbNfAAAAAElFTkSuQmCC", doubanIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAEOSURBVFhH7ZI/C4FRGMXNNqsMNoPB5BuZZVMymERZfA+DkiKRjyBS/iySKIOMyvBwuLfe9zpEb+9Fvad+y7nnee7pdkOhfES+CjVtQk2bUNMmprE6rMUvYbd5X1Ag+IRPC4y2E/Vw3oVd7I4b1LzyUwVm+6WUepWPwIyW5wLNaZtmXoEZraDA/xf4+if0qv8soOnM+2qNyPq4kXgl9RJktDDLdrqgpoNMI6vW3ZWopWkO4MwpzLKcC2o6iJWTat1duVaB5gDOnMIsy7mgpsF4N1UrRbqLAc0AnGlhhmUeoKZBdVhXa0VO55OEi9GHDDycaWHGzFBMw2+Z9wUF3voDvkJNm1DTJtS0CTWtEZELQLQd2odfLaoAAAAASUVORK5CYII=", amazonIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAACXBIWXMAAC4jAAAuIwF4pT92AAAEmUlEQVRo3u2aaUxcVRTHGWqRYmukaWuj0RibWhu3tNKiJNpiQmKMhrSpMWoNNU2qJLVp1FQpNcYvxhA/aOIShqUDlAKlzAAjLcuwlU3ApiWUYlmn7DsUBhiW4eeXQQK8OwwzwBuSd3M/TOadd+//996955x78twId1vX3U0BUAAUAAVAAVAAFICFPXYHWh/0h9EfQutD3M71ABC9mfwgmrWM97C4mfswppJ/guhHXA8gahOV3zExiD3N3E/Zl0Q85DIAibsZuMNyW0cBGm8XAEh6jrEuHGudhSvyHpxbOYN3caaVnJYVoOK8zbXex8AdzAO2bB40oFbJBBDhwXi3tKyuYtL8rMrU7mS9x2i7kCFpj0wAGQHSgtqyiPRYaKz1gRlp+5xjMgH8872UnBkSdknb95QLtsEZmQB0B2i5ztA9LOY5Nd1lQvt7GmmAihC544DanUtPkOpH7ofEPy00q/ldGqDywjpJ5mr+EACEuiRAzDbS/Mj7mPJzVP9K/SVGjIIldN5lAOJ2UhxMsxZT6zJimUsAXH2JhgQsk44EY5kBIjZSFcbMtOPZhJwAkQ/TkmFH/jyA6T6Tw64HUKsWih7toDKUlP1EbVrCC8kGoPcXqq+PI3qLvW5UNoC2HEEuZEDtLmF/909XAoh9XJicpb6+zFRCFoDsI9JqJoelH3+4G20GV4rEZV9JqxluFPgrDyaGpG+p+lkOgJs/SKsZ75W2z/3I1uleBoCKEKGgK3sXHZ29GG4UhwmLk4cyh27L+0Sopyll3jaI9KQ5ZYlI124Q7pzVAkh63pag1kyuv4POl6LPGKy1K6Fw4lTg6LtzoJhlow03rTlA/vHlSZyZojZS4HxHuPb2mgOoVRh19qqfHiP7KOFu1Mctypo60b46Gx+3U/4tnTcY62JmiplpRttpuEzsdkcBIjai9xfWk6O8MKYurX7oX7T75yrYfbfmLvVXc/kZ66WCT8UZa6ijAOUhAGOd3DglXcdUqygIEu7UBw2UniXSc+Fps6cSoOUaFx+dHWcDlgnhI7j9k6MA6W8yNWYdZbCGrEBBJVBF8gsUBFH+DRUhlJwmK5CEZ4VlwyhPUvah3jDvz6xAioLJCODKXuKfJGEXox32lFDtqP/8PxDQXUpGAOGq1SleqNAdQOtjPS1Nz1acdAed28TxT9F7c9477S4l811nos/CrnmMomD6b1vH1/vz11vW36ZW2xPZWUn3oi5GYneWniVmm+O6L27B8D5NyUyPzatPpr9BzW925tvLma/wJFOmRbnMJC0ZFJ2a8ydLitYfovIC7bkSG9fcR/ZRIj0Y7wUYMRK9eUXjQOJuuoqF7sLUijGdqjBKzpB3nJxjGD6g8CTl56j+hft6hurAIgp11MURu4NwN1L2AUyZ0PmuQiBTu1P0Oea+lUwl2g2k+s6bouAEV19ezUis8ebWj0yOOKXbMkFjIqmvyVfY0njz99cM1S4zL5qmo5CSL2znCGtYWlSruPoKlaG0ZgqX1ng37blUhZF9BM1W1/7UQLOV5BdJ80N/GN1BkvYs6UmUjz0UAAVAAVAAFAAFYL32/wDDp7bQ08tZUQAAAABJRU5ErkJggg==", youkuIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAADwklEQVR4nO2bW0hVQRSGv+QgImE+nEoKQqQkpCBCegifQkIiKoIgfIhIoQi6GBHVW0FPFlISEQjRayFhEl1FJHopIioiiq5EQVfRMK9ZDzO7vc64zzlbBZcd54fhzMxaM7PWf2avNewLzHDMiujLB4qm2pApQi8wlE5YADQD/cCfHC391seCKAKap4GBU1WaA6eDSyAf6EnHTA5iAJgDDOXZjiJmjvNgfC0CyMuimPPwBGgboA1PgLYB2vAEaBugDU+AtgHa8ARoG6ANT4C2AdrwBGgboA1PgLYB2ohDQC8wkkH+KYt8WiMbAfsw986WAF8i5MeBhcB84InoHwV+kOEW9HRDkui7p6VC56gj6wZmC/lZ4AOwg/C5QgJYA3SJcS+AQ8BdZ75hoB5YC7wGTgDrgZuOXoftbwQ+A7XAXjte6rUBG4BraXxLxiGgXuiUOIs0CVkCaAfmEY084JwdV2X7ypy1uoS+XHel0LmMuYMdpdfpzLfI9i+eDAFPHUdabf9vO3GATUC5aK/CELRN9CWAx4S7qthZq92ZL0C5lV8g9ZItBw6IdpszX7Htn5fGtyRkjwHLgGrRPm9/bwGvRP9S4KWtr8Bs7/3AReCw7R8BTmdZLwqjwBmgztbB7IpOUnfDhBAnCzSI+h3gDeLJCrDamafOMWynqN8ndCIu3mGCcTBuHeZyWTDOeSIRh4Aawu09ChwBbgh5A6lOuQ9YCkU9rvPSLjfFVjhzTgpxCMgD9oj2JUJHSjHX63Ihb3PGXxV1GSdcMgZEXe6gBZjMEOAksAX4hYkrUeNHCVOw1EmLdEEwKD8Jg4pEk5DLDLALuIdJjTJVtgKVot1hxw+SGvgaRX0xJvvsdtautPMHqAH6CANmgOo0PsXKArLIiAuGkB4hv07moFRr9WQgTGACbYnj2HPRlmmsmdR/9BSpZ5UiwvQHZvdO6hwgyzPHoYMROg8w21UaWYrZKb8JU+gxxr6EkcCQ9B3zHL/M9m931riOuSySdr33wGbGkl8BXMngz7gJcP+59xl0+4C3wNcMOoPAQ+A2Jqp3R8g/xrArKP2YnfMoy7oTImCY1K22dRyGTdcS6yAU4BImHwdoSKP33yEuATK1VWGOujmBuARsxASZQkzkzRkE7wglMYEjE3oxB4yo88D/iLnAt1inJIucfHfQ3xPUNkAbngBtA7ThCdA2QBueAG0DtOEJ0DZAG54AbQO04QnQNkAbngBtA7ThCbC/vaQ+W8t1DGB8/kfAENCiZs7Uo4WI95dm5Kez/uPpmY6/mlsYlHZ+rzYAAAAASUVORK5CYII=", youtubeIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAIAAAAlC+aJAAAACXBIWXMAAAsTAAALEwEAmpwYAAADRUlEQVRoge3Z2U8TQRwHcP62pSAmZqkcQZCbUkAK5SxQ5SqSUvDAByOJCRojRuOjJsYjSkTBqPGIxngF3e0e0261BXqwu+yMD0tijHLs7DYDcX/5PTXpzPfTTWd2d3IYmtrXnUM8gQ0gncAGkE5gA0gnsAGkE9gA0glsAOkENsDod5wOtiifqy7m648IzVVihxv0tgKfB/S1g752MNAB/J1/tP753+3ziF3NQmsd76rg6su4qmK2KJ9xOrICiAz2JOcfKMw3LRGHqoKyVlBRNmKS/PVT8uE9saPJGkBi7lL2Em+HUVVpYsQsAPS1IQiJABBCMJPhXeWmAOvv3pBKr9fanVv4AKGlhuDPr5eWTLIlBZiA+OwM2fR6RYZ8mID00gLp8AghlLh+BROgChzGfOnni0jTLASknz3FAjgdUFUx5hO9jWJPq/J92SqAwjI4AK66BG8+0dvI0BRbfCBx7TJULNj1YCaNAxC9bjOAzXWsrWH9w3vTAhguO2QYEBnymQcwNMU4835ePK+lU2YIXH2ZYYAUGrUGQFMMTfGNRzOvX2IDxK4W44DJAC7A/e8xC3Nj0yFtbRVjTNDTahgQOzVuMUBfG2pLU4uPDQN6PcYBp7MC0C+FFApoibgBAM4VODuRLQBNRU50qxGwLwHhCnrt7m2jWzUW4EzQckB0fHBDimKMifcnPmkhgKstTS08wr45F9tdhgFScMgaQGHuj3MhbXUFbzS9cDYy4POYB/BNlWb2r82CMFxRaBjAuyvNANjDefHZGZjJmE2PEJTXt1kVtgSwJQV4t/Wi1y16G+XPH81H10vlwzgAhqZUIGDMl3oyj/cgsVWlXyxhAvbII+XKzTlMQHz2AunwCCEUDfgxAUJbA+nwCMryNk8zOwAYOlde/kIWkJy/v23Cnd7MRQN+gumhoggtNaYADE0lblwlE1/TYtOhHePt6vW6FBzOvH21EZOgLGc7NpRlVeDTSwtgoGM32QwecDgdbMlBrq6Mb64C3cdAvzdyvCs65peCw9JkQJoa27InRn53aFSaGpOCQ9FhH/B3gn4v8HmEtgbeVREup1mDZxz/4RHTHmsbQLptAOm2AaTbBpBuG0C6bQDp3veAX5Y5FwgEHimSAAAAAElFTkSuQmCC", tiebaIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAFwUlEQVR4nO1bW2gcVRj+zsxesrtJNrtNE6pJxFAkGCuoUVuK9iGpeMuToYIvoi8iSPIgGC/gQ1tvKBV80IL4YhGrtA8FtbSlSiv1VsW2NlhaUmNtbNLsJdnO3nd2fZi4c2Z252TOzmxmIftBYGf37D//+c73/3P+/2zI0N5LJaxhCE474DSaBDjtgNNoEuC0A06jSYDTDjiNNU+Ay2kHVsJTdwbw6G2+8vV7pxI4cy1nm/2GJ6DFRdAfdqtv2LxvbfgQSBe0M87K9jLArYBn7m7F7V3ulQcyEEkW8c73S6bGZnUEFIoOE9AfcmFrX4ulm07H8qbH6iecly3dugLcIZCzQYL6VWVBP7JYclgBhaL2+rOzEuYk9rK4BIKJLe2GNlgo6sbanAL4CZB1kjw+ncGFCFvSHhE6AmpXgN3gDoE8x+oZwe5VNIJoYnaWFUBj6CYP5BLw92IBsbQxU1YS+QePhcsEEgACAQghEIny2i0QuETAIxLMSTJ27F9g2uMngOH86IAf2zcqu7acXMLrx+M4OZOttGGBgQ1t9u7duEOA5Tsd2x6R4N9E9eTYSE1IbjpZTyF9dr9qQIA+s/Pgiz+SWMqoBoRl6YuCEgaioISBx0WQzq9MNTcBrOcwHR5SroiMwfPeigIOTCUxa0BsLbC3FqDIWWQkwUaCrQQQQsqvpVwjRboxuAlgTctFWTOSf6PBZgJUBeRXa7djEdwEsL5AK0BfxzcqbM0BblFVQMqOPfMqwFYCvK41kATpTK+HjyIgySDA2MLqgz8HMLwPeNQPFzPGISA0UCeSeyfIWr1gizoz1kaItvHC5jaMDQYMx+oJ/3zHelPV5OP75k2FIT8BBgwIBAhRBERTxttVkZpVQVYKJ7NwsSRIwUwdANQQAkYOdPoFzcSiDAXQJuxucwNKuW3WLLcCjLosvUGtqXlGn5AmQL9hGv8qigWGeozw9kNh3NKh+MDTc+QmwGWgwP6waiqelpFiSFCk4qhaCb1Sk7Ua6G61zNE55g4B0SAEBjrVw5KZxQLTBr1jtLvNDfApoIYcUP39Td2e8uuLkZUIUEm0+aAHALtpo4ctCuj0C+ihcsD5efbprZcKvHoQwBMC3DnAW+WRdX+PV3P9u+74ulQCLkXVswM6QdaDAJ6WEzcBhy6k8PNVtdM7L8l49p7W8vV0LF/REs8XgacPRnhvtSrgJuCnf7Rt7oCHaBTw4xX188EuNwa73PjyfMqCi/WF5Sb7SL9PUwafmMkAANYHBOweCaG7VURPuwvv/5Coqsw6PAS4YLkseWLQX349J8mYup5Hb1DER6Pr0N0qAgDG7gjg5QeDVesIRnG5KrBEwNY+LzauU5//hy8qUk9ki4iktHlgdMCPceqAtFFQMwECAZ67t618LRdLOPSnQsBSpoSJb6I4PavNF09uCmCMUgxQHwXw2Kw5B4wN+jWrf2w6jetJddWzBeClIzHseSSMuzaoSXJiSzumY4Xyo1K/AvvGOms6OPG71VkLHAzUpIC+oIjn79Oe93/ym1QxLlsAJo/EcZn6SYwoEOwc7kDIp9xa72vAI6C1hj960iYrZmWs+aEK/G6CN7eHNP2/g1Mpw+MqKVfC5NE4EllVHSGfgKGbPdzOmoXRdr3qWF7Du0c6NL/bW0jK+PjXG8zvzSZk7PpuEe8+HIaUK+K1Y3GcnlVCQL+1fvFwDJEayuFdwyH0LZfDPCFgmgC3AOwcDmFzr/YXYm+dXGKWvv/j1JUsPj0j4dvLaU2xpF+tv+KFmsphurHiFs1/zzQBr27rwLZbtZPff06q2BmysPeXSqW46xADAiEQBUA2URabjpY3Tixiz6klpJcPPM7N5fBhlQnxwmvUYbEIn0m7phVQKAIHplI4O5fD5ANBvHI0ztV4MEK2UMK1G2pI8JSyNMa/jmo6TWbCEgBI89/m1jiaBDjtgNNoEuC0A06jSYDTDjiNNU/Af92J/p9i7yIiAAAAAElFTkSuQmCC", inSiteIcon: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAF70lEQVRYR41XS2yUVRT+5tHOg04pVEqtFPFJS2M1hIjxkRhjNJHEsNC40I0bDWpIdKNuscjWYExcuHHj1oUkPgCNLgiJiQvqAwwBDTRAm1oHy7Sd6fzj+c495++doa02DP/7nu9833fOvTeDia9aQAZI5JeVU/2T8xZvZ+Uol7zfknM9yrOM/Nb6ayXhuQ4l5xw340d+H8LJYPo8g4mvQ1T9nw/tYwbXFy1YHHRdAJ4Eg6UDh8CKScBwTA4r9zJ47xt/cyV7PiQAje8A/DoC5eBCpFUCxiAkMF9TIJ5kCoCoGMAY4AtZvmR0K4acfGcfxxiMyrUBmGytpiVoMnBsJZkMULcsA1jG+jCSgCwoE0ZdmrmNGR+cao7JhDxrvXYGeD/4IgBgZk55gBUAaEAPHJlvLQ+0aU7KIwlUe0Wj3lQAch5M2JaxAVATMqhpn2NFrAMiDe5ZOwAP6oy4BMETxoBlzAA50z4N6EDcD16CERin3SnXLFcL6MGZPD2hDLAKGFg8EFNOACqHBWqTxLwSV4EzoEcJ3uSwUbZN9gfTXqURAOqBw8cDAFJN5yvlbsJVrh2kEuFsxOZSpwUGNJAxodeRLEnKgABglqwCLz8FYwwQFJnQqog9YN7wCnAZGsvI5Rm7JRgiAGRAwRgIA2gMyGBKuWVMACoJbzGwXWsb6PSCmbsuGS0u4cWxCkY3dePj36q4vMBSI8GUxBoRM0+v6YHDJ1vaS5R6CUoTOgMeXD3S4Ql+xMHRxO3lLF7YUcRroxX0F/M4dmEOL393BYu58oruKQPGil43CeCEwIgYUCnia2NAJTCWxGAkaKwvj5fuLuHZ7RX0CJDpG4sYGezD0R+n8M7pGWBDz4oX3ANaHTRgkMIAMHOv/w4Aep9dUo6NBIVCBo8PFvHcnT14dKCEkS0lnLtaxdXrNYzd2o9iVw5vnjyPT87WBIAw0FwOGjFjrQ5KYNfiiZsBUAZmSykgbrLA/PCR7WVM7B3EeH8Bvd055LvymJz6C2emZvHU6DA2FrtQXarj+c9/xfez8m2hywILCJalTs8CQE/bJHAGzNmUgQCSHDYXM3h1tA9v79mKjZUCkqWmlG9GHX7qj2s4fWEabz0xrq5nwfz59wIe/GwSc1mhn+wxY1L+/wDQjLEEwGBXggM7N+DpHZtw39BmlMsF1Bbr+PKXyzg7U8W7T94vyiQKqCT0Hz8/jWe+uIDlQsWoDvX+HxKY6bTEIgBKfx2o3cBtxWXs3VrCwYfuwkytjnPXqnj9sVH0Cu3LWg1At8jy0amLeOOHK6K/ANDGY7/UAzeZMCpDBveG46535zcawMI8hgtLOLB7GPtGhjC+7ZbQKyRIUwLk8nkcPHYGH/78D4Qq07wDgHdHNSP/vS+dkOs9dbt1vbQsvQKsD4g3CvV5fPDwIC7NzuHIiUkc2bcb+3dtwz0DvdJM89h59Fv83hD9xaCp4bTvWxV4i7ayXJkLfDLySUcXKN4ZbW6Q/pBN6thVauLS/BKqDXmnNo+hcoL9927BK3vuwAOf/gRUjBl1fTQdKxCfoNK5QBpR2gnZ842FtDVHnTGsJMUXUlZ5VoqUGTWWFozadQz05DGdFKT8SpH+1vk6Jyf1hDYiSsAu7BlT1MgLujQ3CXx1xFcUaDQbckDWuDIYT7vGgJtQPeDTsS9Ktfx9TWjtNp39vDf4ZGVBYzC+mGWWfOyzoAdLp2ebCb0TytH2BfG8b5nFC5DYC+stTHVKDiW59oqI1IfKad8XdC5CnQEP6GtE/Vrrp/3P4gb6LYCeRz9lwkCmAA7JojTVk26XHz9qW6JxTjePrAVAs3IU7Hz8xoJHGacAdV3AJdkh7g1jU1l23oA0U18JxSui9RhgErYRcVl0T2gMOEPCsqyKbW+oe0K+ZB7o3IjEy7E2Caw0OyXQpZemHnnCWeK9kGi0N3RdSZtJERuubTNi73pQw5AGS+UwP6QSMC5ZCPEDt+4BLSHWPOXQ/8LLPJIZNall4LUeq6CbFqNYwUYMcIvOa5eTsdRrwL/RZz0YRuay+AAAAABJRU5ErkJggg==', settingIcon: "data:image/png;base64,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", tipDown: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAXElEQVQYlYXMsQ5AQBREUSoVjQ+f+S0lSi2livJlr4ZEZDcmud3JVJIW2yPQVqXZPmwjaQXqEuJJ0vCLbrgDfRZFxBsH0GTRCybbcxF9HhPQZdEHbkUUEUg6JU0Xm2KvCU6v27kAAAAASUVORK5CYII=", tipUp: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAZElEQVQYlXXMIQ4CMBBE0UWhwHDw+ddCAhILEgWy4WNo0tAyyZidly1AwNba1CSvJOf6h/oduC/RAN7qfkJ9BC7VM6LhQ1O3E+pN8lAPNeYHHGsV4PkFN3WzREmuwEndLUFVfQC3Xa8Jl+92RAAAAABJRU5ErkJggg==", pending: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACGFjVEwAAAANAAAAAHHdBKEAAAAaZmNUTAAAAAAAAAAQAAAAEAAAAAAAAAAAAB4D6AAAOSVkVgAAAZ9JREFUOI2Nkr9r01EUxT+x2CBuXQS1oNAObv4B9l/QqSii4NAqRIMp6qAJvHeDCiIIZhPRoYNDqLiFipH8uCeuHdSpXRXpqoNbHL5fY5oXtQfe8O6579x77rswidA5TrlVTOK33h4mdE4k8TEUiP6A+mCIaSlhTedy7iFQSJ9H36A+GBK1RmjOJny5VST6zVzk9eTjvZWvPjtI8IvcbR9JLfqZsU6A0FnIKvv17K6jmD4R/QP32scAWGsewvSGau9kZqdfoj4YEjoLEP0Rpl2WmzMZ6VuYV9IZ+G3MtwBYbs5g2iXqMZg+YnqRWelfxvQ+HdBvq2oTdCkXfI7pM5i+E1XOg0+wfin1HQ7kfGVUzPwGph9g+kbQlSyxOTtKHscfexVML/NuzmPahrA5N0r4H2rdUwSdToT3oNqbJ+jsvgSnotqbx3wH0zuiX8P6JUyvCJtz+xcpt4oErWBax7RO1OrU7UxgWsp/YcquUyCqTOhf+LtA1J18Tb9i3iBoJevEG5h/yTi//+8uat1Fop5i2sb0Mzu+g3mDWndxMv0Xd/7J/PC3XHUAAAAaZmNUTAAAAAEAAAAQAAAAEAAAAAAAAAAAAB4D6AAAolaOggAAAZlmZEFUAAAAAjiNjZI/a1RREMV/JgTSBD+Ahf82dgELwSZ+AjshgpAUgWXFRHAtRHAD986TFNqI0WbxT6GYIuQbJOElb87aiigiaGuTxsIUdmvxHm/j27dLDly43Jk5c87cgZMg+A1ML+nsnR2d1OpOEXWHB5oZJtAipiOSXp/o6/UE0bdJen2CLtfGF7YmiX6vINmuFq+T9PqYrg3UZEtEPQZOVezM/68kpI3iYRWAR7tnMH0l+kcSbx0rvEBIzwFg2UquNm1A9CeYDlnYmsyD/gnz9rDF7Bamz6Ud0yHmT8H0BdObImkJ0179kICoXYIWi0avMP8Opj+Y3wWgc3A+l1VBCBNFURvT6/x+cD2/m45K/6MwsNcu1ZYwfSNRdyi5DubvidlyRZ7PE7JLxwg/YNlKLcHDndOEdHqsWjq6iOkHph2i3ybqPmv7c+OLqgjpNEFNTO8wbRJ0ZaAwuzpyW4F8Bq3uVD2xmsXGvh3T3W9i+o35BkFNgppEPcf8V76xelZ+6wj5DaJeFHP4mx//ifkGa/uz1fR/oqjJFLqwpRgAAAAaZmNUTAAAAAMAAAAQAAAAEAAAAAAAAAAAAB4D6AAAT8BdawAAAZ5mZEFUAAAABDiNhZIxa1RBFIU/shoUsRNExIgQBG0tFFTwJ9gsooUgrGlijEFE3RVm7oMgpEgQEQzEQqx8FjY2YnTduWf/QUgTsbMJdlrYrcU+nuY9XnJhmuGeb865c2GvMr3HtEXUU3qfT+7ZX6uoa5heY/pJNhwRfbHeNLO6H/Mlgk81gtp5i+jzZMMRpneVV3yRbDgi83MlMKbrmL8hpluVSJd3Ogn96eJiFoDu+nFMG0QJU5fgl+qxfJZsOCL0p8F8CdM2IUwQ+vswbWLpbk30QIcxvSTkk7TzFqZtolbAtIFpDYDe4ASmrHmgngh+Y+w8XSX4FTD9wvxOowgghIkxQAvlY/8N5XeZv6naeatwMI/pVRWwSaZVAB6vH8X83i4RvhD8ZgXgy/+GmE8WW3e7Jl7IDxL1gvsfD1XypbOYPypt9ganMG1h+kTUHJYu1mDBL9AdHGvOHPoHCOpgekvU3E7H6XyxNw+bAY1gdcZifSh/psHBEcyXyXyGoA5RzzD/UYhXdhcDPPl6BtN3TH/Gx78R9ZyQTldb/wKgsMsaKa72kwAAABpmY1RMAAAABQAAABAAAAAQAAAAAAAAAAAAHgPoAACiCi8RAAABo2ZkQVQAAAAGOI2Vk71rVFEQxX/mQ11FsLPxA0HEP0FQIf9DCKiFICRRiCu7EQvdYu48FEFBISC4SCorn52IICpL3pz9B4SkMZ2ICFZiKazFe27Mrs+P083cOeeembkX6mC9/bg+4PEV1zuS7mBxuLb+NwJTpLiEaxnXKq4vZP0BHrf+XeRXzOWTeLRKET3bfuhaxmJmGC92p0nFOTyekIqLI7VnyPoDUtz+afVYZe1KFR/EtU6ScN3E4vSYmxRLZP0BnbdHIOkers+YTWC9KVwbeHF1jHRd+3A9wvKd2PM9WMyw2J0G1zoejwHorB3CldXOIUWBxfnR/r+RYqmWBGA2UQqoPbzsvwTm8smyNlq4VkcFNsjUBeDGmwN4tGqFXD0sLowk4z6uTwA0X+7CY5OkhTFyO2+Q9JB23qCdN3DNcu3VXrDeiWqvZRudtaO43uN6TVITL06NiSUtkPUHWHG8SoRjxdlhgfV2Y5rH9ZSk5jayxcnq3dytbbUWpvnSrV4AO/5OcM3iuozHCh4fK/KD4Vr/iPLzbOL6Xs4kVrZ63sIPq0LKOBaKw/8AAAAaZmNUTAAAAAcAAAAQAAAAEAAAAAAAAAAAAB4D6AAAT5z8+AAAAatmZEFUAAAACDiNjZO/a9NRFMU/sQSK4OIkiAVR/DHpIro4uotQpGDp0qagS624mMB794s4VJCiIIRGhI4pOIhDhULa7z35ByTq4CzWQXBwj8P7mpDkG+mFt9x7OPeee+6Dsgh+A9NXTL+L9wnTM4LPleInCTrnMW0T9RDzNUxvMP0i6/Yxf3o0kvGYb89gvpZItPN/cK1ZJeYLmFqYv6Wxf3lQM90k6/aJvjocN+ruAFA/OIPpM1Ei+iPMGzR0cVSirvJYJwpG38D0k/n2DABR7zCtl04Wdk8SOrOjSVMPU2sIen8cqJQSmNoE3RtP/iH6g2nrSKThWIFdx3xrksDy+wnYOcWTvdMTBP/kJUtbo0XTFzI1AYi+RNTu1EnMPxJ9KWHzRYLfAfMXmH4AleS1ekStTMrIb2PqFXIqmA6JegWhc4ms2ydoGYD6wVlM34jaK7qlhQafo65zqbtWyLr9ob1Rz9OF7V8rdjFL9FVMm9Sa1VEZ+fXipDeGyVqzimmbhl+Zqh8gaDldoT4wzeqSxd3C/DXm34t/sDlw5YgEW5gOMX9JyC+Ml/8CnOPJYMU7mq0AAAAaZmNUTAAAAAkAAAAQAAAAEAAAAAAAAAAAAB4D6AAAou/NpAAAAaNmZEFUAAAACjiNjZM/a5RBEMZ/MSoRaxtBjYJGG8HCPx/AxlpSRMQiGhFFOKMgcge7c4iGEEhjkeiZ0uJASKFgCr27d577AAYlhb3YCBYKdmfxbl713rsjAwszu/M8M/vsLPRb8GNEPcW0ielHWh8xPSH44VJ+yUzzmH5jeol5JV9aw/SdereH+ePRBKE1wb3mvtL+dHMc80pOooXRJDdX9xD8CqYGpgYxm2G6OZ532D5L9f2R4eBq5xCmLUyOaZ7oDzG94v7G/sGAWvsUj7IDf2NNEXR1dIv/mukzpmc7yg3ZaWrtM/0EP4l+J0Vjg4FhV57rDzB/0U/wC8tuJ3+B4LMlgkJAr2BqpNzLRF8nCbYCQPTrRL0begXzDYJfS/5zTFsQtYzpa1HJ9ImouRI46i6mzXSdMUzfMC1BaJ2k3u0RdAOAaucopi9E/1CMbmjtxvSakJ1IZHPUuz1qmtrWYSkn6ZxLgAlMtwitybKgfiGN9OL/Kpu/zQ+y80M12K4c9YbSi4XmXqICQQcHiHep+ExRy8Wz7tiCX8S0Rq19vP/oD5IjysBjq0pjAAAAGmZjVEwAAAALAAAAEAAAABAAAAAAAAAAAAAeA+gAAE95Hk0AAAGmZmRBVAAAAAw4jZWSvWtUURDFf242YKHEXvCrCf4DksJGe8sFERQkuqCEqImyYBbmzisUJKCpJCSidVpBwSgv++ZsIVaGgL2IWCgIYr0Wb7MkebtRB25x75w558zcgb2x8O44SQ9xbeL62T8fcT3A4lgFvys82mTdHq7vuFbxuE3SHVzPcP0oc8XsaIJUXCZFi8baWCVneR2Pu7jO7e8CoLk8jsWlvosVrLhIc3n874WDVvQC13tcc6SYx+MDSUv/TtBan8CsNrg31saw/NBw8E7g/4RZjdb6BLg+4dEAIMU0FlMjRaxzHo+ZEltcxfUVXL/x4iYAHs9JcatCsP0rKeZxrZbYYhbXr9JBiqc7WF+PtJ30BosrfbEVXFvgelJa6Su5tki6PqT4Bq5NzGqY1XB9w7UI7Y3TZN0eKaYBWOicxPWFFK1BsWsO12csPwFAFk2ybo+2JrcBi2TdHtY5Uw4rPzIAA9x/e7ScOGAxVa50PNo95aRXJYmuYXm90oLl9YGy6yVwoDrppKU++4UqQZwtW9Xj/XenrUnu6fAQBwexOLX3+Q9jwc9OVBVYYgAAABpmY1RMAAAADQAAABAAAAAQAAAAAAAAAAAAHgPoAACis2w3AAABrmZkQVQAAAAOOI2Nkz9rFFEUxX+7MZjOwsqAfwqNCJJGEMUP4BdwQbEQFVcUEqOCill4705hEAxoJWs0YpvCQjCCQSc79+wHSNgqvYVgIQq2azHj6u5kJAcG5r17zrn3HngwivlPB4lawLSJ6XvxbRC1QPADJf4/qGF6RNLtY/qG6SXmc0TdxrSM6RchO1ctN3+Ri7NZQqiX6iGdIKS7qg0SP4FlZwBotseJulhMsUTIzv9fPIoHa3uJeovpHtHvEiVMPR529u3cZBQxu8B8Z//gHNLDBD81TArpcVrrR3ZkaHqFaXP0chnzuRL5T6gh1Gm2x/OJ/BbmPyBRG+uczQ38NVEzJYPGylhez24SfbH4n8X0E0xbRH9e7HkZ04fKsaM+Ev1S0WwJUw9MTzH/Muhk6hH9+jbiG8XONUKoY/qK6Qm01o+RdPsEvwJAS0cxf8/M6u58b00S/TOmLUJ6CIDEm7kmmyrcfTG/6JwsB6hJoq4R0oki6NMk3T7RHw+nHLVaFK5WZhCy6Zyjd0BtuNhYGSPq2eAxbfdw7q/twXRnsF5FlylMbzBvVJP+4jefz8z3PhGI6gAAABpmY1RMAAAADwAAABAAAAAQAAAAAAAAAAAAHgPoAABPJb/eAAABqGZkQVQAAAAQOI2Fks9LVFEUxz86ZguXbcVq0UDLCNpE9AeE4GagTQUGRotJySDBoXvP24wgLfqxKMQmaPcWbQJFRGfmnjP/gEaL9gqChNQfMC3uc2De8+mBC5dzv+f7Ped7D+Rjeecq3pqI7SF2kp19Gp0bBWwuRvDWJOn1ETtGbB3RBcReIvaJpe0r55d7+07S6+OtjnOjF6nlivV1VA53B7lG5xaiLUTXcOEhrj1WTuDak4jdG8olehuxN3hdRKyH2D6uPQlALa0g+qroi0vHWdyaKO1S9NsAJ/YHb8086AliX0s7nft8aXAXbSG2NwwQ+4LX+eKIZ5jqdR7RvzkCbeGtXgDX0goAy93rOJ2K2PACsX8g4T7SfRCVdBaxzdIRxLZx+jgTW0PsJ4h9RPRgoCT2Cxdmii3b82zmEZwbRewIb6vQ6Nwk6fVxOhu7CNWh7/HhEV53EfuNa1/L5n8Wa0L11JC3MdG9UzDP2yqJzlHfuAzE/YjrvpIHbsRV1qelHpwaKfoel44PP9TSCt7eRXY9yLyZPpfszHChircPiB0i9uMi+H9sHMtvoD6TpgAAABpmY1RMAAAAEQAAABAAAAAQAAAAAAAAAAAAHgPoAACjJAjOAAABpGZkQVQAAAASOI2Vkr1rFFEUxX/xIxFEQVshLETQf8BGC0n+Bz8g2mjMIhpRE41E4b07qYQQRbQIKKYTtkkTFoXAmLlnsRHBxjQKFkEL0VK02hQzWbIzG4yneu9y7jn3vPugjJDWiJrF9AHTL0yfCOmeCq8nTAlJq43pJ6ZFzKeI2cWdNr8qmm8z0RzYWdMmombz5ux0qX6VRAtEjRLCrk49+FnMY3FJax3nMsLqCNGniVrB9JHgg/m0fpOk1SakR+GODhB1jpDuY3xhL+bzTL7ZX42Y3cD0ldA8CPRh+o7pcckxO0+i95xp7O4Z1XyKmZUjxfkJ5p9LBD0n+mQ1ypb8nZrGMP0pC7wg6laF3Gui6Jcx/S2rXsD0rqdjbnCXkNZyAT3C9AUmmgNYdorQ6Cc0+jF/WTxUNxIfx7TOPT9UiK1jegrBB/M1+vWq49sTRL9G1DKmNe5rqBi/Xqzx+Gaeh3lh9WR3JL+EaZGoK12/0zSMaWYrtQ/TEkmrTfT6tmv8J0xzxa/8RtQzoteJGv0/wQc6hvk8pjVMvzH9ILw+vB19A/CHy5khQV06AAAAGmZjVEwAAAATAAAAEAAAABAAAAAAAAAAAAAeA+gAAE6y2ycAAAGoZmRBVAAAABQ4jZWTO2tUURDHfxt1Y2MjCKIYAgpB/ARiIX4IX0hsNK5IFhVjYbJwZjaVgg8kjeCrE7YQCw0WytU7/20FETQgdqKFaClarcW9LvuKrFOdGeb/mHPmwGCkbBrTMq43uH7ges/h1oahvpFhWqbZ7uD6jushHgtYPjse2PWIZruD6SL11cnxQEPK+cG++pk7m7C4iuWzpDTRrac4goeVSTbdVS7y7aSYKs5pAlMd10tcb1l6vatwGxdotjukbA9c1hZMR6mvTpKyjbjeYfnxYZdxHo81UrYZqOD6iutWf1PKj+Fq/+OeMkxzpYvbuD4ONtzF4tIQ8O/8STtYfLGzPJ/G9WuQ4B4eC0MEo/bA4hSu3wNKcRLT43VH6H1e001cn4qi5wdIrSqpVeVKvm0k2HUWj2dApcw/41qBFFPFDsR8H2BJu/GYx/NzmJ7i+kDj1d7Sfo1mu0NDMyV7XCtXeH+XoBH7cN3H4wGmOVKr2uPmEK7FXr0KFk+KhYra+J9nMCyul06+4FrBoobpxP8RNjSDxw081nD9xPWN9Hzreu1/AJWczMkfsOFuAAAAGmZjVEwAAAAVAAAAEAAAABAAAAAAAAAAAAAeA+gAAKN4qV0AAAGdZmRBVAAAABY4jZWSP2tUURDFfzEaQT+CfxBRIohVqhTiR7CQLYQIgroJoviv0jy4d14qQSUsBLXQgAjCViISCERe3Dn7AbaKqK1YiZVitxb3usF9m5AMXLjMnDlnZjgwHKE6RtQCph6mZ7X6tmEqKbt9TD8wX8Z0fjfNbyi7faLucHNl/5a4Yv0M0Z8CY5vJqIWk3DlXawjVYYJmCGFPFprOUz7KAD+aEn4bgAdrhzB/TWhP5PpxTB8w9Zj/eCQJ+ixlt0+oToB5C9MvGu1xQrUXU4/o92uTRL+FaSOvN4bpO6ZFMG8QdDmBOhcxdbe5U0XpzfT3FqYvw4AXmO7W75D3j51LRH+YcrqK6c8wwSui5msEjfZ4jWwkQelTlD615Qr/iy1i/nVH2NxwgUKTADSf78P0k6ilVLy3epDCT2+O+e5AuoffwDrXiXqP+SdCdWqwUtAMxfrJf+xz2RzTA4XoVzC9xHyZqGsDX4yM0J4g+ttkZZ8dHGrXEf1xduU3opaS47yJeSu5bidRaBLzJ5g2MP3O7zOms6PgfwEtyMus/wVV0wAAABpmY1RMAAAAFwAAABAAAAAQAAAAAAAAAAAAHgPoAABO7nq0AAABoGZkQVQAAAAYOI2Fkr1rVEEUxX9x/ULtF4UECwsLLexEESt7m0UsA2YjihKJhRsDM3cFsQgqiY1NVCyCW6RIEVAWX/bds/+AIBq0sFGrtGq3FvPUuO8luTDFzLlzzpkzF4YrZEcxPcB0roTtWFH3aPcHmDYI+cUS3urWiT5dfdm0RLs/IOoWzad7KntC70zRswyMVCjn5wFodGq0uvV/F3WEG6v7klB+tnA5V4A+lg58CoCZ3mFM74ne2uRuBtM6wceSoE/S7g8I2TEw3ce0QaNTI2S7Mb3D/Hb5iflNTB8KJyOYvmN6DOafMT1PzPllolQdEhD9LTEfL569gOkTRK0QdSmp+EvM75TDC7s2uXhVEExg+jlk06cwv1AiaHRqRV6nMV0FoO1NTL+2dLtjRT3C9KUaDNn+irND/+1b3TqzayerCcwfpsD8OpZfI+oNphfbW7rbG2V27VRSWzlAzMcxLWL+jKArTL8+uD2BaS6NqU9u2fPnN6rBzt6/JOZfMT1JE+dNzOcxfascsDJRdjwl7B8x/SjWOubzhOzEcPtvMOHHU2kn5uQAAAAASUVORK5CYII=", copyIcon: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAA3NCSVQICAjb4U/gAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAAZdEVYdFNvZnR3YXJlAHd3dy5pbmtzY2FwZS5vcmeb7jwaAAAD/klEQVR4Xu2bS2gUWRSG/6puK+lokEBQGIniA4RZKW5UGJAwqxGEIOpKREXwgQ6ICgPqMCqzUHDhwgFlEFEQCaj4Ahe+UHChIrhSweBrRnwQR2M6bXV31dS5ObdTKe1K3e6K3Z1bH5zcqtOdTp3//vcRqtqwt3S58KAfBh0o4H+/+JAaU0kNJrdDBwrQH5RRD1Dxqtci6q6nIqpFVQQhQCW9X8+oiDDWalfGHEv29xOcoMvVmThAddloRKhGGUEXlPYBcfNlXifc+T/zWQw4RZhXz8B68oATlUMFy44fNQFym/6E2TED7kA/Z6rANGE0ZYQIOH4Q1uP7/EL1jKoARvtk9G/s4kzlmFNnouWPvwZPYhahoSbB4sO7nqMGgFVbYc+ex9nKkL3eWAK86sHAgR3DRJChitocYBjI/bQEaG3jxMgYcxfCaG5B/vYVzgzH/dgL++IpoFDgTHnkELAvn4bd/TfMabOQ2b4fRsabFyQVDgvt9wGRHFBo/wHOtoN8Fh+FB3eQO7x3RBcEHSBy7AKJcEMFLogmwKQOOFsPIH/9IvLeRVSLtXQ10vM7xXEUEb4lAEEiSEpDQlEEpSFAa7rz/k3V4ea8Scyj2PMI6bkL0LxxF5BOi1wYRmY8TG9plYH+vlJ8OeY51HGUVwglBwR7oFKaVv2KcYsWI/vbGljL1wkRwpxgTpmGln1H+SwCtFfYswFW7hMnypP8M8RtbSjkRa9T7w8bCjIY598XsM+dQP7GpRHDefHUqyqFrJuCnbP5E8pT2yGwfaWYE6hYKl4OBUmUFSKItWwtrF9WIPv7BiHGhIkTYDVb/OrX1McQ8Ir0O0FG1MkxjM8fP4c6QYs5IEyE+hHA5wIZcbmAIBF633jb74AQtRHAHZx2MnuPYPzhs0NxqBupH+eUgiARmlZuFsdxEHRDTQQo3LsN59kTuO9ew6WNkT/eejkO52WPECs1fTb/Zjz4RajJKqACOYOEye5ez5lwgqtAGLRCaDEJloOcoLUARCIAt9qSCMCttiQCcKstiQDcaksiALfakgjArbYkAnCrLYkA3GpLIgC32pIIwG19k0oPey4gLOgZAhW0d0BD3BdQ7VUiu3MdnH+e81l5GkIAFIso3LvFmZFx/+uFff5k6RZcGGPuzpAKpI+2c4Ao3tBUAFk8WX9wCHzrmwQ+5BCgZ3rcfPmnLUYDmgDpJifd7IwDf/FEpDkA6XEYWL4ZRls7J74j3hXnb15G/toFTsRLsg+I5AAPx3HQ96EPxUKRM40D2V5iyOfkPehQeweI7w1GwTRNtLa1etvyFGcag9Jyx+GHahe5sSiCtD1Zng5lSKQWYgiEihBQrSRCqj5F8BdejqF6gf8BYV09k0RLz2IAAAAASUVORK5CYII=" }, optionList: [{ id: "AutoCopy_st", text: "自动复制选中文字 / Auto copy selections", defaultValue: 0 }, { id: "AutoCopy_tbox_st", text: "自动复制在文本框也生效 / Enable Autocopy in textboxes", defaultValue: 0 }, { id: "Textbox_st", text: "不在文本框内显示 / Ignore selections in textboxes", defaultValue: 0 }, { id: "Fade_st", text: "超时自动隐藏 / Hide after timeout", defaultValue: 1 }, { id: "Click_st", text: "点击页面不隐藏 / Don't Hide on click", defaultValue: 0 }, { id: "Tab_st", text: "新标签页打开 / Open in new tabs", defaultValue: 1 }, { id: "Focus_st", text: "前台标签页打开 / Force foreground tabs", defaultValue: 1 }, { id: "Iframe_st", text: "在Iframe中显示/ Activate in iframes", defaultValue: 1 }, { id: "Dis_st", text: "显示于文字上方 / Display above selection", defaultValue: 1 }, { id: "Ctrl_st", text: "仅按下Ctrl时显示 / Only when ctrl pressed", defaultValue: 0 }, { id: "userEngine_st", text: "启用自定义搜索引擎 / Enable Custom Engines", defaultValue: 1 }], userEngines: [], defaultEngines: [{ id: "UserEngine", title: "Example of User Engine", description: "自定义引擎示例 / Example of user engine", src: "https://github.com/lkytal/GM/raw/master/icons/atom.png", href: "https://www.google.com/search?newwindow=1&safe=off&q=${text}" }, { id: "UserEngine_dataURL", title: "Example Engine use dataURL", description: "DataURL引擎示例 / Example Engine use dataURL", src: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAA0SURBVDhPY/z//z8DKYAJShMNSNYAdRIjIyOEjwdAVNLNScgA7jysAUh7J41IDbROrQwMAOdoEhG0gLSFAAAAAElFTkSuQmCC", href: "https://www.google.com/search?q=${text}%20site:${domain}" }, { id: "UserEngine_function", title: "Example of User Engine use function", description: "function自定义引擎示例 / Example of user engine use function", src: "https://github.com/lkytal/GM/raw/master/icons/atom.png", function: "alert('action on ' + domain); OpenUrl(text);" }] }; popData.engines = [{ id: "Trans_st", title: "Translate", description: "Google翻译 / Translate selection (Google)", defaultState: 1, src: popData.icons.translateIcon, action: function () { return onTranslate('google'); } }, { // { // id: "Trans_caiyun_st" // title: "Translate (Caiyun)" // description: "彩云小译翻译文本 / Translate selection (Caiyun)" // defaultState: 0 // src: popData.icons.translateIcon // action: () -> onTranslate('caiyun') // }, id: "Trans_deepl_st", title: "Translate (Deepl)", description: "Deepl 翻译文本 / Translate selection (Deepl)", defaultState: 0, src: popData.icons.deeplIcon, action: function () { return onTranslate('deeplx'); } }, { id: "Copy_st", title: "Copy", description: "复制文本 / Copy selection", defaultState: 1, src: popData.icons.copyIcon, action: function () { return onCopy(); } }, { id: "Setting_st", title: "Open Setting", description: "Popup search 选项 / Open Setting", defaultState: 1, src: popData.icons.settingIcon, action: function () { return OpenSet(); } }, { id: "Open_st", title: "Open As Url", description: "选中文本视作链接打开 / Open selection as url", defaultState: 0, src: popData.icons.linkIcon, href: '${rawText}' }, { id: "Site_st", title: "Search Current Website", description: "在当前网站内搜索 / Search in current website", defaultState: 1, src: popData.icons.inSiteIcon, href: 'https://www.google.com/search?newwindow=1&safe=off&q=${text}%20site:${domain}' }, { id: "amazon_st", title: "Search with Amazon", description: "搜索亚马逊/ Search with Amazon", defaultState: 0, src: popData.icons.amazonIcon, href: 'https://www.amazon.com/s?k=${text}' }, { id: "Bing_st", title: "Search with Bing", description: "必应搜索 / Search with Bing", defaultState: 1, src: popData.icons.bingIcon, href: 'https://bing.com/search?q=${text}&form=MOZSBR' }, { id: "Baidu_st", title: "Search with Baidu", description: "百度搜索 / Search with Baidu", defaultState: 0, src: popData.icons.baiduIcon, href: 'https://www.baidu.com/s?wd=${text}&ie=utf-8' }, { "id": "Baidu_fy_st", "title": "Baidu Page Translation", "description": "百度页面翻译 / Baidu Page Translation", src: popData.icons.baiduFyIcon, "href": "http://fanyi.baidu.com/transpage?query=${url}&source=url&ie=utf8&from=auto&to=zh&render=1" }, { id: "Yahoo_st", title: "Search with Yahoo", description: "雅虎搜索 / Search with Yahoo", defaultState: 0, src: popData.icons.yahooIcon, href: 'https://search.yahoo.com/search;?p=${text}&ei=UTF-8' }, { id: "Taobao_st", title: "Search with Taobao", description: "搜索淘宝 / Search with Taobao", defaultState: 0, src: popData.icons.taobaoIcon, href: 'https://s.taobao.com/search?q=${text}' }, { id: "Newegg_st", title: "Search with Newegg", description: "搜索Newegg / Search with Newegg", defaultState: 0, src: popData.icons.neweggIcon, href: 'https://www.newegg.com/p/pl?d=${text}' }, { id: "Tieba_st", title: "Search in Tieba", description: "搜索贴吧 / Search with Tieba", defaultState: 0, src: popData.icons.tiebaIcon, href: 'http://tieba.baidu.com/f/search/res?ie=utf-8&qw=${text}' }, { id: "youtube_st", title: "Search with Youtube", description: "搜索Youtube / Search with Youtube", defaultState: 1, src: popData.icons.youtubeIcon, href: 'https://www.youtube.com/results?search_query=${text}' }, { id: "youku_st", title: "Search with Youku", description: "搜索优酷 / Search with Youku", defaultState: 0, src: popData.icons.youkuIcon, href: 'http://www.soku.com/search_video/q_${text}' }, { id: "eBay_st", title: "Search with eBay", description: "搜索eBay / Search with eBay", defaultState: 0, src: popData.icons.eBayIcon, href: 'http://www.ebay.com/sch/i.html?_nkw=${text}&_sacat=0' }, { id: "douban_st", title: "Search with Douban", description: "搜索豆瓣电影 / Search with Douban Movie", defaultState: 0, src: popData.icons.doubanIcon, href: 'https://movie.douban.com/subject_search?search_text=${text}' }, { id: "jd_st", title: "Search with JD", description: "搜索京东 / Search with JD", defaultState: 0, src: popData.icons.jdIcon, href: 'https://search.jd.com/Search?keyword=${text}&enc=utf-8' }, { id: "handian_st", title: "Search with Handian", description: "汉典搜索 / Search with Handian", defaultState: 0, src: popData.icons.handianIcon, href: 'https://www.zdic.net/hans/${text}' }, { id: "Google_st", title: "Search with Google", description: "谷歌搜索 / Search with Google", defaultState: 1, src: popData.icons.googleIcon, href: 'https://www.google.com/search?newwindow=1&safe=off&q=${text}' }, { id: "Wiki_st", title: "Search with Wiki", description: "搜索维基百科 / Search with Wikipedia", defaultState: 1, src: popData.icons.wikiIcon, href: 'https://wikipedia.org/w/index.php?search=${text}' }]; log = function (msg) { popData.count += 1; return console.log(`Popup Msg ${popData.count} : ${msg}`); }; isChrome = function () { return navigator.userAgent.indexOf("Chrome") > -1; }; fixPos = function (sel, e) { var eventLeft, eventTop, fix, m_left, offsetLeft, offsetTop, offsets; offsets = get_selection_offsets(sel, e); offsetTop = offsets[0]; offsetLeft = offsets[1]; if (e != null) { eventTop = e.pageY; eventLeft = e.pageX; //log offsetTop + " : " + offsetLeft + " <==> " + eventTop + " : " + eventLeft if (Math.abs(offsetTop - eventTop) > 50) { offsetTop = eventTop - 10; } else { offsetTop = Math.min(eventTop - 10, offsetTop); } if (Math.abs(offsetLeft - eventLeft) > 50) { //translate offsetLeft = eventLeft + 10; } } else { $('#showUpBody').css('margin-left', '60px'); } if (GetOpt('Dis_st')) { //UpSide offsetTop = offsetTop - 4 - $('#ShowUpBox').height(); if (offsetTop - document.documentElement.scrollTop < 40) { offsetTop = document.documentElement.scrollTop + 40; } } else { offsetTop += 1.1 * offsets[2]; } m_left = $('#ShowUpBox').width(); fix = 0; if (offsetLeft - m_left < 4) { fix = 4 - offsetLeft + m_left; } $('#ShowUpBox').css("top", offsetTop + "px").css("left", offsetLeft - m_left + fix + "px"); return $('#popupTip').css('margin-left', m_left - 20 - fix); }; var getOrderedEngines = function () { var allEngines = []; var engineMap = {}; var j, engine; for (j = 0; j < popData.engines.length; j++) { engine = popData.engines[j]; engineMap[engine.id] = engine; } if (popData.userEngines && popData.userEngines.length) { for (j = 0; j < popData.userEngines.length; j++) { engine = popData.userEngines[j]; engine.isCustom = true; engineMap[engine.id] = engine; } } var savedOrder = GM_getValue("engineOrder", null); if (savedOrder && Array.isArray(savedOrder)) { var addedIds = {}; for (j = 0; j < savedOrder.length; j++) { var id = savedOrder[j]; if (engineMap[id]) { allEngines.push(engineMap[id]); addedIds[id] = true; } } for (j = 0; j < popData.engines.length; j++) { engine = popData.engines[j]; if (!addedIds[engine.id]) { allEngines.push(engine); addedIds[engine.id] = true; } } if (popData.userEngines) { for (j = 0; j < popData.userEngines.length; j++) { engine = popData.userEngines[j]; if (!addedIds[engine.id]) { allEngines.push(engine); addedIds[engine.id] = true; } } } } else { allEngines = popData.engines.concat(popData.userEngines || []); } return allEngines; }; PopupInit = function () { var $DivBox, $icon, EngineList, engine, j, len, orderedEngines; $('#ShowUpBox').remove(); EngineList = ""; orderedEngines = getOrderedEngines(); for (j = 0, len = orderedEngines.length; j < len; j++) { engine = orderedEngines[j]; var cls = engine.isCustom ? 'userEngine' : 'engine'; EngineList += ``; } $('html').append(` ${EngineList} `); $DivBox = $('#ShowUpBox'); $DivBox.hide(); $DivBox.on("click dblclick mousedown mouseup contextmenu", function (event) { return event.stopPropagation(); }); $('#transPanel').on("mouseup contextmenu", function (event) { return event.stopPropagation(); }); // Apply front-end display count preference var displayMode = GM_getValue("engineDisplayMode", "default"); if (displayMode === 'all') { $('#popupWrapper').css({ 'max-width': 'none', 'overflow-x': 'visible' }); } else { var displayCount = 8; if (displayMode === 'custom') { displayCount = parseInt(GM_getValue("engineDisplayCount", 8), 10) || 8; displayCount = Math.max(1, Math.min(50, displayCount)); } // Each icon: 26px width + 3px gap = 29px. N icons: N * 29 - 3 + 4 = N * 29 + 1 var maxWidth = (displayCount * 29 + 2) + 'px'; $('#popupWrapper').css({ 'max-width': maxWidth, 'overflow-x': 'auto', 'overflow-y': 'hidden' }); } // Enable horizontal smooth mouse wheel scrolling for popupWrapper $('#popupWrapper').on('wheel', function (event) { var delta = event.originalEvent.deltaY || event.originalEvent.deltaX; if (delta !== 0) { this.scrollLeft += delta; event.preventDefault(); event.stopPropagation(); } }); $DivBox.hover(function () { $(this).fadeTo(150, 1); return popData.mouseIn = 1; }, function () { if (popData.bTrans === 0 && $(this).is(":visible") && $(this).attr("opacity") === 1) { $(this).fadeTo(300, 0.7); } return popData.mouseIn = 0; }); $('#showUpBody').on("mouseup", function (event) { if (event.which === 3) { CopyText(); hideBar(100); return false; } else if (event.which === 2) { GM_openInTab(document.defaultView.getSelection().toString()); return false; } }); $('#showUpBody').on("contextmenu", function (event) { return false; }); for (j = 0, len = orderedEngines.length; j < len; j++) { engine = orderedEngines[j]; $icon = $("#" + engine.id + "Icon"); if (!GetOpt(engine.id)) { $icon.hide(); } } $DivBox.find('.userEngine').on('click', OnEngine); if (GetOpt('Tab_st')) { $DivBox.find('a').attr('target', '_blank'); } else { $DivBox.find('a').attr('target', '_self'); } if (GetOpt('Dis_st')) { popData.tip = popData.tipUp; return $DivBox.append(''); } else { popData.tip = popData.tipDown; return $DivBox.prepend(''); } }; ajaxError = function (res) { return $('#transPanel').empty().append(`

Translate Error:
${res.statusText}

`).show(); }; onCopy = function () { CopyText(); return hideBar(); }; onTranslate = function (engine) { popData.bTrans = 1; $("#transPanel").empty().append(`
`).show(); $('#popupWrapper').hide(); fixPos(document.defaultView.getSelection()); return doRequest(engine, 0, 2000); }; doRequest = function (engine, i, wait) { var ErrHandle, lang, requestData; ErrHandle = function () { return doRequest(engine, i + 1, wait + 2000); }; if (i >= 2) { ErrHandle = ajaxError; } lang = navigator.language || navigator.userLanguage || "zh-CN"; if (engine === 'google') { return GM_xmlhttpRequest({ method: 'POST', url: `https://translate.google.com/translate_a/single?client=gtx&dj=1&q=${popData.text}&sl=auto&tl=${lang}&hl=${lang}&ie=UTF-8&oe=UTF-8&source=icon&dt=t&dt=bd`, headers: { 'Content-Type': 'application/x-www-form-urlencoded', "Accept-Encoding": "gzip, deflate" }, timeout: wait, onload: parseTranslationGoogle, onerror: ErrHandle, ontimeout: ErrHandle }); } else if (engine === 'deepl') { return GM_xmlhttpRequest({ method: 'POST', url: "https://api-free.deepl.com/v2/translate??auth_key=aa09f88d-ab75-3488-b8a3-18ad27a35870:fx", data: "auth_key=aa09f88d-ab75-3488-b8a3-18ad27a35870:fx&target_lang=ZH&text=" + popData.rawText, headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, timeout: wait, onload: parseTranslationDeepl, onerror: ErrHandle, ontimeout: ErrHandle }); } else if (engine === 'deeplx') { requestData = { text: popData.rawText, source_lang: 'auto', target_lang: 'zh' }; return GM_xmlhttpRequest({ method: 'POST', url: "https://fw4dxxj9tn.us.aircode.run/translate", headers: { 'Content-Type': 'application/json' }, data: JSON.stringify(requestData), timeout: wait, onload: parseTranslationDeeplX, onerror: ErrHandle, ontimeout: ErrHandle }); } else { return GM_xmlhttpRequest({ method: 'POST', url: "http://api.interpreter.caiyunai.com/v1/translator", headers: { 'Content-Type': 'application/json', "X-Authorization": "token " + "3975l6lr5pcbvidl6jl2" }, data: JSON.stringify({ "source": [popData.rawText], "trans_type": "auto2zh", "request_id": "demo", "detect": true }), timeout: wait, onload: parseTranslationCaiyun, onerror: ErrHandle, ontimeout: ErrHandle }); } }; parseTranslationDeeplX = function (responseDetails) { var RTxt, Result; if (!popData.bTrans) { return; } try { RTxt = JSON.parse(responseDetails.responseText); } catch (error) { log(JSON.stringify(responseDetails)); return ajaxError(responseDetails); } Result = `
${RTxt.data}
`; $('#transPanel').empty().append(Result).show(); fixPos(document.defaultView.getSelection()); }; parseTranslationDeepl = function (responseDetails) { var RTxt, Result; if (!popData.bTrans) { return; } try { RTxt = JSON.parse(responseDetails.responseText); } catch (error) { log(JSON.stringify(responseDetails)); return ajaxError(responseDetails); } Result = `
${RTxt.translations[0].text}
`; $('#transPanel').empty().append(Result).show(); fixPos(document.defaultView.getSelection()); }; parseTranslationCaiyun = function (responseDetails) { var RTxt, Result; if (!popData.bTrans) { return; } try { RTxt = JSON.parse(responseDetails.responseText); log(JSON.stringify(RTxt)); } catch (error) { return ajaxError(responseDetails); } Result = `
${RTxt.target[0]}
`; $('#transPanel').empty().append(Result).show(); fixPos(document.defaultView.getSelection()); }; parseTranslationGoogle = function (responseDetails) { var PickMeaning, RLine, RTxt, Result, j, len, line, ref, sentence; if (!popData.bTrans) { return; } try { RTxt = JSON.parse(responseDetails.responseText); } catch (error) { return ajaxError(responseDetails); } RLine = function () { var j, len, ref, results; ref = RTxt.sentences; results = []; for (j = 0, len = ref.length; j < len; j++) { sentence = ref[j]; results.push(sentence.trans); } return results; }().toString(); PickMeaning = function (list) { var i, item, j, len, results; results = []; for (i = j = 0, len = list.length; j < len; i = ++j) { item = list[i]; if (item.score > 0.005 || i < 3) { results.push(item.word); } } return results; }; if (RTxt.dict != null) { ref = RTxt.dict; for (j = 0, len = ref.length; j < len; j++) { line = ref[j]; RLine += "
" + `${line.pos} : ${PickMeaning(line.entry)}`; } } Result = `
${RLine}
`; $('#transPanel').empty().append(Result).show(); fixPos(document.defaultView.getSelection()); }; doHideBar = function () { return $('#ShowUpBox').fadeOut(150); }; hideBar = function (time = 0) { return popData.fadeEvent.push(setTimeout(doHideBar, time)); }; $(document).on("mousedown", function (event) { popData.mousedownEvent = event; hideBar(); if (popData.bTrans === 1) { return PopupInit(); } }); $(document).on("mouseup", function (event) { // PopupInit() if popData.bTrans == 1 // hideBar() if not GetOpt('Click_st') if (event.which !== 1) { return; } if (GetOpt('Ctrl_st') && !event.ctrlKey) { return; } return ShowBar(event); }); $(document).on("keydown", function (event) { if (event.key === "Escape") { if ($('#ShowUpBox').is(":visible")) { hideBar(); event.stopPropagation(); return false; } } if (event.ctrlKey && event.altKey && event.key === "p") { return ShowBar(); } }); eventFromTextbox = function (eventList) { var event, j, len; for (j = 0, len = eventList.length; j < len; j++) { event = eventList[j]; if (event != null) { if ($(event.target).is('textarea, input, *[contenteditable="true"]')) { //console.log $(event.target) return true; } } } return false; }; InTextBox = function (selection) { var area, j, len, ref; if (isChrome()) { return false; } ref = $('textarea, input, *[contenteditable="true"]', document); for (j = 0, len = ref.length; j < len; j++) { area = ref[j]; if (selection.containsNode(area, true)) { return true; } } return false; }; GetTextboxSelection = function () { var textbox; textbox = document.activeElement; if (textbox.selectionEnd - textbox.selectionStart > 0) { return textbox.value.substring(textbox.selectionStart, textbox.selectionEnd); } return ""; }; OpenUrl = function (link) { if (isChrome()) { //log "chrome" return GM_openInTab(link, { active: GetOpt("Focus_st") === 1 }); } else { return GM_openInTab(link, !GetOpt("Focus_st")); } }; OnEngine = function (e) { var link; link = $(this).data('link'); if (link.indexOf('javascript:') === 0) { eval(link.slice('javascript:'.length)); return false; } OpenUrl(link); hideBar(100); return false; }; ShowBar = function (event) { var do_timeout_hide, e, engine, j, k, len, len1, paraList, ref, sel, setHref; hideBar(); sel = document.defaultView.getSelection(); if (InTextBox(sel) || eventFromTextbox([event, popData.mousedownEvent])) { popData.rawText = GetTextboxSelection().trim(); } else { popData.rawText = sel.toString().trim(); } if (GetOpt("AutoCopy_st")) { if (InTextBox(sel) || eventFromTextbox([event, popData.mousedownEvent])) { if (GetOpt("AutoCopy_tbox_st")) { CopyText(popData.rawText); } } else { CopyText(popData.rawText); } } popData.text = encodeURIComponent(popData.rawText); if (popData.rawText === '') { return; } if (InTextBox(sel) || eventFromTextbox([event, popData.mousedownEvent])) { if (GetOpt("Textbox_st")) { return; } } ref = popData.fadeEvent; for (j = 0, len = ref.length; j < len; j++) { e = ref[j]; clearTimeout(e); } $('#transPanel').empty().hide(); paraList = { "\\\${rawText}": popData.rawText, "\\\${text}": popData.text, "\\\${domain}": document.domain, "\\\${url}": location.href }; setHref = function (engine) { var $engine, href, para, runFunction, value; $engine = $("#" + engine.id + "Icon"); if (engine.href != null) { href = engine.href; for (para in paraList) { if (!hasProp.call(paraList, para)) continue; value = paraList[para]; href = href.replace(RegExp(`${para}`, "g"), value); } $engine.data('link', href); $engine.off('click'); return $engine.on('click', OnEngine); } else if (engine.action != null) { $engine.off('click'); return $engine.on('click', engine.action); } else if (engine.function != null) { runFunction = function (func) { return Function('"use strict";return (' + func + ')')()(popData.rawText, popData.text, document.domain, location.url, OpenUrl); }; $engine.off('click'); return $engine.on('click', function () { runFunction("function action(rawText, text, domain, url, OpenUrl) {" + engine.function + "}"); hideBar(100); return false; }); } else { return console.log('empty engine', engine); } }; var orderedEngines = getOrderedEngines(); for (k = 0, len1 = orderedEngines.length; k < len1; k++) { engine = orderedEngines[k]; setHref(engine); } if (needPrefix(popData.rawText)) { $('#Open_stIcon').data('link', `http://${popData.rawText}`); } popData.mouseIn = 0; popData.bTrans = 0; do_timeout_hide = function () { if (popData.mouseIn === 0 && !popData.bTrans) { return $('#ShowUpBox').fadeOut(250); } }; if (GetOpt("Fade_st")) { popData.fadeEvent.push(setTimeout(do_timeout_hide, 5000)); } fixPos(sel, event); return $('#ShowUpBox').css('opacity', 0.9).fadeIn(200); }; needPrefix = function (url) { var j, len, prefix, urlPrefixes; url = url.trim(); urlPrefixes = ['http://', 'https://', 'ftp://', 'file://', 'thunder://', 'ed2k://', 'chrome://']; for (j = 0, len = urlPrefixes.length; j < len; j++) { prefix = urlPrefixes[j]; if (url.indexOf(prefix) === 0) { return 0; } } return 1; }; CopyText = function (selText) { var e; if (selText == null) { selText = popData.rawText; } if (selText === '') { return; } if ((typeof GM_info !== "undefined" && GM_info !== null ? GM_info.scriptHandler : void 0) === "Violentmonkey") { return document.execCommand('copy'); } try { return GM_setClipboard(selText, "text"); } catch (error) { e = error; console.log(e); return document.execCommand('copy'); } }; GetOpt = function (id) { var ref; if (popData.userEngines) { var userEng = popData.userEngines.find(function (u) { return u.id === id; }); if (userEng) { return GM_getValue(id, userEng.defaultState !== undefined ? userEng.defaultState : 1); } } ref = popData.optionList.find(function (item) { return item.id === id; }); if (ref != null) { return GM_getValue(id, ref.defaultValue); } var eng = popData.engines.find(function (e) { return e.id === id; }); if (eng != null) { return GM_getValue(id, eng.defaultState !== undefined ? eng.defaultState : 1); } return GM_getValue(id, 1); }; SaveOpt = function (id) { return GM_setValue(id, $("#" + id + "_checkbox").prop("checked") ? 1 : 0); }; ReadOpt = function (id) { return $("#" + id + "_checkbox").prop("checked", !!GetOpt(id)); }; OpenSet = function () { if ($('#popup_setting_bg').length === 0) { SettingWin(); } return $('#popup_setting_bg').fadeIn(200); }; SettingWin = function () { var engine, j, len, option, optionListHtml, engineCardsHtml, orderedEngines; addAdditionalCSS(); $('#popup_setting_bg').remove(); // 1. Generate Option items for General Tab optionListHtml = ""; for (j = 0; j < popData.optionList.length; j++) { option = popData.optionList[j]; if (option.id === "userEngine_st") continue; // automatically handled var isChecked = GetOpt(option.id) ? 'checked' : ''; optionListHtml += `
${option.text}
`; } // 2. Generate Engine Cards (Card Grid, 2-3 per row, with drag handle) var generateEngineCard = function (eng) { var isChecked = GetOpt(eng.id) ? 'checked' : ''; var isCustom = !!eng.isCustom; return `
${eng.title}
${eng.title}
${eng.description}
${isCustom ? `` : ''}
`; }; orderedEngines = getOrderedEngines(); engineCardsHtml = ""; for (j = 0; j < orderedEngines.length; j++) { engineCardsHtml += generateEngineCard(orderedEngines[j]); } // 3. Assemble Fluent Settings Window DOM $("body").append(` `); // 4. Drag and drop initialization var initDragAndDrop = function () { var grid = document.getElementById("engine_card_grid"); if (!grid) return; var cards = grid.querySelectorAll(".engine-card:not(.add-engine-card)"); var dragged = null; cards.forEach(function (card) { card.setAttribute("draggable", "true"); card.ondragstart = function (e) { dragged = this; this.classList.add("is-dragging"); e.dataTransfer.effectAllowed = "move"; e.dataTransfer.setData("text/plain", this.getAttribute("data-id")); }; card.ondragend = function () { this.classList.remove("is-dragging"); grid.querySelectorAll(".engine-card").forEach(function (c) { c.classList.remove("drag-over"); }); dragged = null; }; card.ondragover = function (e) { e.preventDefault(); e.dataTransfer.dropEffect = "move"; if (!dragged || dragged === this) return; this.classList.add("drag-over"); }; card.ondragleave = function () { this.classList.remove("drag-over"); }; card.ondrop = function (e) { e.preventDefault(); this.classList.remove("drag-over"); if (!dragged || dragged === this) return; if (this.classList.contains("add-engine-card")) { grid.insertBefore(dragged, this); return; } var allCards = Array.from(grid.querySelectorAll(".engine-card:not(.add-engine-card)")); var fromIdx = allCards.indexOf(dragged); var toIdx = allCards.indexOf(this); if (fromIdx < toIdx) { grid.insertBefore(dragged, this.nextSibling); } else { grid.insertBefore(dragged, this); } }; }); }; initDragAndDrop(); // Resize window drag handler var $settingWin = $('#popup_setting_win'); $('#popup_resize_handle').on('mousedown', function (e) { e.preventDefault(); e.stopPropagation(); var startX = e.clientX; var startY = e.clientY; var startW = $settingWin.outerWidth(); var startH = $settingWin.outerHeight(); $(document).on('mousemove.fluent_win_resize', function (moveEvent) { var newW = Math.max(720, Math.min(window.innerWidth * 0.96, startW + (moveEvent.clientX - startX))); var newH = Math.max(480, Math.min(window.innerHeight * 0.94, startH + (moveEvent.clientY - startY))); $settingWin.css({ width: newW + 'px', height: newH + 'px' }); }); $(document).on('mouseup.fluent_win_resize', function () { $(document).off('mousemove.fluent_win_resize mouseup.fluent_win_resize'); }); }); // Init display mode preference var currentDisplayMode = GM_getValue("engineDisplayMode", "default"); var currentDisplayCount = GM_getValue("engineDisplayCount", 8); $("#engine_display_mode").val(currentDisplayMode); $("#custom_engine_count").val(currentDisplayCount); if (currentDisplayMode === "custom") { $("#custom_count_wrap").show(); } else { $("#custom_count_wrap").hide(); } $("#engine_display_mode").on("change", function () { if ($(this).val() === "custom") { $("#custom_count_wrap").fadeIn(150); $("#custom_engine_count").focus(); } else { $("#custom_count_wrap").fadeOut(150); } }); // Fluent Stepper inc/dec click handlers $("#btn_count_dec").on("click", function () { var $input = $("#custom_engine_count"); var val = parseInt($input.val(), 10) || 8; if (val > 1) { $input.val(val - 1).trigger("input"); } }); $("#btn_count_inc").on("click", function () { var $input = $("#custom_engine_count"); var val = parseInt($input.val(), 10) || 8; if (val < 50) { $input.val(val + 1).trigger("input"); } }); // Prevent drag when interacting with switches or delete buttons $(".engine-actions").on("mousedown", function (e) { e.stopPropagation(); }); // Tab switching $("#tabs_box > .popup_tab").on("click", function () { $("#tabs_box > .popup_tab").removeClass("popup_selected"); $(this).addClass("popup_selected"); $("#option_box > div").hide(); var tabId = $(this).attr("id"); $("#" + tabId + "Page").show(); }); // Modal open/close for Custom Engine $("#btn_open_custom_modal").on("click", function () { $("#custom_name, #custom_desc, #custom_icon, #custom_href").val(""); $("#popup_custom_engine_modal").fadeIn(150); $("#custom_name").focus(); }); $("#btn_close_custom_modal, #btn_cancel_custom").on("click", function () { $("#popup_custom_engine_modal").fadeOut(150); }); // Variable tag click to append $(document).on("click", ".tip-tag", function () { var val = $(this).data("val"); var $href = $("#custom_href"); $href.val($href.val() + val); $href.focus(); }); // Confirm add custom engine $("#btn_confirm_custom").on("click", function () { var name = $("#custom_name").val().trim(); var desc = $("#custom_desc").val().trim(); var icon = $("#custom_icon").val().trim(); var href = $("#custom_href").val().trim(); if (!name) { alert("请填写引擎名称 / Please enter engine name"); $("#custom_name").focus(); return; } if (!href) { alert("请填写搜索链接 / Please enter search URL"); $("#custom_href").focus(); return; } if (!icon) { icon = popData.icons.inSiteIcon; } var id = "UserEngine_" + Date.now(); var newEng = { id: id, title: name, description: desc || name, src: icon, href: href, isCustom: true, defaultState: 1 }; if (!popData.userEngines) { popData.userEngines = []; } popData.userEngines.push(newEng); GM_setValue("engineString", JSON.stringify(popData.userEngines)); GM_setValue(id, 1); var cardHtml = generateEngineCard(newEng); $("#btn_open_custom_modal").before(cardHtml); initDragAndDrop(); $(".engine-actions").off("mousedown").on("mousedown", function (e) { e.stopPropagation(); }); $("#popup_custom_engine_modal").fadeOut(150); }); // Delete custom engine $(document).on("click", ".btn-del-custom", function (e) { e.stopPropagation(); var id = $(this).data("id"); if (!confirm("确定要删除这个自定义引擎吗? / Delete this custom engine?")) { return; } popData.userEngines = (popData.userEngines || []).filter(function (e) { return e.id !== id; }); GM_setValue("engineString", JSON.stringify(popData.userEngines)); $("#card_" + id).fadeOut(150, function () { $(this).remove(); }); }); // Save Settings $("#popup_save").on("click", function () { // 1. Save general options $("#popup_tab1Page .fluent-option-item").each(function () { var id = $(this).attr("id"); if (id) { var checked = $(this).find("input[type=checkbox]").prop("checked") ? 1 : 0; GM_setValue(id, checked); } }); // 2. Save display mode & custom count var selMode = $("#engine_display_mode").val(); GM_setValue("engineDisplayMode", selMode); if (selMode === "custom") { var customNum = parseInt($("#custom_engine_count").val(), 10) || 8; customNum = Math.max(1, Math.min(50, customNum)); GM_setValue("engineDisplayCount", customNum); } // 3. Save engine order and states var newOrder = []; $("#engine_card_grid .engine-card:not(.add-engine-card)").each(function () { var id = $(this).data("id"); if (id) { newOrder.push(id); var checked = $(this).find("input.engine-toggle").prop("checked") ? 1 : 0; GM_setValue(id, checked); } }); GM_setValue("engineOrder", newOrder); // 3. Close modal & re-initialize toolbar $("#popup_setting_bg").fadeOut(200, function () { $("#popup_setting_bg").remove(); PopupInit(); }); }); // Close Settings $("#popup_close, #popup_top_close").on("click", function () { $("#popup_setting_bg").fadeOut(200, function () { $("#popup_setting_bg").remove(); }); }); // Prevent click inside window from closing $('#popup_setting_win').on("click", function (e) { e.stopPropagation(); }); }; PopupLoad = function () { var engine, j, k, len, len1, option, ref, ref1, setDefault, userEngineString; if (window.self !== window.top || window.frameElement) { if (!GM_getValue("Iframe_st", 0)) { return; } } addCSS(); if (GM_getValue("UpdateAlert", 0) < popData.codeVersion) { setDefault = function (key, defaultValue) { return GM_setValue(key, GM_getValue(key, defaultValue)); }; ref = popData.optionList; for (j = 0, len = ref.length; j < len; j++) { option = ref[j]; setDefault(option.id, option.defaultValue); } ref1 = popData.engines; for (k = 0, len1 = ref1.length; k < len1; k++) { engine = ref1[k]; setDefault(engine.id, engine.defaultState); } GM_setValue("UpdateAlert", popData.codeVersion); } // Load custom user engines userEngineString = GM_getValue("engineString", "[]"); try { popData.userEngines = JSON.parse(userEngineString); } catch (error) { popData.userEngines = []; } PopupInit(); GM_registerMenuCommand("Popup Search Enhance DIY 设置 (v0.1.0 by csxo)", OpenSet, 'p'); }; setTimeout(PopupLoad, 100); addCSS = function () { return GM_addStyle(` #ShowUpBox { width: auto; height: auto; position: absolute; z-index: 99900000000; color: #202020; display: inline-block; line-height: 0; vertical-align: baseline; box-sizing: content-box; font-size: 14px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI Variable Text", "Segoe UI", Roboto, "PingFang SC", "Microsoft Yahei", sans-serif; } #showUpBody { min-width: 20px; max-width: 750px; min-height: 20px; max-height: 500px; display: block; border: 1px solid rgba(0, 0, 0, 0.12); border-radius: 8px; background: rgba(255, 255, 255, 0.96); box-shadow: 0 6px 20px rgba(0, 0, 0, 0.15), 0 1px 4px rgba(0, 0, 0, 0.08); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); } #popupWrapper { margin: 3px 4px; display: flex; align-items: center; gap: 3px; line-height: 0; font-size: 0; max-width: 234px; overflow-x: auto; overflow-y: hidden; white-space: nowrap; scroll-behavior: smooth; scrollbar-width: none; -ms-overflow-style: none; } #popupWrapper::-webkit-scrollbar { display: none; } #popupWrapper > a { flex-shrink: 0; } #transPanel { line-height: normal; width: auto; font-size: 14px; overflow: auto; display: none; } #popupWrapper > a { margin: 0px; display: inline-flex; align-items: center; justify-content: center; border-radius: 5px; padding: 3px; transition: background 0.15s ease, transform 0.12s ease; } #popupWrapper > a:hover { background: rgba(0, 0, 0, 0.08); transform: scale(1.12); } #popupWrapper img { margin: 0px; height: 20px; width: 20px; border-radius: 3px; display: inline-block; } #popupTip { display: inline-block; clear: both; height: 9px; width: 9px; } .tipUp { background: url(${popData.icons.tipUp}) 0px 0px no-repeat transparent; margin-top: -2px; margin-bottom: 0px; } .tipDown { background: url(${popData.icons.tipDown}) 0px 0px no-repeat transparent; margin-top: 0px; margin-bottom: -2px; } #ShowUpBox a { text-decoration: none; display: inline-block; } `); }; addAdditionalCSS = function () { if (popData.additionalCSSLoaded === 1) { return; } popData.additionalCSSLoaded = 1; return GM_addStyle(` #popup_setting_bg { width: 100%; height: 100%; background: rgba(0, 0, 0, 0.45); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); position: fixed; left: 0; top: 0; z-index: 102400; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI Variable Text", "Segoe UI", Roboto, "PingFang SC", "Microsoft Yahei", sans-serif; display: flex; justify-content: center; align-items: center; box-sizing: border-box; } #popup_setting_win { font-size: 13px; color: #242424; width: 980px; height: 620px; min-width: 720px; min-height: 480px; max-width: 96vw; max-height: 94vh; box-shadow: 0 18px 48px rgba(0, 0, 0, 0.24), 0 2px 8px rgba(0, 0, 0, 0.08); box-sizing: border-box; background: rgba(255, 255, 255, 0.94); backdrop-filter: saturate(180%) blur(20px); -webkit-backdrop-filter: saturate(180%) blur(20px); border: 1px solid rgba(255, 255, 255, 0.85); border-radius: 12px; overflow: hidden; display: flex; flex-direction: column; position: relative; animation: fluentFadeIn 0.2s cubic-bezier(0.1, 0.9, 0.2, 1); } #popup_resize_handle { position: absolute; right: 0; bottom: 0; width: 18px; height: 18px; cursor: nwse-resize; z-index: 50; display: flex; align-items: flex-end; justify-content: flex-end; padding: 0 4px 4px 0; box-sizing: border-box; user-select: none; } #popup_resize_handle::after { content: ""; width: 8px; height: 8px; border-right: 2px solid #a4a4a4; border-bottom: 2px solid #a4a4a4; border-radius: 1px; } #popup_resize_handle:hover::after { border-color: #0078D4; } @keyframes fluentFadeIn { from { opacity: 0; transform: scale(0.97); } to { opacity: 1; transform: scale(1); } } #popup_title_bar { height: 48px; padding: 0 16px 0 20px; background: rgba(255, 255, 255, 0.6); border-bottom: 1px solid rgba(0, 0, 0, 0.06); display: flex; align-items: center; justify-content: space-between; flex-shrink: 0; } .popup-brand { display: flex; align-items: center; gap: 10px; } .popup-brand-logo { width: 20px; height: 20px; } .popup-brand-title { font-size: 15px; font-weight: 600; color: #1a1a1a; } .popup-brand-badge { font-size: 11px; background: #E8F4FC; color: #0078D4; padding: 1px 7px; border-radius: 10px; font-weight: 500; } .popup-close-x { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border-radius: 6px; cursor: pointer; color: #5c5c5c; font-size: 16px; transition: all 0.15s ease; } .popup-close-x:hover { background: rgba(0, 0, 0, 0.06); color: #000; } #popup_content { flex: 1; height: calc(100% - 48px); display: flex; overflow: hidden; } #tabs_box { width: 175px; background: rgba(247, 247, 247, 0.65); border-right: 1px solid rgba(0, 0, 0, 0.06); display: flex; flex-direction: column; padding: 12px 8px; gap: 4px; flex-shrink: 0; } .popup_tab { display: flex; align-items: center; gap: 10px; padding: 9px 12px; font-size: 13px; font-weight: 500; color: #505050; border-radius: 6px; cursor: pointer; user-select: none; transition: all 0.15s ease; position: relative; } .popup_tab:hover { background: rgba(0, 0, 0, 0.04); color: #1a1a1a; } .popup_tab.popup_selected { background: #ffffff; color: #0078D4; font-weight: 600; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05); } .popup_tab.popup_selected::before { content: ""; position: absolute; left: 0; top: 8px; bottom: 8px; width: 3px; background: #0078D4; border-radius: 2px; } .tab-icon { font-size: 15px; } #page_box { flex: 1; display: flex; flex-direction: column; overflow: hidden; background: #ffffff; } #option_box { flex: 1; overflow-y: auto; padding: 18px 22px; } #option_box::-webkit-scrollbar { width: 6px; } #option_box::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.15); border-radius: 3px; } #option_box::-webkit-scrollbar-thumb:hover { background: rgba(0, 0, 0, 0.25); } .page-header { margin-bottom: 14px; } .page-title { font-size: 15px; font-weight: 600; color: #1a1a1a; margin-bottom: 2px; } .page-subtitle { font-size: 12px; color: #707070; } .fluent-options-grid { display: grid; grid-template-columns: 1fr; gap: 8px; } .fluent-option-item { display: flex; align-items: center; justify-content: space-between; padding: 10px 14px; background: #fbfbfb; border: 1px solid rgba(0, 0, 0, 0.05); border-radius: 8px; transition: all 0.15s ease; } .fluent-option-item:hover { background: #ffffff; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); border-color: rgba(0, 0, 0, 0.1); } .fluent-option-label { display: flex; align-items: center; gap: 10px; font-size: 13px; color: #2b2b2b; } .fluent-option-label img { width: 18px; height: 18px; opacity: 0.8; } #engine_card_grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 10px; margin-bottom: 16px; } .engine-card { background: #fcfcfc; border: 1px solid rgba(0, 0, 0, 0.07); border-radius: 8px; padding: 9px 10px; display: flex; align-items: center; gap: 9px; user-select: none; cursor: grab; transition: transform 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease, opacity 0.15s ease; position: relative; } .engine-card:active { cursor: grabbing; } .engine-card:hover { background: #ffffff; border-color: rgba(0, 120, 212, 0.35); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06); transform: translateY(-1px); } .engine-card.is-dragging { opacity: 0.35; border-style: dashed; border-color: #0078D4; } .engine-card.drag-over { border-color: #0078D4; box-shadow: 0 0 0 2px rgba(0, 120, 212, 0.25); transform: scale(1.02); } .drag-handle { color: #999; cursor: grab; display: flex; align-items: center; padding: 2px; flex-shrink: 0; transition: color 0.15s; } .drag-handle:hover { color: #0078D4; } .engine-icon-wrap { width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; background: rgba(0, 0, 0, 0.02); border-radius: 6px; flex-shrink: 0; } .engine-icon-wrap img { width: 20px; height: 20px; object-fit: contain; border-radius: 3px; } .engine-info { flex: 1; min-width: 0; display: flex; flex-direction: column; } .engine-name { font-size: 13px; font-weight: 600; color: #202020; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .engine-desc { font-size: 11px; color: #787878; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .engine-actions { display: flex; align-items: center; gap: 6px; flex-shrink: 0; cursor: default; } .btn-del-custom { background: none; border: none; color: #c42b1c; cursor: pointer; font-size: 13px; padding: 2px 4px; border-radius: 4px; opacity: 0.7; transition: all 0.15s; } .btn-del-custom:hover { opacity: 1; background: rgba(196, 43, 28, 0.08); } .engine-top-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 14px; padding-bottom: 12px; border-bottom: 1px solid rgba(0, 0, 0, 0.06); flex-wrap: wrap; } .toolbar-left { flex: 1; min-width: 220px; } .toolbar-right { display: flex; align-items: center; gap: 8px; } .display-count-setting { display: flex; align-items: center; gap: 8px; background: #f8f9fa; border: 1px solid rgba(0, 0, 0, 0.08); border-radius: 8px; padding: 5px 12px; } .display-count-label { font-size: 12px; font-weight: 600; color: #333333; display: flex; align-items: center; gap: 5px; white-space: nowrap; } .fluent-select { height: 30px; padding: 0 10px; font-size: 12px; color: #1a1a1a !important; background: #ffffff !important; border: 1px solid rgba(0, 0, 0, 0.18); border-radius: 6px; outline: none; cursor: pointer; color-scheme: light !important; transition: all 0.15s ease; } .fluent-select:focus { border-color: #0078D4; box-shadow: 0 0 0 2px rgba(0, 120, 212, 0.2); } .fluent-select option { background-color: #ffffff !important; color: #1a1a1a !important; padding: 6px 10px; color-scheme: light !important; } .fluent-select option:checked { background-color: #0078D4 !important; color: #ffffff !important; font-weight: 600; } .fluent-stepper-wrap { display: flex; align-items: center; gap: 6px; } .fluent-stepper { display: inline-flex; align-items: center; background: #ffffff; border: 1px solid rgba(0, 0, 0, 0.18); border-radius: 6px; height: 30px; overflow: hidden; transition: all 0.15s ease; box-sizing: border-box; } .fluent-stepper:focus-within { border-color: #0078D4; box-shadow: 0 0 0 2px rgba(0, 120, 212, 0.2); } .stepper-btn { width: 26px; height: 100%; background: #f8f9fa; border: none; outline: none; color: #333333; font-size: 15px; font-weight: 600; cursor: pointer; display: flex; align-items: center; justify-content: center; user-select: none; transition: background 0.12s ease, color 0.12s ease; padding: 0; line-height: 1; } .stepper-btn:hover { background: #E8F4FC; color: #0078D4; } .stepper-btn:active { background: #cde4f7; } .stepper-input { width: 38px; height: 100%; border: none; outline: none; background: transparent; text-align: center; font-size: 13px; font-weight: 600; color: #1a1a1a; padding: 0; margin: 0; -moz-appearance: textfield; } .stepper-input::-webkit-outer-spin-button, .stepper-input::-webkit-inner-spin-button { -webkit-appearance: none !important; margin: 0 !important; display: none !important; } .stepper-unit { font-size: 12px; color: #555555; user-select: none; white-space: nowrap; } .add-engine-card { border: 1.5px dashed rgba(0, 120, 212, 0.45) !important; background: rgba(232, 244, 252, 0.35) !important; cursor: pointer !important; transition: all 0.15s ease !important; } .add-engine-card:hover { background: #E8F4FC !important; border-color: #0078D4 !important; box-shadow: 0 4px 12px rgba(0, 120, 212, 0.15) !important; transform: translateY(-1px) !important; } .add-engine-icon { width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; background: #E8F4FC; color: #0078D4; border-radius: 6px; flex-shrink: 0; transition: all 0.15s ease; } .add-engine-card:hover .add-engine-icon { background: #0078D4; color: #ffffff; } #popup_custom_engine_modal { position: absolute; left: 0; top: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.35); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); display: flex; justify-content: center; align-items: center; z-index: 100; animation: fluentFadeIn 0.15s ease; } .fluent-submodal-content { width: 480px; max-width: 90%; background: #ffffff; border: 1px solid rgba(0, 0, 0, 0.1); border-radius: 10px; box-shadow: 0 12px 32px rgba(0, 0, 0, 0.2); display: flex; flex-direction: column; overflow: hidden; } .submodal-header { height: 44px; padding: 0 16px; border-bottom: 1px solid rgba(0, 0, 0, 0.06); display: flex; align-items: center; justify-content: space-between; background: #fbfbfb; } .submodal-header h3 { font-size: 14px; font-weight: 600; margin: 0; color: #1a1a1a; } .submodal-body { padding: 16px 20px; display: flex; flex-direction: column; gap: 12px; } .form-group { display: flex; flex-direction: column; gap: 4px; } .form-group label { font-size: 12px; font-weight: 500; color: #404040; } .form-group label .required { color: #c42b1c; } .fluent-input { height: 32px; padding: 0 10px; font-size: 13px; color: #1a1a1a; background: #fbfbfb; border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 4px; outline: none; transition: all 0.15s ease; box-sizing: border-box; } .fluent-input:focus { background: #ffffff; border-color: #0078D4; box-shadow: 0 0 0 2px rgba(0, 120, 212, 0.2); } .url-tips { background: #f8f9fa; border: 1px solid rgba(0, 0, 0, 0.05); border-radius: 6px; padding: 8px 10px; } .tip-title { font-size: 11px; color: #606060; margin-bottom: 6px; } .tip-tags { display: flex; flex-wrap: wrap; gap: 6px; } .tip-tag { font-size: 11px; background: #ffffff; border: 1px solid rgba(0, 0, 0, 0.1); padding: 2px 7px; border-radius: 4px; cursor: pointer; color: #0078D4; transition: all 0.12s ease; } .tip-tag:hover { background: #E8F4FC; border-color: #0078D4; } .tip-tag code { font-weight: 600; } .submodal-footer { padding: 12px 18px; border-top: 1px solid rgba(0, 0, 0, 0.06); background: #fbfbfb; display: flex; justify-content: flex-end; gap: 10px; } .about-card { padding: 18px 20px; background: #fcfcfc; border: 1px solid rgba(0, 0, 0, 0.06); border-radius: 8px; line-height: 1.6; } .about-card h3 { margin: 0 0 8px 0; color: #0078D4; } .about-card p { margin: 6px 0; font-size: 13px; color: #404040; } .about-card a { color: #0078D4; text-decoration: none; } .about-card a:hover { text-decoration: underline; } #btnArea { height: 52px; padding: 0 22px; background: rgba(250, 250, 250, 0.85); border-top: 1px solid rgba(0, 0, 0, 0.06); display: flex; align-items: center; justify-content: flex-end; gap: 10px; flex-shrink: 0; } .fluent-btn { height: 32px; padding: 0 18px; font-size: 13px; font-weight: 500; border-radius: 4px; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; transition: all 0.15s ease; user-select: none; box-sizing: border-box; } .fluent-btn-primary { background: #0078D4; color: #ffffff; border: 1px solid #0078D4; box-shadow: 0 2px 4px rgba(0, 120, 212, 0.2); } .fluent-btn-primary:hover { background: #106EBE; border-color: #106EBE; } .fluent-btn-secondary { background: #ffffff; color: #242424; border: 1px solid rgba(0, 0, 0, 0.18); } .fluent-btn-secondary:hover { background: #f5f5f5; border-color: rgba(0, 0, 0, 0.25); } .fluent-switch { position: relative; display: inline-block; width: 40px; height: 20px; flex-shrink: 0; cursor: pointer; } .fluent-switch input { opacity: 0; width: 0; height: 0; position: absolute; } .fluent-slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ffffff; border: 1px solid #8a8886; transition: 0.18s ease; border-radius: 20px; } .fluent-slider:before { position: absolute; content: ""; height: 12px; width: 12px; left: 3px; bottom: 3px; background-color: #8a8886; transition: 0.18s ease; border-radius: 50%; } .fluent-switch input:checked + .fluent-slider { background-color: #0078D4; border-color: #0078D4; } .fluent-switch input:checked + .fluent-slider:before { transform: translateX(20px); background-color: #ffffff; } .fluent-switch input:focus + .fluent-slider { box-shadow: 0 0 0 2px rgba(0, 120, 212, 0.25); } `); }; getLastRange = function (selection) { var j, rangeNum, ref; for (rangeNum = j = ref = selection.rangeCount - 1; ref <= 0 ? j <= 0 : j >= 0; rangeNum = ref <= 0 ? ++j : --j) { if (!selection.getRangeAt(rangeNum).collapsed) { return selection.getRangeAt(rangeNum); } } return selection.getRangeAt(selection.rangeCount - 1); }; get_selection_offsets = function (selection, e) { var $test_span, Rect, lastRange, newRange; try { $test_span = $('x'); // "x" because it must have a height lastRange = getLastRange(selection); newRange = document.createRange(); newRange.setStart(lastRange.endContainer, lastRange.endOffset); newRange.insertNode($test_span[0]); Rect = $test_span[0].getBoundingClientRect(); $test_span.remove(); return [Rect.top + window.scrollY, Rect.left + window.scrollX, 0, 0]; } catch (error) { return [e.pageY, e.pageX, 0, 0]; } };