From 93af3b762b1f683149fd290a3cbfc3e0a33ac73f Mon Sep 17 00:00:00 2001 From: SVE1R Date: Sun, 17 Dec 2023 01:20:23 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat:=20Update=20Bilibili=20and=20Y?= =?UTF-8?q?outube=20Rewrite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Rewrite/4limbo.adblock | 82 +- Rewrite/AdBlock/BiliBili.adblock | 6 +- Rewrite/AdBlock/StartUp.adblock | 31 +- Rewrite/AdBlock/WebAdBlock.adblock | 56 +- Rewrite/AdBlock/Youtube.adblock | 27 +- Scripts/AdBlock/Bilibili/BiliBili.js | 4 +- Scripts/AdBlock/Bilibili/BiliBili.min.js | 4 +- Scripts/AdBlock/Bilibili/BiliBili.response.js | 6196 +-------------- .../AdBlock/Bilibili/BiliBili.response.min.js | 8 +- Scripts/AdBlock/Other/BaiduMap.js | 6631 +++++++++++------ Scripts/AdBlock/Other/Quark.js | 979 ++- Scripts/AdBlock/Wechat/UnlockLink.js | 4231 +---------- Scripts/AdBlock/Wechat/UnlockLink.min.js | 167 +- Scripts/Unlock/WechatUrlUnlock.js | 270 +- 14 files changed, 5694 insertions(+), 12998 deletions(-) diff --git a/Rewrite/4limbo.adblock b/Rewrite/4limbo.adblock index 2e9055c..30594d1 100644 --- a/Rewrite/4limbo.adblock +++ b/Rewrite/4limbo.adblock @@ -1,4 +1,4 @@ -#!name=毒奶特供(2023年11月24日更新) +#!name=毒奶特供(2023年12月17日更新) #!desc=毒奶去网页广告计划(稳定版)For Surge / Quantumult X / Shadowrocket/ 油猴 - Tampermonkey ;如去内容农场/泥巴影视/剧迷网/低端影视/哔滴影视/Jable/Missav//Netflav/Xvideos/Pornhub/91../禁漫天堂/百度与谷歌搜索结果页面广告等视频网站广告或其他ACG网站网页广告/百度知道广告... #! \\ You Can Change The World With Code. @@ -43,83 +43,83 @@ https://creative.live.missav.com/widgets/Spot/lib.js url reject # url https://www.javlibrary.com/cn/?v=$2 (https://www.javlibrary.com/cn/videoreviews.php\?v=)(.*?)(&mode=.*) # url m.baidu.com www.baidu.com(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* -# 知道搜索广告(zhidao.baidu.com) +# 知道搜索广告(zhidao.baidu.com) ^https?:\/\/(zhidao)\.baidu\.com\/(question|index|\?fr|\?word) url script-response-body https://limbopro.com/Adguard/surge_baidu.zhidao.js -# 搜索首页广告(www.baidu.com) +# 搜索首页广告(www.baidu.com) ^https?:\/\/(www|m)\.baidu\.com(/$|\/\?ref.*)(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/surge_baidu.index.js -# 搜索结果广告(www.baidu.com) +# 搜索结果广告(www.baidu.com) ^https?:\/\/(www|m)\.baidu\.com(\/s\?word.*|\/from.*?\/s\?word.*|\/from.*?word=.*) url script-response-body https://limbopro.com/Adguard/surge_baidu.js -# 内容农场(www.bing.com) +# 内容农场(www.bing.com) ^https?:\/\/((www|cn)\.bing)(\.\w{2,4}){1,2}\/(search\?.*|\?sa=|\?FORM)(?!.*?(apps=)) url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 内容农场(www.google.com|com.hk) +# 内容农场(www.google.com|com.hk) ^https?:\/\/(www\.google)(\.\w{2,4}){1,2}\/(search\?|\?sa=|\?FORM)(?!.*?(apps=)) url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 禁漫天堂(18comic.org|vip) +# 禁漫天堂(18comic.org|vip) ^https?:\/\/18comic\.(vip|org)\/(?!(.*(onclick|cdn-cgi|\.))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 紳士漫畫(www.wnacg.com) +# 紳士漫畫(www.wnacg.com) ^https?:\/\/www\.wnacg\.com\/(?!(.*(onclick|cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 小宝影视(xiaobaotv.net) +# 小宝影视(xiaobaotv.net) ^https?:\/\/(xiaobaotv\.(net|com))\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 泥巴影视(Nivod4.tv) +# 泥巴影视(Nivod4.tv) ^https?:\/\/(www|m)\.(nivod4\.tv)\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 剧迷网(gimy.app|ai) +# 剧迷网(gimy.app|ai) ^https?:\/\/(\w{0,3}(\.){0,1}(gimy)(\.)\w{0,3})\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 低端影视(ddrk.me|ddys.pro) +# 低端影视(ddrk.me|ddys.pro) ^https?:\/\/(ddys|ddrk|ddys2)\.\w{0,3}\/(?!(.*(cdn-cgi|getvddr|\=json|\.))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 哔嘀影视播放页(www.btbdys.com) +# 哔嘀影视播放页(www.btbdys.com) ^https?:\/\/www\.(btbdys|bdys(01|02|03|10))\.com\/play\/.*?\.htm.* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 哔嘀影视展示页(www.btbdys.com) +# 哔嘀影视展示页(www.btbdys.com) ^https?:\/\/www\.(btbdys|bdys(01|02|03|10))\.com\/(?!(.*(obj|lines|verifyCode|member|zzzzz|cdn-cgi|js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 欧乐影视(www.olevod.tv) +# 欧乐影视(www.olevod.tv) https?:\/\/.+\.olevod\..+\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 独播库(www.duboku.tv) +# 独播库(www.duboku.tv) https?:\/\/.*duboku.*\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 韩剧TV(www.tvn.cc) +# 韩剧TV(www.tvn.cc) ^https?:\/\/(www|wap|m)\.tvn\.cc\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 555电影网(555dy.com)P.S.鉴于域名经常跳转将不再维护 +# 555电影网(555dy.com)P.S.鉴于域名经常跳转将不再维护 ^https?:\/\/(555dy\w{0,3})\.(com|top|shop)\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 梨播(libvio.top|pro) +# 梨播(libvio.top|pro) ^https?:\/\/(www\.|m\.){0,1}libvio\.(top|pro)\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 天天视频(www.ttsp.tv) +# 天天视频(www.ttsp.tv) ^https?:\/\/(www.ttsp.tv)\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# Javbus(www.javbus.com) +# Javbus(www.javbus.com) ^https?:\/\/www\.javbus\.com\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# Pornhub(cn.pornhub.com) +# Pornhub(cn.pornhub.com) ^https?:\/\/(\w{0,3}(\.){0,1}(pornhub)(\.)\w{0,3})\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# Jable(en|jable.tv) +# Jable(en|jable.tv) ^https?:\/\/(jable|(en|\w{2,3})\.jable)\.tv\/(?!(.*(\?mode|cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# Missav(missav.com) +# Missav(missav.com) ^https?:\/\/missav\.com\/(?!(.*(api|cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# Javday(javday.tv) +# Javday(javday.tv) ^https?:\/\/javday\.tv\/(?!(.*(api|cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# Xvideos(www.xvideos.com) +# Xvideos(www.xvideos.com) ^https?:\/\/www\.xvideos\.com\/(?!(.*(api|my|cdn-cgi|account|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# njav(njav.com) +# njav(njav.com) ^https?:\/\/njav\.tv\/(?!(.*(api|my|cdn-cgi|account|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# javlibrary(www.javlibrary.com) +# javlibrary(www.javlibrary.com) ^https?:\/\/www\.javlibrary\.com\/(?!(.*(api|my|login|cdn-cgi|confirmobj|account|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# Netflav(netflav|netflav5|.com) +# Netflav(netflav|netflav5|.com) ^https?:\/\/(netflav|netflav5)\.com\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/surge_netflav.js -# PlayerAds +# PlayerAds ^https?:\/\/(streamtape.com|((emturbovid|filemoon|embedrise|mmfl02|embedgram)\.(sx|com))|emturbovid\.com|filemoon.sx|embedrise.com|mmfl02.com|embedgram.com|fviplions.com|sfastwish.com|cabecabean.lol|belegug.online|wishfast.top|vidmoviesb.xyz|vhmovies.to|awish.pro|ankrzkz.sbs|fc2stream.tv|sub123.xyz|leakslove.net|mwish.pro|embedwish.com|javhahaha.us|abkrzkz.sbs|streamvid.top|abkrzkr.sbs|playertv.net|sbrity.com|doodporn.xyz|mycloud123.top|streamsb.click|streamxxx.online|trafficdepot.re|sblona.com|filelions.*|ahvsh.com|sbrapid.com|streaamss.com|louishide.com|projectfreetv.lol|streamwish.to|lvturbo.com|javb1.com|sbface.com|rbtstream.info|vidgo.top|sbhight.com|sbbrisk.com|streamhide.to|cloudrls.com|mm9846.com|m4uhd.club|streamm4u.club|sbchill.com|fbjav.com|imfb.xyz|sbrulz.xyz|baldrfilms.xyz|javbigo.xyz|dizivap.*|dvapizle.*|sblongvu.com|mavavid.com|fembed9hd.com|xsub.cc|sbthe.com|sbanh.com|mm9844.*|anigogo.net|faptiti.com|javsubbed.xyz|sblanh.com|av4asia.com|playerjavseen.com|pornhubed.com|xvideostream.net|streamsss.net|sbspeed.com|vcdn-stream.xyz|vanfem.com|javuncen.xyz|vidplay.ch|javenglish.me|ssbstream.net|zojav.com|watch-jav-english.live|javpornhd.online|yuamikami.xyz|embed-media.com|obaplayer.xyz|cdn-myhdjav.info|dlmovies.link|cinegrabber.com|watchjavnow.xyz|luxubu.review|nsfwzone.xyz|viplayer.cc|cinemaemcasa.xyz|sbfast.com|iframe2videos.xyz|javfu.net|streamas.cloud|nashstream.top|yuistream.xyz|jav247.top|viewsb.com|myvideoplayer.monster|cloudemb.com|moviesland.xyz|jvembed.com|ffem.club|javleaked.com|pornhole.club|ndrama.xyz|fembed-hd.com|netflav.com|netflav5.com|mambast.tk|cutl.xyz|playerjavhd.com|mycloudzz.com|suzihaza.com|embedsb.com|layarkacaxxi.icu|nekolink.site|sbflix.xyz|javhdfree.icu|streamsb.net|rubicstreaming.com|javside.com|gdstream.net|animepl.xyz|watchsb.com|sbplay2.*|hentai4.me|playersb.com|streamabc.xyz|ns21.online|diasfem.com|milfnut.net|pelispop.net|ondembed.xyz|tubesb.com|fplayer.info|mm9842.com|sbplay1.com|javmvp.com|japopav.tv|nezuko-ah.nl|pelistop.co|vidcloud.*|mavlecteur.com|xxxjaa.xyz|vcdn2.space|mavplayer.xyz|sbplay.*|sbvideo.net|sbembed4.com|javcl.me|dfmagazine.co.uk|down-paradise.com|embedsito.com|serverf4.org)\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 91porn(www.91porn.com) +# 91porn(www.91porn.com) ^https?:\/\/\w{0,3}(\.){0,1}91porn\.com\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 91short(cn1.91short.com) +# 91short(cn1.91short.com) ^https?:\/\/(cn1|www)\.(91short\.com)\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# Avple(avple.tv) +# Avple(avple.tv) ^https?:\/\/avple\.tv\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# 4hu(4hu.tv) +# 4hu(4hu.tv) ^https?:\/\/4hu\.tv\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# Supjav(supjav.com) +# Supjav(supjav.com) ^https?:\/\/supjav\.com\/(?!(.*(cdn-cgi|api|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# tz659(www.tz659.com) +# tz659(www.tz659.com) ^http?:\/\/www\.tz659\.com\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# anime1(anime1.me) +# anime1(anime1.me) ^https?:\/\/anime1\.me\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# hanime1(hanime1.me) +# hanime1(hanime1.me) ^https?:\/\/hanime1\.me\/(?!(.*(api|cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# yhdmp(m.yhdmp.com) +# yhdmp(m.yhdmp.com) ^https?:\/\/m\.yhpdm\.com\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js -# Javmost(javmost.xyz) +# Javmost(javmost.xyz) ^https?:\/\/\w{3,5}\.javmost\.com\/(?!(.*(cdn-cgi|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/surge_javmost.js -# AVfactory +# AVfactory ^https?:\/\/(www.tameikegoro.jp|tameikegoro.jp|www.madonna-av.com|madonna-av.com|deeps.net|www.fitch-av.com|fitch-av.com|www.takara-tv.jp|takara-tv.jp|www.moodyz.com|moodyz.com|www.s1s1s1.com|s1s1s1.com|www.prestige-av.com|prestige-av.com|www.sod.co.jp|sod.co.jp|venus-av.com|www.gloryquest.tv|gloryquest.tv|www.premium-beauty.com|premium-beauty.com|www.nagae-style.com|nagae-style.com|www.ideapocket.com|ideapocket.com|www.attackers.net|attackers.net|www.dasdas.jp|dasdas.jp|www.oppai-av.com|oppai-av.com|www.kawaiikawaii.jp|kawaiikawaii.jp|www.to-satsu.com|to-satsu.com|www.wanz-factory.com|wanz-factory.com|www.av-e-body.com|av-e-body.com|www.mgstage.com|mgstage.com|www.mousouzoku-av.com|mousouzoku-av.com|manji-group.com|www.rocket-inc.net|rocket-inc.net|www.dmm.co.jp|dmm.co.jp|www.muku.tv|muku.tv)\/(?!(.*(api|my|cdn-cgi|account|(\.(js|css|jpg|jpeg|png|webp|gif|zip|woff|woff2|m3u8|mp4|mp3|json|ico))))).* url script-response-body https://limbopro.com/Adguard/Adblock4limbo.js \ No newline at end of file diff --git a/Rewrite/AdBlock/BiliBili.adblock b/Rewrite/AdBlock/BiliBili.adblock index 82bb734..9167e9c 100644 --- a/Rewrite/AdBlock/BiliBili.adblock +++ b/Rewrite/AdBlock/BiliBili.adblock @@ -9,8 +9,8 @@ // @TgChannel https://t.me/ddgksf2021 // @Contribute https://t.me/ddgksf2013_bot // @Feedback 📮 ddgksf2013@163.com 📮 -// @UpdateTime 2023-08-17 -// @ConfigVersion V2.0.127 +// @UpdateTime 2023-11-24 +// @ConfigVersion V2.0.128 // @Attention 如果广告仍然存在,请清除缓存或卸载应用重新安装 // @Attention 如需引用请注明出处,谢谢合作! // @Function 去广告配置(自用,不定期更新) @@ -98,4 +98,4 @@ hostname = -broadcast.chat.bilibili.com, -*cdn*.biliapi.net, -*tracker*.biliapi. # ~ BiliBili_哔哩哔哩_繁体CC字幕转中文简体[自行启用hostname=aisubtitle.hdslb.com,i0.hdslb.com]@ddgksf2013 ;^https?:\/\/.*\.hdslb\.com\/bfs\/subtitle\/.+\.json url script-response-body https://github.com/ddgksf2013/Scripts/raw/master/bilibili_cc.js # ~ BiliBili_哔哩哔哩_去除统一设置的皮肤[注释留存]@ddgksf2013 -;^https?:\/\/app\.bilibili\.com\/x\/resource\/show\/skin\? url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Bilibili/BiliBili.min.js +;^https?:\/\/app\.bilibili\.com\/x\/resource\/show\/skin\? url script-response-body https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Bilibili/BiliBili.min.js \ No newline at end of file diff --git a/Rewrite/AdBlock/StartUp.adblock b/Rewrite/AdBlock/StartUp.adblock index 3a851e6..2950eca 100644 --- a/Rewrite/AdBlock/StartUp.adblock +++ b/Rewrite/AdBlock/StartUp.adblock @@ -5,32 +5,33 @@ // @TgBot https://t.me/ddgksf2013_bot // @WechatID 公众号墨鱼手记 // @Feedback 💡 请通过邮件反馈问题『其它方式一概无视』:𝐝𝐝𝐠𝐤𝐬𝐟𝟐𝟎𝟏𝟑@𝟏𝟔𝟑.𝐜𝐨𝐦 💡 -// @UpdateTime 2023-11-23 +// @UpdateTime 2023-12-16 // @Please 如需引用请注明出处,谢谢合作! // @Function 去除APP首页启动广告和部分应用内广告,如果有需要的去除广告的APP,可以公众号后台直接回复 // @ExtraTxt Only provide the removal of open-screen advertisements for personally used apps -// @Attention QuantumultX能去广告,不代表能去所有广告!(应用个数:238) +// @Attention QuantumultX能去广告,不代表能去所有广告!(应用个数:242) // @Mark 名字后面的*代表该应用启动倒计时仍然存在 -// @Attention 去除url-and-header写法,使部分重写兼容旧版QX -// @APPList 无法𝐌𝐈𝐓𝐌的应用:银行类[绝大部分]|抖音|蜂巢|滴答清单|Taio|小米运动|有条下载|Fileball|万年历|豆瓣[信息流]|虎牙直播|货拉拉|番茄小说|携程旅行[APP]|凯叔讲故事|七猫小说|醒图|剪映|潮汐|不背单词|高铁管家|咕咚运动|APTV|DayOne +// @Tips 利用捷径打开URL[填写AppScheme],即可免开屏广告打开应用,适合无法MITM的APP +// @APPList 无法𝐌𝐈𝐓𝐌的应用:银行类[绝大部分]|抖音|蜂巢|滴答清单|Taio|小米运动|有条下载|Fileball|万年历|豆瓣[信息流]|虎牙直播|货拉拉|番茄小说|携程旅行[APP]|凯叔讲故事|七猫小说|醒图|剪映|潮汐|不背单词|高铁管家|咕咚运动|APTV|DayOne|懂车帝 // @Attention 如果广告仍然存在,请『卸载应用』重新安装,还是不行则表示『规则里没有或已失效』 // @ScriptURL https://github.com/ddgksf2013/Rewrite/raw/master/AdBlock/StartUp.conf // ==/UserScript== -hostname = wallpaper.soutushenqi.com, carapp.gtmc.com.cn, 140.179.224.63, ap.dongqiudi.com, apapia-sqk.manmanbuy.com, emdcadvise.eastmoney.com, *.tipatipa.xyz, superapp.xgimi.com, mix-api.camera360.com, api1.34580.com, api.wmpvp.com, gateway.abite.com, rengine-platform.llsapp.com, capi.lkcoffee.com, 1jietu.com, bbs-api.miyoushe.com, tcmobileapi.17usoft.com, m.msyc.cc, mgw.mpaas.cn-hangzhou.aliyuncs.com, ytmsout.radio.cn, api.kmovie.gifshow.com, igetcool-gateway.igetcool.com, *.ahhhhfs.com, open-cms-api.quark.cn, ftapi.10jqka.com.cn, wxa.wxs.qq.com, evs.500.com, j1.pupuapi.com, dq.dxy.cn, m.you.163.com, open-cms-api.uc.cn, *.yuxueyuan.cn, pan-api.bitqiu.com, client.tujia.com, vip7.fzwdyy.cn, run.api.qyfxgd.cn, *cupid.iqiyi.com, gateway.36kr.com, shopapi.io.mi.com, tk.lanjiyin.com, gongdu.youshu.cc, api.21ec74.com, ztoread.ziroom.com, iphone.ac.qq.com, web.chelaile.net.cn, gd.10086.cn, api.00bang.cn, app.hbooker.com, api.sfacg.com, newclient.map.baidu.com, api3.cls.cn, gateway-api.dushu365.com, p0.pipi.cn, jdread-api.jd.com, ms.jr.jd.com, bdsp-x.jd.com, dsp-x.jd.com, api.m.jd.com, router-app-api.jdcloud.com, app.homeinns.com, cdn-evone-ceph.echargenet.com, mlol.qt.qq.com, gg.caixin.com, app-gw.csdn.net, api.gameplus.qq.com, mrobot.pconline.com.cn, djcapp.game.qq.com, mxsa.mxbc.net, cn-acs.m.cainiao.com, zjdr666.com, api.caiyunapp.com, api.ahmobile.cn, gx.10086.cn, emdcadvertise.eastmoney.com, api-sams.walmartmobile.cn, creditcardapp.bankcomm.cn, lban.spdb.com.cn, adapi.izuiyou.com, i.ys7.com, apps.api.ke.com, api.yonghuivip.com, access.mypikpak.com, gateway.shouqiev.com, res.pizzahut.com.cn, api.caijingmobile.com, 3g.csair.com, client-api.oray.com, bgw.xinyue.qq.com, api-new.app.acfun.cn, m.client.10010.com, open.fitdays.cn, gha.ghac.cn, sh-gateway.shihuo.cn, wcprd.hilton.com, ad.12306.cn, 103.91.210.141, adx-cn.anythinktech.com, js-ad.ayximgs.com, api.dangdang.com, pzoap.moedot.com, pipi.4kya.com, vip7.fzwdyy.cn, sdk.alibaba.com.ailbaba.me, tft-app.cdtft.cn, bgw.xinyue.qq.com, pan.baidu.com, yunbusiness.ccb.com, client.app.coc.10086.cn, t1.market.xiaomi.com, api.m.mi.com, app.zhuanzhuan.com, api.cloud.189.cn, appwk.baidu.com, us.l.qq.com, open.e.kuaishou.com, mi.gdt.qq.com, emdcadvertise.eastmoney.com, adm.10jqka.com.cn, a.qiumibao.com, api.tipsoon.com, b.appsimg.com, ios.sspai.com, zconfig.alibabausercontent.com, api.touker.com, mpcs.suning.com, api.pinduoduo.com, api.yangkeduo.com, easyreadfs.nosdn.127.net, sp.kaola.com, gw.kaola.com, mime.baidu.com, learn.chaoxing.com, mapi.dangdang.com, api.dangdang.com, open.e.kuaishou.com, client.qunar.com, mpos-pic.helipay.com, dili.bdatu.com, wap.ngchina.cn, ih2.ireader.com, adpai.thepaper.cn, api.haohaozhu.cn, list-app-m.i4.cn, api.xiachufang.com, peisongapi.meituan.com, *gaoqingdianshi.com, *.kakamobi.cn, api.jxedt.com, slapi.oray.net, r.inews.qq.com, app.yinxiang.com, mapi.appvipshop.com, syh.zybang.com, cdn.cmgadx.com, api.internetofcity.cn, img.meituan.net, lcen.xiaote.net, venus.yhd.com, api.shenyin.name, mage*.if.qidian.com, god.gameyw.netease.com, m.ibuscloud.com, e.dangdang.com, app2.autoimg.cn, adproxy.autohome.com.cn, discardrp.umetrip.com, startup.umetrip.com, explorer.tratao.com, overseas.weico.cc, 118.178.214.118, dapis.mting.info, acs.m.taobao.com, open3.vistastory.com, ssp.dzh.com.cn, www.meituan.com, client.mail.163.com, api.izuiyou.com, appapi.huazhu.com, api.wfdata.club, interface*.music.163.com, api.psy-1.com, res.kfc.com.cn, mp.weixin.qq.com, security.wechat.com, weixin110.qq.com, cdn.*.chelaileapp.cn, api.coolapk.com, app3.qdaily.com, daoyu.sdo.com, img.jiemian.com, ccsp-egmas.sf-express.com, *.laichon.com, app.ap.d3yuiw4.com, www.i3zh.com, api.yikaobang.com.cn, api-ad-product.huxiu.com, jad-api.jin10.com, mob.mddcloud.com.cn, appactive.1234567.com.cn, rtbapi.douyucdn.cn, service.busi.inke.cn, gab.122.gov.cn, dispatcher.camera360.com, app.api.versa-ai.com, open.taou.com, api.taou.com, track.mm.taou.com, app.dewu.com, data-collector.soulapp.cn, api.gamer.com.tw, beta-api.crunchyroll.com, api.vistopia.com.cn, pss.txffp.com, m.sd.10086.cn, helper.2bulu.com, 47.100.65.202, api.weibo.cn, mapi.weibo.com, *.uve.weibo.com, new.vip.weibo.cn, wap.js.10086.cn, tagit.hyhuo.com, top-widgets-api.xiaozujian.com, *mangaapi.manhuaren.*, apis.lifeweek.com.cn, support.you.163.com, yanxuan.nosdn.127.net, *.peopleapp.com, new-app-api.ylyk.com, gw.aihuishou.com, *.58cdn.com.cn, app.58.com, api.zhihu.com, creditcardapp.bankcomm.com, res.xiaojukeji.com, 116.85.2.15, 116.85.2.14, lchttpapi.xczim.com, business.msstatic.com, api.kkmh.com, *.chelaile.net.cn, api.jr.mi.com, api.m.mi.com, guanyu.longfor.com, elemecdn.com, fuss10.elemecdn.com, www1.elecfans.com, m.tuniu.com, mapi.mafengwo.cn, api.xiaoyi.com, api.douban.com, otheve.beacon.qq.com, mapi.sfbest.com, api.mwee.cn, sso.ifanr.com, s3plus.meituan.net, flowplus.meituan.net, p*.meituan.net, testflight.apple.com, wmapi.meituan.com, appconf.mail.163.com, dl-cu-hz.lechange.cn, fbchina.flipchina.cn, zone.guiderank-app.com, homefront.qunar.com, afd.baidu.com, ma-adx.ctrip.com, mbd.baidu.com, img.rr.tv, api.rr.tv, *.hoopchina.com, goblin.hupu.com, spclient.wg.spotify.com +hostname = td.cgmcare.cn, *.yuanfudao.com, ad.mcloud.139.com, wallpaper.soutushenqi.com, carapp.gtmc.com.cn, 140.179.224.63, ap.dongqiudi.com, apapia-sqk.manmanbuy.com, emdcadvise.eastmoney.com, *.tipatipa.xyz, superapp.xgimi.com, mix-api.camera360.com, api1.34580.com, api.wmpvp.com, gateway.abite.com, rengine-platform.llsapp.com, capi.lkcoffee.com, 1jietu.com, bbs-api.miyoushe.com, tcmobileapi.17usoft.com, m.msyc.cc, mgw.mpaas.cn-hangzhou.aliyuncs.com, ytmsout.radio.cn, api.kmovie.gifshow.com, igetcool-gateway.igetcool.com, *.ahhhhfs.com, open-cms-api.quark.cn, ftapi.10jqka.com.cn, wxa.wxs.qq.com, evs.500.com, j1.pupuapi.com, dq.dxy.cn, m.you.163.com, open-cms-api.uc.cn, *.yuxueyuan.cn, pan-api.bitqiu.com, client.tujia.com, vip7.fzwdyy.cn, *.qyfxgd.cn, *.weilai555.com, *.ecoliving168.com, *cupid.iqiyi.com, gateway.36kr.com, shopapi.io.mi.com, tk.lanjiyin.com, gongdu.youshu.cc, api.21ec74.com, ztoread.ziroom.com, iphone.ac.qq.com, web.chelaile.net.cn, gd.10086.cn, api.00bang.cn, app.hbooker.com, api.sfacg.com, newclient.map.baidu.com, api3.cls.cn, gateway-api.dushu365.com, p0.pipi.cn, jdread-api.jd.com, ms.jr.jd.com, bdsp-x.jd.com, dsp-x.jd.com, api.m.jd.com, router-app-api.jdcloud.com, app.homeinns.com, cdn-evone-ceph.echargenet.com, mlol.qt.qq.com, gg.caixin.com, app-gw.csdn.net, api.gameplus.qq.com, mrobot.pconline.com.cn, djcapp.game.qq.com, mxsa.mxbc.net, cn-acs.m.cainiao.com, zjdr666.com, api.caiyunapp.com, api.ahmobile.cn, gx.10086.cn, emdcadvertise.eastmoney.com, api-sams.walmartmobile.cn, creditcardapp.bankcomm.cn, lban.spdb.com.cn, adapi.izuiyou.com, i.ys7.com, apps.api.ke.com, api.yonghuivip.com, access.mypikpak.com, gateway.shouqiev.com, res.pizzahut.com.cn, api.caijingmobile.com, 3g.csair.com, client-api.oray.com, bgw.xinyue.qq.com, api-new.app.acfun.cn, m.client.10010.com, open.fitdays.cn, gha.ghac.cn, sh-gateway.shihuo.cn, wcprd.hilton.com, ad.12306.cn, 103.91.210.141, adx-cn.anythinktech.com, js-ad.ayximgs.com, api.dangdang.com, pzoap.moedot.com, pipi.4kya.com, vip7.fzwdyy.cn, sdk.alibaba.com.ailbaba.me, tft-app.cdtft.cn, bgw.xinyue.qq.com, pan.baidu.com, yunbusiness.ccb.com, client.app.coc.10086.cn, t1.market.xiaomi.com, api.m.mi.com, app.zhuanzhuan.com, api.cloud.189.cn, appwk.baidu.com, us.l.qq.com, open.e.kuaishou.com, mi.gdt.qq.com, emdcadvertise.eastmoney.com, adm.10jqka.com.cn, a.qiumibao.com, api.tipsoon.com, b.appsimg.com, ios.sspai.com, zconfig.alibabausercontent.com, api.touker.com, mpcs.suning.com, api.pinduoduo.com, api.yangkeduo.com, easyreadfs.nosdn.127.net, sp.kaola.com, gw.kaola.com, mime.baidu.com, learn.chaoxing.com, mapi.dangdang.com, api.dangdang.com, open.e.kuaishou.com, client.qunar.com, mpos-pic.helipay.com, dili.bdatu.com, wap.ngchina.cn, ih2.ireader.com, adpai.thepaper.cn, api.haohaozhu.cn, list-app-m.i4.cn, api.xiachufang.com, peisongapi.meituan.com, *gaoqingdianshi.com, *.kakamobi.cn, api.jxedt.com, slapi.oray.net, r.inews.qq.com, app.yinxiang.com, mapi.appvipshop.com, syh.zybang.com, cdn.cmgadx.com, api.internetofcity.cn, img.meituan.net, lcen.xiaote.net, venus.yhd.com, api.shenyin.name, mage*.if.qidian.com, god.gameyw.netease.com, m.ibuscloud.com, e.dangdang.com, app2.autoimg.cn, adproxy.autohome.com.cn, discardrp.umetrip.com, startup.umetrip.com, explorer.tratao.com, overseas.weico.cc, 118.178.214.118, dapis.mting.info, acs.m.taobao.com, open3.vistastory.com, ssp.dzh.com.cn, www.meituan.com, client.mail.163.com, api.izuiyou.com, appapi.huazhu.com, api.wfdata.club, interface*.music.163.com, api.psy-1.com, res.kfc.com.cn, mp.weixin.qq.com, security.wechat.com, weixin110.qq.com, cdn.*.chelaileapp.cn, api.coolapk.com, app3.qdaily.com, daoyu.sdo.com, img.jiemian.com, ccsp-egmas.sf-express.com, *.laichon.com, app.ap.d3yuiw4.com, www.i3zh.com, api.yikaobang.com.cn, api-ad-product.huxiu.com, jad-api.jin10.com, mob.mddcloud.com.cn, appactive.1234567.com.cn, rtbapi.douyucdn.cn, service.busi.inke.cn, gab.122.gov.cn, dispatcher.camera360.com, app.api.versa-ai.com, open.taou.com, api.taou.com, track.mm.taou.com, app.dewu.com, data-collector.soulapp.cn, api.gamer.com.tw, beta-api.crunchyroll.com, api.vistopia.com.cn, pss.txffp.com, m.sd.10086.cn, helper.2bulu.com, 47.100.65.202, api.weibo.cn, mapi.weibo.com, *.uve.weibo.com, new.vip.weibo.cn, wap.js.10086.cn, tagit.hyhuo.com, top-widgets-api.xiaozujian.com, *mangaapi.manhuaren.*, apis.lifeweek.com.cn, support.you.163.com, yanxuan.nosdn.127.net, *.peopleapp.com, new-app-api.ylyk.com, gw.aihuishou.com, *.58cdn.com.cn, app.58.com, api.zhihu.com, creditcardapp.bankcomm.com, res.xiaojukeji.com, 116.85.2.15, 116.85.2.14, lchttpapi.xczim.com, business.msstatic.com, api.kkmh.com, *.chelaile.net.cn, api.jr.mi.com, api.m.mi.com, guanyu.longfor.com, elemecdn.com, fuss10.elemecdn.com, www1.elecfans.com, m.tuniu.com, mapi.mafengwo.cn, api.xiaoyi.com, api.douban.com, otheve.beacon.qq.com, mapi.sfbest.com, api.mwee.cn, sso.ifanr.com, s3plus.meituan.net, flowplus.meituan.net, p*.meituan.net, testflight.apple.com, wmapi.meituan.com, appconf.mail.163.com, dl-cu-hz.lechange.cn, fbchina.flipchina.cn, zone.guiderank-app.com, homefront.qunar.com, afd.baidu.com, ma-adx.ctrip.com, mbd.baidu.com, img.rr.tv, api.rr.tv, *.hoopchina.com, goblin.hupu.com, spclient.wg.spotify.com + # ======= 0~9 ======= # # > version -^https?:\/\/2023.11.23/v2.0.369 url reject-200 +^https?:\/\/2023.12.16/v2.0.378 url reject-200 # > 10 ^https?:\/\/ftapi\.10jqka\.com\.cn\/futgwapi\/api\/om\/v\d\/ad\/common\/transfer url reject # > 58 ^https?:\/\/app\.58\.com\/api\/home\/(advertising|appadv) url reject # > 555 -^https?:\/\/[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+){1,3}:\d+\/api\/v\d\/advert url reject -^https?:\/\/[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+){1,3}:\d+\/api\/v\d\/movie\/index_recommend url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/555Ad.js +^https?:\/\/[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+){1,3}(:\d+)?\/api\/v\d\/movie\/index_recommend url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/555Ad.js +^https?:\/\/[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+){1,3}(:\d+)?\/api\/v\d\/advert url reject # > 12123 ^https:\/\/gab\.122\.gov\.cn\/eapp\/m\/sysquery url reject # > 36kr @@ -133,7 +134,7 @@ https?:\/\/res\.xiaojukeji\.com\/resapi\/activity\/get(Ruled|Preload|PasMultiNot # > daoyu ^https?:\/\/daoyu\.sdo\.com\/api\/userCommon\/getAppStartAd url reject # > dongqiudi -^https?:\/\/ap\.dongqiudi\.com\/plat\/v4 url echo-response text/json echo-response https://rules-for-qx.sveir.xyz/Scripts/AdBlock/Other/Dongqiudi.js +^https?:\/\/ap\.dongqiudi\.com\/plat\/v4 url echo-response text/json echo-response https://raw.githubusercontent.com/ddgksf2013/Scripts/master/dongqiudi.js # > douyu ^https?:\/\/rtbapi\.douyucdn\.cn\/japi\/sign\/app\/getinfo url reject # > dewu @@ -447,6 +448,9 @@ https://homefront.qunar.com/front/splash/ad url reject https://ios.sspai.com/api/v3/recommend/page/get\?ad.*ios_home_modal url reject # > ShunFengYouXuan ^https://mapi.sfbest.com\/brokerservice-server\/cms\/getPositionById.* url reject +# > spotify pro +;^https:\/\/spclient\.wg\.spotify\.com\/(bootstrap\/v1\/bootstrap|user-customization-service\/v1\/customize)$ url script-response-body https://raw.githubusercontent.com/app2smile/rules/master/js/spotify-proto.js +;^https:\/\/spclient\.wg\.spotify\.com\/(artistview\/v1\/artist|album-entity-view\/v2\/album)\/ url script-request-header https://raw.githubusercontent.com/app2smile/rules/master/js/spotify-json.js # > spotify ^https?://spclient.wg.spotify.com/(ad-logic|ads|.+ad_slot|.+banners|.+canvases|.+cards|.+crashlytics|.+doubleclick.net|.+enabled-tracks|.+promoted_offer) url reject-img ^https?:\/\/api\d?\.musical\.ly\/api\/ad\/ url reject-img @@ -515,6 +519,8 @@ https://top-widgets-api.xiaozujian.com/api/ad/config url reject ^https?:\/\/tcmobileapi\.17usoft\.com\/appindexnew\/index\/getappindexconfig url reject # > tujiaminxu ^https?:\/\/client\.tujia\.com\/bnbapp-node\/app\/portal\/getStartPictureAdvertising url reject +# > tangdong +^https?:\/\/td\.cgmcare\.cn\/api\/ad url reject # ======= U ======= # @@ -595,6 +601,10 @@ https://support.you.163.com/appversync/check.do url reject ^https?:\/\/client-api\.oray\.com\/materials\/SLCC_IOS_STARTUP\?lang=zh-Hans-CN url reject # > xinruijulebu ^https?:\/\/bgw\.xinyue\.qq\.com\/xyapi\.PageService\/GetIndexPopFlash url reject +# > xiaoyuansouti +^https?:\/\/.*yuanfudao\.com\/iphone\/splashes url reject +# > xiaoyuankousuan +^https?:\/\/.*yuanfudao\.com\/leo-mis\/iphone\/splashes url reject # ======= Y ======= # @@ -639,6 +649,8 @@ https://new-app-api.ylyk.com/v1/user/myinfo/adviser url reject # > zhongguoyidong ^https?:\/\/client\.app\.coc\.10086\.cn\/biz-orange\/DN\/init\/startInit url reject ^https?:\/\/client\.app\.coc\.10086\.cn\/biz-orange\/DN\/explorePage\/getAdverList url reject +# > zhongguoyidongyunpan +^https?:\/\/ad\.mcloud\.139\.com\/advertapi\/adv-filter\/adv-filter\/AdInfoFilter\/getAdInfos$ url reject # > zhongguoyidongjiangsu ^https?:\/\/wap\.js\.10086\.cn\/jsmccClient\/cd\/market_content\/api\/v\d\/market_content\.page\.query url reject # > zhongguoyidongshandong @@ -684,4 +696,3 @@ https?:\/\/m\.sd\.10086\.cn\/zapi\/app_common\/homeWelcome\/welcome.do url rejec ^https?:\/\/m\.ctrip\.com\/restapi\/soa2\/\d+\/scjson\/tripAds url reject - diff --git a/Rewrite/AdBlock/WebAdBlock.adblock b/Rewrite/AdBlock/WebAdBlock.adblock index 6011fcd..464e450 100644 --- a/Rewrite/AdBlock/WebAdBlock.adblock +++ b/Rewrite/AdBlock/WebAdBlock.adblock @@ -7,7 +7,7 @@ // @Contribute https://t.me/ddgksf2013_bot // @Feedback 📮 ddgksf2013@163.com 📮 // @Attention 如需引用请注明出处,谢谢合作! -// @UpdateTime 2023-09-02 +// @UpdateTime 2023-12-03 // @Function 自用影视网站去广告配置(不定期更新) // @Suitable 自行观看"# > "注释内容 // @Explain 推荐使用手机版Chrome或Alook浏览器(仅供墨鱼本人及小部分QX用户使用) @@ -16,54 +16,50 @@ -hostname=m.nivod4.tv, www.freeok.vip, *netflix*, *bdys*,*cupfox*,*cokemv*,*pornhub.com,*lezhutv*,*bimi*,18comic.org,*5y*,*gimy*,*tkznp*,*czzy*,*ikandy*,*libvio* +hostname=m.nivod4.tv, *.freeok.*, *netflix*, *bdys*,*cupfox*,*cokemv*,*pornhub.com,*lezhutv*,*bimi*,18comic.org,*5y*,*gimy*,*tkznp*,*czzy*,*ikandy*,*libvio* -# > 16 泥巴影视[网页优化]@Adblock4limbo - 网站地址:https://m.nivod4.tv -^https?:\/\/.*nivod.*\/($|[0-9a-zA-Z=_/-]+\.html) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/nivod.js - -# > 15 FreeOk[网页优化]@ddgksf2013 - 网站地址:https://www.freeok.vip -^https?:\/\/www\.freeok\.vip(\/$|\/[0-9a-zA-Z=_/-]+\.html$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/freeok.js -# > 14 奈飞鸭[网页优化]@ddgksf2013 - 网站地址:https://yanetflix.com [未测试] -^https?:\/\/.*netflix.*\/($|[0-9a-zA-Z=_/-]+\.html$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/netflix.js +# > 08 FreeOk[网页优化]@ddgksf2013 - 网站地址:https://www.freeok.vip +^https?:\/\/www\.freeok\.(vip|pro)(\/$|\/[0-9a-zA-Z=_/-]+\.html$) url script-response-body https://raw.githubusercontent.com/ddgksf2013/Scripts/master/adguard.js -# > 13 哔嘀影视[网页优化]@ddgksf2013 - 网站地址:https://www.bdys01.com +# > 07 哔嘀影视[网页优化]@ddgksf2013 - 网站地址:https://www.bdys01.com ^https?:\/\/.*bdys.*com\/($|([a-z]+)\/(play\/)?\d+.*$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/bdys.js -# > 12 茶杯狐[网页优化]@ddgksf2013 - 网站地址:https://cupfox.app +# > 06 茶杯狐[网页优化]@ddgksf2013 - 网站地址:https://cupfox.app ^https?:/\/.*cupfox\.app\/($|[\u4E00-\u9FFFa-zA-Z0-9%=_/-]+$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/cupbox.js -# > 11 Cokemv[网页优化]@ddgksf2013 - 网站地址:https://cokemv.me -^https?:/\/cokemv\.me\/($|vod.*$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/cokemv.js - -# > 10 PornHub[网页优化]@ddgksf2013 - 网站地址:https://cn.pornhub.com +# > 05 PornHub[网页优化]@ddgksf2013 - 网站地址:https://cn.pornhub.com ^https:\/\/(cn|www)\.pornhub\.com\/_xa\/ads url reject-dict ^https?:/\/(cn|www)\.pornhub\.com\/($|(view|video).*$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/pornhub.js -# > 09 LeZhu[网页优化]@ddgksf2013 - 网站地址:http://www.lezhutv.com -^https?:/\/.*lezhutv\.com\/($|(type|detail|play|index).*$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/lezhu.js - -# > 08 Bimi[网页优化]@ddgksf2013 - 网站地址:https://www.bimi.net +# > 04 Bimi[网页优化]@ddgksf2013 - 网站地址:https://www.bimi.net ^https?:/\/.*bimi.*net\/($|(vodshow|bangumi|type)\/[0-9a-z-\/]+\/$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/bimi.js -# > 07 禁漫天堂[网页优化]@ddgksf2013 - 网站地址:https://18comic.org +# > 03 禁漫天堂[网页优化]@ddgksf2013 - 网站地址:https://18comic.org ^https?:\/\/.*18comic\.org\/($|(album|photo).*$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/18comic.js -# > 06 555影视[网页优化]@ddgksf2013 - 网站地址:https://555yy6.com -^https?:\/\/.*5y.*\/($|[0-9a-zA-Z=_/-]+\.html$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/555.js - -# > 05 剧迷[网页优化]@ddgksf2013 - 网站地址:https://gimys.app +# > 02 剧迷[网页优化]@ddgksf2013 - 网站地址:https://gimys.app ^https?:\/\/.*gimy.*\/($|[0-9a-zA-Z=_/-]+\.html$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/gimytv.js -# > 04 天空影视[网页优化]@ddgksf2013 - 网站地址:https://tkznp.com/ [未测试] -^https?:\/\/.*tkznp.*com\/($|[0-9a-zA-Z=_/-]+\.html$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/tkys.js - -# > 03 厂长电影[网页优化]@ddgksf2013 - 网站地址:https://czzy.art/ +# > 01 厂长电影[网页优化]@ddgksf2013 - 网站地址:https://czzy.art/ ^https?:\/\/.*czzy.*\/($|\?btwaf=\w+$|[0-9a-zA-Z=_/-]+\.html) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/qianoo.js + +# =========== 不维护或网站已关服 =========== # +# > 08 Cokemv[网页优化]@ddgksf2013 - 网站地址:https://cokemv.me +^https?:/\/cokemv\.me\/($|vod.*$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/cokemv.js +# > 07 555影视[网页优化]@ddgksf2013 - 网站地址:https://555yy6.com +^https?:\/\/.*5y.*\/($|[0-9a-zA-Z=_/-]+\.html$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/555.js +# > 06 泥巴影视[网页优化]@Adblock4limbo - 网站地址:https://m.nivod4.tv +^https?:\/\/.*nivod.*\/($|[0-9a-zA-Z=_/-]+\.html) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/nivod.js +# > 05 奈飞鸭[网页优化]@ddgksf2013 - 网站地址:https://yanetflix.com +^https?:\/\/.*netflix.*\/($|[0-9a-zA-Z=_/-]+\.html$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/netflix.js +# > 04 LeZhu[网页优化]@ddgksf2013 - 网站地址:http://www.lezhutv.com +^https?:/\/.*lezhutv\.com\/($|(type|detail|play|index).*$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/lezhu.js +# > 03 天空影视[网页优化]@ddgksf2013 - 网站地址:https://tkznp.com/ +^https?:\/\/.*tkznp.*com\/($|[0-9a-zA-Z=_/-]+\.html$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/tkys.js # > 02 真不卡[网页优化]@ddgksf2013 - 网站地址:https://www.ikandy.fun ^https?:\/\/.*ikandy.*fun\/($|(vod|top).*$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/zhenbuka.js - # > 01 libvio[网页优化]@ddgksf2013 - 网站地址:https://www.libvio.me -^https?:\/\/.*libvio.*me\/($|[0-9a-zA-Z=_/-]+\.html$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/libvio.js +^https?:\/\/.*libvio.*me\/($|[0-9a-zA-Z=_/-]+\.html$) url script-response-body https://cdn.jsdelivr.net/gh/ddgksf2013/Scripts@master/libvio.js \ No newline at end of file diff --git a/Rewrite/AdBlock/Youtube.adblock b/Rewrite/AdBlock/Youtube.adblock index 4c19c7a..9e1ce90 100644 --- a/Rewrite/AdBlock/Youtube.adblock +++ b/Rewrite/AdBlock/Youtube.adblock @@ -1,16 +1,35 @@ +# > Credit +# @Choler & @DivineEngine & @app2smile + +# > Feature +# - 删除 Youtube (Music) 广告 +# - 删除 Youtube 底部 上传 按钮 & Youtube Music 底部选段、升级按钮 +# + 增加 Youtube 画中画(PIP) +# + 增加 Youtube 字幕翻译 (Thanks @VirgilClyne) +# + 增加 Youtube (Music) 后台播放 +# + 增加 Youtube Music 歌词翻译 + +# > Note +# Youtube 画中画和后台播放分别在客户端内关闭 +# - 设置 -> 通用 -> 画中画 +# - 设置 -> 后台播放和下载 -> 后台播放 +# 该模块已足够全面,无需其他规则混用,防止重写规则被破坏 +# 不支持 Mock 的客户端可以用 reject-200/reject-img 替代 + hostname = -redirector*.googlevideo.com,*.googlevideo.com,www.youtube.com,s.youtube.com,youtubei.googleapis.com # ======= 视频广告请求 ======= # (^https?:\/\/[\w-]+\.googlevideo\.com\/(?!dclk_video_ads).+?)&ctier=L(&.+?),ctier,(.+) url 302 $1$2$3 ^https?:\/\/[\w-]+\.googlevideo\.com\/(?!(dclk_video_ads|videoplayback\?)).+&oad url reject-200 - +^https?:\/\/[\w-]+\.googlevideo\.com\/initplayback.+&oad url reject-200 # ======= 视频PIP|后台播放|瀑布流|搜索页|播放页|短视频|贴片广告 ======= # -^https:\/\/youtubei\.googleapis\.com\/youtubei\/v1\/(browse|next|player|reel\/reel_watch_sequence)\? url script-request-body https://raw.githubusercontent.com/Maasea/sgmodule/master/Script/Youtube/dist/youtube.request.beta.js -^https:\/\/youtubei\.googleapis\.com\/youtubei\/v1\/(browse|next|player|search|reel\/reel_watch_sequence|guide|account\/get_setting)\? url script-response-body https://raw.githubusercontent.com/Maasea/sgmodule/master/Script/Youtube/dist/youtube.response.beta.js +^https:\/\/youtubei\.googleapis\.com\/youtubei\/v1\/(browse|next|player|reel\/reel_watch_sequence)\? url script-request-body https://cdn.jsdelivr.net/gh/Maasea/sgmodule@master/Script/Youtube/dist/youtube.request.beta.js +^https:\/\/youtubei\.googleapis\.com\/youtubei\/v1\/(browse|next|player|search|reel\/reel_watch_sequence|guide|account\/get_setting)\? url script-response-body https://cdn.jsdelivr.net/gh/Maasea/sgmodule@master/Script/Youtube/dist/youtube.response.beta.js # ======= 通用广告请求 ======= # ^https?:\/\/(www|s)\.youtube\.com\/api\/stats\/ads url reject-200 ^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking) url reject-200 -^https?:\/\/s\.youtube\.com\/api\/stats\/qoe\?adcontext url reject-200 \ No newline at end of file +^https?:\/\/s\.youtube\.com\/api\/stats\/qoe\?adcontext url reject-200 +^https?:\/\/youtubei\.googleapis\.com\/youtubei\/v\d\/player\/ad_break url reject \ No newline at end of file diff --git a/Scripts/AdBlock/Bilibili/BiliBili.js b/Scripts/AdBlock/Bilibili/BiliBili.js index 1dacdc0..d93517f 100644 --- a/Scripts/AdBlock/Bilibili/BiliBili.js +++ b/Scripts/AdBlock/Bilibili/BiliBili.js @@ -1,4 +1,4 @@ -const version = 'V2.0.117'; +const version = 'V2.0.118'; let body = $response.body; if (body) { @@ -162,7 +162,7 @@ if (body) { let v = JSON.parse(body), $ = new Set([ 396, 397, 398, 399, 407, 410, 402, 404, 425, 426, 427, 428, 430, - 432, 433, 434, 494, 495, 496, 497, 500, 501, + 432, 433, 434, 494, 495, 496, 497, 500, 501, 2830, ]); v.data.sections_v2.forEach((t, i) => { let a = t.items.filter((t) => $.has(t.id)); diff --git a/Scripts/AdBlock/Bilibili/BiliBili.min.js b/Scripts/AdBlock/Bilibili/BiliBili.min.js index 17219af..b1818d7 100644 --- a/Scripts/AdBlock/Bilibili/BiliBili.min.js +++ b/Scripts/AdBlock/Bilibili/BiliBili.min.js @@ -1,3 +1,3 @@ -const version = 'V2.0.117'; +const version="V2.0.118"; -let body=$response.body;if(body){switch(!0){case/pgc\/season\/app\/related\/recommend\?/.test($request.url):try{let t=JSON.parse(body);t.result?.cards?.length&&(t.result.cards=t.result.cards.filter(t=>2!=t.type)),body=JSON.stringify(t)}catch(i){console.log("bilibili recommend:"+i)}break;case/^https?:\/\/app\.bilibili\.com\/x\/resource\/show\/skin\?/.test($request.url):try{let a=JSON.parse(body);delete a.data?.common_equip,body=JSON.stringify(a)}catch(e){console.log("bilibili skin:"+e)}break;case/^https:\/\/app\.bilibili\.com\/x\/v2\/feed\/index\?/.test($request.url):try{let s=JSON.parse(body),l=[];for(let o of s.data.items)if(!o.hasOwnProperty("banner_item")){if(!(!o.hasOwnProperty("ad_info")&&-1===o.card_goto?.indexOf("ad")&&["small_cover_v2","large_cover_v1","large_cover_single_v9"].includes(o.card_type)))continue;else l.push(o)}s.data.items=l,body=JSON.stringify(s)}catch(d){console.log("bilibili index:"+d)}break;case/^https?:\/\/app\.bilibili\.com\/x\/v2\/feed\/index\/story\?/.test($request.url):try{let r=JSON.parse(body),b=[];for(let p of r.data.items)p.hasOwnProperty("ad_info")||-1!==p.card_goto.indexOf("ad")||b.push(p);r.data.items=b,body=JSON.stringify(r)}catch(c){console.log("bilibili Story:"+c)}break;case/^https?:\/\/app\.bilibili\.com\/x\/v\d\/account\/teenagers\/status\?/.test($request.url):try{let n=JSON.parse(body);n.data.teenagers_status=0,body=JSON.stringify(n)}catch(y){console.log("bilibili teenagers:"+y)}break;case/^https?:\/\/app\.bilibili\.com\/x\/resource\/show\/tab/.test($request.url):try{let u=new Set([177,178,179,181,102,104,106,486,488,489]),h=JSON.parse(body);if(h.data?.tab){var f=[];f.push({id:39,name:"直播",uri:"bilibili://live/home",tab_id:"直播tab",pos:1},{id:40,name:"推荐",uri:"bilibili://pegasus/promo",tab_id:"推荐tab",pos:2,default_selected:1}),-1==JSON.stringify(h.data.tab).indexOf("pgc/home")?f.push({id:774,name:"番剧",uri:"bilibili://following/home_activity_tab/6544",tab_id:"bangumi",pos:3}):f.push({id:545,name:"番剧",uri:"bilibili://pgc/home",tab_id:"bangumi",pos:3}),f.push({id:41,name:"热门",uri:"bilibili://pegasus/hottopic",tab_id:"hottopic",pos:4},{id:151,name:"影视",uri:"bilibili://pgc/cinema-tab",tab_id:"film",pos:5}),h.data.tab=f}if(h.data.top&&(h.data.top=[{id:481,icon:"http://i0.hdslb.com/bfs/archive/d43047538e72c9ed8fd8e4e34415fbe3a4f632cb.png",name:"消息",uri:"bilibili://link/im_home",tab_id:"消息Top",pos:1}]),h.data.bottom){let m=h.data.bottom.filter(t=>u.has(t.id));h.data.bottom=m}body=JSON.stringify(h)}catch(g){console.log("bilibili tabprocess:"+g)}break;case/^https?:\/\/app\.bilibili\.com\/x\/v2\/account\/mine/.test($request.url):try{let v=JSON.parse(body),$=new Set([396,397,398,399,407,410,402,404,425,426,427,428,430,432,433,434,494,495,496,497,500,501]);v.data.sections_v2.forEach((t,i)=>{let a=t.items.filter(t=>$.has(t.id));v.data.sections_v2[i].items=a,v.data.sections_v2[i].button={},delete v.data.sections_v2[i].be_up_title,delete v.data.sections_v2[i].tip_icon,delete v.data.sections_v2[i].tip_title,("创作中心"==v.data.sections_v2[i].title||"創作中心"==v.data.sections_v2[i].title)&&(delete v.data.sections_v2[i].title,delete v.data.sections_v2[i].type)}),delete v.data.vip_section_v2,delete v.data.vip_section,v.data.hasOwnProperty("live_tip")&&(v.data.live_tip={}),v.data.hasOwnProperty("answer")&&(v.data.answer={}),v.data.vip.status||(v.data.vip_type=2,v.data.vip.type=2,v.data.vip.status=1,v.data.vip.vip_pay_type=1,v.data.vip.due_date=466982416e4),body=JSON.stringify(v)}catch(_){console.log("bilibili mypage:"+_)}break;case/^https?:\/\/api\.live\.bilibili\.com\/xlive\/app-room\/v1\/index\/getInfoByRoom/.test($request.url):try{let x=JSON.parse(body);x.data.activity_banner_info=null,x.data?.shopping_info&&(x.data.shopping_info={is_show:0}),x.data?.new_tab_info?.outer_list&&x.data.new_tab_info.outer_list.length&&(x.data.new_tab_info.outer_list=x.data.new_tab_info.outer_list.filter(t=>33!=t.biz_id)),body=JSON.stringify(x)}catch(k){console.log("bilibili live broadcast:"+k)}break;case/^https?:\/\/app\.bilibili\.com\/x\/resource\/top\/activity/.test($request.url):try{let w=JSON.parse(body);w.data&&(w.data.hash="ddgksf2013",w.data.online.icon=""),body=JSON.stringify(w)}catch(O){console.log("bilibili right corner:"+O)}break;case/ecommerce-user\/get_shopping_info\?/.test($request.url):try{let P=JSON.parse(body);P.data&&(P.data={shopping_card_detail:{},bubbles_detail:{},recommend_card_detail:{},selected_goods:{},h5jump_popup:[]}),body=JSON.stringify(P)}catch(W){console.log("bilibili shopping info:"+W)}break;case/^https?:\/\/app\.bilibili\.com\/x\/v2\/search\/square/.test($request.url):try{let j=JSON.parse(body);j.data={type:"history",title:"搜索历史",search_hotword_revision:2},body=JSON.stringify(j)}catch(q){console.log("bilibili hot search:"+q)}break;case/https?:\/\/app\.bilibili\.com\/x\/v2\/account\/myinfo\?/.test($request.url):try{let E=JSON.parse(body);E.data.vip.status||(E.data.vip.type=2,E.data.vip.status=1,E.data.vip.vip_pay_type=1,E.data.vip.due_date=466982416e4),body=JSON.stringify(E)}catch(z){console.log("bilibili 1080p:"+z)}break;case/pgc\/page\/(bangumi|cinema\/tab\?)/.test($request.url):try{let B=JSON.parse(body);B.result.modules.forEach(t=>{t.style.startsWith("banner")&&(t.items=t.items.filter(t=>-1!=t.link.indexOf("play"))),t.style.startsWith("function")&&(t.items=t.items.filter(t=>-1==t.blink.indexOf("bilibili.com")),[1283,241,1441,1284].includes(t.module_id)&&(t.items=[])),t.style.startsWith("tip")&&(t.items=[])}),body=JSON.stringify(B)}catch(I){console.log("bilibili fanju:"+I)}break;case/^https:\/\/app\.bilibili\.com\/x\/v2\/splash\/list/.test($request.url):try{let R=JSON.parse(body);if(R.data&&R.data.list)for(let S of R.data.list)S.duration=0,S.begin_time=2240150400,S.end_time=2240150400;body=JSON.stringify(R)}catch(T){console.log("bilibili openad:"+T)}break;case/^https:\/\/api\.live\.bilibili\.com\/xlive\/app-interface\/v2\/index\/feed/.test($request.url):try{let A=JSON.parse(body);A.data&&A.data.card_list&&(A.data.card_list=A.data.card_list.filter(t=>"banner_v1"!=t.card_type)),body=JSON.stringify(A)}catch(C){console.log("bilibili xlive:"+C)}break;default:$done({})}$done({body})}else $done({}); \ No newline at end of file +let body=$response.body;if(body){switch(!0){case/pgc\/season\/app\/related\/recommend\?/.test($request.url):try{let t=JSON.parse(body);t.result?.cards?.length&&(t.result.cards=t.result.cards.filter((t=>2!=t.type))),body=JSON.stringify(t)}catch(t){}break;case/^https?:\/\/app\.bilibili\.com\/x\/resource\/show\/skin\?/.test($request.url):try{let t=JSON.parse(body);delete t.data?.common_equip,body=JSON.stringify(t)}catch(t){}break;case/^https:\/\/app\.bilibili\.com\/x\/v2\/feed\/index\?/.test($request.url):try{let t=JSON.parse(body),e=[];for(let a of t.data.items)if(!a.hasOwnProperty("banner_item")){if(a.hasOwnProperty("ad_info")||-1!==a.card_goto?.indexOf("ad")||!["small_cover_v2","large_cover_v1","large_cover_single_v9"].includes(a.card_type))continue;e.push(a)}t.data.items=e,body=JSON.stringify(t)}catch(t){}break;case/^https?:\/\/app\.bilibili\.com\/x\/v2\/feed\/index\/story\?/.test($request.url):try{let t=JSON.parse(body),e=[];for(let a of t.data.items)a.hasOwnProperty("ad_info")||-1!==a.card_goto.indexOf("ad")||e.push(a);t.data.items=e,body=JSON.stringify(t)}catch(t){}break;case/^https?:\/\/app\.bilibili\.com\/x\/v\d\/account\/teenagers\/status\?/.test($request.url):try{let t=JSON.parse(body);t.data.teenagers_status=0,body=JSON.stringify(t)}catch(t){}break;case/^https?:\/\/app\.bilibili\.com\/x\/resource\/show\/tab/.test($request.url):try{let t=new Set([177,178,179,181,102,104,106,486,488,489]),e=JSON.parse(body);if(e.data?.tab){var f=[];f.push({id:39,name:"直播",uri:"bilibili://live/home",tab_id:"直播tab",pos:1},{id:40,name:"推荐",uri:"bilibili://pegasus/promo",tab_id:"推荐tab",pos:2,default_selected:1}),-1==JSON.stringify(e.data.tab).indexOf("pgc/home")?f.push({id:774,name:"番剧",uri:"bilibili://following/home_activity_tab/6544",tab_id:"bangumi",pos:3}):f.push({id:545,name:"番剧",uri:"bilibili://pgc/home",tab_id:"bangumi",pos:3}),f.push({id:41,name:"热门",uri:"bilibili://pegasus/hottopic",tab_id:"hottopic",pos:4},{id:151,name:"影视",uri:"bilibili://pgc/cinema-tab",tab_id:"film",pos:5}),e.data.tab=f}if(e.data.top&&(e.data.top=[{id:481,icon:"http://i0.hdslb.com/bfs/archive/d43047538e72c9ed8fd8e4e34415fbe3a4f632cb.png",name:"消息",uri:"bilibili://link/im_home",tab_id:"消息Top",pos:1}]),e.data.bottom){let a=e.data.bottom.filter((e=>t.has(e.id)));e.data.bottom=a}body=JSON.stringify(e)}catch(t){}break;case/^https?:\/\/app\.bilibili\.com\/x\/v2\/account\/mine/.test($request.url):try{let t=JSON.parse(body),e=new Set([396,397,398,399,407,410,402,404,425,426,427,428,430,432,433,434,494,495,496,497,500,501,2830]);t.data.sections_v2.forEach(((a,i)=>{let s=a.items.filter((t=>e.has(t.id)));t.data.sections_v2[i].items=s,t.data.sections_v2[i].button={},delete t.data.sections_v2[i].be_up_title,delete t.data.sections_v2[i].tip_icon,delete t.data.sections_v2[i].tip_title,("创作中心"==t.data.sections_v2[i].title||"創作中心"==t.data.sections_v2[i].title)&&(delete t.data.sections_v2[i].title,delete t.data.sections_v2[i].type)})),delete t.data.vip_section_v2,delete t.data.vip_section,t.data.hasOwnProperty("live_tip")&&(t.data.live_tip={}),t.data.hasOwnProperty("answer")&&(t.data.answer={}),t.data.vip.status||(t.data.vip_type=2,t.data.vip.type=2,t.data.vip.status=1,t.data.vip.vip_pay_type=1,t.data.vip.due_date=466982416e4),body=JSON.stringify(t)}catch(t){}break;case/^https?:\/\/api\.live\.bilibili\.com\/xlive\/app-room\/v1\/index\/getInfoByRoom/.test($request.url):try{let t=JSON.parse(body);t.data.activity_banner_info=null,t.data?.shopping_info&&(t.data.shopping_info={is_show:0}),t.data?.new_tab_info?.outer_list&&t.data.new_tab_info.outer_list.length&&(t.data.new_tab_info.outer_list=t.data.new_tab_info.outer_list.filter((t=>33!=t.biz_id))),body=JSON.stringify(t)}catch(t){}break;case/^https?:\/\/app\.bilibili\.com\/x\/resource\/top\/activity/.test($request.url):try{let t=JSON.parse(body);t.data&&(t.data.hash="ddgksf2013",t.data.online.icon=""),body=JSON.stringify(t)}catch(t){}break;case/ecommerce-user\/get_shopping_info\?/.test($request.url):try{let t=JSON.parse(body);t.data&&(t.data={shopping_card_detail:{},bubbles_detail:{},recommend_card_detail:{},selected_goods:{},h5jump_popup:[]}),body=JSON.stringify(t)}catch(t){}break;case/^https?:\/\/app\.bilibili\.com\/x\/v2\/search\/square/.test($request.url):try{let t=JSON.parse(body);t.data={type:"history",title:"搜索历史",search_hotword_revision:2},body=JSON.stringify(t)}catch(t){}break;case/https?:\/\/app\.bilibili\.com\/x\/v2\/account\/myinfo\?/.test($request.url):try{let t=JSON.parse(body);t.data.vip.status||(t.data.vip.type=2,t.data.vip.status=1,t.data.vip.vip_pay_type=1,t.data.vip.due_date=466982416e4),body=JSON.stringify(t)}catch(t){}break;case/pgc\/page\/(bangumi|cinema\/tab\?)/.test($request.url):try{let t=JSON.parse(body);t.result.modules.forEach((t=>{t.style.startsWith("banner")&&(t.items=t.items.filter((t=>-1!=t.link.indexOf("play")))),t.style.startsWith("function")&&(t.items=t.items.filter((t=>-1==t.blink.indexOf("bilibili.com"))),[1283,241,1441,1284].includes(t.module_id)&&(t.items=[])),t.style.startsWith("tip")&&(t.items=[])})),body=JSON.stringify(t)}catch(t){}break;case/^https:\/\/app\.bilibili\.com\/x\/v2\/splash\/list/.test($request.url):try{let t=JSON.parse(body);if(t.data&&t.data.list)for(let e of t.data.list)e.duration=0,e.begin_time=2240150400,e.end_time=2240150400;body=JSON.stringify(t)}catch(t){}break;case/^https:\/\/api\.live\.bilibili\.com\/xlive\/app-interface\/v2\/index\/feed/.test($request.url):try{let t=JSON.parse(body);t.data&&t.data.card_list&&(t.data.card_list=t.data.card_list.filter((t=>"banner_v1"!=t.card_type))),body=JSON.stringify(t)}catch(t){}break;default:$done({})}$done({body:body})}else $done({}); \ No newline at end of file diff --git a/Scripts/AdBlock/Bilibili/BiliBili.response.js b/Scripts/AdBlock/Bilibili/BiliBili.response.js index f45e5cb..def3edd 100644 --- a/Scripts/AdBlock/Bilibili/BiliBili.response.js +++ b/Scripts/AdBlock/Bilibili/BiliBili.response.js @@ -5,36 +5,20 @@ README: https://github.com/BiliUniverse const $ = new Env("📺 BiliBili: 🛡️ ADBlock v0.4.0(2) response"); const URL = new URLs(); const DataBase = { - "ADBlock": { - "Settings": { - "Switch": true, - "Detail": { - "splash": true, - "feed": true, - "activity": false, - "story": true, - "cinema": true, - "view": true, - "search": true, - "commandDms": false, - "colorfulDms": false, - "MainList": true, - "xlive": true, - "Hot_search": true, - "Hot_topics": true, - "Most_visited": true, - "Dynamic_adcard": true - } + "ADBlock":{ + "Settings":{ + "Switch":true, + "Detail":{"splash":true,"feed":true,"activity":false,"story":true,"cinema":true,"view":true,"search":true,"commandDms":false,"colorfulDms":false,"MainList":true,"xlive":true,"Hot_search":true,"Hot_topics":true,"Most_visited":true,"Dynamic_adcard":true} } }, "Default": { - "Settings": {"Switch": true} + "Settings":{"Switch":true} } }; /***************** Processing *****************/ (async () => { - const {Settings, Caches, Configs} = setENV("BiliBili", "ADBlock", DataBase); + const { Settings, Caches, Configs } = setENV("BiliBili", "ADBlock", DataBase); $.log(`⚠ ${$.name}`, `Settings.Switch: ${Settings?.Switch}`, ""); switch (Settings.Switch) { case true: @@ -45,7 +29,7 @@ const DataBase = { const FORMAT = ($response?.headers?.["Content-Type"] ?? $response?.headers?.["content-type"])?.split(";")?.[0]; $.log(`⚠ ${$.name}`, `METHOD: ${METHOD}`, `HOST: ${HOST}`, `PATH: ${PATH}`, `PATHs: ${PATHs}`, `FORMAT: ${FORMAT}`, ""); // 创建空数据 - let body = {"code": 0, "message": "0", "data": {}}; + let body = { "code": 0, "message": "0", "data": {} }; // 格式判断 switch (FORMAT) { case undefined: // 视为无body @@ -93,8 +77,7 @@ const DataBase = { case false: $.log(`🚧 ${$.name}`, "用户设置开屏页广告不去除"); break; - } - ; + }; break; case "x/v2/feed/index": // 推荐页 switch (Settings?.Detail?.feed) { @@ -103,7 +86,7 @@ const DataBase = { if (body.data.items?.length) { //区分pad与phone body.data.items = await Promise.all(body.data.items.map(async item => { - const {card_type: cardType, card_goto: cardGoto} = item; + const { card_type: cardType, card_goto: cardGoto } = item; if (cardType && cardGoto) { if (['banner_v8', 'banner_ipad_v8'].includes(cardType) && cardGoto === 'banner') { switch (Settings?.Detail?.activity) { @@ -161,9 +144,8 @@ const DataBase = { })); body.data.items = body.data.items.filter(fix => fix !== undefined); } - async function fixPosition() { - let itemsCache = $.getdata("@BiliBili.Index.Caches", ""); + let itemsCache = $.getdata("@BiliBili.Index.Caches",""); let singleItem = {}; if (itemsCache && itemsCache.length > 0) { singleItem = itemsCache.pop(); @@ -178,7 +160,7 @@ const DataBase = { const body = $.toObj(response.body) if (body?.code === 0 && body?.message === "0") { body.data.items = body.data.items.map(item => { - const {card_type: cardType, card_goto: cardGoto} = item; + const { card_type: cardType, card_goto: cardGoto } = item; if (cardType && cardGoto) { if (cardType === 'banner_v8' && cardGoto === 'banner') { return undefined; @@ -203,7 +185,7 @@ const DataBase = { $.logErr(e, response) } }) - itemsCache = $.getdata("@BiliBili.Index.Caches", ""); + itemsCache = $.getdata("@BiliBili.Index.Caches",""); if (itemsCache.length > 0) { singleItem = itemsCache.pop(); $.log(`🎉 ${$.name}`, "推荐页空缺位填充成功"); @@ -212,13 +194,11 @@ const DataBase = { $.setdata(itemsCache, "@BiliBili.Index.Caches"); return singleItem; } - break; case false: $.log(`🚧 ${$.name}`, "用户设置推荐页广告不去除"); break; - } - ; + }; break; case "x/v2/feed/index/story": // 首页短视频流 switch (Settings?.Detail?.story) { @@ -238,8 +218,7 @@ const DataBase = { case false: $.log(`🚧 ${$.name}`, "用户设置首页短视频流广告不去除"); break; - } - ; + }; break; case "x/v2/search/square": // 搜索页 switch (Settings?.Detail?.Hot_search) { @@ -253,8 +232,7 @@ const DataBase = { break; } break; - } - ; + }; break; case "api.bilibili.com": case "api.biliapi.net": @@ -291,8 +269,7 @@ const DataBase = { case false: $.log(`🚧 ${$.name}`, "用户设置观影页广告不去除"); break; - } - ; + }; break; case "x/player/wbi/playurl": // UGC-用户生产内容-播放地址 break; @@ -306,8 +283,7 @@ const DataBase = { case false: $.log(`🚧 ${$.name}`, "用户设置首页广告不去除"); break; - } - ; + }; break; case "x/space/acc/info": // 用户空间-账号信息-pc case "x/space/wbi/acc/info": // 用户空间-账号信息-wbi @@ -318,11 +294,9 @@ const DataBase = { break; default: break; - } - ; + }; break; - } - ; + }; break; case "api.live.bilibili.com": switch (PATH) { @@ -348,14 +322,11 @@ const DataBase = { case false: $.log(`🚧 ${$.name}`, "用户设置直播页广告不去除"); break; - } - ; + }; break; - } - ; + }; break; - } - ; + }; $response.body = JSON.stringify(body); break; case "application/x-protobuf": @@ -366,2085 +337,9 @@ const DataBase = { //$.log(`🚧 ${$.name}`, `isBuffer? ${ArrayBuffer.isView(rawBody)}: ${JSON.stringify(rawBody)}`, ""); /****************** initialization start *******************/ // timostamm/protobuf-ts - !function (i) { - "use strict"; - - function _(n, e, i) { - return e <= n && n <= i - } - - "undefined" != typeof module && module.exports && !i["encoding-indexes"] && (i["encoding-indexes"] = require("./encoding-indexes.js")["encoding-indexes"]); - var l = Math.floor; - - function s(n) { - if (void 0 === n) return {}; - if (n === Object(n)) return n; - throw TypeError("Could not convert argument to dictionary") - } - - function u(n) { - return 0 <= n && n <= 127 - } - - var a = u, b = -1; - - function c(n) { - this.tokens = [].slice.call(n), this.tokens.reverse() - } - - c.prototype = { - endOfStream: function () { - return !this.tokens.length - }, read: function () { - return this.tokens.length ? this.tokens.pop() : b - }, prepend: function (n) { - if (Array.isArray(n)) for (var e = n; e.length;) this.tokens.push(e.pop()); else this.tokens.push(n) - }, push: function (n) { - if (Array.isArray(n)) for (var e = n; e.length;) this.tokens.unshift(e.shift()); else this.tokens.unshift(n) - } - }; - var w = -1; - - function m(n, e) { - if (n) throw TypeError("Decoder error"); - return e || 65533 - } - - function f(n) { - throw TypeError("The code point " + n + " could not be encoded.") - } - - function r(n) { - return n = String(n).trim().toLowerCase(), Object.prototype.hasOwnProperty.call(d, n) ? d[n] : null - } - - var t, o, n = [{ - encodings: [{labels: ["unicode-1-1-utf-8", "utf-8", "utf8"], name: "UTF-8"}], - heading: "The Encoding" - }, { - encodings: [{ - labels: ["866", "cp866", "csibm866", "ibm866"], - name: "IBM866" - }, { - labels: ["csisolatin2", "iso-8859-2", "iso-ir-101", "iso8859-2", "iso88592", "iso_8859-2", "iso_8859-2:1987", "l2", "latin2"], - name: "ISO-8859-2" - }, { - labels: ["csisolatin3", "iso-8859-3", "iso-ir-109", "iso8859-3", "iso88593", "iso_8859-3", "iso_8859-3:1988", "l3", "latin3"], - name: "ISO-8859-3" - }, { - labels: ["csisolatin4", "iso-8859-4", "iso-ir-110", "iso8859-4", "iso88594", "iso_8859-4", "iso_8859-4:1988", "l4", "latin4"], - name: "ISO-8859-4" - }, { - labels: ["csisolatincyrillic", "cyrillic", "iso-8859-5", "iso-ir-144", "iso8859-5", "iso88595", "iso_8859-5", "iso_8859-5:1988"], - name: "ISO-8859-5" - }, { - labels: ["arabic", "asmo-708", "csiso88596e", "csiso88596i", "csisolatinarabic", "ecma-114", "iso-8859-6", "iso-8859-6-e", "iso-8859-6-i", "iso-ir-127", "iso8859-6", "iso88596", "iso_8859-6", "iso_8859-6:1987"], - name: "ISO-8859-6" - }, { - labels: ["csisolatingreek", "ecma-118", "elot_928", "greek", "greek8", "iso-8859-7", "iso-ir-126", "iso8859-7", "iso88597", "iso_8859-7", "iso_8859-7:1987", "sun_eu_greek"], - name: "ISO-8859-7" - }, { - labels: ["csiso88598e", "csisolatinhebrew", "hebrew", "iso-8859-8", "iso-8859-8-e", "iso-ir-138", "iso8859-8", "iso88598", "iso_8859-8", "iso_8859-8:1988", "visual"], - name: "ISO-8859-8" - }, { - labels: ["csiso88598i", "iso-8859-8-i", "logical"], - name: "ISO-8859-8-I" - }, { - labels: ["csisolatin6", "iso-8859-10", "iso-ir-157", "iso8859-10", "iso885910", "l6", "latin6"], - name: "ISO-8859-10" - }, { - labels: ["iso-8859-13", "iso8859-13", "iso885913"], - name: "ISO-8859-13" - }, { - labels: ["iso-8859-14", "iso8859-14", "iso885914"], - name: "ISO-8859-14" - }, { - labels: ["csisolatin9", "iso-8859-15", "iso8859-15", "iso885915", "iso_8859-15", "l9"], - name: "ISO-8859-15" - }, { - labels: ["iso-8859-16"], - name: "ISO-8859-16" - }, { - labels: ["cskoi8r", "koi", "koi8", "koi8-r", "koi8_r"], - name: "KOI8-R" - }, { - labels: ["koi8-ru", "koi8-u"], - name: "KOI8-U" - }, { - labels: ["csmacintosh", "mac", "macintosh", "x-mac-roman"], - name: "macintosh" - }, { - labels: ["dos-874", "iso-8859-11", "iso8859-11", "iso885911", "tis-620", "windows-874"], - name: "windows-874" - }, { - labels: ["cp1250", "windows-1250", "x-cp1250"], - name: "windows-1250" - }, { - labels: ["cp1251", "windows-1251", "x-cp1251"], - name: "windows-1251" - }, { - labels: ["ansi_x3.4-1968", "ascii", "cp1252", "cp819", "csisolatin1", "ibm819", "iso-8859-1", "iso-ir-100", "iso8859-1", "iso88591", "iso_8859-1", "iso_8859-1:1987", "l1", "latin1", "us-ascii", "windows-1252", "x-cp1252"], - name: "windows-1252" - }, { - labels: ["cp1253", "windows-1253", "x-cp1253"], - name: "windows-1253" - }, { - labels: ["cp1254", "csisolatin5", "iso-8859-9", "iso-ir-148", "iso8859-9", "iso88599", "iso_8859-9", "iso_8859-9:1989", "l5", "latin5", "windows-1254", "x-cp1254"], - name: "windows-1254" - }, { - labels: ["cp1255", "windows-1255", "x-cp1255"], - name: "windows-1255" - }, { - labels: ["cp1256", "windows-1256", "x-cp1256"], - name: "windows-1256" - }, { - labels: ["cp1257", "windows-1257", "x-cp1257"], - name: "windows-1257" - }, { - labels: ["cp1258", "windows-1258", "x-cp1258"], - name: "windows-1258" - }, {labels: ["x-mac-cyrillic", "x-mac-ukrainian"], name: "x-mac-cyrillic"}], - heading: "Legacy single-byte encodings" - }, { - encodings: [{ - labels: ["chinese", "csgb2312", "csiso58gb231280", "gb2312", "gb_2312", "gb_2312-80", "gbk", "iso-ir-58", "x-gbk"], - name: "GBK" - }, {labels: ["gb18030"], name: "gb18030"}], - heading: "Legacy multi-byte Chinese (simplified) encodings" - }, { - encodings: [{ - labels: ["big5", "big5-hkscs", "cn-big5", "csbig5", "x-x-big5"], - name: "Big5" - }], heading: "Legacy multi-byte Chinese (traditional) encodings" - }, { - encodings: [{ - labels: ["cseucpkdfmtjapanese", "euc-jp", "x-euc-jp"], - name: "EUC-JP" - }, { - labels: ["csiso2022jp", "iso-2022-jp"], - name: "ISO-2022-JP" - }, { - labels: ["csshiftjis", "ms932", "ms_kanji", "shift-jis", "shift_jis", "sjis", "windows-31j", "x-sjis"], - name: "Shift_JIS" - }], heading: "Legacy multi-byte Japanese encodings" - }, { - encodings: [{ - labels: ["cseuckr", "csksc56011987", "euc-kr", "iso-ir-149", "korean", "ks_c_5601-1987", "ks_c_5601-1989", "ksc5601", "ksc_5601", "windows-949"], - name: "EUC-KR" - }], heading: "Legacy multi-byte Korean encodings" - }, { - encodings: [{ - labels: ["csiso2022kr", "hz-gb-2312", "iso-2022-cn", "iso-2022-cn-ext", "iso-2022-kr"], - name: "replacement" - }, {labels: ["utf-16be"], name: "UTF-16BE"}, { - labels: ["utf-16", "utf-16le"], - name: "UTF-16LE" - }, {labels: ["x-user-defined"], name: "x-user-defined"}], - heading: "Legacy miscellaneous encodings" - }], d = {}, h = (n.forEach(function (n) { - n.encodings.forEach(function (e) { - e.labels.forEach(function (n) { - d[n] = e - }) - }) - }), {}), g = {}; - - function y(n, e) { - return e && e[n] || null - } - - function p(n, e) { - e = e.indexOf(n); - return -1 === e ? null : e - } - - function v(n) { - if ("encoding-indexes" in i) return i["encoding-indexes"][n]; - throw Error("Indexes missing. Did you forget to include encoding-indexes.js first?") - } - - var x = "utf-8"; - - function O(n, e) { - if (!(this instanceof O)) throw TypeError("Called as a function. Did you forget 'new'?"); - n = void 0 !== n ? String(n) : x, e = s(e), this._encoding = null, this._decoder = null, this._ignoreBOM = !1, this._BOMseen = !1, this._error_mode = "replacement", this._do_not_flush = !1; - var i = r(n); - if (null === i || "replacement" === i.name) throw RangeError("Unknown encoding: " + n); - if (g[i.name]) return (n = this)._encoding = i, Boolean(e.fatal) && (n._error_mode = "fatal"), Boolean(e.ignoreBOM) && (n._ignoreBOM = !0), Object.defineProperty || (this.encoding = n._encoding.name.toLowerCase(), this.fatal = "fatal" === n._error_mode, this.ignoreBOM = n._ignoreBOM), n; - throw Error("Decoder not present. Did you forget to include encoding-indexes.js first?") - } - - function k(n, e) { - if (!(this instanceof k)) throw TypeError("Called as a function. Did you forget 'new'?"); - e = s(e), this._encoding = null, this._encoder = null, this._do_not_flush = !1, this._fatal = Boolean(e.fatal) ? "fatal" : "replacement"; - if (Boolean(e.NONSTANDARD_allowLegacyEncoding)) { - e = r(n = void 0 !== n ? String(n) : x); - if (null === e || "replacement" === e.name) throw RangeError("Unknown encoding: " + n); - if (!h[e.name]) throw Error("Encoder not present. Did you forget to include encoding-indexes.js first?"); - this._encoding = e - } else this._encoding = r("utf-8"), void 0 !== n && "console" in i && console.warn("TextEncoder constructor called with encoding label, which is ignored."); - return Object.defineProperty || (this.encoding = this._encoding.name.toLowerCase()), this - } - - function e(n) { - var r = n.fatal, t = 0, o = 0, s = 0, l = 128, a = 191; - this.handler = function (n, e) { - if (e === b && 0 !== s) return s = 0, m(r); - if (e === b) return w; - if (0 === s) { - if (_(e, 0, 127)) return e; - if (_(e, 194, 223)) s = 1, t = 31 & e; else if (_(e, 224, 239)) 224 === e && (l = 160), 237 === e && (a = 159), s = 2, t = 15 & e; else { - if (!_(e, 240, 244)) return m(r); - 240 === e && (l = 144), 244 === e && (a = 143), s = 3, t = 7 & e - } - return null - } - var i; - return _(e, l, a) ? (l = 128, a = 191, t = t << 6 | 63 & e, (o += 1) !== s ? null : (i = t, t = s = o = 0, i)) : (t = s = o = 0, l = 128, a = 191, n.prepend(e), m(r)) - } - } - - function E(n) { - n.fatal; - this.handler = function (n, e) { - if (e === b) return w; - if (a(e)) return e; - _(e, 128, 2047) ? (i = 1, r = 192) : _(e, 2048, 65535) ? (i = 2, r = 224) : _(e, 65536, 1114111) && (i = 3, r = 240); - for (var i, r, t = [(e >> 6 * i) + r]; 0 < i;) t.push(128 | 63 & e >> 6 * (i - 1)), --i; - return t - } - } - - function j(i, n) { - var r = n.fatal; - this.handler = function (n, e) { - return e === b ? w : u(e) ? e : null === (e = i[e - 128]) ? m(r) : e - } - } - - function B(r, n) { - n.fatal; - this.handler = function (n, e) { - var i; - return e === b ? w : a(e) ? e : (null === (i = p(e, r)) && f(e), i + 128) - } - } - - function S(n) { - var o = n.fatal, s = 0, l = 0, a = 0; - this.handler = function (n, e) { - var i, r, t; - return e === b && 0 === s && 0 === l && 0 === a ? w : (e !== b || 0 === s && 0 === l && 0 === a || (a = l = s = 0, m(o)), 0 !== a ? (i = null, _(e, 48, 57) && (i = function (n) { - if (39419 < n && n < 189e3 || 1237575 < n) return null; - if (7457 === n) return 59335; - for (var e = 0, i = 0, r = v("gb18030-ranges"), t = 0; t < r.length; ++t) { - var o = r[t]; - if (!(o[0] <= n)) break; - e = o[0], i = o[1] - } - return i + n - e - }(10 * (126 * (10 * (s - 129) + l - 48) + a - 129) + e - 48)), r = [l, a, e], a = l = s = 0, null === i ? (n.prepend(r), m(o)) : i) : 0 !== l ? _(e, 129, 254) ? (a = e, null) : (n.prepend([l, e]), l = s = 0, m(o)) : 0 !== s ? _(e, 48, 57) ? (l = e, null) : (r = s, s = 0, (t = null) === (i = null === (t = _(e, 64, 126) || _(e, 128, 254) ? 190 * (r - 129) + (e - (e < 127 ? 64 : 65)) : t) ? null : y(t, v("gb18030"))) && u(e) && n.prepend(e), null === i ? m(o) : i) : u(e) ? e : 128 === e ? 8364 : _(e, 129, 254) ? (s = e, null) : m(o)) - } - } - - function T(n, t) { - n.fatal; - this.handler = function (n, e) { - var i, r; - return e === b ? w : a(e) ? e : 58853 === e ? f(e) : t && 8364 === e ? 128 : null !== (i = p(e, v("gb18030"))) ? (r = i % 190, [l(i / 190) + 129, r + (r < 63 ? 64 : 65)]) : t ? f(e) : (i = function (n) { - if (59335 === n) return 7457; - for (var e = 0, i = 0, r = v("gb18030-ranges"), t = 0; t < r.length; ++t) { - var o = r[t]; - if (!(o[1] <= n)) break; - e = o[1], i = o[0] - } - return i + n - e - }(e), [(r = l(i / 10 / 126 / 10)) + 129, (e = l((i -= 10 * r * 126 * 10) / 10 / 126)) + 48, (r = l((i -= 10 * e * 126) / 10)) + 129, 48 + (i - 10 * r)]) - } - } - - function I(n) { - var t = n.fatal, o = 0; - this.handler = function (n, e) { - if (e === b && 0 !== o) return o = 0, m(t); - if (e === b && 0 === o) return w; - if (0 === o) return u(e) ? e : _(e, 129, 254) ? (o = e, null) : m(t); - var i = o, r = null; - switch (o = 0, r = _(e, 64, 126) || _(e, 161, 254) ? 157 * (i - 129) + (e - (e < 127 ? 64 : 98)) : r) { - case 1133: - return [202, 772]; - case 1135: - return [202, 780]; - case 1164: - return [234, 772]; - case 1166: - return [234, 780] - } - i = null === r ? null : y(r, v("big5")); - return null === i && u(e) && n.prepend(e), null === i ? m(t) : i - } - } - - function U(n) { - n.fatal; - this.handler = function (n, e) { - var i, r; - return e === b ? w : a(e) ? e : (i = e, r = o = o || v("big5").map(function (n, e) { - return e < 5024 ? null : n - }), null === (i = 9552 === i || 9566 === i || 9569 === i || 9578 === i || 21313 === i || 21317 === i ? r.lastIndexOf(i) : p(i, r)) || (r = l(i / 157) + 129) < 161 ? f(e) : [r, (e = i % 157) + (e < 63 ? 64 : 98)]) - } - } - - function C(n) { - var t = n.fatal, o = !1, s = 0; - this.handler = function (n, e) { - var i, r; - return e === b && 0 !== s ? (s = 0, m(t)) : e === b && 0 === s ? w : 142 === s && _(e, 161, 223) ? (s = 0, 65216 + e) : 143 === s && _(e, 161, 254) ? (o = !0, s = e, null) : 0 !== s ? (i = s, s = 0, r = null, _(i, 161, 254) && _(e, 161, 254) && (r = y(94 * (i - 161) + (e - 161), v(o ? "jis0212" : "jis0208"))), o = !1, _(e, 161, 254) || n.prepend(e), null === r ? m(t) : r) : u(e) ? e : 142 === e || 143 === e || _(e, 161, 254) ? (s = e, null) : m(t) - } - } - - function P(n) { - n.fatal; - this.handler = function (n, e) { - var i; - return e === b ? w : a(e) ? e : 165 === e ? 92 : 8254 === e ? 126 : _(e, 65377, 65439) ? [142, e - 65377 + 161] : null === (i = p(e = 8722 === e ? 65293 : e, v("jis0208"))) ? f(e) : [l(i / 94) + 161, i % 94 + 161] - } - } - - function D(n) { - var t = n.fatal, o = 0, s = 1, l = 2, a = 3, u = 4, c = 5, f = 6, d = o, h = o, g = 0, - p = !1; - this.handler = function (n, e) { - switch (d) { - default: - case o: - return 27 === e ? (d = c, null) : _(e, 0, 127) && 14 !== e && 15 !== e && 27 !== e ? (p = !1, e) : e === b ? w : (p = !1, m(t)); - case s: - return 27 === e ? (d = c, null) : 92 === e ? (p = !1, 165) : 126 === e ? (p = !1, 8254) : _(e, 0, 127) && 14 !== e && 15 !== e && 27 !== e && 92 !== e && 126 !== e ? (p = !1, e) : e === b ? w : (p = !1, m(t)); - case l: - return 27 === e ? (d = c, null) : _(e, 33, 95) ? (p = !1, 65344 + e) : e === b ? w : (p = !1, m(t)); - case a: - return 27 === e ? (d = c, null) : _(e, 33, 126) ? (p = !1, g = e, d = u, null) : e === b ? w : (p = !1, m(t)); - case u: - if (27 === e) d = c; else { - if (_(e, 33, 126)) return d = a, null === (i = y(94 * (g - 33) + e - 33, v("jis0208"))) ? m(t) : i; - e === b ? (d = a, n.prepend(e)) : d = a - } - return m(t); - case c: - return 36 === e || 40 === e ? (g = e, d = f, null) : (n.prepend(e), p = !1, d = h, m(t)); - case f: - var i = g, r = (g = 0, null); - return (40 === i && 66 === e && (r = o), 40 === i && 74 === e && (r = s), 40 === i && 73 === e && (r = l), null !== (r = 36 !== i || 64 !== e && 66 !== e ? r : a)) ? (d = r, r = p, p = !0, r ? m(t) : null) : (n.prepend([i, e]), p = !1, d = h, m(t)) - } - } - } - - function F(n) { - n.fatal; - var r = 0, t = 1, o = 2, s = r; - this.handler = function (n, e) { - if (e === b && s !== r) return n.prepend(e), s = r, [27, 40, 66]; - if (e === b && s === r) return w; - if (!(s !== r && s !== t || 14 !== e && 15 !== e && 27 !== e)) return f(65533); - if (s === r && a(e)) return e; - if (s === t && (a(e) && 92 !== e && 126 !== e || 165 == e || 8254 == e)) { - if (a(e)) return e; - if (165 === e) return 92; - if (8254 === e) return 126 - } - var i; - return a(e) && s !== r ? (n.prepend(e), s = r, [27, 40, 66]) : 165 !== e && 8254 !== e || s === t ? null === (i = p(e = 8722 === e ? 65293 : e, v("jis0208"))) ? f(e) : s !== o ? (n.prepend(e), s = o, [27, 36, 66]) : [l(i / 94) + 33, i % 94 + 33] : (n.prepend(e), s = t, [27, 40, 74]) - } - } - - function J(n) { - var t = n.fatal, o = 0; - this.handler = function (n, e) { - var i, r; - return e === b && 0 !== o ? (o = 0, m(t)) : e === b && 0 === o ? w : 0 !== o ? (r = o, i = null, o = 0, (_(e, 64, 126) || _(e, 128, 252)) && (i = 188 * (r - (r < 160 ? 129 : 193)) + e - (e < 127 ? 64 : 65)), _(i, 8836, 10715) ? 48508 + i : (null === (r = null === i ? null : y(i, v("jis0208"))) && u(e) && n.prepend(e), null === r ? m(t) : r)) : u(e) || 128 === e ? e : _(e, 161, 223) ? 65216 + e : _(e, 129, 159) || _(e, 224, 252) ? (o = e, null) : m(t) - } - } - - function K(n) { - n.fatal; - this.handler = function (n, e) { - var i; - return e === b ? w : a(e) || 128 === e ? e : 165 === e ? 92 : 8254 === e ? 126 : _(e, 65377, 65439) ? e - 65377 + 161 : (i = e = 8722 === e ? 65293 : e, null === (i = (t = t || v("jis0208").map(function (n, e) { - return _(e, 8272, 8835) ? null : n - })).indexOf(i)) ? f(e) : [(e = l(i / 188)) + (e < 31 ? 129 : 193), (e = i % 188) + (e < 63 ? 64 : 65)]) - } - } - - function R(n) { - var t = n.fatal, o = 0; - this.handler = function (n, e) { - var i, r; - return e === b && 0 !== o ? (o = 0, m(t)) : e === b && 0 === o ? w : 0 !== o ? (r = o, o = 0, r = (i = null) === (i = _(e, 65, 254) ? 190 * (r - 129) + (e - 65) : i) ? null : y(i, v("euc-kr")), null === i && u(e) && n.prepend(e), null === r ? m(t) : r) : u(e) ? e : _(e, 129, 254) ? (o = e, null) : m(t) - } - } - - function G(n) { - n.fatal; - this.handler = function (n, e) { - var i; - return e === b ? w : a(e) ? e : null === (i = p(e, v("euc-kr"))) ? f(e) : [l(i / 190) + 129, i % 190 + 65] - } - } - - function A(n, e) { - var i = n >> 8, n = 255 & n; - return e ? [i, n] : [n, i] - } - - function L(r, n) { - var t = n.fatal, o = null, s = null; - this.handler = function (n, e) { - var i; - return e !== b || null === o && null === s ? e === b && null === o && null === s ? w : null === o ? (o = e, null) : (e = r ? (o << 8) + e : (e << 8) + o, (o = null) !== s ? (i = s, s = null, _(e, 56320, 57343) ? 65536 + 1024 * (i - 55296) + (e - 56320) : (n.prepend(A(e, r)), m(t))) : _(e, 55296, 56319) ? (s = e, null) : _(e, 56320, 57343) ? m(t) : e) : m(t) - } - } - - function M(r, n) { - n.fatal; - this.handler = function (n, e) { - var i; - return e === b ? w : _(e, 0, 65535) ? A(e, r) : (i = A(55296 + (e - 65536 >> 10), r), e = A(56320 + (e - 65536 & 1023), r), i.concat(e)) - } - } - - function N(n) { - n.fatal; - this.handler = function (n, e) { - return e === b ? w : u(e) ? e : 63360 + e - 128 - } - } - - function q(n) { - n.fatal; - this.handler = function (n, e) { - return e === b ? w : a(e) ? e : _(e, 63360, 63487) ? e - 63360 + 128 : f(e) - } - } - - Object.defineProperty && (Object.defineProperty(O.prototype, "encoding", { - get: function () { - return this._encoding.name.toLowerCase() - } - }), Object.defineProperty(O.prototype, "fatal", { - get: function () { - return "fatal" === this._error_mode - } - }), Object.defineProperty(O.prototype, "ignoreBOM", { - get: function () { - return this._ignoreBOM - } - })), O.prototype.decode = function (n, e) { - n = "object" == typeof n && n instanceof ArrayBuffer ? new Uint8Array(n) : "object" == typeof n && "buffer" in n && n.buffer instanceof ArrayBuffer ? new Uint8Array(n.buffer, n.byteOffset, n.byteLength) : new Uint8Array(0); - e = s(e), this._do_not_flush || (this._decoder = g[this._encoding.name]({fatal: "fatal" === this._error_mode}), this._BOMseen = !1), this._do_not_flush = Boolean(e.stream); - for (var i, r = new c(n), t = []; ;) { - var o = r.read(); - if (o === b) break; - if ((i = this._decoder.handler(r, o)) === w) break; - null !== i && (Array.isArray(i) ? t.push.apply(t, i) : t.push(i)) - } - if (!this._do_not_flush) { - for (; (i = this._decoder.handler(r, r.read())) !== w && (null !== i && (Array.isArray(i) ? t.push.apply(t, i) : t.push(i)), !r.endOfStream());) ; - this._decoder = null - } - return function (n) { - e = ["UTF-8", "UTF-16LE", "UTF-16BE"], i = this._encoding.name, -1 === e.indexOf(i) || this._ignoreBOM || this._BOMseen || (0 < n.length && 65279 === n[0] ? (this._BOMseen = !0, n.shift()) : 0 < n.length && (this._BOMseen = !0)); - for (var e, i, r = n, t = "", o = 0; o < r.length; ++o) { - var s = r[o]; - s <= 65535 ? t += String.fromCharCode(s) : (s -= 65536, t += String.fromCharCode(55296 + (s >> 10), 56320 + (1023 & s))) - } - return t - }.call(this, t) - }, Object.defineProperty && Object.defineProperty(k.prototype, "encoding", { - get: function () { - return this._encoding.name.toLowerCase() - } - }), k.prototype.encode = function (n, e) { - n = void 0 === n ? "" : String(n), e = s(e), this._do_not_flush || (this._encoder = h[this._encoding.name]({fatal: "fatal" === this._fatal})), this._do_not_flush = Boolean(e.stream); - for (var i, r = new c(function (n) { - for (var e = String(n), i = e.length, r = 0, t = []; r < i;) { - var o, s = e.charCodeAt(r); - s < 55296 || 57343 < s ? t.push(s) : 56320 <= s && s <= 57343 ? t.push(65533) : 55296 <= s && s <= 56319 && (r !== i - 1 && 56320 <= (o = e.charCodeAt(r + 1)) && o <= 57343 ? (t.push(65536 + ((1023 & s) << 10) + (1023 & o)), r += 1) : t.push(65533)), r += 1 - } - return t - }(n)), t = []; ;) { - var o = r.read(); - if (o === b) break; - if ((i = this._encoder.handler(r, o)) === w) break; - Array.isArray(i) ? t.push.apply(t, i) : t.push(i) - } - if (!this._do_not_flush) { - for (; ;) { - if ((i = this._encoder.handler(r, r.read())) === w) break; - Array.isArray(i) ? t.push.apply(t, i) : t.push(i) - } - this._encoder = null - } - return new Uint8Array(t) - }, h["UTF-8"] = function (n) { - return new E(n) - }, g["UTF-8"] = function (n) { - return new e(n) - }, "encoding-indexes" in i && n.forEach(function (n) { - "Legacy single-byte encodings" === n.heading && n.encodings.forEach(function (n) { - var n = n.name, e = v(n.toLowerCase()); - g[n] = function (n) { - return new j(e, n) - }, h[n] = function (n) { - return new B(e, n) - } - }) - }), g.GBK = function (n) { - return new S(n) - }, h.GBK = function (n) { - return new T(n, !0) - }, h.gb18030 = function (n) { - return new T(n) - }, g.gb18030 = function (n) { - return new S(n) - }, h.Big5 = function (n) { - return new U(n) - }, g.Big5 = function (n) { - return new I(n) - }, h["EUC-JP"] = function (n) { - return new P(n) - }, g["EUC-JP"] = function (n) { - return new C(n) - }, h["ISO-2022-JP"] = function (n) { - return new F(n) - }, g["ISO-2022-JP"] = function (n) { - return new D(n) - }, h.Shift_JIS = function (n) { - return new K(n) - }, g.Shift_JIS = function (n) { - return new J(n) - }, h["EUC-KR"] = function (n) { - return new G(n) - }, g["EUC-KR"] = function (n) { - return new R(n) - }, h["UTF-16BE"] = function (n) { - return new M(!0, n) - }, g["UTF-16BE"] = function (n) { - return new L(!0, n) - }, h["UTF-16LE"] = function (n) { - return new M(!1, n) - }, g["UTF-16LE"] = function (n) { - return new L(!1, n) - }, h["x-user-defined"] = function (n) { - return new q(n) - }, g["x-user-defined"] = function (n) { - return new N(n) - }, i.TextEncoder || (i.TextEncoder = k), i.TextDecoder || (i.TextDecoder = O), "undefined" != typeof module && module.exports && (module.exports = { - TextEncoder: i.TextEncoder, - TextDecoder: i.TextDecoder, - EncodingIndexes: i["encoding-indexes"] - }) - }(this || {}); + !function(i){"use strict";function _(n,e,i){return e<=n&&n<=i}"undefined"!=typeof module&&module.exports&&!i["encoding-indexes"]&&(i["encoding-indexes"]=require("./encoding-indexes.js")["encoding-indexes"]);var l=Math.floor;function s(n){if(void 0===n)return{};if(n===Object(n))return n;throw TypeError("Could not convert argument to dictionary")}function u(n){return 0<=n&&n<=127}var a=u,b=-1;function c(n){this.tokens=[].slice.call(n),this.tokens.reverse()}c.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.pop():b},prepend:function(n){if(Array.isArray(n))for(var e=n;e.length;)this.tokens.push(e.pop());else this.tokens.push(n)},push:function(n){if(Array.isArray(n))for(var e=n;e.length;)this.tokens.unshift(e.shift());else this.tokens.unshift(n)}};var w=-1;function m(n,e){if(n)throw TypeError("Decoder error");return e||65533}function f(n){throw TypeError("The code point "+n+" could not be encoded.")}function r(n){return n=String(n).trim().toLowerCase(),Object.prototype.hasOwnProperty.call(d,n)?d[n]:null}var t,o,n=[{encodings:[{labels:["unicode-1-1-utf-8","utf-8","utf8"],name:"UTF-8"}],heading:"The Encoding"},{encodings:[{labels:["866","cp866","csibm866","ibm866"],name:"IBM866"},{labels:["csisolatin2","iso-8859-2","iso-ir-101","iso8859-2","iso88592","iso_8859-2","iso_8859-2:1987","l2","latin2"],name:"ISO-8859-2"},{labels:["csisolatin3","iso-8859-3","iso-ir-109","iso8859-3","iso88593","iso_8859-3","iso_8859-3:1988","l3","latin3"],name:"ISO-8859-3"},{labels:["csisolatin4","iso-8859-4","iso-ir-110","iso8859-4","iso88594","iso_8859-4","iso_8859-4:1988","l4","latin4"],name:"ISO-8859-4"},{labels:["csisolatincyrillic","cyrillic","iso-8859-5","iso-ir-144","iso8859-5","iso88595","iso_8859-5","iso_8859-5:1988"],name:"ISO-8859-5"},{labels:["arabic","asmo-708","csiso88596e","csiso88596i","csisolatinarabic","ecma-114","iso-8859-6","iso-8859-6-e","iso-8859-6-i","iso-ir-127","iso8859-6","iso88596","iso_8859-6","iso_8859-6:1987"],name:"ISO-8859-6"},{labels:["csisolatingreek","ecma-118","elot_928","greek","greek8","iso-8859-7","iso-ir-126","iso8859-7","iso88597","iso_8859-7","iso_8859-7:1987","sun_eu_greek"],name:"ISO-8859-7"},{labels:["csiso88598e","csisolatinhebrew","hebrew","iso-8859-8","iso-8859-8-e","iso-ir-138","iso8859-8","iso88598","iso_8859-8","iso_8859-8:1988","visual"],name:"ISO-8859-8"},{labels:["csiso88598i","iso-8859-8-i","logical"],name:"ISO-8859-8-I"},{labels:["csisolatin6","iso-8859-10","iso-ir-157","iso8859-10","iso885910","l6","latin6"],name:"ISO-8859-10"},{labels:["iso-8859-13","iso8859-13","iso885913"],name:"ISO-8859-13"},{labels:["iso-8859-14","iso8859-14","iso885914"],name:"ISO-8859-14"},{labels:["csisolatin9","iso-8859-15","iso8859-15","iso885915","iso_8859-15","l9"],name:"ISO-8859-15"},{labels:["iso-8859-16"],name:"ISO-8859-16"},{labels:["cskoi8r","koi","koi8","koi8-r","koi8_r"],name:"KOI8-R"},{labels:["koi8-ru","koi8-u"],name:"KOI8-U"},{labels:["csmacintosh","mac","macintosh","x-mac-roman"],name:"macintosh"},{labels:["dos-874","iso-8859-11","iso8859-11","iso885911","tis-620","windows-874"],name:"windows-874"},{labels:["cp1250","windows-1250","x-cp1250"],name:"windows-1250"},{labels:["cp1251","windows-1251","x-cp1251"],name:"windows-1251"},{labels:["ansi_x3.4-1968","ascii","cp1252","cp819","csisolatin1","ibm819","iso-8859-1","iso-ir-100","iso8859-1","iso88591","iso_8859-1","iso_8859-1:1987","l1","latin1","us-ascii","windows-1252","x-cp1252"],name:"windows-1252"},{labels:["cp1253","windows-1253","x-cp1253"],name:"windows-1253"},{labels:["cp1254","csisolatin5","iso-8859-9","iso-ir-148","iso8859-9","iso88599","iso_8859-9","iso_8859-9:1989","l5","latin5","windows-1254","x-cp1254"],name:"windows-1254"},{labels:["cp1255","windows-1255","x-cp1255"],name:"windows-1255"},{labels:["cp1256","windows-1256","x-cp1256"],name:"windows-1256"},{labels:["cp1257","windows-1257","x-cp1257"],name:"windows-1257"},{labels:["cp1258","windows-1258","x-cp1258"],name:"windows-1258"},{labels:["x-mac-cyrillic","x-mac-ukrainian"],name:"x-mac-cyrillic"}],heading:"Legacy single-byte encodings"},{encodings:[{labels:["chinese","csgb2312","csiso58gb231280","gb2312","gb_2312","gb_2312-80","gbk","iso-ir-58","x-gbk"],name:"GBK"},{labels:["gb18030"],name:"gb18030"}],heading:"Legacy multi-byte Chinese (simplified) encodings"},{encodings:[{labels:["big5","big5-hkscs","cn-big5","csbig5","x-x-big5"],name:"Big5"}],heading:"Legacy multi-byte Chinese (traditional) encodings"},{encodings:[{labels:["cseucpkdfmtjapanese","euc-jp","x-euc-jp"],name:"EUC-JP"},{labels:["csiso2022jp","iso-2022-jp"],name:"ISO-2022-JP"},{labels:["csshiftjis","ms932","ms_kanji","shift-jis","shift_jis","sjis","windows-31j","x-sjis"],name:"Shift_JIS"}],heading:"Legacy multi-byte Japanese encodings"},{encodings:[{labels:["cseuckr","csksc56011987","euc-kr","iso-ir-149","korean","ks_c_5601-1987","ks_c_5601-1989","ksc5601","ksc_5601","windows-949"],name:"EUC-KR"}],heading:"Legacy multi-byte Korean encodings"},{encodings:[{labels:["csiso2022kr","hz-gb-2312","iso-2022-cn","iso-2022-cn-ext","iso-2022-kr"],name:"replacement"},{labels:["utf-16be"],name:"UTF-16BE"},{labels:["utf-16","utf-16le"],name:"UTF-16LE"},{labels:["x-user-defined"],name:"x-user-defined"}],heading:"Legacy miscellaneous encodings"}],d={},h=(n.forEach(function(n){n.encodings.forEach(function(e){e.labels.forEach(function(n){d[n]=e})})}),{}),g={};function y(n,e){return e&&e[n]||null}function p(n,e){e=e.indexOf(n);return-1===e?null:e}function v(n){if("encoding-indexes"in i)return i["encoding-indexes"][n];throw Error("Indexes missing. Did you forget to include encoding-indexes.js first?")}var x="utf-8";function O(n,e){if(!(this instanceof O))throw TypeError("Called as a function. Did you forget 'new'?");n=void 0!==n?String(n):x,e=s(e),this._encoding=null,this._decoder=null,this._ignoreBOM=!1,this._BOMseen=!1,this._error_mode="replacement",this._do_not_flush=!1;var i=r(n);if(null===i||"replacement"===i.name)throw RangeError("Unknown encoding: "+n);if(g[i.name])return(n=this)._encoding=i,Boolean(e.fatal)&&(n._error_mode="fatal"),Boolean(e.ignoreBOM)&&(n._ignoreBOM=!0),Object.defineProperty||(this.encoding=n._encoding.name.toLowerCase(),this.fatal="fatal"===n._error_mode,this.ignoreBOM=n._ignoreBOM),n;throw Error("Decoder not present. Did you forget to include encoding-indexes.js first?")}function k(n,e){if(!(this instanceof k))throw TypeError("Called as a function. Did you forget 'new'?");e=s(e),this._encoding=null,this._encoder=null,this._do_not_flush=!1,this._fatal=Boolean(e.fatal)?"fatal":"replacement";if(Boolean(e.NONSTANDARD_allowLegacyEncoding)){e=r(n=void 0!==n?String(n):x);if(null===e||"replacement"===e.name)throw RangeError("Unknown encoding: "+n);if(!h[e.name])throw Error("Encoder not present. Did you forget to include encoding-indexes.js first?");this._encoding=e}else this._encoding=r("utf-8"),void 0!==n&&"console"in i&&console.warn("TextEncoder constructor called with encoding label, which is ignored.");return Object.defineProperty||(this.encoding=this._encoding.name.toLowerCase()),this}function e(n){var r=n.fatal,t=0,o=0,s=0,l=128,a=191;this.handler=function(n,e){if(e===b&&0!==s)return s=0,m(r);if(e===b)return w;if(0===s){if(_(e,0,127))return e;if(_(e,194,223))s=1,t=31&e;else if(_(e,224,239))224===e&&(l=160),237===e&&(a=159),s=2,t=15&e;else{if(!_(e,240,244))return m(r);240===e&&(l=144),244===e&&(a=143),s=3,t=7&e}return null}var i;return _(e,l,a)?(l=128,a=191,t=t<<6|63&e,(o+=1)!==s?null:(i=t,t=s=o=0,i)):(t=s=o=0,l=128,a=191,n.prepend(e),m(r))}}function E(n){n.fatal;this.handler=function(n,e){if(e===b)return w;if(a(e))return e;_(e,128,2047)?(i=1,r=192):_(e,2048,65535)?(i=2,r=224):_(e,65536,1114111)&&(i=3,r=240);for(var i,r,t=[(e>>6*i)+r];0>6*(i-1)),--i;return t}}function j(i,n){var r=n.fatal;this.handler=function(n,e){return e===b?w:u(e)?e:null===(e=i[e-128])?m(r):e}}function B(r,n){n.fatal;this.handler=function(n,e){var i;return e===b?w:a(e)?e:(null===(i=p(e,r))&&f(e),i+128)}}function S(n){var o=n.fatal,s=0,l=0,a=0;this.handler=function(n,e){var i,r,t;return e===b&&0===s&&0===l&&0===a?w:(e!==b||0===s&&0===l&&0===a||(a=l=s=0,m(o)),0!==a?(i=null,_(e,48,57)&&(i=function(n){if(39419>8,n=255&n;return e?[i,n]:[n,i]}function L(r,n){var t=n.fatal,o=null,s=null;this.handler=function(n,e){var i;return e!==b||null===o&&null===s?e===b&&null===o&&null===s?w:null===o?(o=e,null):(e=r?(o<<8)+e:(e<<8)+o,(o=null)!==s?(i=s,s=null,_(e,56320,57343)?65536+1024*(i-55296)+(e-56320):(n.prepend(A(e,r)),m(t))):_(e,55296,56319)?(s=e,null):_(e,56320,57343)?m(t):e):m(t)}}function M(r,n){n.fatal;this.handler=function(n,e){var i;return e===b?w:_(e,0,65535)?A(e,r):(i=A(55296+(e-65536>>10),r),e=A(56320+(e-65536&1023),r),i.concat(e))}}function N(n){n.fatal;this.handler=function(n,e){return e===b?w:u(e)?e:63360+e-128}}function q(n){n.fatal;this.handler=function(n,e){return e===b?w:a(e)?e:_(e,63360,63487)?e-63360+128:f(e)}}Object.defineProperty&&(Object.defineProperty(O.prototype,"encoding",{get:function(){return this._encoding.name.toLowerCase()}}),Object.defineProperty(O.prototype,"fatal",{get:function(){return"fatal"===this._error_mode}}),Object.defineProperty(O.prototype,"ignoreBOM",{get:function(){return this._ignoreBOM}})),O.prototype.decode=function(n,e){n="object"==typeof n&&n instanceof ArrayBuffer?new Uint8Array(n):"object"==typeof n&&"buffer"in n&&n.buffer instanceof ArrayBuffer?new Uint8Array(n.buffer,n.byteOffset,n.byteLength):new Uint8Array(0);e=s(e),this._do_not_flush||(this._decoder=g[this._encoding.name]({fatal:"fatal"===this._error_mode}),this._BOMseen=!1),this._do_not_flush=Boolean(e.stream);for(var i,r=new c(n),t=[];;){var o=r.read();if(o===b)break;if((i=this._decoder.handler(r,o))===w)break;null!==i&&(Array.isArray(i)?t.push.apply(t,i):t.push(i))}if(!this._do_not_flush){for(;(i=this._decoder.handler(r,r.read()))!==w&&(null!==i&&(Array.isArray(i)?t.push.apply(t,i):t.push(i)),!r.endOfStream()););this._decoder=null}return function(n){e=["UTF-8","UTF-16LE","UTF-16BE"],i=this._encoding.name,-1===e.indexOf(i)||this._ignoreBOM||this._BOMseen||(0>10),56320+(1023&s)))}return t}.call(this,t)},Object.defineProperty&&Object.defineProperty(k.prototype,"encoding",{get:function(){return this._encoding.name.toLowerCase()}}),k.prototype.encode=function(n,e){n=void 0===n?"":String(n),e=s(e),this._do_not_flush||(this._encoder=h[this._encoding.name]({fatal:"fatal"===this._fatal})),this._do_not_flush=Boolean(e.stream);for(var i,r=new c(function(n){for(var e=String(n),i=e.length,r=0,t=[];r r in e ? __defProp(e, r, { - enumerable: !0, - configurable: !0, - writable: !0, - value: t - }) : e[r] = t, __spreadValues = (e, r) => { - for (var t in r = r || {}) __hasOwnProp.call(r, t) && __defNormalProp(e, t, r[t]); - if (__getOwnPropSymbols) for (var t of __getOwnPropSymbols(r)) __propIsEnum.call(r, t) && __defNormalProp(e, t, r[t]); - return e - }, __spreadProps = (e, r) => __defProps(e, __getOwnPropDescs(r)); - - function varint64read() { - let r = 0, t = 0; - for (let e = 0; e < 28; e += 7) { - var a = this.buf[this.pos++]; - if (r |= (127 & a) << e, 0 == (128 & a)) return this.assertBounds(), [r, t] - } - var e = this.buf[this.pos++]; - if (r |= (15 & e) << 28, t = (112 & e) >> 4, 0 == (128 & e)) return this.assertBounds(), [r, t]; - for (let e = 3; e <= 31; e += 7) { - var n = this.buf[this.pos++]; - if (t |= (127 & n) << e, 0 == (128 & n)) return this.assertBounds(), [r, t] - } - throw new Error("invalid varint") - } - - function varint64write(r, t, a) { - for (let e = 0; e < 28; e += 7) { - var n = r >>> e, s = !(n >>> 7 == 0 && 0 == t); - if (a.push(255 & (s ? 128 | n : n)), !s) return - } - var e = r >>> 28 & 15 | (7 & t) << 4, i = !(t >> 3 == 0); - if (a.push(255 & (i ? 128 | e : e)), i) { - for (let e = 3; e < 31; e += 7) { - var o = t >>> e, l = !(o >>> 7 == 0); - if (a.push(255 & (l ? 128 | o : o)), !l) return - } - a.push(t >>> 31 & 1) - } - } - - const TWO_PWR_32_DBL$1 = 4294967296; - - function int64fromString(t) { - var e = "-" == t[0]; - e && (t = t.slice(1)); - let a = 0, n = 0; - - function r(e, r) { - e = Number(t.slice(e, r)); - n *= 1e6, (a = 1e6 * a + e) >= TWO_PWR_32_DBL$1 && (n += a / TWO_PWR_32_DBL$1 | 0, a %= TWO_PWR_32_DBL$1) - } - - return r(-24, -18), r(-18, -12), r(-12, -6), r(-6), [e, a, n] - } - - function int64toString(e, r) { - if (r <= 2097151) return "" + (TWO_PWR_32_DBL$1 * r + e); - var t = (e >>> 24 | r << 8) >>> 0 & 16777215, r = r >> 16 & 65535; - let a = (16777215 & e) + 6777216 * t + 6710656 * r, n = t + 8147497 * r, s = 2 * r; - e = 1e7; - - function i(e, r) { - e = e ? String(e) : ""; - return r ? "0000000".slice(e.length) + e : e - } - - return a >= e && (n += Math.floor(a / e), a %= e), n >= e && (s += Math.floor(n / e), n %= e), i(s, 0) + i(n, s) + i(a, 1) - } - - function varint32write(r, t) { - if (0 <= r) { - for (; 127 < r;) t.push(127 & r | 128), r >>>= 7; - t.push(r) - } else { - for (let e = 0; e < 9; e++) t.push(127 & r | 128), r >>= 7; - t.push(1) - } - } - - function varint32read() { - let r = this.buf[this.pos++]; - var e = 127 & r; - if (0 == (128 & r)) return this.assertBounds(), e; - if (e |= (127 & (r = this.buf[this.pos++])) << 7, 0 == (128 & r)) return this.assertBounds(), e; - if (e |= (127 & (r = this.buf[this.pos++])) << 14, 0 == (128 & r)) return this.assertBounds(), e; - if (e |= (127 & (r = this.buf[this.pos++])) << 21, 0 == (128 & r)) return this.assertBounds(), e; - e |= (15 & (r = this.buf[this.pos++])) << 28; - for (let e = 5; 0 != (128 & r) && e < 10; e++) r = this.buf[this.pos++]; - if (0 != (128 & r)) throw new Error("invalid varint"); - return this.assertBounds(), e >>> 0 - } - - function detectBi() { - var e = new DataView(new ArrayBuffer(8)); - return void 0 !== globalThis.BigInt && "function" == typeof e.getBigInt64 && "function" == typeof e.getBigUint64 && "function" == typeof e.setBigInt64 && "function" == typeof e.setBigUint64 ? { - MIN: BigInt("-9223372036854775808"), - MAX: BigInt("9223372036854775807"), - UMIN: BigInt("0"), - UMAX: BigInt("18446744073709551615"), - C: BigInt, - V: e - } : void 0 - } - - const BI = detectBi(); - - function assertBi(e) { - if (!e) throw new Error("BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support") - } - - const RE_DECIMAL_STR = /^-?[0-9]+$/, TWO_PWR_32_DBL = 4294967296; - - class SharedPbLong { - constructor(e, r) { - this.lo = 0 | e, this.hi = 0 | r - } - - isZero() { - return 0 == this.lo && 0 == this.hi - } - - toNumber() { - var e = this.hi * TWO_PWR_32_DBL + (this.lo >>> 0); - if (Number.isSafeInteger(e)) return e; - throw new Error("cannot convert to safe number") - } - } - - const _PbULong = class extends SharedPbLong { - static from(e) { - if (BI) switch (typeof e) { - case"string": - if ("0" == e) return this.ZERO; - if ("" == e) throw new Error("string is no integer"); - e = BI.C(e); - case"number": - if (0 === e) return this.ZERO; - e = BI.C(e); - case"bigint": - if (!e) return this.ZERO; - if (e < BI.UMIN) throw new Error("signed value for ulong"); - if (e > BI.UMAX) throw new Error("ulong too large"); - return BI.V.setBigUint64(0, e, !0), new _PbULong(BI.V.getInt32(0, !0), BI.V.getInt32(4, !0)) - } else switch (typeof e) { - case"string": - if ("0" == e) return this.ZERO; - if (e = e.trim(), !RE_DECIMAL_STR.test(e)) throw new Error("string is no integer"); - var [r, t, a] = int64fromString(e); - if (r) throw new Error("signed value"); - return new _PbULong(t, a); - case"number": - if (0 == e) return this.ZERO; - if (!Number.isSafeInteger(e)) throw new Error("number is no integer"); - if (e < 0) throw new Error("signed value for ulong"); - return new _PbULong(e, e / TWO_PWR_32_DBL) - } - throw new Error("unknown value " + typeof e) - } - - toString() { - return BI ? this.toBigInt().toString() : int64toString(this.lo, this.hi) - } - - toBigInt() { - return assertBi(BI), BI.V.setInt32(0, this.lo, !0), BI.V.setInt32(4, this.hi, !0), BI.V.getBigUint64(0, !0) - } - }; - let PbULong = _PbULong; - PbULong.ZERO = new _PbULong(0, 0); - const _PbLong = class extends SharedPbLong { - static from(e) { - if (BI) switch (typeof e) { - case"string": - if ("0" == e) return this.ZERO; - if ("" == e) throw new Error("string is no integer"); - e = BI.C(e); - case"number": - if (0 === e) return this.ZERO; - e = BI.C(e); - case"bigint": - if (!e) return this.ZERO; - if (e < BI.MIN) throw new Error("ulong too small"); - if (e > BI.MAX) throw new Error("ulong too large"); - return BI.V.setBigInt64(0, e, !0), new _PbLong(BI.V.getInt32(0, !0), BI.V.getInt32(4, !0)) - } else switch (typeof e) { - case"string": - if ("0" == e) return this.ZERO; - var r, t, a; - if (e = e.trim(), RE_DECIMAL_STR.test(e)) return [r, a, t] = int64fromString(e), a = new _PbLong(a, t), r ? a.negate() : a; - throw new Error("string is no integer"); - case"number": - if (0 == e) return this.ZERO; - if (Number.isSafeInteger(e)) return 0 < e ? new _PbLong(e, e / TWO_PWR_32_DBL) : new _PbLong(-e, -e / TWO_PWR_32_DBL).negate(); - throw new Error("number is no integer") - } - throw new Error("unknown value " + typeof e) - } - - isNegative() { - return 0 != (2147483648 & this.hi) - } - - negate() { - let e = ~this.hi, r = this.lo; - return r ? r = 1 + ~r : e += 1, new _PbLong(r, e) - } - - toString() { - var e; - return BI ? this.toBigInt().toString() : this.isNegative() ? "-" + int64toString((e = this.negate()).lo, e.hi) : int64toString(this.lo, this.hi) - } - - toBigInt() { - return assertBi(BI), BI.V.setInt32(0, this.lo, !0), BI.V.setInt32(4, this.hi, !0), BI.V.getBigInt64(0, !0) - } - }; - let PbLong = _PbLong; - PbLong.ZERO = new _PbLong(0, 0); - - class BinaryReader { - constructor(e, r) { - this.varint64 = varint64read, this.uint32 = varint32read, this.buf = e, this.len = e.length, this.pos = 0, this.view = new DataView(e.buffer, e.byteOffset, e.byteLength), this.textDecoder = null != r ? r : new TextDecoder("utf-8", {fatal: !0}) - } - - tag() { - var e = this.uint32(), r = e >>> 3, e = 7 & e; - if (r <= 0 || e < 0 || 5 < e) throw new Error("illegal tag: field no " + r + " wire type " + e); - return [r, e] - } - - skip(e) { - var r, t = this.pos; - switch (e) { - case WireType.Varint: - for (; 128 & this.buf[this.pos++];) ; - break; - case WireType.Bit64: - this.pos += 4; - case WireType.Bit32: - this.pos += 4; - break; - case WireType.LengthDelimited: - var a = this.uint32(); - this.pos += a; - break; - case WireType.StartGroup: - for (; (r = this.tag()[1]) !== WireType.EndGroup;) this.skip(r); - break; - default: - throw new Error("cant skip wire type " + e) - } - return this.assertBounds(), this.buf.subarray(t, this.pos) - } - - assertBounds() { - if (this.pos > this.len) throw new RangeError("premature EOF") - } - - int32() { - return 0 | this.uint32() - } - - sint32() { - var e = this.uint32(); - return e >>> 1 ^ -(1 & e) - } - - int64() { - return new PbLong(...this.varint64()) - } - - uint64() { - return new PbULong(...this.varint64()) - } - - sint64() { - var [e, r] = this.varint64(), t = -(1 & e), e = (e >>> 1 | (1 & r) << 31) ^ t, r = r >>> 1 ^ t; - return new PbLong(e, r) - } - - bool() { - var [e, r] = this.varint64(); - return 0 !== e || 0 !== r - } - - fixed32() { - return this.view.getUint32((this.pos += 4) - 4, !0) - } - - sfixed32() { - return this.view.getInt32((this.pos += 4) - 4, !0) - } - - fixed64() { - return new PbULong(this.sfixed32(), this.sfixed32()) - } - - sfixed64() { - return new PbLong(this.sfixed32(), this.sfixed32()) - } - - float() { - return this.view.getFloat32((this.pos += 4) - 4, !0) - } - - double() { - return this.view.getFloat64((this.pos += 8) - 8, !0) - } - - bytes() { - var e = this.uint32(), r = this.pos; - return this.pos += e, this.assertBounds(), this.buf.subarray(r, r + e) - } - - string() { - return this.textDecoder.decode(this.bytes()) - } - } - - function assert(e, r) { - if (!e) throw new Error(r) - } - - const FLOAT32_MAX = 34028234663852886e22, FLOAT32_MIN = -34028234663852886e22, - UINT32_MAX = 4294967295, INT32_MAX = 2147483647, INT32_MIN = -2147483648; - - function assertInt32(e) { - if ("number" != typeof e) throw new Error("invalid int 32: " + typeof e); - if (!Number.isInteger(e) || e > INT32_MAX || e < INT32_MIN) throw new Error("invalid int 32: " + e) - } - - function assertUInt32(e) { - if ("number" != typeof e) throw new Error("invalid uint 32: " + typeof e); - if (!Number.isInteger(e) || e > UINT32_MAX || e < 0) throw new Error("invalid uint 32: " + e) - } - - function assertFloat32(e) { - if ("number" != typeof e) throw new Error("invalid float 32: " + typeof e); - if (Number.isFinite(e) && (e > FLOAT32_MAX || e < FLOAT32_MIN)) throw new Error("invalid float 32: " + e) - } - - class BinaryWriter { - constructor(e) { - this.stack = [], this.textEncoder = null != e ? e : new TextEncoder, this.chunks = [], this.buf = [] - } - - finish() { - this.chunks.push(new Uint8Array(this.buf)); - let r = 0; - for (let e = 0; e < this.chunks.length; e++) r += this.chunks[e].length; - var t = new Uint8Array(r); - let a = 0; - for (let e = 0; e < this.chunks.length; e++) t.set(this.chunks[e], a), a += this.chunks[e].length; - return this.chunks = [], t - } - - fork() { - return this.stack.push({ - chunks: this.chunks, - buf: this.buf - }), this.chunks = [], this.buf = [], this - } - - join() { - var e = this.finish(), r = this.stack.pop(); - if (r) return this.chunks = r.chunks, this.buf = r.buf, this.uint32(e.byteLength), this.raw(e); - throw new Error("invalid state, fork stack empty") - } - - tag(e, r) { - return this.uint32((e << 3 | r) >>> 0) - } - - raw(e) { - return this.buf.length && (this.chunks.push(new Uint8Array(this.buf)), this.buf = []), this.chunks.push(e), this - } - - uint32(e) { - for (assertUInt32(e); 127 < e;) this.buf.push(127 & e | 128), e >>>= 7; - return this.buf.push(e), this - } - - int32(e) { - return assertInt32(e), varint32write(e, this.buf), this - } - - bool(e) { - return this.buf.push(e ? 1 : 0), this - } - - bytes(e) { - return this.uint32(e.byteLength), this.raw(e) - } - - string(e) { - e = this.textEncoder.encode(e); - return this.uint32(e.byteLength), this.raw(e) - } - - float(e) { - assertFloat32(e); - var r = new Uint8Array(4); - return new DataView(r.buffer).setFloat32(0, e, !0), this.raw(r) - } - - double(e) { - var r = new Uint8Array(8); - return new DataView(r.buffer).setFloat64(0, e, !0), this.raw(r) - } - - fixed32(e) { - assertUInt32(e); - var r = new Uint8Array(4); - return new DataView(r.buffer).setUint32(0, e, !0), this.raw(r) - } - - sfixed32(e) { - assertInt32(e); - var r = new Uint8Array(4); - return new DataView(r.buffer).setInt32(0, e, !0), this.raw(r) - } - - sint32(e) { - return assertInt32(e), varint32write(e = (e << 1 ^ e >> 31) >>> 0, this.buf), this - } - - sfixed64(e) { - var r = new Uint8Array(8), t = new DataView(r.buffer), e = PbLong.from(e); - return t.setInt32(0, e.lo, !0), t.setInt32(4, e.hi, !0), this.raw(r) - } - - fixed64(e) { - var r = new Uint8Array(8), t = new DataView(r.buffer), e = PbULong.from(e); - return t.setInt32(0, e.lo, !0), t.setInt32(4, e.hi, !0), this.raw(r) - } - - int64(e) { - e = PbLong.from(e); - return varint64write(e.lo, e.hi, this.buf), this - } - - sint64(e) { - var e = PbLong.from(e), r = e.hi >> 31; - return varint64write(e.lo << 1 ^ r, (e.hi << 1 | e.lo >>> 31) ^ r, this.buf), this - } - - uint64(e) { - e = PbULong.from(e); - return varint64write(e.lo, e.hi, this.buf), this - } - } - - function binaryWriteOptions(e) { - return e ? __spreadValues(__spreadValues({}, defaultsWrite$1), e) : defaultsWrite$1 - } - - function binaryReadOptions(e) { - return e ? __spreadValues(__spreadValues({}, defaultsRead$1), e) : defaultsRead$1 - } - - !function (i) { - i.symbol = Symbol.for("protobuf-ts/unknown"), i.onRead = (e, r, t, a, n) => { - (s(r) ? r[i.symbol] : r[i.symbol] = []).push({no: t, wireType: a, data: n}) - }, i.onWrite = (e, r, t) => { - for (var {no: a, wireType: n, data: s} of i.list(r)) t.tag(a, n).raw(s) - }, i.list = (e, r) => s(e) ? (e = e[i.symbol], r ? e.filter((e => e.no == r)) : e) : [], i.last = (e, r) => i.list(e, r).slice(-1)[0]; - const s = e => e && Array.isArray(e[i.symbol]) - }(UnknownFieldHandler = UnknownFieldHandler || {}); - const defaultsRead$1 = {readUnknownField: !0, readerFactory: e => new BinaryReader(e)}, - defaultsWrite$1 = {writeUnknownFields: !0, writerFactory: () => new BinaryWriter}, - MESSAGE_TYPE = (!function (e) { - e[e.Varint = 0] = "Varint", e[e.Bit64 = 1] = "Bit64", e[e.LengthDelimited = 2] = "LengthDelimited", e[e.StartGroup = 3] = "StartGroup", e[e.EndGroup = 4] = "EndGroup", e[e.Bit32 = 5] = "Bit32" - }(WireType = WireType || {}), Symbol.for("protobuf-ts/message-type")); - - function lowerCamelCase(r) { - let t = !1; - var a = []; - for (let e = 0; e < r.length; e++) { - var n = r.charAt(e); - "_" == n ? t = !0 : /\d/.test(n) ? (a.push(n), t = !0) : t ? (a.push(n.toUpperCase()), t = !1) : 0 == e ? a.push(n.toLowerCase()) : a.push(n) - } - return a.join("") - } - - function normalizeFieldInfo(e) { - var r; - return e.localName = null != (r = e.localName) ? r : lowerCamelCase(e.name), e.jsonName = null != (r = e.jsonName) ? r : lowerCamelCase(e.name), e.repeat = null != (r = e.repeat) ? r : 0, e.opt = null != (r = e.opt) ? r : !e.repeat && (!e.oneof && "message" == e.kind), e - } - - function isOneofGroup(e) { - if ("object" != typeof e || null === e || !e.hasOwnProperty("oneofKind")) return !1; - switch (typeof e.oneofKind) { - case"string": - return void 0 === e[e.oneofKind] ? !1 : 2 == Object.keys(e).length; - case"undefined": - return 1 == Object.keys(e).length; - default: - return !1 - } - } - - !function (e) { - e[e.DOUBLE = 1] = "DOUBLE", e[e.FLOAT = 2] = "FLOAT", e[e.INT64 = 3] = "INT64", e[e.UINT64 = 4] = "UINT64", e[e.INT32 = 5] = "INT32", e[e.FIXED64 = 6] = "FIXED64", e[e.FIXED32 = 7] = "FIXED32", e[e.BOOL = 8] = "BOOL", e[e.STRING = 9] = "STRING", e[e.BYTES = 12] = "BYTES", e[e.UINT32 = 13] = "UINT32", e[e.SFIXED32 = 15] = "SFIXED32", e[e.SFIXED64 = 16] = "SFIXED64", e[e.SINT32 = 17] = "SINT32", e[e.SINT64 = 18] = "SINT64" - }(ScalarType = ScalarType || {}), function (e) { - e[e.BIGINT = 0] = "BIGINT", e[e.STRING = 1] = "STRING", e[e.NUMBER = 2] = "NUMBER" - }(LongType = LongType || {}), function (e) { - e[e.NO = 0] = "NO", e[e.PACKED = 1] = "PACKED", e[e.UNPACKED = 2] = "UNPACKED" - }(RepeatType = RepeatType || {}); - - class ReflectionTypeCheck { - constructor(e) { - this.fields = null != (e = e.fields) ? e : [] - } - - prepare() { - if (!this.data) { - var e, r = [], t = [], a = []; - for (e of this.fields) if (e.oneof) a.includes(e.oneof) || (a.push(e.oneof), r.push(e.oneof), t.push(e.oneof)); else switch (t.push(e.localName), e.kind) { - case"scalar": - case"enum": - e.opt && !e.repeat || r.push(e.localName); - break; - case"message": - e.repeat && r.push(e.localName); - break; - case"map": - r.push(e.localName) - } - this.data = {req: r, known: t, oneofs: Object.values(a)} - } - } - - is(e, a, n = !1) { - if (!(a < 0)) { - if (null == e || "object" != typeof e) return !1; - this.prepare(); - let r = Object.keys(e), t = this.data; - if (r.length < t.req.length || t.req.some((e => !r.includes(e)))) return !1; - if (!n && r.some((e => !t.known.includes(e)))) return !1; - if (!(a < 1)) { - for (const i of t.oneofs) { - const o = e[i]; - if (!isOneofGroup(o)) return !1; - if (void 0 !== o.oneofKind) { - var s = this.fields.find((e => e.localName === o.oneofKind)); - if (!s) return !1; - if (!this.field(o[o.oneofKind], s, n, a)) return !1 - } - } - for (const l of this.fields) if (void 0 === l.oneof && !this.field(e[l.localName], l, n, a)) return !1 - } - } - return !0 - } - - field(e, r, t, a) { - var n = r.repeat; - switch (r.kind) { - case"scalar": - return void 0 === e ? r.opt : n ? this.scalars(e, r.T, a, r.L) : this.scalar(e, r.T, r.L); - case"enum": - return void 0 === e ? r.opt : n ? this.scalars(e, ScalarType.INT32, a) : this.scalar(e, ScalarType.INT32); - case"message": - return void 0 === e ? !0 : n ? this.messages(e, r.T(), t, a) : this.message(e, r.T(), t, a); - case"map": - if ("object" != typeof e || null === e) return !1; - if (a < 2) return !0; - if (!this.mapKeys(e, r.K, a)) return !1; - switch (r.V.kind) { - case"scalar": - return this.scalars(Object.values(e), r.V.T, a, r.V.L); - case"enum": - return this.scalars(Object.values(e), ScalarType.INT32, a); - case"message": - return this.messages(Object.values(e), r.V.T(), t, a) - } - } - return !0 - } - - message(e, r, t, a) { - return t ? r.isAssignable(e, a) : r.is(e, a) - } - - messages(r, t, e, a) { - if (!Array.isArray(r)) return !1; - if (!(a < 2)) if (e) { - for (let e = 0; e < r.length && e < a; e++) if (!t.isAssignable(r[e], a - 1)) return !1 - } else for (let e = 0; e < r.length && e < a; e++) if (!t.is(r[e], a - 1)) return !1; - return !0 - } - - scalar(e, r, t) { - var a = typeof e; - switch (r) { - case ScalarType.UINT64: - case ScalarType.FIXED64: - case ScalarType.INT64: - case ScalarType.SFIXED64: - case ScalarType.SINT64: - switch (t) { - case LongType.BIGINT: - return "bigint" == a; - case LongType.NUMBER: - return "number" == a && !isNaN(e); - default: - return "string" == a - } - case ScalarType.BOOL: - return "boolean" == a; - case ScalarType.STRING: - return "string" == a; - case ScalarType.BYTES: - return e instanceof Uint8Array; - case ScalarType.DOUBLE: - case ScalarType.FLOAT: - return "number" == a && !isNaN(e); - default: - return "number" == a && Number.isInteger(e) - } - } - - scalars(r, t, a, n) { - if (!Array.isArray(r)) return !1; - if (!(a < 2) && Array.isArray(r)) for (let e = 0; e < r.length && e < a; e++) if (!this.scalar(r[e], t, n)) return !1; - return !0 - } - - mapKeys(e, r, t) { - var a = Object.keys(e); - switch (r) { - case ScalarType.INT32: - case ScalarType.FIXED32: - case ScalarType.SFIXED32: - case ScalarType.SINT32: - case ScalarType.UINT32: - return this.scalars(a.slice(0, t).map((e => parseInt(e))), r, t); - case ScalarType.BOOL: - return this.scalars(a.slice(0, t).map((e => "true" == e || "false" != e && e)), r, t); - default: - return this.scalars(a, r, t, LongType.STRING) - } - } - } - - function typeofJsonValue(e) { - var r = typeof e; - if ("object" == r) { - if (Array.isArray(e)) return "array"; - if (null === e) return "null" - } - return r - } - - function isJsonObject(e) { - return null !== e && "object" == typeof e && !Array.isArray(e) - } - - let encTable = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""), - decTable = []; - for (let e = 0; e < encTable.length; e++) decTable[encTable[e].charCodeAt(0)] = e; - - function base64decode(r) { - let e = 3 * r.length / 4, - t = ("=" == r[r.length - 2] ? e -= 2 : "=" == r[r.length - 1] && --e, new Uint8Array(e)), a = 0, - n = 0, s, i = 0; - for (let e = 0; e < r.length; e++) { - if (void 0 === (s = decTable[r.charCodeAt(e)])) switch (r[e]) { - case"=": - n = 0; - case"\n": - case"\r": - case"\t": - case" ": - continue; - default: - throw Error("invalid base64 string.") - } - switch (n) { - case 0: - i = s, n = 1; - break; - case 1: - t[a++] = i << 2 | (48 & s) >> 4, i = s, n = 2; - break; - case 2: - t[a++] = (15 & i) << 4 | (60 & s) >> 2, i = s, n = 3; - break; - case 3: - t[a++] = (3 & i) << 6 | s, n = 0 - } - } - if (1 == n) throw Error("invalid base64 string."); - return t.subarray(0, a) - } - - function base64encode(r) { - let t = "", a = 0, n, s = 0; - for (let e = 0; e < r.length; e++) switch (n = r[e], a) { - case 0: - t += encTable[n >> 2], s = (3 & n) << 4, a = 1; - break; - case 1: - t += encTable[s | n >> 4], s = (15 & n) << 2, a = 2; - break; - case 2: - t = (t += encTable[s | n >> 6]) + encTable[63 & n], a = 0 - } - return a && (t = t + encTable[s] + "=", 1 == a && (t += "=")), t - } - - function reflectionLongConvert(e, r) { - switch (r) { - case LongType.BIGINT: - return e.toBigInt(); - case LongType.NUMBER: - return e.toNumber(); - default: - return e.toString() - } - } - - decTable["-".charCodeAt(0)] = encTable.indexOf("+"), decTable["_".charCodeAt(0)] = encTable.indexOf("/"); - - class ReflectionJsonReader { - constructor(e) { - this.info = e - } - - prepare() { - var e; - if (void 0 === this.fMap) { - this.fMap = {}; - for (const r of null != (e = this.info.fields) ? e : []) this.fMap[r.name] = r, this.fMap[r.jsonName] = r, this.fMap[r.localName] = r - } - } - - assert(e, r, t) { - if (!e) { - let e = typeofJsonValue(t); - throw "number" != e && "boolean" != e || (e = t.toString()), new Error(`Cannot parse JSON ${e} for ${this.info.typeName}#` + r) - } - } - - read(e, r, t) { - this.prepare(); - var a, n, s = []; - for ([a, n] of Object.entries(e)) { - var i = this.fMap[a]; - if (!i) { - if (t.ignoreUnknownFields) continue; - throw new Error(`Found unknown field while reading ${this.info.typeName} from JSON format. JSON key: ` + a) - } - var o = i.localName; - let e; - if (i.oneof) { - if (s.includes(i.oneof)) throw new Error(`Multiple members of the oneof group "${i.oneof}" of ${this.info.typeName} are present in JSON.`); - s.push(i.oneof), e = r[i.oneof] = {oneofKind: o} - } else e = r; - if ("map" == i.kind) { - if (null !== n) { - this.assert(isJsonObject(n), i.name, n); - var l, c, u = e[o]; - for ([l, c] of Object.entries(n)) { - this.assert(null !== c, i.name + " map value", null); - let e; - switch (i.V.kind) { - case"message": - e = i.V.T().internalJsonRead(c, t); - break; - case"enum": - if (!1 === (e = this.enum(i.V.T(), c, i.name, t.ignoreUnknownFields))) continue; - break; - case"scalar": - e = this.scalar(c, i.V.T, i.V.L, i.name) - } - this.assert(void 0 !== e, i.name + " map value", c); - let r = l; - i.K == ScalarType.BOOL && (r = "true" == r || "false" != r && r), u[r = this.scalar(r, i.K, LongType.STRING, i.name).toString()] = e - } - } - } else if (i.repeat) { - if (null !== n) { - this.assert(Array.isArray(n), i.name, n); - var f = e[o]; - for (const p of n) { - this.assert(null !== p, i.name, null); - let e; - switch (i.kind) { - case"message": - e = i.T().internalJsonRead(p, t); - break; - case"enum": - if (!1 === (e = this.enum(i.T(), p, i.name, t.ignoreUnknownFields))) continue; - break; - case"scalar": - e = this.scalar(p, i.T, i.L, i.name) - } - this.assert(void 0 !== e, i.name, n), f.push(e) - } - } - } else switch (i.kind) { - case"message": - null === n && "google.protobuf.Value" != i.T().typeName ? this.assert(void 0 === i.oneof, i.name + " (oneof member)", null) : e[o] = i.T().internalJsonRead(n, t, e[o]); - break; - case"enum": - var h = this.enum(i.T(), n, i.name, t.ignoreUnknownFields); - !1 !== h && (e[o] = h); - break; - case"scalar": - e[o] = this.scalar(n, i.T, i.L, i.name) - } - } - } - - enum(r, t, a, n) { - if ("google.protobuf.NullValue" == r[0] && assert(null === t, `Unable to parse field ${this.info.typeName}#${a}, enum ${r[0]} only accepts null.`), null === t) return 0; - switch (typeof t) { - case"number": - return assert(Number.isInteger(t), `Unable to parse field ${this.info.typeName}#${a}, enum can only be integral number, got ${t}.`), t; - case"string": - let e = t; - r[2] && t.substring(0, r[2].length) === r[2] && (e = t.substring(r[2].length)); - var s = r[1][e]; - return void 0 === s && n ? !1 : (assert("number" == typeof s, `Unable to parse field ${this.info.typeName}#${a}, enum ${r[0]} has no value for "${t}".`), s) - } - assert(!1, `Unable to parse field ${this.info.typeName}#${a}, cannot parse enum value from ${typeof t}".`) - } - - scalar(r, t, a, e) { - let n; - try { - switch (t) { - case ScalarType.DOUBLE: - case ScalarType.FLOAT: - if (null === r) return 0; - if ("NaN" === r) return Number.NaN; - if ("Infinity" === r) return Number.POSITIVE_INFINITY; - if ("-Infinity" === r) return Number.NEGATIVE_INFINITY; - if ("" === r) n = "empty string"; else if ("string" == typeof r && r.trim().length !== r.length) n = "extra whitespace"; else if ("string" == typeof r || "number" == typeof r) { - var s = Number(r); - if (Number.isNaN(s)) n = "not a number"; else { - if (Number.isFinite(s)) return t == ScalarType.FLOAT && assertFloat32(s), s; - n = "too large or small" - } - } - break; - case ScalarType.INT32: - case ScalarType.FIXED32: - case ScalarType.SFIXED32: - case ScalarType.SINT32: - case ScalarType.UINT32: - if (null === r) return 0; - let e; - if ("number" == typeof r ? e = r : "" === r ? n = "empty string" : "string" == typeof r && (r.trim().length !== r.length ? n = "extra whitespace" : e = Number(r)), void 0 === e) break; - return (t == ScalarType.UINT32 ? assertUInt32 : assertInt32)(e), e; - case ScalarType.INT64: - case ScalarType.SFIXED64: - case ScalarType.SINT64: - if (null === r) return reflectionLongConvert(PbLong.ZERO, a); - if ("number" != typeof r && "string" != typeof r) break; - return reflectionLongConvert(PbLong.from(r), a); - case ScalarType.FIXED64: - case ScalarType.UINT64: - if (null === r) return reflectionLongConvert(PbULong.ZERO, a); - if ("number" != typeof r && "string" != typeof r) break; - return reflectionLongConvert(PbULong.from(r), a); - case ScalarType.BOOL: - if (null === r) return !1; - if ("boolean" != typeof r) break; - return r; - case ScalarType.STRING: - if (null === r) return ""; - if ("string" != typeof r) { - n = "extra whitespace"; - break - } - try { - encodeURIComponent(r) - } catch (e) { - 0; - break - } - return r; - case ScalarType.BYTES: - if (null === r || "" === r) return new Uint8Array(0); - if ("string" != typeof r) break; - return base64decode(r) - } - } catch (e) { - n = e.message - } - this.assert(!1, e + (n ? " - " + n : ""), r) - } - } - - class ReflectionJsonWriter { - constructor(e) { - this.fields = null != (e = e.fields) ? e : [] - } - - write(e, r) { - var t, a, n = {}, s = e; - for (const i of this.fields) i.oneof ? (t = s[i.oneof]).oneofKind === i.localName && (a = "scalar" == i.kind || "enum" == i.kind ? __spreadProps(__spreadValues({}, r), {emitDefaultValues: !0}) : r, assert(void 0 !== (t = this.field(i, t[i.localName], a))), n[r.useProtoFieldName ? i.name : i.jsonName] = t) : void 0 !== (a = this.field(i, s[i.localName], r)) && (n[r.useProtoFieldName ? i.name : i.jsonName] = a); - return n - } - - field(r, t, a) { - let e = void 0; - if ("map" == r.kind) { - assert("object" == typeof t && null !== t); - var n = {}; - switch (r.V.kind) { - case"scalar": - for (var [s, i] of Object.entries(t)) { - i = this.scalar(r.V.T, i, r.name, !1, !0); - assert(void 0 !== i), n[s.toString()] = i - } - break; - case"message": - var o, l, c = r.V.T(); - for ([o, l] of Object.entries(t)) { - var u = this.message(c, l, r.name, a); - assert(void 0 !== u), n[o.toString()] = u - } - break; - case"enum": - var f, h, p = r.V.T(); - for ([f, h] of Object.entries(t)) { - assert(void 0 === h || "number" == typeof h); - var d = this.enum(p, h, r.name, !1, !0, a.enumAsInteger); - assert(void 0 !== d), n[f.toString()] = d - } - } - (a.emitDefaultValues || 0 < Object.keys(n).length) && (e = n) - } else if (r.repeat) { - assert(Array.isArray(t)); - var y = []; - switch (r.kind) { - case"scalar": - for (let e = 0; e < t.length; e++) { - var T = this.scalar(r.T, t[e], r.name, r.opt, !0); - assert(void 0 !== T), y.push(T) - } - break; - case"enum": - var g = r.T(); - for (let e = 0; e < t.length; e++) { - assert(void 0 === t[e] || "number" == typeof t[e]); - var b = this.enum(g, t[e], r.name, r.opt, !0, a.enumAsInteger); - assert(void 0 !== b), y.push(b) - } - break; - case"message": - var m = r.T(); - for (let e = 0; e < t.length; e++) { - var w = this.message(m, t[e], r.name, a); - assert(void 0 !== w), y.push(w) - } - } - (a.emitDefaultValues || 0 < y.length || a.emitDefaultValues) && (e = y) - } else switch (r.kind) { - case"scalar": - e = this.scalar(r.T, t, r.name, r.opt, a.emitDefaultValues); - break; - case"enum": - e = this.enum(r.T(), t, r.name, r.opt, a.emitDefaultValues, a.enumAsInteger); - break; - case"message": - e = this.message(r.T(), t, r.name, a) - } - return e - } - - enum(e, r, t, a, n, s) { - if ("google.protobuf.NullValue" == e[0]) return null; - if (void 0 === r) assert(a); else if (0 !== r || n || a) return assert("number" == typeof r), assert(Number.isInteger(r)), s || !e[1].hasOwnProperty(r) ? r : e[2] ? e[2] + e[1][r] : e[1][r] - } - - message(e, r, t, a) { - return void 0 === r ? a.emitDefaultValues ? null : void 0 : e.internalJsonWrite(r, a) - } - - scalar(e, r, t, a, n) { - if (void 0 === r) assert(a); else { - var s = n || a; - switch (e) { - case ScalarType.INT32: - case ScalarType.SFIXED32: - case ScalarType.SINT32: - return 0 === r ? s ? 0 : void 0 : (assertInt32(r), r); - case ScalarType.FIXED32: - case ScalarType.UINT32: - return 0 === r ? s ? 0 : void 0 : (assertUInt32(r), r); - case ScalarType.FLOAT: - assertFloat32(r); - case ScalarType.DOUBLE: - return 0 === r ? s ? 0 : void 0 : (assert("number" == typeof r), Number.isNaN(r) ? "NaN" : r === Number.POSITIVE_INFINITY ? "Infinity" : r === Number.NEGATIVE_INFINITY ? "-Infinity" : r); - case ScalarType.STRING: - return "" === r ? s ? "" : void 0 : (assert("string" == typeof r), r); - case ScalarType.BOOL: - return !1 === r ? !s && void 0 : (assert("boolean" == typeof r), r); - case ScalarType.UINT64: - case ScalarType.FIXED64: - assert("number" == typeof r || "string" == typeof r || "bigint" == typeof r); - var i = PbULong.from(r); - return i.isZero() && !s ? void 0 : i.toString(); - case ScalarType.INT64: - case ScalarType.SFIXED64: - case ScalarType.SINT64: - assert("number" == typeof r || "string" == typeof r || "bigint" == typeof r); - i = PbLong.from(r); - return i.isZero() && !s ? void 0 : i.toString(); - case ScalarType.BYTES: - return (assert(r instanceof Uint8Array), r.byteLength) ? base64encode(r) : s ? "" : void 0 - } - } - } - } - - function reflectionScalarDefault(e, r = LongType.STRING) { - switch (e) { - case ScalarType.BOOL: - return !1; - case ScalarType.UINT64: - case ScalarType.FIXED64: - return reflectionLongConvert(PbULong.ZERO, r); - case ScalarType.INT64: - case ScalarType.SFIXED64: - case ScalarType.SINT64: - return reflectionLongConvert(PbLong.ZERO, r); - case ScalarType.DOUBLE: - case ScalarType.FLOAT: - return 0; - case ScalarType.BYTES: - return new Uint8Array(0); - case ScalarType.STRING: - return ""; - default: - return 0 - } - } - - class ReflectionBinaryReader { - constructor(e) { - this.info = e - } - - prepare() { - var e; - this.fieldNoToField || (e = null != (e = this.info.fields) ? e : [], this.fieldNoToField = new Map(e.map((e => [e.no, e])))) - } - - read(a, n, s, e) { - this.prepare(); - for (var r = void 0 === e ? a.len : a.pos + e; a.pos < r;) { - var [t, i] = a.tag(), o = this.fieldNoToField.get(t); - if (o) { - let e = n, r = o.repeat, t = o.localName; - switch (o.oneof && (e = e[o.oneof]).oneofKind !== t && (e = n[o.oneof] = {oneofKind: t}), o.kind) { - case"scalar": - case"enum": - var l = "enum" == o.kind ? ScalarType.INT32 : o.T, - c = "scalar" == o.kind ? o.L : void 0; - if (r) { - var u = e[t]; - if (i == WireType.LengthDelimited && l != ScalarType.STRING && l != ScalarType.BYTES) for (var f = a.uint32() + a.pos; a.pos < f;) u.push(this.scalar(a, l, c)); else u.push(this.scalar(a, l, c)) - } else e[t] = this.scalar(a, l, c); - break; - case"message": - r ? (h = e[t], p = o.T().internalBinaryRead(a, a.uint32(), s), h.push(p)) : e[t] = o.T().internalBinaryRead(a, a.uint32(), s, e[t]); - break; - case"map": - var [h, p] = this.mapEntry(o, a, s); - e[t][h] = p - } - } else { - var d = s.readUnknownField; - if ("throw" == d) throw new Error(`Unknown field ${t} (wire type ${i}) for ` + this.info.typeName); - var y = a.skip(i); - !1 !== d && (!0 === d ? UnknownFieldHandler.onRead : d)(this.info.typeName, n, t, i, y) - } - } - } - - mapEntry(e, r, t) { - var a = r.uint32(), n = r.pos + a; - let s = void 0, i = void 0; - for (; r.pos < n;) { - var [o, l] = r.tag(); - switch (o) { - case 1: - s = e.K == ScalarType.BOOL ? r.bool().toString() : this.scalar(r, e.K, LongType.STRING); - break; - case 2: - switch (e.V.kind) { - case"scalar": - i = this.scalar(r, e.V.T, e.V.L); - break; - case"enum": - i = r.int32(); - break; - case"message": - i = e.V.T().internalBinaryRead(r, r.uint32(), t) - } - break; - default: - throw new Error(`Unknown field ${o} (wire type ${l}) in map entry for ${this.info.typeName}#` + e.name) - } - } - if (void 0 === s && (a = reflectionScalarDefault(e.K), s = e.K == ScalarType.BOOL ? a.toString() : a), void 0 === i) switch (e.V.kind) { - case"scalar": - i = reflectionScalarDefault(e.V.T, e.V.L); - break; - case"enum": - i = 0; - break; - case"message": - i = e.V.T().create() - } - return [s, i] - } - - scalar(e, r, t) { - switch (r) { - case ScalarType.INT32: - return e.int32(); - case ScalarType.STRING: - return e.string(); - case ScalarType.BOOL: - return e.bool(); - case ScalarType.DOUBLE: - return e.double(); - case ScalarType.FLOAT: - return e.float(); - case ScalarType.INT64: - return reflectionLongConvert(e.int64(), t); - case ScalarType.UINT64: - return reflectionLongConvert(e.uint64(), t); - case ScalarType.FIXED64: - return reflectionLongConvert(e.fixed64(), t); - case ScalarType.FIXED32: - return e.fixed32(); - case ScalarType.BYTES: - return e.bytes(); - case ScalarType.UINT32: - return e.uint32(); - case ScalarType.SFIXED32: - return e.sfixed32(); - case ScalarType.SFIXED64: - return reflectionLongConvert(e.sfixed64(), t); - case ScalarType.SINT32: - return e.sint32(); - case ScalarType.SINT64: - return reflectionLongConvert(e.sint64(), t) - } - } - } - - class ReflectionBinaryWriter { - constructor(e) { - this.info = e - } - - prepare() { - var e; - this.fields || (e = this.info.fields ? this.info.fields.concat() : [], this.fields = e.sort(((e, r) => e.no - r.no))) - } - - write(n, s, i) { - this.prepare(); - for (const f of this.fields) { - let e, r, t = f.repeat, a = f.localName; - if (f.oneof) { - var o = n[f.oneof]; - if (o.oneofKind !== a) continue; - e = o[a], r = !0 - } else e = n[a], r = !1; - switch (f.kind) { - case"scalar": - case"enum": - var l = "enum" == f.kind ? ScalarType.INT32 : f.T; - if (t) if (assert(Array.isArray(e)), t == RepeatType.PACKED) this.packed(s, l, f.no, e); else for (const h of e) this.scalar(s, l, f.no, h, !0); else void 0 === e ? assert(f.opt) : this.scalar(s, l, f.no, e, r || f.opt); - break; - case"message": - if (t) { - assert(Array.isArray(e)); - for (const p of e) this.message(s, i, f.T(), f.no, p) - } else this.message(s, i, f.T(), f.no, e); - break; - case"map": - assert("object" == typeof e && null !== e); - for (var [c, u] of Object.entries(e)) this.mapEntry(s, i, f, c, u) - } - } - var e = i.writeUnknownFields; - !1 !== e && (!0 === e ? UnknownFieldHandler.onWrite : e)(this.info.typeName, n, s) - } - - mapEntry(e, r, t, a, n) { - e.tag(t.no, WireType.LengthDelimited), e.fork(); - let s = a; - switch (t.K) { - case ScalarType.INT32: - case ScalarType.FIXED32: - case ScalarType.UINT32: - case ScalarType.SFIXED32: - case ScalarType.SINT32: - s = Number.parseInt(a); - break; - case ScalarType.BOOL: - assert("true" == a || "false" == a), s = "true" == a - } - switch (this.scalar(e, t.K, 1, s, !0), t.V.kind) { - case"scalar": - this.scalar(e, t.V.T, 2, n, !0); - break; - case"enum": - this.scalar(e, ScalarType.INT32, 2, n, !0); - break; - case"message": - this.message(e, r, t.V.T(), 2, n) - } - e.join() - } - - message(e, r, t, a, n) { - void 0 !== n && (t.internalBinaryWrite(n, e.tag(a, WireType.LengthDelimited).fork(), r), e.join()) - } - - scalar(e, r, t, a, n) { - var [r, s, i] = this.scalarInfo(r, a); - i && !n || (e.tag(t, r), e[s](a)) - } - - packed(r, e, t, a) { - if (a.length) { - assert(e !== ScalarType.BYTES && e !== ScalarType.STRING), r.tag(t, WireType.LengthDelimited), r.fork(); - var [, n] = this.scalarInfo(e); - for (let e = 0; e < a.length; e++) r[n](a[e]); - r.join() - } - } - - scalarInfo(e, r) { - let t = WireType.Varint, a; - var n = void 0 === r; - let s = 0 === r; - switch (e) { - case ScalarType.INT32: - a = "int32"; - break; - case ScalarType.STRING: - s = n || !r.length, t = WireType.LengthDelimited, a = "string"; - break; - case ScalarType.BOOL: - s = !1 === r, a = "bool"; - break; - case ScalarType.UINT32: - a = "uint32"; - break; - case ScalarType.DOUBLE: - t = WireType.Bit64, a = "double"; - break; - case ScalarType.FLOAT: - t = WireType.Bit32, a = "float"; - break; - case ScalarType.INT64: - s = n || PbLong.from(r).isZero(), a = "int64"; - break; - case ScalarType.UINT64: - s = n || PbULong.from(r).isZero(), a = "uint64"; - break; - case ScalarType.FIXED64: - s = n || PbULong.from(r).isZero(), t = WireType.Bit64, a = "fixed64"; - break; - case ScalarType.BYTES: - s = n || !r.byteLength, t = WireType.LengthDelimited, a = "bytes"; - break; - case ScalarType.FIXED32: - t = WireType.Bit32, a = "fixed32"; - break; - case ScalarType.SFIXED32: - t = WireType.Bit32, a = "sfixed32"; - break; - case ScalarType.SFIXED64: - s = n || PbLong.from(r).isZero(), t = WireType.Bit64, a = "sfixed64"; - break; - case ScalarType.SINT32: - a = "sint32"; - break; - case ScalarType.SINT64: - s = n || PbLong.from(r).isZero(), a = "sint64" - } - return [t, a, n || s] - } - } - - function reflectionCreate(e) { - var r, t = {}; - Object.defineProperty(t, MESSAGE_TYPE, {enumerable: !1, value: e}); - for (r of e.fields) { - var a = r.localName; - if (!r.opt) if (r.oneof) t[r.oneof] = {oneofKind: void 0}; else if (r.repeat) t[a] = []; else switch (r.kind) { - case"scalar": - t[a] = reflectionScalarDefault(r.T, r.L); - break; - case"enum": - t[a] = 0; - break; - case"map": - t[a] = {} - } - } - return t - } - - function reflectionMergePartial(e, r, t) { - let a, n = t, s; - for (var i of e.fields) { - var o = i.localName; - if (i.oneof) { - var l = n[i.oneof]; - if (void 0 === l) continue; - if (a = l[o], (s = r[i.oneof]).oneofKind = l.oneofKind, void 0 === a) { - delete s[o]; - continue - } - } else if (a = n[o], s = r, void 0 === a) continue; - switch (i.kind) { - case"scalar": - case"enum": - i.repeat ? s[o] = a.concat() : s[o] = a; - break; - case"message": - var c = i.T(); - if (i.repeat) for (let e = 0; e < a.length; e++) s[o][e] = c.create(a[e]); else void 0 === s[o] ? s[o] = c.create(a) : c.mergePartial(s[o], a); - break; - case"map": - switch (i.V.kind) { - case"scalar": - case"enum": - Object.assign(s[o], a); - break; - case"message": - var u, f = i.V.T(); - for (u of Object.keys(a)) s[o][u] = f.create(a[u]) - } - } - } - } - - const defaultsWrite = { - emitDefaultValues: !1, - enumAsInteger: !1, - useProtoFieldName: !1, - prettySpaces: 0 - }, defaultsRead = {ignoreUnknownFields: !1}; - - function jsonReadOptions(e) { - return e ? __spreadValues(__spreadValues({}, defaultsRead), e) : defaultsRead - } - - function jsonWriteOptions(e) { - return e ? __spreadValues(__spreadValues({}, defaultsWrite), e) : defaultsWrite - } - - function reflectionEquals(e, r, t) { - if (r !== t) { - if (!r || !t) return !1; - for (var a of e.fields) { - var n = a.localName, s = (a.oneof ? r[a.oneof] : r)[n], i = (a.oneof ? t[a.oneof] : t)[n]; - switch (a.kind) { - case"enum": - case"scalar": - var o = "enum" == a.kind ? ScalarType.INT32 : a.T; - if ((a.repeat ? repeatedPrimitiveEq : primitiveEq)(o, s, i)) break; - return !1; - case"map": - if ("message" == a.V.kind ? repeatedMsgEq(a.V.T(), objectValues(s), objectValues(i)) : repeatedPrimitiveEq("enum" == a.V.kind ? ScalarType.INT32 : a.V.T, objectValues(s), objectValues(i))) break; - return !1; - case"message": - o = a.T(); - if (a.repeat ? repeatedMsgEq(o, s, i) : o.equals(s, i)) break; - return !1 - } - } - } - return !0 - } - - const objectValues = Object.values; - - function primitiveEq(e, r, t) { - if (r !== t) { - if (e !== ScalarType.BYTES) return !1; - var a = r, n = t; - if (a.length !== n.length) return !1; - for (let e = 0; e < a.length; e++) if (a[e] != n[e]) return !1 - } - return !0 - } - - function repeatedPrimitiveEq(r, t, a) { - if (t.length !== a.length) return !1; - for (let e = 0; e < t.length; e++) if (!primitiveEq(r, t[e], a[e])) return !1; - return !0 - } - - function repeatedMsgEq(r, t, a) { - if (t.length !== a.length) return !1; - for (let e = 0; e < t.length; e++) if (!r.equals(t[e], a[e])) return !1; - return !0 - } - - class MessageType { - constructor(e, r, t) { - this.defaultCheckDepth = 16, this.typeName = e, this.fields = r.map(normalizeFieldInfo), this.options = null != t ? t : {}, this.refTypeCheck = new ReflectionTypeCheck(this), this.refJsonReader = new ReflectionJsonReader(this), this.refJsonWriter = new ReflectionJsonWriter(this), this.refBinReader = new ReflectionBinaryReader(this), this.refBinWriter = new ReflectionBinaryWriter(this) - } - - create(e) { - var r = reflectionCreate(this); - return void 0 !== e && reflectionMergePartial(this, r, e), r - } - - clone(e) { - var r = this.create(); - return reflectionMergePartial(this, r, e), r - } - - equals(e, r) { - return reflectionEquals(this, e, r) - } - - is(e, r = this.defaultCheckDepth) { - return this.refTypeCheck.is(e, r, !1) - } - - isAssignable(e, r = this.defaultCheckDepth) { - return this.refTypeCheck.is(e, r, !0) - } - - mergePartial(e, r) { - reflectionMergePartial(this, e, r) - } - - fromBinary(e, r) { - r = binaryReadOptions(r); - return this.internalBinaryRead(r.readerFactory(e), e.byteLength, r) - } - - fromJson(e, r) { - return this.internalJsonRead(e, jsonReadOptions(r)) - } - - fromJsonString(e, r) { - e = JSON.parse(e); - return this.fromJson(e, r) - } - - toJson(e, r) { - return this.internalJsonWrite(e, jsonWriteOptions(r)) - } - - toJsonString(e, r) { - var e = this.toJson(e, r); - return JSON.stringify(e, null, null != (e = null == r ? void 0 : r.prettySpaces) ? e : 0) - } - - toBinary(e, r) { - r = binaryWriteOptions(r); - return this.internalBinaryWrite(e, r.writerFactory(), r).finish() - } - - internalJsonRead(e, r, t) { - if (null === e || "object" != typeof e || Array.isArray(e)) throw new Error(`Unable to parse message ${this.typeName} from JSON ${typeofJsonValue(e)}.`); - return t = null != t ? t : this.create(), this.refJsonReader.read(e, t, r), t - } - - internalJsonWrite(e, r) { - return this.refJsonWriter.write(e, r) - } - - internalBinaryWrite(e, r, t) { - return this.refBinWriter.write(e, r, t), r - } - - internalBinaryRead(e, r, t, a) { - a = null != a ? a : this.create(); - return this.refBinReader.read(e, a, t, r), a - } - }; + var UnknownFieldHandler,WireType,ScalarType,LongType,RepeatType,__defProp=Object.defineProperty,__defProps=Object.defineProperties,__getOwnPropDescs=Object.getOwnPropertyDescriptors,__getOwnPropSymbols=Object.getOwnPropertySymbols,__hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable,__defNormalProp=(e,r,t)=>r in e?__defProp(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[r]=t,__spreadValues=(e,r)=>{for(var t in r=r||{})__hasOwnProp.call(r,t)&&__defNormalProp(e,t,r[t]);if(__getOwnPropSymbols)for(var t of __getOwnPropSymbols(r))__propIsEnum.call(r,t)&&__defNormalProp(e,t,r[t]);return e},__spreadProps=(e,r)=>__defProps(e,__getOwnPropDescs(r));function varint64read(){let r=0,t=0;for(let e=0;e<28;e+=7){var a=this.buf[this.pos++];if(r|=(127&a)<>4,0==(128&e))return this.assertBounds(),[r,t];for(let e=3;e<=31;e+=7){var n=this.buf[this.pos++];if(t|=(127&n)<>>e,s=!(n>>>7==0&&0==t);if(a.push(255&(s?128|n:n)),!s)return}var e=r>>>28&15|(7&t)<<4,i=!(t>>3==0);if(a.push(255&(i?128|e:e)),i){for(let e=3;e<31;e+=7){var o=t>>>e,l=!(o>>>7==0);if(a.push(255&(l?128|o:o)),!l)return}a.push(t>>>31&1)}}const TWO_PWR_32_DBL$1=4294967296;function int64fromString(t){var e="-"==t[0];e&&(t=t.slice(1));let a=0,n=0;function r(e,r){e=Number(t.slice(e,r));n*=1e6,(a=1e6*a+e)>=TWO_PWR_32_DBL$1&&(n+=a/TWO_PWR_32_DBL$1|0,a%=TWO_PWR_32_DBL$1)}return r(-24,-18),r(-18,-12),r(-12,-6),r(-6),[e,a,n]}function int64toString(e,r){if(r<=2097151)return""+(TWO_PWR_32_DBL$1*r+e);var t=(e>>>24|r<<8)>>>0&16777215,r=r>>16&65535;let a=(16777215&e)+6777216*t+6710656*r,n=t+8147497*r,s=2*r;e=1e7;function i(e,r){e=e?String(e):"";return r?"0000000".slice(e.length)+e:e}return a>=e&&(n+=Math.floor(a/e),a%=e),n>=e&&(s+=Math.floor(n/e),n%=e),i(s,0)+i(n,s)+i(a,1)}function varint32write(r,t){if(0<=r){for(;127>>=7;t.push(r)}else{for(let e=0;e<9;e++)t.push(127&r|128),r>>=7;t.push(1)}}function varint32read(){let r=this.buf[this.pos++];var e=127&r;if(0==(128&r))return this.assertBounds(),e;if(e|=(127&(r=this.buf[this.pos++]))<<7,0==(128&r))return this.assertBounds(),e;if(e|=(127&(r=this.buf[this.pos++]))<<14,0==(128&r))return this.assertBounds(),e;if(e|=(127&(r=this.buf[this.pos++]))<<21,0==(128&r))return this.assertBounds(),e;e|=(15&(r=this.buf[this.pos++]))<<28;for(let e=5;0!=(128&r)&&e<10;e++)r=this.buf[this.pos++];if(0!=(128&r))throw new Error("invalid varint");return this.assertBounds(),e>>>0}function detectBi(){var e=new DataView(new ArrayBuffer(8));return void 0!==globalThis.BigInt&&"function"==typeof e.getBigInt64&&"function"==typeof e.getBigUint64&&"function"==typeof e.setBigInt64&&"function"==typeof e.setBigUint64?{MIN:BigInt("-9223372036854775808"),MAX:BigInt("9223372036854775807"),UMIN:BigInt("0"),UMAX:BigInt("18446744073709551615"),C:BigInt,V:e}:void 0}const BI=detectBi();function assertBi(e){if(!e)throw new Error("BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support")}const RE_DECIMAL_STR=/^-?[0-9]+$/,TWO_PWR_32_DBL=4294967296;class SharedPbLong{constructor(e,r){this.lo=0|e,this.hi=0|r}isZero(){return 0==this.lo&&0==this.hi}toNumber(){var e=this.hi*TWO_PWR_32_DBL+(this.lo>>>0);if(Number.isSafeInteger(e))return e;throw new Error("cannot convert to safe number")}}const _PbULong=class extends SharedPbLong{static from(e){if(BI)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=BI.C(e);case"number":if(0===e)return this.ZERO;e=BI.C(e);case"bigint":if(!e)return this.ZERO;if(eBI.UMAX)throw new Error("ulong too large");return BI.V.setBigUint64(0,e,!0),new _PbULong(BI.V.getInt32(0,!0),BI.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;if(e=e.trim(),!RE_DECIMAL_STR.test(e))throw new Error("string is no integer");var[r,t,a]=int64fromString(e);if(r)throw new Error("signed value");return new _PbULong(t,a);case"number":if(0==e)return this.ZERO;if(!Number.isSafeInteger(e))throw new Error("number is no integer");if(e<0)throw new Error("signed value for ulong");return new _PbULong(e,e/TWO_PWR_32_DBL)}throw new Error("unknown value "+typeof e)}toString(){return BI?this.toBigInt().toString():int64toString(this.lo,this.hi)}toBigInt(){return assertBi(BI),BI.V.setInt32(0,this.lo,!0),BI.V.setInt32(4,this.hi,!0),BI.V.getBigUint64(0,!0)}};let PbULong=_PbULong;PbULong.ZERO=new _PbULong(0,0);const _PbLong=class extends SharedPbLong{static from(e){if(BI)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=BI.C(e);case"number":if(0===e)return this.ZERO;e=BI.C(e);case"bigint":if(!e)return this.ZERO;if(eBI.MAX)throw new Error("ulong too large");return BI.V.setBigInt64(0,e,!0),new _PbLong(BI.V.getInt32(0,!0),BI.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;var r,t,a;if(e=e.trim(),RE_DECIMAL_STR.test(e))return[r,a,t]=int64fromString(e),a=new _PbLong(a,t),r?a.negate():a;throw new Error("string is no integer");case"number":if(0==e)return this.ZERO;if(Number.isSafeInteger(e))return 0>>3,e=7&e;if(r<=0||e<0||5this.len)throw new RangeError("premature EOF")}int32(){return 0|this.uint32()}sint32(){var e=this.uint32();return e>>>1^-(1&e)}int64(){return new PbLong(...this.varint64())}uint64(){return new PbULong(...this.varint64())}sint64(){var[e,r]=this.varint64(),t=-(1&e),e=(e>>>1|(1&r)<<31)^t,r=r>>>1^t;return new PbLong(e,r)}bool(){var[e,r]=this.varint64();return 0!==e||0!==r}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return new PbULong(this.sfixed32(),this.sfixed32())}sfixed64(){return new PbLong(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){var e=this.uint32(),r=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(r,r+e)}string(){return this.textDecoder.decode(this.bytes())}}function assert(e,r){if(!e)throw new Error(r)}const FLOAT32_MAX=34028234663852886e22,FLOAT32_MIN=-34028234663852886e22,UINT32_MAX=4294967295,INT32_MAX=2147483647,INT32_MIN=-2147483648;function assertInt32(e){if("number"!=typeof e)throw new Error("invalid int 32: "+typeof e);if(!Number.isInteger(e)||e>INT32_MAX||eUINT32_MAX||e<0)throw new Error("invalid uint 32: "+e)}function assertFloat32(e){if("number"!=typeof e)throw new Error("invalid float 32: "+typeof e);if(Number.isFinite(e)&&(e>FLOAT32_MAX||e>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for(assertUInt32(e);127>>=7;return this.buf.push(e),this}int32(e){return assertInt32(e),varint32write(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){e=this.textEncoder.encode(e);return this.uint32(e.byteLength),this.raw(e)}float(e){assertFloat32(e);var r=new Uint8Array(4);return new DataView(r.buffer).setFloat32(0,e,!0),this.raw(r)}double(e){var r=new Uint8Array(8);return new DataView(r.buffer).setFloat64(0,e,!0),this.raw(r)}fixed32(e){assertUInt32(e);var r=new Uint8Array(4);return new DataView(r.buffer).setUint32(0,e,!0),this.raw(r)}sfixed32(e){assertInt32(e);var r=new Uint8Array(4);return new DataView(r.buffer).setInt32(0,e,!0),this.raw(r)}sint32(e){return assertInt32(e),varint32write(e=(e<<1^e>>31)>>>0,this.buf),this}sfixed64(e){var r=new Uint8Array(8),t=new DataView(r.buffer),e=PbLong.from(e);return t.setInt32(0,e.lo,!0),t.setInt32(4,e.hi,!0),this.raw(r)}fixed64(e){var r=new Uint8Array(8),t=new DataView(r.buffer),e=PbULong.from(e);return t.setInt32(0,e.lo,!0),t.setInt32(4,e.hi,!0),this.raw(r)}int64(e){e=PbLong.from(e);return varint64write(e.lo,e.hi,this.buf),this}sint64(e){var e=PbLong.from(e),r=e.hi>>31;return varint64write(e.lo<<1^r,(e.hi<<1|e.lo>>>31)^r,this.buf),this}uint64(e){e=PbULong.from(e);return varint64write(e.lo,e.hi,this.buf),this}}function binaryWriteOptions(e){return e?__spreadValues(__spreadValues({},defaultsWrite$1),e):defaultsWrite$1}function binaryReadOptions(e){return e?__spreadValues(__spreadValues({},defaultsRead$1),e):defaultsRead$1}!function(i){i.symbol=Symbol.for("protobuf-ts/unknown"),i.onRead=(e,r,t,a,n)=>{(s(r)?r[i.symbol]:r[i.symbol]=[]).push({no:t,wireType:a,data:n})},i.onWrite=(e,r,t)=>{for(var{no:a,wireType:n,data:s}of i.list(r))t.tag(a,n).raw(s)},i.list=(e,r)=>s(e)?(e=e[i.symbol],r?e.filter((e=>e.no==r)):e):[],i.last=(e,r)=>i.list(e,r).slice(-1)[0];const s=e=>e&&Array.isArray(e[i.symbol])}(UnknownFieldHandler=UnknownFieldHandler||{});const defaultsRead$1={readUnknownField:!0,readerFactory:e=>new BinaryReader(e)},defaultsWrite$1={writeUnknownFields:!0,writerFactory:()=>new BinaryWriter},MESSAGE_TYPE=(!function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"}(WireType=WireType||{}),Symbol.for("protobuf-ts/message-type"));function lowerCamelCase(r){let t=!1;var a=[];for(let e=0;e!r.includes(e))))return!1;if(!n&&r.some((e=>!t.known.includes(e))))return!1;if(!(a<1)){for(const i of t.oneofs){const o=e[i];if(!isOneofGroup(o))return!1;if(void 0!==o.oneofKind){var s=this.fields.find((e=>e.localName===o.oneofKind));if(!s)return!1;if(!this.field(o[o.oneofKind],s,n,a))return!1}}for(const l of this.fields)if(void 0===l.oneof&&!this.field(e[l.localName],l,n,a))return!1}}return!0}field(e,r,t,a){var n=r.repeat;switch(r.kind){case"scalar":return void 0===e?r.opt:n?this.scalars(e,r.T,a,r.L):this.scalar(e,r.T,r.L);case"enum":return void 0===e?r.opt:n?this.scalars(e,ScalarType.INT32,a):this.scalar(e,ScalarType.INT32);case"message":return void 0===e?!0:n?this.messages(e,r.T(),t,a):this.message(e,r.T(),t,a);case"map":if("object"!=typeof e||null===e)return!1;if(a<2)return!0;if(!this.mapKeys(e,r.K,a))return!1;switch(r.V.kind){case"scalar":return this.scalars(Object.values(e),r.V.T,a,r.V.L);case"enum":return this.scalars(Object.values(e),ScalarType.INT32,a);case"message":return this.messages(Object.values(e),r.V.T(),t,a)}}return!0}message(e,r,t,a){return t?r.isAssignable(e,a):r.is(e,a)}messages(r,t,e,a){if(!Array.isArray(r))return!1;if(!(a<2))if(e){for(let e=0;eparseInt(e))),r,t);case ScalarType.BOOL:return this.scalars(a.slice(0,t).map((e=>"true"==e||"false"!=e&&e)),r,t);default:return this.scalars(a,r,t,LongType.STRING)}}}function typeofJsonValue(e){var r=typeof e;if("object"==r){if(Array.isArray(e))return"array";if(null===e)return"null"}return r}function isJsonObject(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}let encTable="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),decTable=[];for(let e=0;e>4,i=s,n=2;break;case 2:t[a++]=(15&i)<<4|(60&s)>>2,i=s,n=3;break;case 3:t[a++]=(3&i)<<6|s,n=0}}if(1==n)throw Error("invalid base64 string.");return t.subarray(0,a)}function base64encode(r){let t="",a=0,n,s=0;for(let e=0;e>2],s=(3&n)<<4,a=1;break;case 1:t+=encTable[s|n>>4],s=(15&n)<<2,a=2;break;case 2:t=(t+=encTable[s|n>>6])+encTable[63&n],a=0}return a&&(t=t+encTable[s]+"=",1==a&&(t+="=")),t}function reflectionLongConvert(e,r){switch(r){case LongType.BIGINT:return e.toBigInt();case LongType.NUMBER:return e.toNumber();default:return e.toString()}}decTable["-".charCodeAt(0)]=encTable.indexOf("+"),decTable["_".charCodeAt(0)]=encTable.indexOf("/");class ReflectionJsonReader{constructor(e){this.info=e}prepare(){var e;if(void 0===this.fMap){this.fMap={};for(const r of null!=(e=this.info.fields)?e:[])this.fMap[r.name]=r,this.fMap[r.jsonName]=r,this.fMap[r.localName]=r}}assert(e,r,t){if(!e){let e=typeofJsonValue(t);throw"number"!=e&&"boolean"!=e||(e=t.toString()),new Error(`Cannot parse JSON ${e} for ${this.info.typeName}#`+r)}}read(e,r,t){this.prepare();var a,n,s=[];for([a,n]of Object.entries(e)){var i=this.fMap[a];if(!i){if(t.ignoreUnknownFields)continue;throw new Error(`Found unknown field while reading ${this.info.typeName} from JSON format. JSON key: `+a)}var o=i.localName;let e;if(i.oneof){if(s.includes(i.oneof))throw new Error(`Multiple members of the oneof group "${i.oneof}" of ${this.info.typeName} are present in JSON.`);s.push(i.oneof),e=r[i.oneof]={oneofKind:o}}else e=r;if("map"==i.kind){if(null!==n){this.assert(isJsonObject(n),i.name,n);var l,c,u=e[o];for([l,c]of Object.entries(n)){this.assert(null!==c,i.name+" map value",null);let e;switch(i.V.kind){case"message":e=i.V.T().internalJsonRead(c,t);break;case"enum":if(!1===(e=this.enum(i.V.T(),c,i.name,t.ignoreUnknownFields)))continue;break;case"scalar":e=this.scalar(c,i.V.T,i.V.L,i.name)}this.assert(void 0!==e,i.name+" map value",c);let r=l;i.K==ScalarType.BOOL&&(r="true"==r||"false"!=r&&r),u[r=this.scalar(r,i.K,LongType.STRING,i.name).toString()]=e}}}else if(i.repeat){if(null!==n){this.assert(Array.isArray(n),i.name,n);var f=e[o];for(const p of n){this.assert(null!==p,i.name,null);let e;switch(i.kind){case"message":e=i.T().internalJsonRead(p,t);break;case"enum":if(!1===(e=this.enum(i.T(),p,i.name,t.ignoreUnknownFields)))continue;break;case"scalar":e=this.scalar(p,i.T,i.L,i.name)}this.assert(void 0!==e,i.name,n),f.push(e)}}}else switch(i.kind){case"message":null===n&&"google.protobuf.Value"!=i.T().typeName?this.assert(void 0===i.oneof,i.name+" (oneof member)",null):e[o]=i.T().internalJsonRead(n,t,e[o]);break;case"enum":var h=this.enum(i.T(),n,i.name,t.ignoreUnknownFields);!1!==h&&(e[o]=h);break;case"scalar":e[o]=this.scalar(n,i.T,i.L,i.name)}}}enum(r,t,a,n){if("google.protobuf.NullValue"==r[0]&&assert(null===t,`Unable to parse field ${this.info.typeName}#${a}, enum ${r[0]} only accepts null.`),null===t)return 0;switch(typeof t){case"number":return assert(Number.isInteger(t),`Unable to parse field ${this.info.typeName}#${a}, enum can only be integral number, got ${t}.`),t;case"string":let e=t;r[2]&&t.substring(0,r[2].length)===r[2]&&(e=t.substring(r[2].length));var s=r[1][e];return void 0===s&&n?!1:(assert("number"==typeof s,`Unable to parse field ${this.info.typeName}#${a}, enum ${r[0]} has no value for "${t}".`),s)}assert(!1,`Unable to parse field ${this.info.typeName}#${a}, cannot parse enum value from ${typeof t}".`)}scalar(r,t,a,e){let n;try{switch(t){case ScalarType.DOUBLE:case ScalarType.FLOAT:if(null===r)return 0;if("NaN"===r)return Number.NaN;if("Infinity"===r)return Number.POSITIVE_INFINITY;if("-Infinity"===r)return Number.NEGATIVE_INFINITY;if(""===r)n="empty string";else if("string"==typeof r&&r.trim().length!==r.length)n="extra whitespace";else if("string"==typeof r||"number"==typeof r){var s=Number(r);if(Number.isNaN(s))n="not a number";else{if(Number.isFinite(s))return t==ScalarType.FLOAT&&assertFloat32(s),s;n="too large or small"}}break;case ScalarType.INT32:case ScalarType.FIXED32:case ScalarType.SFIXED32:case ScalarType.SINT32:case ScalarType.UINT32:if(null===r)return 0;let e;if("number"==typeof r?e=r:""===r?n="empty string":"string"==typeof r&&(r.trim().length!==r.length?n="extra whitespace":e=Number(r)),void 0===e)break;return(t==ScalarType.UINT32?assertUInt32:assertInt32)(e),e;case ScalarType.INT64:case ScalarType.SFIXED64:case ScalarType.SINT64:if(null===r)return reflectionLongConvert(PbLong.ZERO,a);if("number"!=typeof r&&"string"!=typeof r)break;return reflectionLongConvert(PbLong.from(r),a);case ScalarType.FIXED64:case ScalarType.UINT64:if(null===r)return reflectionLongConvert(PbULong.ZERO,a);if("number"!=typeof r&&"string"!=typeof r)break;return reflectionLongConvert(PbULong.from(r),a);case ScalarType.BOOL:if(null===r)return!1;if("boolean"!=typeof r)break;return r;case ScalarType.STRING:if(null===r)return"";if("string"!=typeof r){n="extra whitespace";break}try{encodeURIComponent(r)}catch(e){0;break}return r;case ScalarType.BYTES:if(null===r||""===r)return new Uint8Array(0);if("string"!=typeof r)break;return base64decode(r)}}catch(e){n=e.message}this.assert(!1,e+(n?" - "+n:""),r)}}class ReflectionJsonWriter{constructor(e){this.fields=null!=(e=e.fields)?e:[]}write(e,r){var t,a,n={},s=e;for(const i of this.fields)i.oneof?(t=s[i.oneof]).oneofKind===i.localName&&(a="scalar"==i.kind||"enum"==i.kind?__spreadProps(__spreadValues({},r),{emitDefaultValues:!0}):r,assert(void 0!==(t=this.field(i,t[i.localName],a))),n[r.useProtoFieldName?i.name:i.jsonName]=t):void 0!==(a=this.field(i,s[i.localName],r))&&(n[r.useProtoFieldName?i.name:i.jsonName]=a);return n}field(r,t,a){let e=void 0;if("map"==r.kind){assert("object"==typeof t&&null!==t);var n={};switch(r.V.kind){case"scalar":for(var[s,i]of Object.entries(t)){i=this.scalar(r.V.T,i,r.name,!1,!0);assert(void 0!==i),n[s.toString()]=i}break;case"message":var o,l,c=r.V.T();for([o,l]of Object.entries(t)){var u=this.message(c,l,r.name,a);assert(void 0!==u),n[o.toString()]=u}break;case"enum":var f,h,p=r.V.T();for([f,h]of Object.entries(t)){assert(void 0===h||"number"==typeof h);var d=this.enum(p,h,r.name,!1,!0,a.enumAsInteger);assert(void 0!==d),n[f.toString()]=d}}(a.emitDefaultValues||0[e.no,e]))))}read(a,n,s,e){this.prepare();for(var r=void 0===e?a.len:a.pos+e;a.pose.no-r.no)))}write(n,s,i){this.prepare();for(const f of this.fields){let e,r,t=f.repeat,a=f.localName;if(f.oneof){var o=n[f.oneof];if(o.oneofKind!==a)continue;e=o[a],r=!0}else e=n[a],r=!1;switch(f.kind){case"scalar":case"enum":var l="enum"==f.kind?ScalarType.INT32:f.T;if(t)if(assert(Array.isArray(e)),t==RepeatType.PACKED)this.packed(s,l,f.no,e);else for(const h of e)this.scalar(s,l,f.no,h,!0);else void 0===e?assert(f.opt):this.scalar(s,l,f.no,e,r||f.opt);break;case"message":if(t){assert(Array.isArray(e));for(const p of e)this.message(s,i,f.T(),f.no,p)}else this.message(s,i,f.T(),f.no,e);break;case"map":assert("object"==typeof e&&null!==e);for(var[c,u]of Object.entries(e))this.mapEntry(s,i,f,c,u)}}var e=i.writeUnknownFields;!1!==e&&(!0===e?UnknownFieldHandler.onWrite:e)(this.info.typeName,n,s)}mapEntry(e,r,t,a,n){e.tag(t.no,WireType.LengthDelimited),e.fork();let s=a;switch(t.K){case ScalarType.INT32:case ScalarType.FIXED32:case ScalarType.UINT32:case ScalarType.SFIXED32:case ScalarType.SINT32:s=Number.parseInt(a);break;case ScalarType.BOOL:assert("true"==a||"false"==a),s="true"==a}switch(this.scalar(e,t.K,1,s,!0),t.V.kind){case"scalar":this.scalar(e,t.V.T,2,n,!0);break;case"enum":this.scalar(e,ScalarType.INT32,2,n,!0);break;case"message":this.message(e,r,t.V.T(),2,n)}e.join()}message(e,r,t,a,n){void 0!==n&&(t.internalBinaryWrite(n,e.tag(a,WireType.LengthDelimited).fork(),r),e.join())}scalar(e,r,t,a,n){var[r,s,i]=this.scalarInfo(r,a);i&&!n||(e.tag(t,r),e[s](a))}packed(r,e,t,a){if(a.length){assert(e!==ScalarType.BYTES&&e!==ScalarType.STRING),r.tag(t,WireType.LengthDelimited),r.fork();var[,n]=this.scalarInfo(e);for(let e=0;e= 0;) t[e] = 0 - } - - const a = 256, i = 286, n = 30, s = 15, - r = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]), - l = new Uint8Array([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]), - o = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]), - h = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]), - d = new Array(576); - e(d); - const _ = new Array(60); - e(_); - const f = new Array(512); - e(f); - const c = new Array(256); - e(c); - const u = new Array(29); - e(u); - const w = new Array(n); - - function b(t, e, a, i, n) { - this.static_tree = t, this.extra_bits = e, this.extra_base = a, this.elems = i, this.max_length = n, this.has_stree = t && t.length - } - - let g, p, m; - - function k(t, e) { - this.dyn_tree = t, this.max_code = 0, this.stat_desc = e - } - - e(w); - const v = t => t < 256 ? f[t] : f[256 + (t >>> 7)], y = (t, e) => { - t.pending_buf[t.pending++] = 255 & e, t.pending_buf[t.pending++] = e >>> 8 & 255 - }, x = (t, e, a) => { - t.bi_valid > 16 - a ? (t.bi_buf |= e << t.bi_valid & 65535, y(t, t.bi_buf), t.bi_buf = e >> 16 - t.bi_valid, t.bi_valid += a - 16) : (t.bi_buf |= e << t.bi_valid & 65535, t.bi_valid += a) - }, z = (t, e, a) => { - x(t, a[2 * e], a[2 * e + 1]) - }, A = (t, e) => { - let a = 0; - do { - a |= 1 & t, t >>>= 1, a <<= 1 - } while (--e > 0); - return a >>> 1 - }, E = (t, e, a) => { - const i = new Array(16); - let n, r, l = 0; - for (n = 1; n <= s; n++) i[n] = l = l + a[n - 1] << 1; - for (r = 0; r <= e; r++) { - let e = t[2 * r + 1]; - 0 !== e && (t[2 * r] = A(i[e]++, e)) - } - }, R = t => { - let e; - for (e = 0; e < i; e++) t.dyn_ltree[2 * e] = 0; - for (e = 0; e < n; e++) t.dyn_dtree[2 * e] = 0; - for (e = 0; e < 19; e++) t.bl_tree[2 * e] = 0; - t.dyn_ltree[512] = 1, t.opt_len = t.static_len = 0, t.last_lit = t.matches = 0 - }, Z = t => { - t.bi_valid > 8 ? y(t, t.bi_buf) : t.bi_valid > 0 && (t.pending_buf[t.pending++] = t.bi_buf), t.bi_buf = 0, t.bi_valid = 0 - }, U = (t, e, a, i) => { - const n = 2 * e, s = 2 * a; - return t[n] < t[s] || t[n] === t[s] && i[e] <= i[a] - }, S = (t, e, a) => { - const i = t.heap[a]; - let n = a << 1; - for (; n <= t.heap_len && (n < t.heap_len && U(e, t.heap[n + 1], t.heap[n], t.depth) && n++, !U(e, i, t.heap[n], t.depth));) t.heap[a] = t.heap[n], a = n, n <<= 1; - t.heap[a] = i - }, D = (t, e, i) => { - let n, s, o, h, d = 0; - if (0 !== t.last_lit) do { - n = t.pending_buf[t.d_buf + 2 * d] << 8 | t.pending_buf[t.d_buf + 2 * d + 1], s = t.pending_buf[t.l_buf + d], d++, 0 === n ? z(t, s, e) : (o = c[s], z(t, o + a + 1, e), h = r[o], 0 !== h && (s -= u[o], x(t, s, h)), n--, o = v(n), z(t, o, i), h = l[o], 0 !== h && (n -= w[o], x(t, n, h))) - } while (d < t.last_lit); - z(t, 256, e) - }, T = (t, e) => { - const a = e.dyn_tree, i = e.stat_desc.static_tree, n = e.stat_desc.has_stree, - r = e.stat_desc.elems; - let l, o, h, d = -1; - for (t.heap_len = 0, t.heap_max = 573, l = 0; l < r; l++) 0 !== a[2 * l] ? (t.heap[++t.heap_len] = d = l, t.depth[l] = 0) : a[2 * l + 1] = 0; - for (; t.heap_len < 2;) h = t.heap[++t.heap_len] = d < 2 ? ++d : 0, a[2 * h] = 1, t.depth[h] = 0, t.opt_len--, n && (t.static_len -= i[2 * h + 1]); - for (e.max_code = d, l = t.heap_len >> 1; l >= 1; l--) S(t, a, l); - h = r; - do { - l = t.heap[1], t.heap[1] = t.heap[t.heap_len--], S(t, a, 1), o = t.heap[1], t.heap[--t.heap_max] = l, t.heap[--t.heap_max] = o, a[2 * h] = a[2 * l] + a[2 * o], t.depth[h] = (t.depth[l] >= t.depth[o] ? t.depth[l] : t.depth[o]) + 1, a[2 * l + 1] = a[2 * o + 1] = h, t.heap[1] = h++, S(t, a, 1) - } while (t.heap_len >= 2); - t.heap[--t.heap_max] = t.heap[1], ((t, e) => { - const a = e.dyn_tree, i = e.max_code, n = e.stat_desc.static_tree, - r = e.stat_desc.has_stree, l = e.stat_desc.extra_bits, - o = e.stat_desc.extra_base, h = e.stat_desc.max_length; - let d, _, f, c, u, w, b = 0; - for (c = 0; c <= s; c++) t.bl_count[c] = 0; - for (a[2 * t.heap[t.heap_max] + 1] = 0, d = t.heap_max + 1; d < 573; d++) _ = t.heap[d], c = a[2 * a[2 * _ + 1] + 1] + 1, c > h && (c = h, b++), a[2 * _ + 1] = c, _ > i || (t.bl_count[c]++, u = 0, _ >= o && (u = l[_ - o]), w = a[2 * _], t.opt_len += w * (c + u), r && (t.static_len += w * (n[2 * _ + 1] + u))); - if (0 !== b) { - do { - for (c = h - 1; 0 === t.bl_count[c];) c--; - t.bl_count[c]--, t.bl_count[c + 1] += 2, t.bl_count[h]--, b -= 2 - } while (b > 0); - for (c = h; 0 !== c; c--) for (_ = t.bl_count[c]; 0 !== _;) f = t.heap[--d], f > i || (a[2 * f + 1] !== c && (t.opt_len += (c - a[2 * f + 1]) * a[2 * f], a[2 * f + 1] = c), _--) - } - })(t, e), E(a, d, t.bl_count) - }, O = (t, e, a) => { - let i, n, s = -1, r = e[1], l = 0, o = 7, h = 4; - for (0 === r && (o = 138, h = 3), e[2 * (a + 1) + 1] = 65535, i = 0; i <= a; i++) n = r, r = e[2 * (i + 1) + 1], ++l < o && n === r || (l < h ? t.bl_tree[2 * n] += l : 0 !== n ? (n !== s && t.bl_tree[2 * n]++, t.bl_tree[32]++) : l <= 10 ? t.bl_tree[34]++ : t.bl_tree[36]++, l = 0, s = n, 0 === r ? (o = 138, h = 3) : n === r ? (o = 6, h = 3) : (o = 7, h = 4)) - }, I = (t, e, a) => { - let i, n, s = -1, r = e[1], l = 0, o = 7, h = 4; - for (0 === r && (o = 138, h = 3), i = 0; i <= a; i++) if (n = r, r = e[2 * (i + 1) + 1], !(++l < o && n === r)) { - if (l < h) do { - z(t, n, t.bl_tree) - } while (0 != --l); else 0 !== n ? (n !== s && (z(t, n, t.bl_tree), l--), z(t, 16, t.bl_tree), x(t, l - 3, 2)) : l <= 10 ? (z(t, 17, t.bl_tree), x(t, l - 3, 3)) : (z(t, 18, t.bl_tree), x(t, l - 11, 7)); - l = 0, s = n, 0 === r ? (o = 138, h = 3) : n === r ? (o = 6, h = 3) : (o = 7, h = 4) - } - }; - let F = !1; - const L = (t, e, a, i) => { - x(t, 0 + (i ? 1 : 0), 3), ((t, e, a, i) => { - Z(t), i && (y(t, a), y(t, ~a)), t.pending_buf.set(t.window.subarray(e, e + a), t.pending), t.pending += a - })(t, e, a, !0) - }; - var N = { - _tr_init: t => { - F || ((() => { - let t, e, a, h, k; - const v = new Array(16); - for (a = 0, h = 0; h < 28; h++) for (u[h] = a, t = 0; t < 1 << r[h]; t++) c[a++] = h; - for (c[a - 1] = h, k = 0, h = 0; h < 16; h++) for (w[h] = k, t = 0; t < 1 << l[h]; t++) f[k++] = h; - for (k >>= 7; h < n; h++) for (w[h] = k << 7, t = 0; t < 1 << l[h] - 7; t++) f[256 + k++] = h; - for (e = 0; e <= s; e++) v[e] = 0; - for (t = 0; t <= 143;) d[2 * t + 1] = 8, t++, v[8]++; - for (; t <= 255;) d[2 * t + 1] = 9, t++, v[9]++; - for (; t <= 279;) d[2 * t + 1] = 7, t++, v[7]++; - for (; t <= 287;) d[2 * t + 1] = 8, t++, v[8]++; - for (E(d, 287, v), t = 0; t < n; t++) _[2 * t + 1] = 5, _[2 * t] = A(t, 5); - g = new b(d, r, 257, i, s), p = new b(_, l, 0, n, s), m = new b(new Array(0), o, 0, 19, 7) - })(), F = !0), t.l_desc = new k(t.dyn_ltree, g), t.d_desc = new k(t.dyn_dtree, p), t.bl_desc = new k(t.bl_tree, m), t.bi_buf = 0, t.bi_valid = 0, R(t) - }, - _tr_stored_block: L, - _tr_flush_block: (t, e, i, n) => { - let s, r, l = 0; - t.level > 0 ? (2 === t.strm.data_type && (t.strm.data_type = (t => { - let e, i = 4093624447; - for (e = 0; e <= 31; e++, i >>>= 1) if (1 & i && 0 !== t.dyn_ltree[2 * e]) return 0; - if (0 !== t.dyn_ltree[18] || 0 !== t.dyn_ltree[20] || 0 !== t.dyn_ltree[26]) return 1; - for (e = 32; e < a; e++) if (0 !== t.dyn_ltree[2 * e]) return 1; - return 0 - })(t)), T(t, t.l_desc), T(t, t.d_desc), l = (t => { - let e; - for (O(t, t.dyn_ltree, t.l_desc.max_code), O(t, t.dyn_dtree, t.d_desc.max_code), T(t, t.bl_desc), e = 18; e >= 3 && 0 === t.bl_tree[2 * h[e] + 1]; e--) ; - return t.opt_len += 3 * (e + 1) + 5 + 5 + 4, e - })(t), s = t.opt_len + 3 + 7 >>> 3, r = t.static_len + 3 + 7 >>> 3, r <= s && (s = r)) : s = r = i + 5, i + 4 <= s && -1 !== e ? L(t, e, i, n) : 4 === t.strategy || r === s ? (x(t, 2 + (n ? 1 : 0), 3), D(t, d, _)) : (x(t, 4 + (n ? 1 : 0), 3), ((t, e, a, i) => { - let n; - for (x(t, e - 257, 5), x(t, a - 1, 5), x(t, i - 4, 4), n = 0; n < i; n++) x(t, t.bl_tree[2 * h[n] + 1], 3); - I(t, t.dyn_ltree, e - 1), I(t, t.dyn_dtree, a - 1) - })(t, t.l_desc.max_code + 1, t.d_desc.max_code + 1, l + 1), D(t, t.dyn_ltree, t.dyn_dtree)), R(t), n && Z(t) - }, - _tr_tally: (t, e, i) => (t.pending_buf[t.d_buf + 2 * t.last_lit] = e >>> 8 & 255, t.pending_buf[t.d_buf + 2 * t.last_lit + 1] = 255 & e, t.pending_buf[t.l_buf + t.last_lit] = 255 & i, t.last_lit++, 0 === e ? t.dyn_ltree[2 * i]++ : (t.matches++, e--, t.dyn_ltree[2 * (c[i] + a + 1)]++, t.dyn_dtree[2 * v(e)]++), t.last_lit === t.lit_bufsize - 1), - _tr_align: t => { - x(t, 2, 3), z(t, 256, d), (t => { - 16 === t.bi_valid ? (y(t, t.bi_buf), t.bi_buf = 0, t.bi_valid = 0) : t.bi_valid >= 8 && (t.pending_buf[t.pending++] = 255 & t.bi_buf, t.bi_buf >>= 8, t.bi_valid -= 8) - })(t) - } - }; - var B = (t, e, a, i) => { - let n = 65535 & t | 0, s = t >>> 16 & 65535 | 0, r = 0; - for (; 0 !== a;) { - r = a > 2e3 ? 2e3 : a, a -= r; - do { - n = n + e[i++] | 0, s = s + n | 0 - } while (--r); - n %= 65521, s %= 65521 - } - return n | s << 16 | 0 - }; - const C = new Uint32Array((() => { - let t, e = []; - for (var a = 0; a < 256; a++) { - t = a; - for (var i = 0; i < 8; i++) t = 1 & t ? 3988292384 ^ t >>> 1 : t >>> 1; - e[a] = t - } - return e - })()); - var M = (t, e, a, i) => { - const n = C, s = i + a; - t ^= -1; - for (let a = i; a < s; a++) t = t >>> 8 ^ n[255 & (t ^ e[a])]; - return -1 ^ t - }, H = { - 2: "need dictionary", - 1: "stream end", - 0: "", - "-1": "file error", - "-2": "stream error", - "-3": "data error", - "-4": "insufficient memory", - "-5": "buffer error", - "-6": "incompatible version" - }, j = { - Z_NO_FLUSH: 0, - Z_PARTIAL_FLUSH: 1, - Z_SYNC_FLUSH: 2, - Z_FULL_FLUSH: 3, - Z_FINISH: 4, - Z_BLOCK: 5, - Z_TREES: 6, - Z_OK: 0, - Z_STREAM_END: 1, - Z_NEED_DICT: 2, - Z_ERRNO: -1, - Z_STREAM_ERROR: -2, - Z_DATA_ERROR: -3, - Z_MEM_ERROR: -4, - Z_BUF_ERROR: -5, - Z_NO_COMPRESSION: 0, - Z_BEST_SPEED: 1, - Z_BEST_COMPRESSION: 9, - Z_DEFAULT_COMPRESSION: -1, - Z_FILTERED: 1, - Z_HUFFMAN_ONLY: 2, - Z_RLE: 3, - Z_FIXED: 4, - Z_DEFAULT_STRATEGY: 0, - Z_BINARY: 0, - Z_TEXT: 1, - Z_UNKNOWN: 2, - Z_DEFLATED: 8 - }; - const { - _tr_init: K, - _tr_stored_block: P, - _tr_flush_block: Y, - _tr_tally: G, - _tr_align: X - } = N, { - Z_NO_FLUSH: W, - Z_PARTIAL_FLUSH: q, - Z_FULL_FLUSH: J, - Z_FINISH: Q, - Z_BLOCK: V, - Z_OK: $, - Z_STREAM_END: tt, - Z_STREAM_ERROR: et, - Z_DATA_ERROR: at, - Z_BUF_ERROR: it, - Z_DEFAULT_COMPRESSION: nt, - Z_FILTERED: st, - Z_HUFFMAN_ONLY: rt, - Z_RLE: lt, - Z_FIXED: ot, - Z_DEFAULT_STRATEGY: ht, - Z_UNKNOWN: dt, - Z_DEFLATED: _t - } = j, ft = 258, ct = 262, ut = 103, wt = 113, bt = 666, - gt = (t, e) => (t.msg = H[e], e), pt = t => (t << 1) - (t > 4 ? 9 : 0), mt = t => { - let e = t.length; - for (; --e >= 0;) t[e] = 0 - }; - let kt = (t, e, a) => (e << t.hash_shift ^ a) & t.hash_mask; - const vt = t => { - const e = t.state; - let a = e.pending; - a > t.avail_out && (a = t.avail_out), 0 !== a && (t.output.set(e.pending_buf.subarray(e.pending_out, e.pending_out + a), t.next_out), t.next_out += a, e.pending_out += a, t.total_out += a, t.avail_out -= a, e.pending -= a, 0 === e.pending && (e.pending_out = 0)) - }, yt = (t, e) => { - Y(t, t.block_start >= 0 ? t.block_start : -1, t.strstart - t.block_start, e), t.block_start = t.strstart, vt(t.strm) - }, xt = (t, e) => { - t.pending_buf[t.pending++] = e - }, zt = (t, e) => { - t.pending_buf[t.pending++] = e >>> 8 & 255, t.pending_buf[t.pending++] = 255 & e - }, At = (t, e, a, i) => { - let n = t.avail_in; - return n > i && (n = i), 0 === n ? 0 : (t.avail_in -= n, e.set(t.input.subarray(t.next_in, t.next_in + n), a), 1 === t.state.wrap ? t.adler = B(t.adler, e, n, a) : 2 === t.state.wrap && (t.adler = M(t.adler, e, n, a)), t.next_in += n, t.total_in += n, n) - }, Et = (t, e) => { - let a, i, n = t.max_chain_length, s = t.strstart, r = t.prev_length, - l = t.nice_match; - const o = t.strstart > t.w_size - ct ? t.strstart - (t.w_size - ct) : 0, - h = t.window, d = t.w_mask, _ = t.prev, f = t.strstart + ft; - let c = h[s + r - 1], u = h[s + r]; - t.prev_length >= t.good_match && (n >>= 2), l > t.lookahead && (l = t.lookahead); - do { - if (a = e, h[a + r] === u && h[a + r - 1] === c && h[a] === h[s] && h[++a] === h[s + 1]) { - s += 2, a++; - do { - } while (h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && h[++s] === h[++a] && s < f); - if (i = ft - (f - s), s = f - ft, i > r) { - if (t.match_start = e, r = i, i >= l) break; - c = h[s + r - 1], u = h[s + r] - } - } - } while ((e = _[e & d]) > o && 0 != --n); - return r <= t.lookahead ? r : t.lookahead - }, Rt = t => { - const e = t.w_size; - let a, i, n, s, r; - do { - if (s = t.window_size - t.lookahead - t.strstart, t.strstart >= e + (e - ct)) { - t.window.set(t.window.subarray(e, e + e), 0), t.match_start -= e, t.strstart -= e, t.block_start -= e, i = t.hash_size, a = i; - do { - n = t.head[--a], t.head[a] = n >= e ? n - e : 0 - } while (--i); - i = e, a = i; - do { - n = t.prev[--a], t.prev[a] = n >= e ? n - e : 0 - } while (--i); - s += e - } - if (0 === t.strm.avail_in) break; - if (i = At(t.strm, t.window, t.strstart + t.lookahead, s), t.lookahead += i, t.lookahead + t.insert >= 3) for (r = t.strstart - t.insert, t.ins_h = t.window[r], t.ins_h = kt(t, t.ins_h, t.window[r + 1]); t.insert && (t.ins_h = kt(t, t.ins_h, t.window[r + 3 - 1]), t.prev[r & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = r, r++, t.insert--, !(t.lookahead + t.insert < 3));) ; - } while (t.lookahead < ct && 0 !== t.strm.avail_in) - }, Zt = (t, e) => { - let a, i; - for (; ;) { - if (t.lookahead < ct) { - if (Rt(t), t.lookahead < ct && e === W) return 1; - if (0 === t.lookahead) break - } - if (a = 0, t.lookahead >= 3 && (t.ins_h = kt(t, t.ins_h, t.window[t.strstart + 3 - 1]), a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart), 0 !== a && t.strstart - a <= t.w_size - ct && (t.match_length = Et(t, a)), t.match_length >= 3) if (i = G(t, t.strstart - t.match_start, t.match_length - 3), t.lookahead -= t.match_length, t.match_length <= t.max_lazy_match && t.lookahead >= 3) { - t.match_length--; - do { - t.strstart++, t.ins_h = kt(t, t.ins_h, t.window[t.strstart + 3 - 1]), a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart - } while (0 != --t.match_length); - t.strstart++ - } else t.strstart += t.match_length, t.match_length = 0, t.ins_h = t.window[t.strstart], t.ins_h = kt(t, t.ins_h, t.window[t.strstart + 1]); else i = G(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++; - if (i && (yt(t, !1), 0 === t.strm.avail_out)) return 1 - } - return t.insert = t.strstart < 2 ? t.strstart : 2, e === Q ? (yt(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.last_lit && (yt(t, !1), 0 === t.strm.avail_out) ? 1 : 2 - }, Ut = (t, e) => { - let a, i, n; - for (; ;) { - if (t.lookahead < ct) { - if (Rt(t), t.lookahead < ct && e === W) return 1; - if (0 === t.lookahead) break - } - if (a = 0, t.lookahead >= 3 && (t.ins_h = kt(t, t.ins_h, t.window[t.strstart + 3 - 1]), a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart), t.prev_length = t.match_length, t.prev_match = t.match_start, t.match_length = 2, 0 !== a && t.prev_length < t.max_lazy_match && t.strstart - a <= t.w_size - ct && (t.match_length = Et(t, a), t.match_length <= 5 && (t.strategy === st || 3 === t.match_length && t.strstart - t.match_start > 4096) && (t.match_length = 2)), t.prev_length >= 3 && t.match_length <= t.prev_length) { - n = t.strstart + t.lookahead - 3, i = G(t, t.strstart - 1 - t.prev_match, t.prev_length - 3), t.lookahead -= t.prev_length - 1, t.prev_length -= 2; - do { - ++t.strstart <= n && (t.ins_h = kt(t, t.ins_h, t.window[t.strstart + 3 - 1]), a = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart) - } while (0 != --t.prev_length); - if (t.match_available = 0, t.match_length = 2, t.strstart++, i && (yt(t, !1), 0 === t.strm.avail_out)) return 1 - } else if (t.match_available) { - if (i = G(t, 0, t.window[t.strstart - 1]), i && yt(t, !1), t.strstart++, t.lookahead--, 0 === t.strm.avail_out) return 1 - } else t.match_available = 1, t.strstart++, t.lookahead-- - } - return t.match_available && (i = G(t, 0, t.window[t.strstart - 1]), t.match_available = 0), t.insert = t.strstart < 2 ? t.strstart : 2, e === Q ? (yt(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.last_lit && (yt(t, !1), 0 === t.strm.avail_out) ? 1 : 2 - }; - - function St(t, e, a, i, n) { - this.good_length = t, this.max_lazy = e, this.nice_length = a, this.max_chain = i, this.func = n - } - - const Dt = [new St(0, 0, 0, 0, ((t, e) => { - let a = 65535; - for (a > t.pending_buf_size - 5 && (a = t.pending_buf_size - 5); ;) { - if (t.lookahead <= 1) { - if (Rt(t), 0 === t.lookahead && e === W) return 1; - if (0 === t.lookahead) break - } - t.strstart += t.lookahead, t.lookahead = 0; - const i = t.block_start + a; - if ((0 === t.strstart || t.strstart >= i) && (t.lookahead = t.strstart - i, t.strstart = i, yt(t, !1), 0 === t.strm.avail_out)) return 1; - if (t.strstart - t.block_start >= t.w_size - ct && (yt(t, !1), 0 === t.strm.avail_out)) return 1 - } - return t.insert = 0, e === Q ? (yt(t, !0), 0 === t.strm.avail_out ? 3 : 4) : (t.strstart > t.block_start && (yt(t, !1), t.strm.avail_out), 1) - })), new St(4, 4, 8, 4, Zt), new St(4, 5, 16, 8, Zt), new St(4, 6, 32, 32, Zt), new St(4, 4, 16, 16, Ut), new St(8, 16, 32, 32, Ut), new St(8, 16, 128, 128, Ut), new St(8, 32, 128, 256, Ut), new St(32, 128, 258, 1024, Ut), new St(32, 258, 258, 4096, Ut)]; - - function Tt() { - this.strm = null, this.status = 0, this.pending_buf = null, this.pending_buf_size = 0, this.pending_out = 0, this.pending = 0, this.wrap = 0, this.gzhead = null, this.gzindex = 0, this.method = _t, this.last_flush = -1, this.w_size = 0, this.w_bits = 0, this.w_mask = 0, this.window = null, this.window_size = 0, this.prev = null, this.head = null, this.ins_h = 0, this.hash_size = 0, this.hash_bits = 0, this.hash_mask = 0, this.hash_shift = 0, this.block_start = 0, this.match_length = 0, this.prev_match = 0, this.match_available = 0, this.strstart = 0, this.match_start = 0, this.lookahead = 0, this.prev_length = 0, this.max_chain_length = 0, this.max_lazy_match = 0, this.level = 0, this.strategy = 0, this.good_match = 0, this.nice_match = 0, this.dyn_ltree = new Uint16Array(1146), this.dyn_dtree = new Uint16Array(122), this.bl_tree = new Uint16Array(78), mt(this.dyn_ltree), mt(this.dyn_dtree), mt(this.bl_tree), this.l_desc = null, this.d_desc = null, this.bl_desc = null, this.bl_count = new Uint16Array(16), this.heap = new Uint16Array(573), mt(this.heap), this.heap_len = 0, this.heap_max = 0, this.depth = new Uint16Array(573), mt(this.depth), this.l_buf = 0, this.lit_bufsize = 0, this.last_lit = 0, this.d_buf = 0, this.opt_len = 0, this.static_len = 0, this.matches = 0, this.insert = 0, this.bi_buf = 0, this.bi_valid = 0 - } - - const Ot = t => { - if (!t || !t.state) return gt(t, et); - t.total_in = t.total_out = 0, t.data_type = dt; - const e = t.state; - return e.pending = 0, e.pending_out = 0, e.wrap < 0 && (e.wrap = -e.wrap), e.status = e.wrap ? 42 : wt, t.adler = 2 === e.wrap ? 0 : 1, e.last_flush = W, K(e), $ - }, It = t => { - const e = Ot(t); - var a; - return e === $ && ((a = t.state).window_size = 2 * a.w_size, mt(a.head), a.max_lazy_match = Dt[a.level].max_lazy, a.good_match = Dt[a.level].good_length, a.nice_match = Dt[a.level].nice_length, a.max_chain_length = Dt[a.level].max_chain, a.strstart = 0, a.block_start = 0, a.lookahead = 0, a.insert = 0, a.match_length = a.prev_length = 2, a.match_available = 0, a.ins_h = 0), e - }, Ft = (t, e, a, i, n, s) => { - if (!t) return et; - let r = 1; - if (e === nt && (e = 6), i < 0 ? (r = 0, i = -i) : i > 15 && (r = 2, i -= 16), n < 1 || n > 9 || a !== _t || i < 8 || i > 15 || e < 0 || e > 9 || s < 0 || s > ot) return gt(t, et); - 8 === i && (i = 9); - const l = new Tt; - return t.state = l, l.strm = t, l.wrap = r, l.gzhead = null, l.w_bits = i, l.w_size = 1 << l.w_bits, l.w_mask = l.w_size - 1, l.hash_bits = n + 7, l.hash_size = 1 << l.hash_bits, l.hash_mask = l.hash_size - 1, l.hash_shift = ~~((l.hash_bits + 3 - 1) / 3), l.window = new Uint8Array(2 * l.w_size), l.head = new Uint16Array(l.hash_size), l.prev = new Uint16Array(l.w_size), l.lit_bufsize = 1 << n + 6, l.pending_buf_size = 4 * l.lit_bufsize, l.pending_buf = new Uint8Array(l.pending_buf_size), l.d_buf = 1 * l.lit_bufsize, l.l_buf = 3 * l.lit_bufsize, l.level = e, l.strategy = s, l.method = a, It(t) - }; - var Lt = { - deflateInit: (t, e) => Ft(t, e, _t, 15, 8, ht), - deflateInit2: Ft, - deflateReset: It, - deflateResetKeep: Ot, - deflateSetHeader: (t, e) => t && t.state ? 2 !== t.state.wrap ? et : (t.state.gzhead = e, $) : et, - deflate: (t, e) => { - let a, i; - if (!t || !t.state || e > V || e < 0) return t ? gt(t, et) : et; - const n = t.state; - if (!t.output || !t.input && 0 !== t.avail_in || n.status === bt && e !== Q) return gt(t, 0 === t.avail_out ? it : et); - n.strm = t; - const s = n.last_flush; - if (n.last_flush = e, 42 === n.status) if (2 === n.wrap) t.adler = 0, xt(n, 31), xt(n, 139), xt(n, 8), n.gzhead ? (xt(n, (n.gzhead.text ? 1 : 0) + (n.gzhead.hcrc ? 2 : 0) + (n.gzhead.extra ? 4 : 0) + (n.gzhead.name ? 8 : 0) + (n.gzhead.comment ? 16 : 0)), xt(n, 255 & n.gzhead.time), xt(n, n.gzhead.time >> 8 & 255), xt(n, n.gzhead.time >> 16 & 255), xt(n, n.gzhead.time >> 24 & 255), xt(n, 9 === n.level ? 2 : n.strategy >= rt || n.level < 2 ? 4 : 0), xt(n, 255 & n.gzhead.os), n.gzhead.extra && n.gzhead.extra.length && (xt(n, 255 & n.gzhead.extra.length), xt(n, n.gzhead.extra.length >> 8 & 255)), n.gzhead.hcrc && (t.adler = M(t.adler, n.pending_buf, n.pending, 0)), n.gzindex = 0, n.status = 69) : (xt(n, 0), xt(n, 0), xt(n, 0), xt(n, 0), xt(n, 0), xt(n, 9 === n.level ? 2 : n.strategy >= rt || n.level < 2 ? 4 : 0), xt(n, 3), n.status = wt); else { - let e = _t + (n.w_bits - 8 << 4) << 8, a = -1; - a = n.strategy >= rt || n.level < 2 ? 0 : n.level < 6 ? 1 : 6 === n.level ? 2 : 3, e |= a << 6, 0 !== n.strstart && (e |= 32), e += 31 - e % 31, n.status = wt, zt(n, e), 0 !== n.strstart && (zt(n, t.adler >>> 16), zt(n, 65535 & t.adler)), t.adler = 1 - } - if (69 === n.status) if (n.gzhead.extra) { - for (a = n.pending; n.gzindex < (65535 & n.gzhead.extra.length) && (n.pending !== n.pending_buf_size || (n.gzhead.hcrc && n.pending > a && (t.adler = M(t.adler, n.pending_buf, n.pending - a, a)), vt(t), a = n.pending, n.pending !== n.pending_buf_size));) xt(n, 255 & n.gzhead.extra[n.gzindex]), n.gzindex++; - n.gzhead.hcrc && n.pending > a && (t.adler = M(t.adler, n.pending_buf, n.pending - a, a)), n.gzindex === n.gzhead.extra.length && (n.gzindex = 0, n.status = 73) - } else n.status = 73; - if (73 === n.status) if (n.gzhead.name) { - a = n.pending; - do { - if (n.pending === n.pending_buf_size && (n.gzhead.hcrc && n.pending > a && (t.adler = M(t.adler, n.pending_buf, n.pending - a, a)), vt(t), a = n.pending, n.pending === n.pending_buf_size)) { - i = 1; - break - } - i = n.gzindex < n.gzhead.name.length ? 255 & n.gzhead.name.charCodeAt(n.gzindex++) : 0, xt(n, i) - } while (0 !== i); - n.gzhead.hcrc && n.pending > a && (t.adler = M(t.adler, n.pending_buf, n.pending - a, a)), 0 === i && (n.gzindex = 0, n.status = 91) - } else n.status = 91; - if (91 === n.status) if (n.gzhead.comment) { - a = n.pending; - do { - if (n.pending === n.pending_buf_size && (n.gzhead.hcrc && n.pending > a && (t.adler = M(t.adler, n.pending_buf, n.pending - a, a)), vt(t), a = n.pending, n.pending === n.pending_buf_size)) { - i = 1; - break - } - i = n.gzindex < n.gzhead.comment.length ? 255 & n.gzhead.comment.charCodeAt(n.gzindex++) : 0, xt(n, i) - } while (0 !== i); - n.gzhead.hcrc && n.pending > a && (t.adler = M(t.adler, n.pending_buf, n.pending - a, a)), 0 === i && (n.status = ut) - } else n.status = ut; - if (n.status === ut && (n.gzhead.hcrc ? (n.pending + 2 > n.pending_buf_size && vt(t), n.pending + 2 <= n.pending_buf_size && (xt(n, 255 & t.adler), xt(n, t.adler >> 8 & 255), t.adler = 0, n.status = wt)) : n.status = wt), 0 !== n.pending) { - if (vt(t), 0 === t.avail_out) return n.last_flush = -1, $ - } else if (0 === t.avail_in && pt(e) <= pt(s) && e !== Q) return gt(t, it); - if (n.status === bt && 0 !== t.avail_in) return gt(t, it); - if (0 !== t.avail_in || 0 !== n.lookahead || e !== W && n.status !== bt) { - let a = n.strategy === rt ? ((t, e) => { - let a; - for (; ;) { - if (0 === t.lookahead && (Rt(t), 0 === t.lookahead)) { - if (e === W) return 1; - break - } - if (t.match_length = 0, a = G(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++, a && (yt(t, !1), 0 === t.strm.avail_out)) return 1 - } - return t.insert = 0, e === Q ? (yt(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.last_lit && (yt(t, !1), 0 === t.strm.avail_out) ? 1 : 2 - })(n, e) : n.strategy === lt ? ((t, e) => { - let a, i, n, s; - const r = t.window; - for (; ;) { - if (t.lookahead <= ft) { - if (Rt(t), t.lookahead <= ft && e === W) return 1; - if (0 === t.lookahead) break - } - if (t.match_length = 0, t.lookahead >= 3 && t.strstart > 0 && (n = t.strstart - 1, i = r[n], i === r[++n] && i === r[++n] && i === r[++n])) { - s = t.strstart + ft; - do { - } while (i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && i === r[++n] && n < s); - t.match_length = ft - (s - n), t.match_length > t.lookahead && (t.match_length = t.lookahead) - } - if (t.match_length >= 3 ? (a = G(t, 1, t.match_length - 3), t.lookahead -= t.match_length, t.strstart += t.match_length, t.match_length = 0) : (a = G(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++), a && (yt(t, !1), 0 === t.strm.avail_out)) return 1 - } - return t.insert = 0, e === Q ? (yt(t, !0), 0 === t.strm.avail_out ? 3 : 4) : t.last_lit && (yt(t, !1), 0 === t.strm.avail_out) ? 1 : 2 - })(n, e) : Dt[n.level].func(n, e); - if (3 !== a && 4 !== a || (n.status = bt), 1 === a || 3 === a) return 0 === t.avail_out && (n.last_flush = -1), $; - if (2 === a && (e === q ? X(n) : e !== V && (P(n, 0, 0, !1), e === J && (mt(n.head), 0 === n.lookahead && (n.strstart = 0, n.block_start = 0, n.insert = 0))), vt(t), 0 === t.avail_out)) return n.last_flush = -1, $ - } - return e !== Q ? $ : n.wrap <= 0 ? tt : (2 === n.wrap ? (xt(n, 255 & t.adler), xt(n, t.adler >> 8 & 255), xt(n, t.adler >> 16 & 255), xt(n, t.adler >> 24 & 255), xt(n, 255 & t.total_in), xt(n, t.total_in >> 8 & 255), xt(n, t.total_in >> 16 & 255), xt(n, t.total_in >> 24 & 255)) : (zt(n, t.adler >>> 16), zt(n, 65535 & t.adler)), vt(t), n.wrap > 0 && (n.wrap = -n.wrap), 0 !== n.pending ? $ : tt) - }, - deflateEnd: t => { - if (!t || !t.state) return et; - const e = t.state.status; - return 42 !== e && 69 !== e && 73 !== e && 91 !== e && e !== ut && e !== wt && e !== bt ? gt(t, et) : (t.state = null, e === wt ? gt(t, at) : $) - }, - deflateSetDictionary: (t, e) => { - let a = e.length; - if (!t || !t.state) return et; - const i = t.state, n = i.wrap; - if (2 === n || 1 === n && 42 !== i.status || i.lookahead) return et; - if (1 === n && (t.adler = B(t.adler, e, a, 0)), i.wrap = 0, a >= i.w_size) { - 0 === n && (mt(i.head), i.strstart = 0, i.block_start = 0, i.insert = 0); - let t = new Uint8Array(i.w_size); - t.set(e.subarray(a - i.w_size, a), 0), e = t, a = i.w_size - } - const s = t.avail_in, r = t.next_in, l = t.input; - for (t.avail_in = a, t.next_in = 0, t.input = e, Rt(i); i.lookahead >= 3;) { - let t = i.strstart, e = i.lookahead - 2; - do { - i.ins_h = kt(i, i.ins_h, i.window[t + 3 - 1]), i.prev[t & i.w_mask] = i.head[i.ins_h], i.head[i.ins_h] = t, t++ - } while (--e); - i.strstart = t, i.lookahead = 2, Rt(i) - } - return i.strstart += i.lookahead, i.block_start = i.strstart, i.insert = i.lookahead, i.lookahead = 0, i.match_length = i.prev_length = 2, i.match_available = 0, t.next_in = r, t.input = l, t.avail_in = s, i.wrap = n, $ - }, - deflateInfo: "pako deflate (from Nodeca project)" - }; - const Nt = (t, e) => Object.prototype.hasOwnProperty.call(t, e); - var Bt = function (t) { - const e = Array.prototype.slice.call(arguments, 1); - for (; e.length;) { - const a = e.shift(); - if (a) { - if ("object" != typeof a) throw new TypeError(a + "must be non-object"); - for (const e in a) Nt(a, e) && (t[e] = a[e]) - } - } - return t - }, Ct = t => { - let e = 0; - for (let a = 0, i = t.length; a < i; a++) e += t[a].length; - const a = new Uint8Array(e); - for (let e = 0, i = 0, n = t.length; e < n; e++) { - let n = t[e]; - a.set(n, i), i += n.length - } - return a - }; - let Mt = !0; - try { - String.fromCharCode.apply(null, new Uint8Array(1)) - } catch (t) { - Mt = !1 - } - const Ht = new Uint8Array(256); - for (let t = 0; t < 256; t++) Ht[t] = t >= 252 ? 6 : t >= 248 ? 5 : t >= 240 ? 4 : t >= 224 ? 3 : t >= 192 ? 2 : 1; - Ht[254] = Ht[254] = 1; - var jt = t => { - if ("function" == typeof TextEncoder && TextEncoder.prototype.encode) return (new TextEncoder).encode(t); - let e, a, i, n, s, r = t.length, l = 0; - for (n = 0; n < r; n++) a = t.charCodeAt(n), 55296 == (64512 & a) && n + 1 < r && (i = t.charCodeAt(n + 1), 56320 == (64512 & i) && (a = 65536 + (a - 55296 << 10) + (i - 56320), n++)), l += a < 128 ? 1 : a < 2048 ? 2 : a < 65536 ? 3 : 4; - for (e = new Uint8Array(l), s = 0, n = 0; s < l; n++) a = t.charCodeAt(n), 55296 == (64512 & a) && n + 1 < r && (i = t.charCodeAt(n + 1), 56320 == (64512 & i) && (a = 65536 + (a - 55296 << 10) + (i - 56320), n++)), a < 128 ? e[s++] = a : a < 2048 ? (e[s++] = 192 | a >>> 6, e[s++] = 128 | 63 & a) : a < 65536 ? (e[s++] = 224 | a >>> 12, e[s++] = 128 | a >>> 6 & 63, e[s++] = 128 | 63 & a) : (e[s++] = 240 | a >>> 18, e[s++] = 128 | a >>> 12 & 63, e[s++] = 128 | a >>> 6 & 63, e[s++] = 128 | 63 & a); - return e - }, Kt = (t, e) => { - const a = e || t.length; - if ("function" == typeof TextDecoder && TextDecoder.prototype.decode) return (new TextDecoder).decode(t.subarray(0, e)); - let i, n; - const s = new Array(2 * a); - for (n = 0, i = 0; i < a;) { - let e = t[i++]; - if (e < 128) { - s[n++] = e; - continue - } - let r = Ht[e]; - if (r > 4) s[n++] = 65533, i += r - 1; else { - for (e &= 2 === r ? 31 : 3 === r ? 15 : 7; r > 1 && i < a;) e = e << 6 | 63 & t[i++], r--; - r > 1 ? s[n++] = 65533 : e < 65536 ? s[n++] = e : (e -= 65536, s[n++] = 55296 | e >> 10 & 1023, s[n++] = 56320 | 1023 & e) - } - } - return ((t, e) => { - if (e < 65534 && t.subarray && Mt) return String.fromCharCode.apply(null, t.length === e ? t : t.subarray(0, e)); - let a = ""; - for (let i = 0; i < e; i++) a += String.fromCharCode(t[i]); - return a - })(s, n) - }, Pt = (t, e) => { - (e = e || t.length) > t.length && (e = t.length); - let a = e - 1; - for (; a >= 0 && 128 == (192 & t[a]);) a--; - return a < 0 || 0 === a ? e : a + Ht[t[a]] > e ? a : e - }; - var Yt = function () { - this.input = null, this.next_in = 0, this.avail_in = 0, this.total_in = 0, this.output = null, this.next_out = 0, this.avail_out = 0, this.total_out = 0, this.msg = "", this.state = null, this.data_type = 2, this.adler = 0 - }; - const Gt = Object.prototype.toString, { - Z_NO_FLUSH: Xt, - Z_SYNC_FLUSH: Wt, - Z_FULL_FLUSH: qt, - Z_FINISH: Jt, - Z_OK: Qt, - Z_STREAM_END: Vt, - Z_DEFAULT_COMPRESSION: $t, - Z_DEFAULT_STRATEGY: te, - Z_DEFLATED: ee - } = j; - - function ae(t) { - this.options = Bt({ - level: $t, - method: ee, - chunkSize: 16384, - windowBits: 15, - memLevel: 8, - strategy: te - }, t || {}); - let e = this.options; - e.raw && e.windowBits > 0 ? e.windowBits = -e.windowBits : e.gzip && e.windowBits > 0 && e.windowBits < 16 && (e.windowBits += 16), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new Yt, this.strm.avail_out = 0; - let a = Lt.deflateInit2(this.strm, e.level, e.method, e.windowBits, e.memLevel, e.strategy); - if (a !== Qt) throw new Error(H[a]); - if (e.header && Lt.deflateSetHeader(this.strm, e.header), e.dictionary) { - let t; - if (t = "string" == typeof e.dictionary ? jt(e.dictionary) : "[object ArrayBuffer]" === Gt.call(e.dictionary) ? new Uint8Array(e.dictionary) : e.dictionary, a = Lt.deflateSetDictionary(this.strm, t), a !== Qt) throw new Error(H[a]); - this._dict_set = !0 - } - } - - function ie(t, e) { - const a = new ae(e); - if (a.push(t, !0), a.err) throw a.msg || H[a.err]; - return a.result - } - - ae.prototype.push = function (t, e) { - const a = this.strm, i = this.options.chunkSize; - let n, s; - if (this.ended) return !1; - for (s = e === ~~e ? e : !0 === e ? Jt : Xt, "string" == typeof t ? a.input = jt(t) : "[object ArrayBuffer]" === Gt.call(t) ? a.input = new Uint8Array(t) : a.input = t, a.next_in = 0, a.avail_in = a.input.length; ;) if (0 === a.avail_out && (a.output = new Uint8Array(i), a.next_out = 0, a.avail_out = i), (s === Wt || s === qt) && a.avail_out <= 6) this.onData(a.output.subarray(0, a.next_out)), a.avail_out = 0; else { - if (n = Lt.deflate(a, s), n === Vt) return a.next_out > 0 && this.onData(a.output.subarray(0, a.next_out)), n = Lt.deflateEnd(this.strm), this.onEnd(n), this.ended = !0, n === Qt; - if (0 !== a.avail_out) { - if (s > 0 && a.next_out > 0) this.onData(a.output.subarray(0, a.next_out)), a.avail_out = 0; else if (0 === a.avail_in) break - } else this.onData(a.output) - } - return !0 - }, ae.prototype.onData = function (t) { - this.chunks.push(t) - }, ae.prototype.onEnd = function (t) { - t === Qt && (this.result = Ct(this.chunks)), this.chunks = [], this.err = t, this.msg = this.strm.msg - }; - var ne = { - Deflate: ae, deflate: ie, deflateRaw: function (t, e) { - return (e = e || {}).raw = !0, ie(t, e) - }, gzip: function (t, e) { - return (e = e || {}).gzip = !0, ie(t, e) - }, constants: j - }; - var se = function (t, e) { - let a, i, n, s, r, l, o, h, d, _, f, c, u, w, b, g, p, m, k, v, y, x, z, A; - const E = t.state; - a = t.next_in, z = t.input, i = a + (t.avail_in - 5), n = t.next_out, A = t.output, s = n - (e - t.avail_out), r = n + (t.avail_out - 257), l = E.dmax, o = E.wsize, h = E.whave, d = E.wnext, _ = E.window, f = E.hold, c = E.bits, u = E.lencode, w = E.distcode, b = (1 << E.lenbits) - 1, g = (1 << E.distbits) - 1; - t:do { - c < 15 && (f += z[a++] << c, c += 8, f += z[a++] << c, c += 8), p = u[f & b]; - e:for (; ;) { - if (m = p >>> 24, f >>>= m, c -= m, m = p >>> 16 & 255, 0 === m) A[n++] = 65535 & p; else { - if (!(16 & m)) { - if (0 == (64 & m)) { - p = u[(65535 & p) + (f & (1 << m) - 1)]; - continue e - } - if (32 & m) { - E.mode = 12; - break t - } - t.msg = "invalid literal/length code", E.mode = 30; - break t - } - k = 65535 & p, m &= 15, m && (c < m && (f += z[a++] << c, c += 8), k += f & (1 << m) - 1, f >>>= m, c -= m), c < 15 && (f += z[a++] << c, c += 8, f += z[a++] << c, c += 8), p = w[f & g]; - a:for (; ;) { - if (m = p >>> 24, f >>>= m, c -= m, m = p >>> 16 & 255, !(16 & m)) { - if (0 == (64 & m)) { - p = w[(65535 & p) + (f & (1 << m) - 1)]; - continue a - } - t.msg = "invalid distance code", E.mode = 30; - break t - } - if (v = 65535 & p, m &= 15, c < m && (f += z[a++] << c, c += 8, c < m && (f += z[a++] << c, c += 8)), v += f & (1 << m) - 1, v > l) { - t.msg = "invalid distance too far back", E.mode = 30; - break t - } - if (f >>>= m, c -= m, m = n - s, v > m) { - if (m = v - m, m > h && E.sane) { - t.msg = "invalid distance too far back", E.mode = 30; - break t - } - if (y = 0, x = _, 0 === d) { - if (y += o - m, m < k) { - k -= m; - do { - A[n++] = _[y++] - } while (--m); - y = n - v, x = A - } - } else if (d < m) { - if (y += o + d - m, m -= d, m < k) { - k -= m; - do { - A[n++] = _[y++] - } while (--m); - if (y = 0, d < k) { - m = d, k -= m; - do { - A[n++] = _[y++] - } while (--m); - y = n - v, x = A - } - } - } else if (y += d - m, m < k) { - k -= m; - do { - A[n++] = _[y++] - } while (--m); - y = n - v, x = A - } - for (; k > 2;) A[n++] = x[y++], A[n++] = x[y++], A[n++] = x[y++], k -= 3; - k && (A[n++] = x[y++], k > 1 && (A[n++] = x[y++])) - } else { - y = n - v; - do { - A[n++] = A[y++], A[n++] = A[y++], A[n++] = A[y++], k -= 3 - } while (k > 2); - k && (A[n++] = A[y++], k > 1 && (A[n++] = A[y++])) - } - break - } - } - break - } - } while (a < i && n < r); - k = c >> 3, a -= k, c -= k << 3, f &= (1 << c) - 1, t.next_in = a, t.next_out = n, t.avail_in = a < i ? i - a + 5 : 5 - (a - i), t.avail_out = n < r ? r - n + 257 : 257 - (n - r), E.hold = f, E.bits = c - }; - const re = 15, - le = new Uint16Array([3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0]), - oe = new Uint8Array([16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78]), - he = new Uint16Array([1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0]), - de = new Uint8Array([16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64]); - var _e = (t, e, a, i, n, s, r, l) => { - const o = l.bits; - let h, d, _, f, c, u, w = 0, b = 0, g = 0, p = 0, m = 0, k = 0, v = 0, y = 0, x = 0, - z = 0, A = null, E = 0; - const R = new Uint16Array(16), Z = new Uint16Array(16); - let U, S, D, T = null, O = 0; - for (w = 0; w <= re; w++) R[w] = 0; - for (b = 0; b < i; b++) R[e[a + b]]++; - for (m = o, p = re; p >= 1 && 0 === R[p]; p--) ; - if (m > p && (m = p), 0 === p) return n[s++] = 20971520, n[s++] = 20971520, l.bits = 1, 0; - for (g = 1; g < p && 0 === R[g]; g++) ; - for (m < g && (m = g), y = 1, w = 1; w <= re; w++) if (y <<= 1, y -= R[w], y < 0) return -1; - if (y > 0 && (0 === t || 1 !== p)) return -1; - for (Z[1] = 0, w = 1; w < re; w++) Z[w + 1] = Z[w] + R[w]; - for (b = 0; b < i; b++) 0 !== e[a + b] && (r[Z[e[a + b]]++] = b); - if (0 === t ? (A = T = r, u = 19) : 1 === t ? (A = le, E -= 257, T = oe, O -= 257, u = 256) : (A = he, T = de, u = -1), z = 0, b = 0, w = g, c = s, k = m, v = 0, _ = -1, x = 1 << m, f = x - 1, 1 === t && x > 852 || 2 === t && x > 592) return 1; - for (; ;) { - U = w - v, r[b] < u ? (S = 0, D = r[b]) : r[b] > u ? (S = T[O + r[b]], D = A[E + r[b]]) : (S = 96, D = 0), h = 1 << w - v, d = 1 << k, g = d; - do { - d -= h, n[c + (z >> v) + d] = U << 24 | S << 16 | D | 0 - } while (0 !== d); - for (h = 1 << w - 1; z & h;) h >>= 1; - if (0 !== h ? (z &= h - 1, z += h) : z = 0, b++, 0 == --R[w]) { - if (w === p) break; - w = e[a + r[b]] - } - if (w > m && (z & f) !== _) { - for (0 === v && (v = m), c += g, k = w - v, y = 1 << k; k + v < p && (y -= R[k + v], !(y <= 0));) k++, y <<= 1; - if (x += 1 << k, 1 === t && x > 852 || 2 === t && x > 592) return 1; - _ = z & f, n[_] = m << 24 | k << 16 | c - s | 0 - } - } - return 0 !== z && (n[c + z] = w - v << 24 | 64 << 16 | 0), l.bits = m, 0 - }; - const { - Z_FINISH: fe, - Z_BLOCK: ce, - Z_TREES: ue, - Z_OK: we, - Z_STREAM_END: be, - Z_NEED_DICT: ge, - Z_STREAM_ERROR: pe, - Z_DATA_ERROR: me, - Z_MEM_ERROR: ke, - Z_BUF_ERROR: ve, - Z_DEFLATED: ye - } = j, xe = 12, ze = 30, - Ae = t => (t >>> 24 & 255) + (t >>> 8 & 65280) + ((65280 & t) << 8) + ((255 & t) << 24); - - function Ee() { - this.mode = 0, this.last = !1, this.wrap = 0, this.havedict = !1, this.flags = 0, this.dmax = 0, this.check = 0, this.total = 0, this.head = null, this.wbits = 0, this.wsize = 0, this.whave = 0, this.wnext = 0, this.window = null, this.hold = 0, this.bits = 0, this.length = 0, this.offset = 0, this.extra = 0, this.lencode = null, this.distcode = null, this.lenbits = 0, this.distbits = 0, this.ncode = 0, this.nlen = 0, this.ndist = 0, this.have = 0, this.next = null, this.lens = new Uint16Array(320), this.work = new Uint16Array(288), this.lendyn = null, this.distdyn = null, this.sane = 0, this.back = 0, this.was = 0 - } - - const Re = t => { - if (!t || !t.state) return pe; - const e = t.state; - return t.total_in = t.total_out = e.total = 0, t.msg = "", e.wrap && (t.adler = 1 & e.wrap), e.mode = 1, e.last = 0, e.havedict = 0, e.dmax = 32768, e.head = null, e.hold = 0, e.bits = 0, e.lencode = e.lendyn = new Int32Array(852), e.distcode = e.distdyn = new Int32Array(592), e.sane = 1, e.back = -1, we - }, Ze = t => { - if (!t || !t.state) return pe; - const e = t.state; - return e.wsize = 0, e.whave = 0, e.wnext = 0, Re(t) - }, Ue = (t, e) => { - let a; - if (!t || !t.state) return pe; - const i = t.state; - return e < 0 ? (a = 0, e = -e) : (a = 1 + (e >> 4), e < 48 && (e &= 15)), e && (e < 8 || e > 15) ? pe : (null !== i.window && i.wbits !== e && (i.window = null), i.wrap = a, i.wbits = e, Ze(t)) - }, Se = (t, e) => { - if (!t) return pe; - const a = new Ee; - t.state = a, a.window = null; - const i = Ue(t, e); - return i !== we && (t.state = null), i - }; - let De, Te, Oe = !0; - const Ie = t => { - if (Oe) { - De = new Int32Array(512), Te = new Int32Array(32); - let e = 0; - for (; e < 144;) t.lens[e++] = 8; - for (; e < 256;) t.lens[e++] = 9; - for (; e < 280;) t.lens[e++] = 7; - for (; e < 288;) t.lens[e++] = 8; - for (_e(1, t.lens, 0, 288, De, 0, t.work, {bits: 9}), e = 0; e < 32;) t.lens[e++] = 5; - _e(2, t.lens, 0, 32, Te, 0, t.work, {bits: 5}), Oe = !1 - } - t.lencode = De, t.lenbits = 9, t.distcode = Te, t.distbits = 5 - }, Fe = (t, e, a, i) => { - let n; - const s = t.state; - return null === s.window && (s.wsize = 1 << s.wbits, s.wnext = 0, s.whave = 0, s.window = new Uint8Array(s.wsize)), i >= s.wsize ? (s.window.set(e.subarray(a - s.wsize, a), 0), s.wnext = 0, s.whave = s.wsize) : (n = s.wsize - s.wnext, n > i && (n = i), s.window.set(e.subarray(a - i, a - i + n), s.wnext), (i -= n) ? (s.window.set(e.subarray(a - i, a), 0), s.wnext = i, s.whave = s.wsize) : (s.wnext += n, s.wnext === s.wsize && (s.wnext = 0), s.whave < s.wsize && (s.whave += n))), 0 - }; - var Le = { - inflateReset: Ze, - inflateReset2: Ue, - inflateResetKeep: Re, - inflateInit: t => Se(t, 15), - inflateInit2: Se, - inflate: (t, e) => { - let a, i, n, s, r, l, o, h, d, _, f, c, u, w, b, g, p, m, k, v, y, x, z = 0; - const A = new Uint8Array(4); - let E, R; - const Z = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); - if (!t || !t.state || !t.output || !t.input && 0 !== t.avail_in) return pe; - a = t.state, a.mode === xe && (a.mode = 13), r = t.next_out, n = t.output, o = t.avail_out, s = t.next_in, i = t.input, l = t.avail_in, h = a.hold, d = a.bits, _ = l, f = o, x = we; - t:for (; ;) switch (a.mode) { - case 1: - if (0 === a.wrap) { - a.mode = 13; - break - } - for (; d < 16;) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - if (2 & a.wrap && 35615 === h) { - a.check = 0, A[0] = 255 & h, A[1] = h >>> 8 & 255, a.check = M(a.check, A, 2, 0), h = 0, d = 0, a.mode = 2; - break - } - if (a.flags = 0, a.head && (a.head.done = !1), !(1 & a.wrap) || (((255 & h) << 8) + (h >> 8)) % 31) { - t.msg = "incorrect header check", a.mode = ze; - break - } - if ((15 & h) !== ye) { - t.msg = "unknown compression method", a.mode = ze; - break - } - if (h >>>= 4, d -= 4, y = 8 + (15 & h), 0 === a.wbits) a.wbits = y; else if (y > a.wbits) { - t.msg = "invalid window size", a.mode = ze; - break - } - a.dmax = 1 << a.wbits, t.adler = a.check = 1, a.mode = 512 & h ? 10 : xe, h = 0, d = 0; - break; - case 2: - for (; d < 16;) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - if (a.flags = h, (255 & a.flags) !== ye) { - t.msg = "unknown compression method", a.mode = ze; - break - } - if (57344 & a.flags) { - t.msg = "unknown header flags set", a.mode = ze; - break - } - a.head && (a.head.text = h >> 8 & 1), 512 & a.flags && (A[0] = 255 & h, A[1] = h >>> 8 & 255, a.check = M(a.check, A, 2, 0)), h = 0, d = 0, a.mode = 3; - case 3: - for (; d < 32;) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - a.head && (a.head.time = h), 512 & a.flags && (A[0] = 255 & h, A[1] = h >>> 8 & 255, A[2] = h >>> 16 & 255, A[3] = h >>> 24 & 255, a.check = M(a.check, A, 4, 0)), h = 0, d = 0, a.mode = 4; - case 4: - for (; d < 16;) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - a.head && (a.head.xflags = 255 & h, a.head.os = h >> 8), 512 & a.flags && (A[0] = 255 & h, A[1] = h >>> 8 & 255, a.check = M(a.check, A, 2, 0)), h = 0, d = 0, a.mode = 5; - case 5: - if (1024 & a.flags) { - for (; d < 16;) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - a.length = h, a.head && (a.head.extra_len = h), 512 & a.flags && (A[0] = 255 & h, A[1] = h >>> 8 & 255, a.check = M(a.check, A, 2, 0)), h = 0, d = 0 - } else a.head && (a.head.extra = null); - a.mode = 6; - case 6: - if (1024 & a.flags && (c = a.length, c > l && (c = l), c && (a.head && (y = a.head.extra_len - a.length, a.head.extra || (a.head.extra = new Uint8Array(a.head.extra_len)), a.head.extra.set(i.subarray(s, s + c), y)), 512 & a.flags && (a.check = M(a.check, i, c, s)), l -= c, s += c, a.length -= c), a.length)) break t; - a.length = 0, a.mode = 7; - case 7: - if (2048 & a.flags) { - if (0 === l) break t; - c = 0; - do { - y = i[s + c++], a.head && y && a.length < 65536 && (a.head.name += String.fromCharCode(y)) - } while (y && c < l); - if (512 & a.flags && (a.check = M(a.check, i, c, s)), l -= c, s += c, y) break t - } else a.head && (a.head.name = null); - a.length = 0, a.mode = 8; - case 8: - if (4096 & a.flags) { - if (0 === l) break t; - c = 0; - do { - y = i[s + c++], a.head && y && a.length < 65536 && (a.head.comment += String.fromCharCode(y)) - } while (y && c < l); - if (512 & a.flags && (a.check = M(a.check, i, c, s)), l -= c, s += c, y) break t - } else a.head && (a.head.comment = null); - a.mode = 9; - case 9: - if (512 & a.flags) { - for (; d < 16;) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - if (h !== (65535 & a.check)) { - t.msg = "header crc mismatch", a.mode = ze; - break - } - h = 0, d = 0 - } - a.head && (a.head.hcrc = a.flags >> 9 & 1, a.head.done = !0), t.adler = a.check = 0, a.mode = xe; - break; - case 10: - for (; d < 32;) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - t.adler = a.check = Ae(h), h = 0, d = 0, a.mode = 11; - case 11: - if (0 === a.havedict) return t.next_out = r, t.avail_out = o, t.next_in = s, t.avail_in = l, a.hold = h, a.bits = d, ge; - t.adler = a.check = 1, a.mode = xe; - case xe: - if (e === ce || e === ue) break t; - case 13: - if (a.last) { - h >>>= 7 & d, d -= 7 & d, a.mode = 27; - break - } - for (; d < 3;) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - switch (a.last = 1 & h, h >>>= 1, d -= 1, 3 & h) { - case 0: - a.mode = 14; - break; - case 1: - if (Ie(a), a.mode = 20, e === ue) { - h >>>= 2, d -= 2; - break t - } - break; - case 2: - a.mode = 17; - break; - case 3: - t.msg = "invalid block type", a.mode = ze - } - h >>>= 2, d -= 2; - break; - case 14: - for (h >>>= 7 & d, d -= 7 & d; d < 32;) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - if ((65535 & h) != (h >>> 16 ^ 65535)) { - t.msg = "invalid stored block lengths", a.mode = ze; - break - } - if (a.length = 65535 & h, h = 0, d = 0, a.mode = 15, e === ue) break t; - case 15: - a.mode = 16; - case 16: - if (c = a.length, c) { - if (c > l && (c = l), c > o && (c = o), 0 === c) break t; - n.set(i.subarray(s, s + c), r), l -= c, s += c, o -= c, r += c, a.length -= c; - break - } - a.mode = xe; - break; - case 17: - for (; d < 14;) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - if (a.nlen = 257 + (31 & h), h >>>= 5, d -= 5, a.ndist = 1 + (31 & h), h >>>= 5, d -= 5, a.ncode = 4 + (15 & h), h >>>= 4, d -= 4, a.nlen > 286 || a.ndist > 30) { - t.msg = "too many length or distance symbols", a.mode = ze; - break - } - a.have = 0, a.mode = 18; - case 18: - for (; a.have < a.ncode;) { - for (; d < 3;) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - a.lens[Z[a.have++]] = 7 & h, h >>>= 3, d -= 3 - } - for (; a.have < 19;) a.lens[Z[a.have++]] = 0; - if (a.lencode = a.lendyn, a.lenbits = 7, E = {bits: a.lenbits}, x = _e(0, a.lens, 0, 19, a.lencode, 0, a.work, E), a.lenbits = E.bits, x) { - t.msg = "invalid code lengths set", a.mode = ze; - break - } - a.have = 0, a.mode = 19; - case 19: - for (; a.have < a.nlen + a.ndist;) { - for (; z = a.lencode[h & (1 << a.lenbits) - 1], b = z >>> 24, g = z >>> 16 & 255, p = 65535 & z, !(b <= d);) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - if (p < 16) h >>>= b, d -= b, a.lens[a.have++] = p; else { - if (16 === p) { - for (R = b + 2; d < R;) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - if (h >>>= b, d -= b, 0 === a.have) { - t.msg = "invalid bit length repeat", a.mode = ze; - break - } - y = a.lens[a.have - 1], c = 3 + (3 & h), h >>>= 2, d -= 2 - } else if (17 === p) { - for (R = b + 3; d < R;) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - h >>>= b, d -= b, y = 0, c = 3 + (7 & h), h >>>= 3, d -= 3 - } else { - for (R = b + 7; d < R;) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - h >>>= b, d -= b, y = 0, c = 11 + (127 & h), h >>>= 7, d -= 7 - } - if (a.have + c > a.nlen + a.ndist) { - t.msg = "invalid bit length repeat", a.mode = ze; - break - } - for (; c--;) a.lens[a.have++] = y - } - } - if (a.mode === ze) break; - if (0 === a.lens[256]) { - t.msg = "invalid code -- missing end-of-block", a.mode = ze; - break - } - if (a.lenbits = 9, E = {bits: a.lenbits}, x = _e(1, a.lens, 0, a.nlen, a.lencode, 0, a.work, E), a.lenbits = E.bits, x) { - t.msg = "invalid literal/lengths set", a.mode = ze; - break - } - if (a.distbits = 6, a.distcode = a.distdyn, E = {bits: a.distbits}, x = _e(2, a.lens, a.nlen, a.ndist, a.distcode, 0, a.work, E), a.distbits = E.bits, x) { - t.msg = "invalid distances set", a.mode = ze; - break - } - if (a.mode = 20, e === ue) break t; - case 20: - a.mode = 21; - case 21: - if (l >= 6 && o >= 258) { - t.next_out = r, t.avail_out = o, t.next_in = s, t.avail_in = l, a.hold = h, a.bits = d, se(t, f), r = t.next_out, n = t.output, o = t.avail_out, s = t.next_in, i = t.input, l = t.avail_in, h = a.hold, d = a.bits, a.mode === xe && (a.back = -1); - break - } - for (a.back = 0; z = a.lencode[h & (1 << a.lenbits) - 1], b = z >>> 24, g = z >>> 16 & 255, p = 65535 & z, !(b <= d);) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - if (g && 0 == (240 & g)) { - for (m = b, k = g, v = p; z = a.lencode[v + ((h & (1 << m + k) - 1) >> m)], b = z >>> 24, g = z >>> 16 & 255, p = 65535 & z, !(m + b <= d);) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - h >>>= m, d -= m, a.back += m - } - if (h >>>= b, d -= b, a.back += b, a.length = p, 0 === g) { - a.mode = 26; - break - } - if (32 & g) { - a.back = -1, a.mode = xe; - break - } - if (64 & g) { - t.msg = "invalid literal/length code", a.mode = ze; - break - } - a.extra = 15 & g, a.mode = 22; - case 22: - if (a.extra) { - for (R = a.extra; d < R;) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - a.length += h & (1 << a.extra) - 1, h >>>= a.extra, d -= a.extra, a.back += a.extra - } - a.was = a.length, a.mode = 23; - case 23: - for (; z = a.distcode[h & (1 << a.distbits) - 1], b = z >>> 24, g = z >>> 16 & 255, p = 65535 & z, !(b <= d);) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - if (0 == (240 & g)) { - for (m = b, k = g, v = p; z = a.distcode[v + ((h & (1 << m + k) - 1) >> m)], b = z >>> 24, g = z >>> 16 & 255, p = 65535 & z, !(m + b <= d);) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - h >>>= m, d -= m, a.back += m - } - if (h >>>= b, d -= b, a.back += b, 64 & g) { - t.msg = "invalid distance code", a.mode = ze; - break - } - a.offset = p, a.extra = 15 & g, a.mode = 24; - case 24: - if (a.extra) { - for (R = a.extra; d < R;) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - a.offset += h & (1 << a.extra) - 1, h >>>= a.extra, d -= a.extra, a.back += a.extra - } - if (a.offset > a.dmax) { - t.msg = "invalid distance too far back", a.mode = ze; - break - } - a.mode = 25; - case 25: - if (0 === o) break t; - if (c = f - o, a.offset > c) { - if (c = a.offset - c, c > a.whave && a.sane) { - t.msg = "invalid distance too far back", a.mode = ze; - break - } - c > a.wnext ? (c -= a.wnext, u = a.wsize - c) : u = a.wnext - c, c > a.length && (c = a.length), w = a.window - } else w = n, u = r - a.offset, c = a.length; - c > o && (c = o), o -= c, a.length -= c; - do { - n[r++] = w[u++] - } while (--c); - 0 === a.length && (a.mode = 21); - break; - case 26: - if (0 === o) break t; - n[r++] = a.length, o--, a.mode = 21; - break; - case 27: - if (a.wrap) { - for (; d < 32;) { - if (0 === l) break t; - l--, h |= i[s++] << d, d += 8 - } - if (f -= o, t.total_out += f, a.total += f, f && (t.adler = a.check = a.flags ? M(a.check, n, f, r - f) : B(a.check, n, f, r - f)), f = o, (a.flags ? h : Ae(h)) !== a.check) { - t.msg = "incorrect data check", a.mode = ze; - break - } - h = 0, d = 0 - } - a.mode = 28; - case 28: - if (a.wrap && a.flags) { - for (; d < 32;) { - if (0 === l) break t; - l--, h += i[s++] << d, d += 8 - } - if (h !== (4294967295 & a.total)) { - t.msg = "incorrect length check", a.mode = ze; - break - } - h = 0, d = 0 - } - a.mode = 29; - case 29: - x = be; - break t; - case ze: - x = me; - break t; - case 31: - return ke; - case 32: - default: - return pe - } - return t.next_out = r, t.avail_out = o, t.next_in = s, t.avail_in = l, a.hold = h, a.bits = d, (a.wsize || f !== t.avail_out && a.mode < ze && (a.mode < 27 || e !== fe)) && Fe(t, t.output, t.next_out, f - t.avail_out), _ -= t.avail_in, f -= t.avail_out, t.total_in += _, t.total_out += f, a.total += f, a.wrap && f && (t.adler = a.check = a.flags ? M(a.check, n, f, t.next_out - f) : B(a.check, n, f, t.next_out - f)), t.data_type = a.bits + (a.last ? 64 : 0) + (a.mode === xe ? 128 : 0) + (20 === a.mode || 15 === a.mode ? 256 : 0), (0 === _ && 0 === f || e === fe) && x === we && (x = ve), x - }, - inflateEnd: t => { - if (!t || !t.state) return pe; - let e = t.state; - return e.window && (e.window = null), t.state = null, we - }, - inflateGetHeader: (t, e) => { - if (!t || !t.state) return pe; - const a = t.state; - return 0 == (2 & a.wrap) ? pe : (a.head = e, e.done = !1, we) - }, - inflateSetDictionary: (t, e) => { - const a = e.length; - let i, n, s; - return t && t.state ? (i = t.state, 0 !== i.wrap && 11 !== i.mode ? pe : 11 === i.mode && (n = 1, n = B(n, e, a, 0), n !== i.check) ? me : (s = Fe(t, e, a, a), s ? (i.mode = 31, ke) : (i.havedict = 1, we))) : pe - }, - inflateInfo: "pako inflate (from Nodeca project)" - }; - var Ne = function () { - this.text = 0, this.time = 0, this.xflags = 0, this.os = 0, this.extra = null, this.extra_len = 0, this.name = "", this.comment = "", this.hcrc = 0, this.done = !1 - }; - const Be = Object.prototype.toString, { - Z_NO_FLUSH: Ce, - Z_FINISH: Me, - Z_OK: He, - Z_STREAM_END: je, - Z_NEED_DICT: Ke, - Z_STREAM_ERROR: Pe, - Z_DATA_ERROR: Ye, - Z_MEM_ERROR: Ge - } = j; - - function Xe(t) { - this.options = Bt({chunkSize: 65536, windowBits: 15, to: ""}, t || {}); - const e = this.options; - e.raw && e.windowBits >= 0 && e.windowBits < 16 && (e.windowBits = -e.windowBits, 0 === e.windowBits && (e.windowBits = -15)), !(e.windowBits >= 0 && e.windowBits < 16) || t && t.windowBits || (e.windowBits += 32), e.windowBits > 15 && e.windowBits < 48 && 0 == (15 & e.windowBits) && (e.windowBits |= 15), this.err = 0, this.msg = "", this.ended = !1, this.chunks = [], this.strm = new Yt, this.strm.avail_out = 0; - let a = Le.inflateInit2(this.strm, e.windowBits); - if (a !== He) throw new Error(H[a]); - if (this.header = new Ne, Le.inflateGetHeader(this.strm, this.header), e.dictionary && ("string" == typeof e.dictionary ? e.dictionary = jt(e.dictionary) : "[object ArrayBuffer]" === Be.call(e.dictionary) && (e.dictionary = new Uint8Array(e.dictionary)), e.raw && (a = Le.inflateSetDictionary(this.strm, e.dictionary), a !== He))) throw new Error(H[a]) - } - - function We(t, e) { - const a = new Xe(e); - if (a.push(t), a.err) throw a.msg || H[a.err]; - return a.result - } - - Xe.prototype.push = function (t, e) { - const a = this.strm, i = this.options.chunkSize, n = this.options.dictionary; - let s, r, l; - if (this.ended) return !1; - for (r = e === ~~e ? e : !0 === e ? Me : Ce, "[object ArrayBuffer]" === Be.call(t) ? a.input = new Uint8Array(t) : a.input = t, a.next_in = 0, a.avail_in = a.input.length; ;) { - for (0 === a.avail_out && (a.output = new Uint8Array(i), a.next_out = 0, a.avail_out = i), s = Le.inflate(a, r), s === Ke && n && (s = Le.inflateSetDictionary(a, n), s === He ? s = Le.inflate(a, r) : s === Ye && (s = Ke)); a.avail_in > 0 && s === je && a.state.wrap > 0 && 0 !== t[a.next_in];) Le.inflateReset(a), s = Le.inflate(a, r); - switch (s) { - case Pe: - case Ye: - case Ke: - case Ge: - return this.onEnd(s), this.ended = !0, !1 - } - if (l = a.avail_out, a.next_out && (0 === a.avail_out || s === je)) if ("string" === this.options.to) { - let t = Pt(a.output, a.next_out), e = a.next_out - t, n = Kt(a.output, t); - a.next_out = e, a.avail_out = i - e, e && a.output.set(a.output.subarray(t, t + e), 0), this.onData(n) - } else this.onData(a.output.length === a.next_out ? a.output : a.output.subarray(0, a.next_out)); - if (s !== He || 0 !== l) { - if (s === je) return s = Le.inflateEnd(this.strm), this.onEnd(s), this.ended = !0, !0; - if (0 === a.avail_in) break - } - } - return !0 - }, Xe.prototype.onData = function (t) { - this.chunks.push(t) - }, Xe.prototype.onEnd = function (t) { - t === He && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = Ct(this.chunks)), this.chunks = [], this.err = t, this.msg = this.strm.msg - }; - var qe = { - Inflate: Xe, inflate: We, inflateRaw: function (t, e) { - return (e = e || {}).raw = !0, We(t, e) - }, ungzip: We, constants: j - }; - const {Deflate: Je, deflate: Qe, deflateRaw: Ve, gzip: $e} = ne, { - Inflate: ta, - inflate: ea, - inflateRaw: aa, - ungzip: ia - } = qe; - var na = Je, sa = Qe, ra = Ve, la = $e, oa = ta, ha = ea, da = aa, _a = ia, fa = j, - ca = { - Deflate: na, - deflate: sa, - deflateRaw: ra, - gzip: la, - Inflate: oa, - inflate: ha, - inflateRaw: da, - ungzip: _a, - constants: fa - }; - t.Deflate = na, t.Inflate = oa, t.constants = fa, t.default = ca, t.deflate = sa, t.deflateRaw = ra, t.gzip = la, t.inflate = ha, t.inflateRaw = da, t.ungzip = _a, Object.defineProperty(t, "__esModule", {value: !0}) - })); + !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).pako={})}(this,(function(t){"use strict";function e(t){let e=t.length;for(;--e>=0;)t[e]=0}const a=256,i=286,n=30,s=15,r=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),l=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),o=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),h=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),d=new Array(576);e(d);const _=new Array(60);e(_);const f=new Array(512);e(f);const c=new Array(256);e(c);const u=new Array(29);e(u);const w=new Array(n);function b(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}let g,p,m;function k(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}e(w);const v=t=>t<256?f[t]:f[256+(t>>>7)],y=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},x=(t,e,a)=>{t.bi_valid>16-a?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=a-16):(t.bi_buf|=e<{x(t,a[2*e],a[2*e+1])},A=(t,e)=>{let a=0;do{a|=1&t,t>>>=1,a<<=1}while(--e>0);return a>>>1},E=(t,e,a)=>{const i=new Array(16);let n,r,l=0;for(n=1;n<=s;n++)i[n]=l=l+a[n-1]<<1;for(r=0;r<=e;r++){let e=t[2*r+1];0!==e&&(t[2*r]=A(i[e]++,e))}},R=t=>{let e;for(e=0;e{t.bi_valid>8?y(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},U=(t,e,a,i)=>{const n=2*e,s=2*a;return t[n]{const i=t.heap[a];let n=a<<1;for(;n<=t.heap_len&&(n{let n,s,o,h,d=0;if(0!==t.last_lit)do{n=t.pending_buf[t.d_buf+2*d]<<8|t.pending_buf[t.d_buf+2*d+1],s=t.pending_buf[t.l_buf+d],d++,0===n?z(t,s,e):(o=c[s],z(t,o+a+1,e),h=r[o],0!==h&&(s-=u[o],x(t,s,h)),n--,o=v(n),z(t,o,i),h=l[o],0!==h&&(n-=w[o],x(t,n,h)))}while(d{const a=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,r=e.stat_desc.elems;let l,o,h,d=-1;for(t.heap_len=0,t.heap_max=573,l=0;l>1;l>=1;l--)S(t,a,l);h=r;do{l=t.heap[1],t.heap[1]=t.heap[t.heap_len--],S(t,a,1),o=t.heap[1],t.heap[--t.heap_max]=l,t.heap[--t.heap_max]=o,a[2*h]=a[2*l]+a[2*o],t.depth[h]=(t.depth[l]>=t.depth[o]?t.depth[l]:t.depth[o])+1,a[2*l+1]=a[2*o+1]=h,t.heap[1]=h++,S(t,a,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const a=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,r=e.stat_desc.has_stree,l=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,h=e.stat_desc.max_length;let d,_,f,c,u,w,b=0;for(c=0;c<=s;c++)t.bl_count[c]=0;for(a[2*t.heap[t.heap_max]+1]=0,d=t.heap_max+1;d<573;d++)_=t.heap[d],c=a[2*a[2*_+1]+1]+1,c>h&&(c=h,b++),a[2*_+1]=c,_>i||(t.bl_count[c]++,u=0,_>=o&&(u=l[_-o]),w=a[2*_],t.opt_len+=w*(c+u),r&&(t.static_len+=w*(n[2*_+1]+u)));if(0!==b){do{for(c=h-1;0===t.bl_count[c];)c--;t.bl_count[c]--,t.bl_count[c+1]+=2,t.bl_count[h]--,b-=2}while(b>0);for(c=h;0!==c;c--)for(_=t.bl_count[c];0!==_;)f=t.heap[--d],f>i||(a[2*f+1]!==c&&(t.opt_len+=(c-a[2*f+1])*a[2*f],a[2*f+1]=c),_--)}})(t,e),E(a,d,t.bl_count)},O=(t,e,a)=>{let i,n,s=-1,r=e[1],l=0,o=7,h=4;for(0===r&&(o=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=r,r=e[2*(i+1)+1],++l{let i,n,s=-1,r=e[1],l=0,o=7,h=4;for(0===r&&(o=138,h=3),i=0;i<=a;i++)if(n=r,r=e[2*(i+1)+1],!(++l{x(t,0+(i?1:0),3),((t,e,a,i)=>{Z(t),i&&(y(t,a),y(t,~a)),t.pending_buf.set(t.window.subarray(e,e+a),t.pending),t.pending+=a})(t,e,a,!0)};var N={_tr_init:t=>{F||((()=>{let t,e,a,h,k;const v=new Array(16);for(a=0,h=0;h<28;h++)for(u[h]=a,t=0;t<1<>=7;h{let s,r,l=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,i=4093624447;for(e=0;e<=31;e++,i>>>=1)if(1&i&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e{let e;for(O(t,t.dyn_ltree,t.l_desc.max_code),O(t,t.dyn_dtree,t.d_desc.max_code),T(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*h[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),s=t.opt_len+3+7>>>3,r=t.static_len+3+7>>>3,r<=s&&(s=r)):s=r=i+5,i+4<=s&&-1!==e?L(t,e,i,n):4===t.strategy||r===s?(x(t,2+(n?1:0),3),D(t,d,_)):(x(t,4+(n?1:0),3),((t,e,a,i)=>{let n;for(x(t,e-257,5),x(t,a-1,5),x(t,i-4,4),n=0;n(t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&i,t.last_lit++,0===e?t.dyn_ltree[2*i]++:(t.matches++,e--,t.dyn_ltree[2*(c[i]+a+1)]++,t.dyn_dtree[2*v(e)]++),t.last_lit===t.lit_bufsize-1),_tr_align:t=>{x(t,2,3),z(t,256,d),(t=>{16===t.bi_valid?(y(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var B=(t,e,a,i)=>{let n=65535&t|0,s=t>>>16&65535|0,r=0;for(;0!==a;){r=a>2e3?2e3:a,a-=r;do{n=n+e[i++]|0,s=s+n|0}while(--r);n%=65521,s%=65521}return n|s<<16|0};const C=new Uint32Array((()=>{let t,e=[];for(var a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e})());var M=(t,e,a,i)=>{const n=C,s=i+a;t^=-1;for(let a=i;a>>8^n[255&(t^e[a])];return-1^t},H={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},j={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:K,_tr_stored_block:P,_tr_flush_block:Y,_tr_tally:G,_tr_align:X}=N,{Z_NO_FLUSH:W,Z_PARTIAL_FLUSH:q,Z_FULL_FLUSH:J,Z_FINISH:Q,Z_BLOCK:V,Z_OK:$,Z_STREAM_END:tt,Z_STREAM_ERROR:et,Z_DATA_ERROR:at,Z_BUF_ERROR:it,Z_DEFAULT_COMPRESSION:nt,Z_FILTERED:st,Z_HUFFMAN_ONLY:rt,Z_RLE:lt,Z_FIXED:ot,Z_DEFAULT_STRATEGY:ht,Z_UNKNOWN:dt,Z_DEFLATED:_t}=j,ft=258,ct=262,ut=103,wt=113,bt=666,gt=(t,e)=>(t.msg=H[e],e),pt=t=>(t<<1)-(t>4?9:0),mt=t=>{let e=t.length;for(;--e>=0;)t[e]=0};let kt=(t,e,a)=>(e<{const e=t.state;let a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+a),t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))},yt=(t,e)=>{Y(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,vt(t.strm)},xt=(t,e)=>{t.pending_buf[t.pending++]=e},zt=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},At=(t,e,a,i)=>{let n=t.avail_in;return n>i&&(n=i),0===n?0:(t.avail_in-=n,e.set(t.input.subarray(t.next_in,t.next_in+n),a),1===t.state.wrap?t.adler=B(t.adler,e,n,a):2===t.state.wrap&&(t.adler=M(t.adler,e,n,a)),t.next_in+=n,t.total_in+=n,n)},Et=(t,e)=>{let a,i,n=t.max_chain_length,s=t.strstart,r=t.prev_length,l=t.nice_match;const o=t.strstart>t.w_size-ct?t.strstart-(t.w_size-ct):0,h=t.window,d=t.w_mask,_=t.prev,f=t.strstart+ft;let c=h[s+r-1],u=h[s+r];t.prev_length>=t.good_match&&(n>>=2),l>t.lookahead&&(l=t.lookahead);do{if(a=e,h[a+r]===u&&h[a+r-1]===c&&h[a]===h[s]&&h[++a]===h[s+1]){s+=2,a++;do{}while(h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&h[++s]===h[++a]&&sr){if(t.match_start=e,r=i,i>=l)break;c=h[s+r-1],u=h[s+r]}}}while((e=_[e&d])>o&&0!=--n);return r<=t.lookahead?r:t.lookahead},Rt=t=>{const e=t.w_size;let a,i,n,s,r;do{if(s=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-ct)){t.window.set(t.window.subarray(e,e+e),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,i=t.hash_size,a=i;do{n=t.head[--a],t.head[a]=n>=e?n-e:0}while(--i);i=e,a=i;do{n=t.prev[--a],t.prev[a]=n>=e?n-e:0}while(--i);s+=e}if(0===t.strm.avail_in)break;if(i=At(t.strm,t.window,t.strstart+t.lookahead,s),t.lookahead+=i,t.lookahead+t.insert>=3)for(r=t.strstart-t.insert,t.ins_h=t.window[r],t.ins_h=kt(t,t.ins_h,t.window[r+1]);t.insert&&(t.ins_h=kt(t,t.ins_h,t.window[r+3-1]),t.prev[r&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=r,r++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead{let a,i;for(;;){if(t.lookahead=3&&(t.ins_h=kt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-ct&&(t.match_length=Et(t,a)),t.match_length>=3)if(i=G(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=kt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=kt(t,t.ins_h,t.window[t.strstart+1]);else i=G(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===Q?(yt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(yt(t,!1),0===t.strm.avail_out)?1:2},Ut=(t,e)=>{let a,i,n;for(;;){if(t.lookahead=3&&(t.ins_h=kt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==a&&t.prev_length4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-3,i=G(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=n&&(t.ins_h=kt(t,t.ins_h,t.window[t.strstart+3-1]),a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,i&&(yt(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(i=G(t,0,t.window[t.strstart-1]),i&&yt(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=G(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===Q?(yt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(yt(t,!1),0===t.strm.avail_out)?1:2};function St(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}const Dt=[new St(0,0,0,0,((t,e)=>{let a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(Rt(t),0===t.lookahead&&e===W)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;const i=t.block_start+a;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,yt(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-ct&&(yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===Q?(yt(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(yt(t,!1),t.strm.avail_out),1)})),new St(4,4,8,4,Zt),new St(4,5,16,8,Zt),new St(4,6,32,32,Zt),new St(4,4,16,16,Ut),new St(8,16,32,32,Ut),new St(8,16,128,128,Ut),new St(8,32,128,256,Ut),new St(32,128,258,1024,Ut),new St(32,258,258,4096,Ut)];function Tt(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=_t,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),mt(this.dyn_ltree),mt(this.dyn_dtree),mt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),mt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),mt(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Ot=t=>{if(!t||!t.state)return gt(t,et);t.total_in=t.total_out=0,t.data_type=dt;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:wt,t.adler=2===e.wrap?0:1,e.last_flush=W,K(e),$},It=t=>{const e=Ot(t);var a;return e===$&&((a=t.state).window_size=2*a.w_size,mt(a.head),a.max_lazy_match=Dt[a.level].max_lazy,a.good_match=Dt[a.level].good_length,a.nice_match=Dt[a.level].nice_length,a.max_chain_length=Dt[a.level].max_chain,a.strstart=0,a.block_start=0,a.lookahead=0,a.insert=0,a.match_length=a.prev_length=2,a.match_available=0,a.ins_h=0),e},Ft=(t,e,a,i,n,s)=>{if(!t)return et;let r=1;if(e===nt&&(e=6),i<0?(r=0,i=-i):i>15&&(r=2,i-=16),n<1||n>9||a!==_t||i<8||i>15||e<0||e>9||s<0||s>ot)return gt(t,et);8===i&&(i=9);const l=new Tt;return t.state=l,l.strm=t,l.wrap=r,l.gzhead=null,l.w_bits=i,l.w_size=1<Ft(t,e,_t,15,8,ht),deflateInit2:Ft,deflateReset:It,deflateResetKeep:Ot,deflateSetHeader:(t,e)=>t&&t.state?2!==t.state.wrap?et:(t.state.gzhead=e,$):et,deflate:(t,e)=>{let a,i;if(!t||!t.state||e>V||e<0)return t?gt(t,et):et;const n=t.state;if(!t.output||!t.input&&0!==t.avail_in||n.status===bt&&e!==Q)return gt(t,0===t.avail_out?it:et);n.strm=t;const s=n.last_flush;if(n.last_flush=e,42===n.status)if(2===n.wrap)t.adler=0,xt(n,31),xt(n,139),xt(n,8),n.gzhead?(xt(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),xt(n,255&n.gzhead.time),xt(n,n.gzhead.time>>8&255),xt(n,n.gzhead.time>>16&255),xt(n,n.gzhead.time>>24&255),xt(n,9===n.level?2:n.strategy>=rt||n.level<2?4:0),xt(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(xt(n,255&n.gzhead.extra.length),xt(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(t.adler=M(t.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69):(xt(n,0),xt(n,0),xt(n,0),xt(n,0),xt(n,0),xt(n,9===n.level?2:n.strategy>=rt||n.level<2?4:0),xt(n,3),n.status=wt);else{let e=_t+(n.w_bits-8<<4)<<8,a=-1;a=n.strategy>=rt||n.level<2?0:n.level<6?1:6===n.level?2:3,e|=a<<6,0!==n.strstart&&(e|=32),e+=31-e%31,n.status=wt,zt(n,e),0!==n.strstart&&(zt(n,t.adler>>>16),zt(n,65535&t.adler)),t.adler=1}if(69===n.status)if(n.gzhead.extra){for(a=n.pending;n.gzindex<(65535&n.gzhead.extra.length)&&(n.pending!==n.pending_buf_size||(n.gzhead.hcrc&&n.pending>a&&(t.adler=M(t.adler,n.pending_buf,n.pending-a,a)),vt(t),a=n.pending,n.pending!==n.pending_buf_size));)xt(n,255&n.gzhead.extra[n.gzindex]),n.gzindex++;n.gzhead.hcrc&&n.pending>a&&(t.adler=M(t.adler,n.pending_buf,n.pending-a,a)),n.gzindex===n.gzhead.extra.length&&(n.gzindex=0,n.status=73)}else n.status=73;if(73===n.status)if(n.gzhead.name){a=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>a&&(t.adler=M(t.adler,n.pending_buf,n.pending-a,a)),vt(t),a=n.pending,n.pending===n.pending_buf_size)){i=1;break}i=n.gzindexa&&(t.adler=M(t.adler,n.pending_buf,n.pending-a,a)),0===i&&(n.gzindex=0,n.status=91)}else n.status=91;if(91===n.status)if(n.gzhead.comment){a=n.pending;do{if(n.pending===n.pending_buf_size&&(n.gzhead.hcrc&&n.pending>a&&(t.adler=M(t.adler,n.pending_buf,n.pending-a,a)),vt(t),a=n.pending,n.pending===n.pending_buf_size)){i=1;break}i=n.gzindexa&&(t.adler=M(t.adler,n.pending_buf,n.pending-a,a)),0===i&&(n.status=ut)}else n.status=ut;if(n.status===ut&&(n.gzhead.hcrc?(n.pending+2>n.pending_buf_size&&vt(t),n.pending+2<=n.pending_buf_size&&(xt(n,255&t.adler),xt(n,t.adler>>8&255),t.adler=0,n.status=wt)):n.status=wt),0!==n.pending){if(vt(t),0===t.avail_out)return n.last_flush=-1,$}else if(0===t.avail_in&&pt(e)<=pt(s)&&e!==Q)return gt(t,it);if(n.status===bt&&0!==t.avail_in)return gt(t,it);if(0!==t.avail_in||0!==n.lookahead||e!==W&&n.status!==bt){let a=n.strategy===rt?((t,e)=>{let a;for(;;){if(0===t.lookahead&&(Rt(t),0===t.lookahead)){if(e===W)return 1;break}if(t.match_length=0,a=G(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===Q?(yt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(yt(t,!1),0===t.strm.avail_out)?1:2})(n,e):n.strategy===lt?((t,e)=>{let a,i,n,s;const r=t.window;for(;;){if(t.lookahead<=ft){if(Rt(t),t.lookahead<=ft&&e===W)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(n=t.strstart-1,i=r[n],i===r[++n]&&i===r[++n]&&i===r[++n])){s=t.strstart+ft;do{}while(i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&i===r[++n]&&nt.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(a=G(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=G(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(yt(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===Q?(yt(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(yt(t,!1),0===t.strm.avail_out)?1:2})(n,e):Dt[n.level].func(n,e);if(3!==a&&4!==a||(n.status=bt),1===a||3===a)return 0===t.avail_out&&(n.last_flush=-1),$;if(2===a&&(e===q?X(n):e!==V&&(P(n,0,0,!1),e===J&&(mt(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),vt(t),0===t.avail_out))return n.last_flush=-1,$}return e!==Q?$:n.wrap<=0?tt:(2===n.wrap?(xt(n,255&t.adler),xt(n,t.adler>>8&255),xt(n,t.adler>>16&255),xt(n,t.adler>>24&255),xt(n,255&t.total_in),xt(n,t.total_in>>8&255),xt(n,t.total_in>>16&255),xt(n,t.total_in>>24&255)):(zt(n,t.adler>>>16),zt(n,65535&t.adler)),vt(t),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?$:tt)},deflateEnd:t=>{if(!t||!t.state)return et;const e=t.state.status;return 42!==e&&69!==e&&73!==e&&91!==e&&e!==ut&&e!==wt&&e!==bt?gt(t,et):(t.state=null,e===wt?gt(t,at):$)},deflateSetDictionary:(t,e)=>{let a=e.length;if(!t||!t.state)return et;const i=t.state,n=i.wrap;if(2===n||1===n&&42!==i.status||i.lookahead)return et;if(1===n&&(t.adler=B(t.adler,e,a,0)),i.wrap=0,a>=i.w_size){0===n&&(mt(i.head),i.strstart=0,i.block_start=0,i.insert=0);let t=new Uint8Array(i.w_size);t.set(e.subarray(a-i.w_size,a),0),e=t,a=i.w_size}const s=t.avail_in,r=t.next_in,l=t.input;for(t.avail_in=a,t.next_in=0,t.input=e,Rt(i);i.lookahead>=3;){let t=i.strstart,e=i.lookahead-2;do{i.ins_h=kt(i,i.ins_h,i.window[t+3-1]),i.prev[t&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=t,t++}while(--e);i.strstart=t,i.lookahead=2,Rt(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,t.next_in=r,t.input=l,t.avail_in=s,i.wrap=n,$},deflateInfo:"pako deflate (from Nodeca project)"};const Nt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Bt=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const a=e.shift();if(a){if("object"!=typeof a)throw new TypeError(a+"must be non-object");for(const e in a)Nt(a,e)&&(t[e]=a[e])}}return t},Ct=t=>{let e=0;for(let a=0,i=t.length;a=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Ht[254]=Ht[254]=1;var jt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,a,i,n,s,r=t.length,l=0;for(n=0;n>>6,e[s++]=128|63&a):a<65536?(e[s++]=224|a>>>12,e[s++]=128|a>>>6&63,e[s++]=128|63&a):(e[s++]=240|a>>>18,e[s++]=128|a>>>12&63,e[s++]=128|a>>>6&63,e[s++]=128|63&a);return e},Kt=(t,e)=>{const a=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let i,n;const s=new Array(2*a);for(n=0,i=0;i4)s[n++]=65533,i+=r-1;else{for(e&=2===r?31:3===r?15:7;r>1&&i1?s[n++]=65533:e<65536?s[n++]=e:(e-=65536,s[n++]=55296|e>>10&1023,s[n++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&Mt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let a="";for(let i=0;i{(e=e||t.length)>t.length&&(e=t.length);let a=e-1;for(;a>=0&&128==(192&t[a]);)a--;return a<0||0===a?e:a+Ht[t[a]]>e?a:e};var Yt=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Gt=Object.prototype.toString,{Z_NO_FLUSH:Xt,Z_SYNC_FLUSH:Wt,Z_FULL_FLUSH:qt,Z_FINISH:Jt,Z_OK:Qt,Z_STREAM_END:Vt,Z_DEFAULT_COMPRESSION:$t,Z_DEFAULT_STRATEGY:te,Z_DEFLATED:ee}=j;function ae(t){this.options=Bt({level:$t,method:ee,chunkSize:16384,windowBits:15,memLevel:8,strategy:te},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Yt,this.strm.avail_out=0;let a=Lt.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==Qt)throw new Error(H[a]);if(e.header&&Lt.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?jt(e.dictionary):"[object ArrayBuffer]"===Gt.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,a=Lt.deflateSetDictionary(this.strm,t),a!==Qt)throw new Error(H[a]);this._dict_set=!0}}function ie(t,e){const a=new ae(e);if(a.push(t,!0),a.err)throw a.msg||H[a.err];return a.result}ae.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize;let n,s;if(this.ended)return!1;for(s=e===~~e?e:!0===e?Jt:Xt,"string"==typeof t?a.input=jt(t):"[object ArrayBuffer]"===Gt.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;)if(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),(s===Wt||s===qt)&&a.avail_out<=6)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else{if(n=Lt.deflate(a,s),n===Vt)return a.next_out>0&&this.onData(a.output.subarray(0,a.next_out)),n=Lt.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===Qt;if(0!==a.avail_out){if(s>0&&a.next_out>0)this.onData(a.output.subarray(0,a.next_out)),a.avail_out=0;else if(0===a.avail_in)break}else this.onData(a.output)}return!0},ae.prototype.onData=function(t){this.chunks.push(t)},ae.prototype.onEnd=function(t){t===Qt&&(this.result=Ct(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var ne={Deflate:ae,deflate:ie,deflateRaw:function(t,e){return(e=e||{}).raw=!0,ie(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,ie(t,e)},constants:j};var se=function(t,e){let a,i,n,s,r,l,o,h,d,_,f,c,u,w,b,g,p,m,k,v,y,x,z,A;const E=t.state;a=t.next_in,z=t.input,i=a+(t.avail_in-5),n=t.next_out,A=t.output,s=n-(e-t.avail_out),r=n+(t.avail_out-257),l=E.dmax,o=E.wsize,h=E.whave,d=E.wnext,_=E.window,f=E.hold,c=E.bits,u=E.lencode,w=E.distcode,b=(1<>>24,f>>>=m,c-=m,m=p>>>16&255,0===m)A[n++]=65535&p;else{if(!(16&m)){if(0==(64&m)){p=u[(65535&p)+(f&(1<>>=m,c-=m),c<15&&(f+=z[a++]<>>24,f>>>=m,c-=m,m=p>>>16&255,!(16&m)){if(0==(64&m)){p=w[(65535&p)+(f&(1<l){t.msg="invalid distance too far back",E.mode=30;break t}if(f>>>=m,c-=m,m=n-s,v>m){if(m=v-m,m>h&&E.sane){t.msg="invalid distance too far back",E.mode=30;break t}if(y=0,x=_,0===d){if(y+=o-m,m2;)A[n++]=x[y++],A[n++]=x[y++],A[n++]=x[y++],k-=3;k&&(A[n++]=x[y++],k>1&&(A[n++]=x[y++]))}else{y=n-v;do{A[n++]=A[y++],A[n++]=A[y++],A[n++]=A[y++],k-=3}while(k>2);k&&(A[n++]=A[y++],k>1&&(A[n++]=A[y++]))}break}}break}}while(a>3,a-=k,c-=k<<3,f&=(1<{const o=l.bits;let h,d,_,f,c,u,w=0,b=0,g=0,p=0,m=0,k=0,v=0,y=0,x=0,z=0,A=null,E=0;const R=new Uint16Array(16),Z=new Uint16Array(16);let U,S,D,T=null,O=0;for(w=0;w<=re;w++)R[w]=0;for(b=0;b=1&&0===R[p];p--);if(m>p&&(m=p),0===p)return n[s++]=20971520,n[s++]=20971520,l.bits=1,0;for(g=1;g0&&(0===t||1!==p))return-1;for(Z[1]=0,w=1;w852||2===t&&x>592)return 1;for(;;){U=w-v,r[b]u?(S=T[O+r[b]],D=A[E+r[b]]):(S=96,D=0),h=1<>v)+d]=U<<24|S<<16|D|0}while(0!==d);for(h=1<>=1;if(0!==h?(z&=h-1,z+=h):z=0,b++,0==--R[w]){if(w===p)break;w=e[a+r[b]]}if(w>m&&(z&f)!==_){for(0===v&&(v=m),c+=g,k=w-v,y=1<852||2===t&&x>592)return 1;_=z&f,n[_]=m<<24|k<<16|c-s|0}}return 0!==z&&(n[c+z]=w-v<<24|64<<16|0),l.bits=m,0};const{Z_FINISH:fe,Z_BLOCK:ce,Z_TREES:ue,Z_OK:we,Z_STREAM_END:be,Z_NEED_DICT:ge,Z_STREAM_ERROR:pe,Z_DATA_ERROR:me,Z_MEM_ERROR:ke,Z_BUF_ERROR:ve,Z_DEFLATED:ye}=j,xe=12,ze=30,Ae=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Ee(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Re=t=>{if(!t||!t.state)return pe;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,we},Ze=t=>{if(!t||!t.state)return pe;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Re(t)},Ue=(t,e)=>{let a;if(!t||!t.state)return pe;const i=t.state;return e<0?(a=0,e=-e):(a=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?pe:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,Ze(t))},Se=(t,e)=>{if(!t)return pe;const a=new Ee;t.state=a,a.window=null;const i=Ue(t,e);return i!==we&&(t.state=null),i};let De,Te,Oe=!0;const Ie=t=>{if(Oe){De=new Int32Array(512),Te=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(_e(1,t.lens,0,288,De,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;_e(2,t.lens,0,32,Te,0,t.work,{bits:5}),Oe=!1}t.lencode=De,t.lenbits=9,t.distcode=Te,t.distbits=5},Fe=(t,e,a,i)=>{let n;const s=t.state;return null===s.window&&(s.wsize=1<=s.wsize?(s.window.set(e.subarray(a-s.wsize,a),0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),s.window.set(e.subarray(a-i,a-i+n),s.wnext),(i-=n)?(s.window.set(e.subarray(a-i,a),0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whaveSe(t,15),inflateInit2:Se,inflate:(t,e)=>{let a,i,n,s,r,l,o,h,d,_,f,c,u,w,b,g,p,m,k,v,y,x,z=0;const A=new Uint8Array(4);let E,R;const Z=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return pe;a=t.state,a.mode===xe&&(a.mode=13),r=t.next_out,n=t.output,o=t.avail_out,s=t.next_in,i=t.input,l=t.avail_in,h=a.hold,d=a.bits,_=l,f=o,x=we;t:for(;;)switch(a.mode){case 1:if(0===a.wrap){a.mode=13;break}for(;d<16;){if(0===l)break t;l--,h+=i[s++]<>>8&255,a.check=M(a.check,A,2,0),h=0,d=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg="incorrect header check",a.mode=ze;break}if((15&h)!==ye){t.msg="unknown compression method",a.mode=ze;break}if(h>>>=4,d-=4,y=8+(15&h),0===a.wbits)a.wbits=y;else if(y>a.wbits){t.msg="invalid window size",a.mode=ze;break}a.dmax=1<>8&1),512&a.flags&&(A[0]=255&h,A[1]=h>>>8&255,a.check=M(a.check,A,2,0)),h=0,d=0,a.mode=3;case 3:for(;d<32;){if(0===l)break t;l--,h+=i[s++]<>>8&255,A[2]=h>>>16&255,A[3]=h>>>24&255,a.check=M(a.check,A,4,0)),h=0,d=0,a.mode=4;case 4:for(;d<16;){if(0===l)break t;l--,h+=i[s++]<>8),512&a.flags&&(A[0]=255&h,A[1]=h>>>8&255,a.check=M(a.check,A,2,0)),h=0,d=0,a.mode=5;case 5:if(1024&a.flags){for(;d<16;){if(0===l)break t;l--,h+=i[s++]<>>8&255,a.check=M(a.check,A,2,0)),h=0,d=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(c=a.length,c>l&&(c=l),c&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Uint8Array(a.head.extra_len)),a.head.extra.set(i.subarray(s,s+c),y)),512&a.flags&&(a.check=M(a.check,i,c,s)),l-=c,s+=c,a.length-=c),a.length))break t;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===l)break t;c=0;do{y=i[s+c++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y))}while(y&&c>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=xe;break;case 10:for(;d<32;){if(0===l)break t;l--,h+=i[s++]<>>=7&d,d-=7&d,a.mode=27;break}for(;d<3;){if(0===l)break t;l--,h+=i[s++]<>>=1,d-=1,3&h){case 0:a.mode=14;break;case 1:if(Ie(a),a.mode=20,e===ue){h>>>=2,d-=2;break t}break;case 2:a.mode=17;break;case 3:t.msg="invalid block type",a.mode=ze}h>>>=2,d-=2;break;case 14:for(h>>>=7&d,d-=7&d;d<32;){if(0===l)break t;l--,h+=i[s++]<>>16^65535)){t.msg="invalid stored block lengths",a.mode=ze;break}if(a.length=65535&h,h=0,d=0,a.mode=15,e===ue)break t;case 15:a.mode=16;case 16:if(c=a.length,c){if(c>l&&(c=l),c>o&&(c=o),0===c)break t;n.set(i.subarray(s,s+c),r),l-=c,s+=c,o-=c,r+=c,a.length-=c;break}a.mode=xe;break;case 17:for(;d<14;){if(0===l)break t;l--,h+=i[s++]<>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,a.nlen>286||a.ndist>30){t.msg="too many length or distance symbols",a.mode=ze;break}a.have=0,a.mode=18;case 18:for(;a.have>>=3,d-=3}for(;a.have<19;)a.lens[Z[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,E={bits:a.lenbits},x=_e(0,a.lens,0,19,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid code lengths set",a.mode=ze;break}a.have=0,a.mode=19;case 19:for(;a.have>>24,g=z>>>16&255,p=65535&z,!(b<=d);){if(0===l)break t;l--,h+=i[s++]<>>=b,d-=b,a.lens[a.have++]=p;else{if(16===p){for(R=b+2;d>>=b,d-=b,0===a.have){t.msg="invalid bit length repeat",a.mode=ze;break}y=a.lens[a.have-1],c=3+(3&h),h>>>=2,d-=2}else if(17===p){for(R=b+3;d>>=b,d-=b,y=0,c=3+(7&h),h>>>=3,d-=3}else{for(R=b+7;d>>=b,d-=b,y=0,c=11+(127&h),h>>>=7,d-=7}if(a.have+c>a.nlen+a.ndist){t.msg="invalid bit length repeat",a.mode=ze;break}for(;c--;)a.lens[a.have++]=y}}if(a.mode===ze)break;if(0===a.lens[256]){t.msg="invalid code -- missing end-of-block",a.mode=ze;break}if(a.lenbits=9,E={bits:a.lenbits},x=_e(1,a.lens,0,a.nlen,a.lencode,0,a.work,E),a.lenbits=E.bits,x){t.msg="invalid literal/lengths set",a.mode=ze;break}if(a.distbits=6,a.distcode=a.distdyn,E={bits:a.distbits},x=_e(2,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,E),a.distbits=E.bits,x){t.msg="invalid distances set",a.mode=ze;break}if(a.mode=20,e===ue)break t;case 20:a.mode=21;case 21:if(l>=6&&o>=258){t.next_out=r,t.avail_out=o,t.next_in=s,t.avail_in=l,a.hold=h,a.bits=d,se(t,f),r=t.next_out,n=t.output,o=t.avail_out,s=t.next_in,i=t.input,l=t.avail_in,h=a.hold,d=a.bits,a.mode===xe&&(a.back=-1);break}for(a.back=0;z=a.lencode[h&(1<>>24,g=z>>>16&255,p=65535&z,!(b<=d);){if(0===l)break t;l--,h+=i[s++]<>m)],b=z>>>24,g=z>>>16&255,p=65535&z,!(m+b<=d);){if(0===l)break t;l--,h+=i[s++]<>>=m,d-=m,a.back+=m}if(h>>>=b,d-=b,a.back+=b,a.length=p,0===g){a.mode=26;break}if(32&g){a.back=-1,a.mode=xe;break}if(64&g){t.msg="invalid literal/length code",a.mode=ze;break}a.extra=15&g,a.mode=22;case 22:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;z=a.distcode[h&(1<>>24,g=z>>>16&255,p=65535&z,!(b<=d);){if(0===l)break t;l--,h+=i[s++]<>m)],b=z>>>24,g=z>>>16&255,p=65535&z,!(m+b<=d);){if(0===l)break t;l--,h+=i[s++]<>>=m,d-=m,a.back+=m}if(h>>>=b,d-=b,a.back+=b,64&g){t.msg="invalid distance code",a.mode=ze;break}a.offset=p,a.extra=15&g,a.mode=24;case 24:if(a.extra){for(R=a.extra;d>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg="invalid distance too far back",a.mode=ze;break}a.mode=25;case 25:if(0===o)break t;if(c=f-o,a.offset>c){if(c=a.offset-c,c>a.whave&&a.sane){t.msg="invalid distance too far back",a.mode=ze;break}c>a.wnext?(c-=a.wnext,u=a.wsize-c):u=a.wnext-c,c>a.length&&(c=a.length),w=a.window}else w=n,u=r-a.offset,c=a.length;c>o&&(c=o),o-=c,a.length-=c;do{n[r++]=w[u++]}while(--c);0===a.length&&(a.mode=21);break;case 26:if(0===o)break t;n[r++]=a.length,o--,a.mode=21;break;case 27:if(a.wrap){for(;d<32;){if(0===l)break t;l--,h|=i[s++]<{if(!t||!t.state)return pe;let e=t.state;return e.window&&(e.window=null),t.state=null,we},inflateGetHeader:(t,e)=>{if(!t||!t.state)return pe;const a=t.state;return 0==(2&a.wrap)?pe:(a.head=e,e.done=!1,we)},inflateSetDictionary:(t,e)=>{const a=e.length;let i,n,s;return t&&t.state?(i=t.state,0!==i.wrap&&11!==i.mode?pe:11===i.mode&&(n=1,n=B(n,e,a,0),n!==i.check)?me:(s=Fe(t,e,a,a),s?(i.mode=31,ke):(i.havedict=1,we))):pe},inflateInfo:"pako inflate (from Nodeca project)"};var Ne=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Be=Object.prototype.toString,{Z_NO_FLUSH:Ce,Z_FINISH:Me,Z_OK:He,Z_STREAM_END:je,Z_NEED_DICT:Ke,Z_STREAM_ERROR:Pe,Z_DATA_ERROR:Ye,Z_MEM_ERROR:Ge}=j;function Xe(t){this.options=Bt({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Yt,this.strm.avail_out=0;let a=Le.inflateInit2(this.strm,e.windowBits);if(a!==He)throw new Error(H[a]);if(this.header=new Ne,Le.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=jt(e.dictionary):"[object ArrayBuffer]"===Be.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=Le.inflateSetDictionary(this.strm,e.dictionary),a!==He)))throw new Error(H[a])}function We(t,e){const a=new Xe(e);if(a.push(t),a.err)throw a.msg||H[a.err];return a.result}Xe.prototype.push=function(t,e){const a=this.strm,i=this.options.chunkSize,n=this.options.dictionary;let s,r,l;if(this.ended)return!1;for(r=e===~~e?e:!0===e?Me:Ce,"[object ArrayBuffer]"===Be.call(t)?a.input=new Uint8Array(t):a.input=t,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(i),a.next_out=0,a.avail_out=i),s=Le.inflate(a,r),s===Ke&&n&&(s=Le.inflateSetDictionary(a,n),s===He?s=Le.inflate(a,r):s===Ye&&(s=Ke));a.avail_in>0&&s===je&&a.state.wrap>0&&0!==t[a.next_in];)Le.inflateReset(a),s=Le.inflate(a,r);switch(s){case Pe:case Ye:case Ke:case Ge:return this.onEnd(s),this.ended=!0,!1}if(l=a.avail_out,a.next_out&&(0===a.avail_out||s===je))if("string"===this.options.to){let t=Pt(a.output,a.next_out),e=a.next_out-t,n=Kt(a.output,t);a.next_out=e,a.avail_out=i-e,e&&a.output.set(a.output.subarray(t,t+e),0),this.onData(n)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(s!==He||0!==l){if(s===je)return s=Le.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},Xe.prototype.onData=function(t){this.chunks.push(t)},Xe.prototype.onEnd=function(t){t===He&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Ct(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var qe={Inflate:Xe,inflate:We,inflateRaw:function(t,e){return(e=e||{}).raw=!0,We(t,e)},ungzip:We,constants:j};const{Deflate:Je,deflate:Qe,deflateRaw:Ve,gzip:$e}=ne,{Inflate:ta,inflate:ea,inflateRaw:aa,ungzip:ia}=qe;var na=Je,sa=Qe,ra=Ve,la=$e,oa=ta,ha=ea,da=aa,_a=ia,fa=j,ca={Deflate:na,deflate:sa,deflateRaw:ra,gzip:la,Inflate:oa,inflate:ha,inflateRaw:da,ungzip:_a,constants:fa};t.Deflate=na,t.Inflate=oa,t.constants=fa,t.default=ca,t.deflate=sa,t.deflateRaw=ra,t.gzip=la,t.inflate=ha,t.inflateRaw=da,t.ungzip=_a,Object.defineProperty(t,"__esModule",{value:!0})})); /****************** initialization finish ******************/ // 先拆分B站gRPC校验头和protobuf数据体 let header = rawBody.slice(0, 5); @@ -3747,172 +361,16 @@ const DataBase = { body = pako.ungzip(body); header[0] = 0; // unGzip break; - } - ; + }; // 解析链接并处理protobuf数据 switch (HOST) { case "grpc.biliapi.net": // HTTP/2 case "app.bilibili.com": // HTTP/1.1 /****************** initialization start *******************/ // google.protobuf.Any - class Any$Type extends MessageType { - constructor() { - super("google.protobuf.Any", [{ - no: 1, - name: "type_url", - kind: "scalar", - T: 9 - }, {no: 2, name: "value", kind: "scalar", T: 12}]) - } - - pack(message, type) { - return { - typeUrl: this.typeNameToUrl(type.typeName), - value: type.toBinary(message), - } - } - - unpack(any, type, options) { - if (!this.contains(any, type)) throw new Error("Cannot unpack google.protobuf.Any with typeUrl '" + any.typeUrl + "' as " + type.typeName + "."); - return type.fromBinary(any.value, options) - } - - contains(any, type) { - if (!any.typeUrl.length) return false; - let wants = typeof type == "string" ? type : type.typeName; - let has = this.typeUrlToName(any.typeUrl); - return wants === has - } - - internalJsonWrite(any, options) { - if (any.typeUrl === "") return {}; - let typeName = this.typeUrlToName(any.typeUrl); - let opt = jsonWriteOptions(options); - let type = opt.typeRegistry?.find(t => t.typeName === typeName); - if (!type) throw new globalThis.Error("Unable to convert google.protobuf.Any with typeUrl '" + any.typeUrl + "' to JSON. The specified type " + typeName + " is not available in the type registry."); - let value = type.fromBinary(any.value, {readUnknownField: false}); - let json = type.internalJsonWrite(value, opt); - if (typeName.startsWith("google.protobuf.") || !isJsonObject(json)) json = {value: json}; - json["@type"] = any.typeUrl; - return json - } - - internalJsonRead(json, options, target) { - if (!isJsonObject(json)) throw new globalThis.Error("Unable to parse google.protobuf.Any from JSON " + typeofJsonValue(json) + "."); - if (typeof json["@type"] != "string" || json["@type"] == "") return this.create(); - let typeName = this.typeUrlToName(json["@type"]); - let type = options?.typeRegistry?.find(t => t.typeName == typeName); - if (!type) throw new globalThis.Error("Unable to parse google.protobuf.Any from JSON. The specified type " + typeName + " is not available in the type registry."); - let value; - if (typeName.startsWith("google.protobuf.") && json.hasOwnProperty("value")) value = type.fromJson(json["value"], options); else { - let copy = Object.assign({}, json); - delete copy["@type"]; - value = type.fromJson(copy, options) - } - if (target === undefined) target = this.create(); - target.typeUrl = json["@type"]; - target.value = type.toBinary(value); - return target - } - - typeNameToUrl(name) { - if (!name.length) throw new Error("invalid type name: " + name); - return "type.googleapis.com/" + name - } - - typeUrlToName(url) { - if (!url.length) throw new Error("invalid type url: " + url); - let slash = url.lastIndexOf("/"); - let name = slash > 0 ? url.substring(slash + 1) : url; - if (!name.length) throw new Error("invalid type url: " + url); - return name - } - - create(value) { - const message = {typeUrl: "", value: new Uint8Array(0)}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.typeUrl = reader.string(); - break; - case 2: - message.value = reader.bytes(); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.typeUrl !== "") writer.tag(1, WireType.LengthDelimited).string(message.typeUrl); - if (message.value.length) writer.tag(2, WireType.LengthDelimited).bytes(message.value); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const Any = new Any$Type(); - + class Any$Type extends MessageType{constructor(){super("google.protobuf.Any",[{no:1,name:"type_url",kind:"scalar",T:9},{no:2,name:"value",kind:"scalar",T:12}])}pack(message,type){return{typeUrl:this.typeNameToUrl(type.typeName),value:type.toBinary(message),}}unpack(any,type,options){if(!this.contains(any,type))throw new Error("Cannot unpack google.protobuf.Any with typeUrl '"+any.typeUrl+"' as "+type.typeName+".");return type.fromBinary(any.value,options)}contains(any,type){if(!any.typeUrl.length)return false;let wants=typeof type=="string"?type:type.typeName;let has=this.typeUrlToName(any.typeUrl);return wants===has}internalJsonWrite(any,options){if(any.typeUrl==="")return{};let typeName=this.typeUrlToName(any.typeUrl);let opt=jsonWriteOptions(options);let type=opt.typeRegistry?.find(t=>t.typeName===typeName);if(!type)throw new globalThis.Error("Unable to convert google.protobuf.Any with typeUrl '"+any.typeUrl+"' to JSON. The specified type "+typeName+" is not available in the type registry.");let value=type.fromBinary(any.value,{readUnknownField:false});let json=type.internalJsonWrite(value,opt);if(typeName.startsWith("google.protobuf.")||!isJsonObject(json))json={value:json};json["@type"]=any.typeUrl;return json}internalJsonRead(json,options,target){if(!isJsonObject(json))throw new globalThis.Error("Unable to parse google.protobuf.Any from JSON "+typeofJsonValue(json)+".");if(typeof json["@type"]!="string"||json["@type"]=="")return this.create();let typeName=this.typeUrlToName(json["@type"]);let type=options?.typeRegistry?.find(t=>t.typeName==typeName);if(!type)throw new globalThis.Error("Unable to parse google.protobuf.Any from JSON. The specified type "+typeName+" is not available in the type registry.");let value;if(typeName.startsWith("google.protobuf.")&&json.hasOwnProperty("value"))value=type.fromJson(json["value"],options);else{let copy=Object.assign({},json);delete copy["@type"];value=type.fromJson(copy,options)}if(target===undefined)target=this.create();target.typeUrl=json["@type"];target.value=type.toBinary(value);return target}typeNameToUrl(name){if(!name.length)throw new Error("invalid type name: "+name);return"type.googleapis.com/"+name}typeUrlToName(url){if(!url.length)throw new Error("invalid type url: "+url);let slash=url.lastIndexOf("/");let name=slash>0?url.substring(slash+1):url;if(!name.length)throw new Error("invalid type url: "+url);return name}create(value){const message={typeUrl:"",value:new Uint8Array(0)};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos Any}]) - } - - create(value) { - const message = {}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.sourceContent = Any.internalBinaryRead(reader, reader.uint32(), options, message.sourceContent); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.sourceContent) Any.internalBinaryWrite(message.sourceContent, writer.tag(1, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const CM = new CM$Type(); + class CM$Type extends MessageType{constructor(){super("CM",[{no:1,name:"source_content",kind:"message",T:()=>Any}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos PlayArcConf - }]) - } - - create(value) { - const message = {}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 5: - message.playArc = PlayArcConf.internalBinaryRead(reader, reader.uint32(), options, message.playArc); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.playArc) PlayArcConf.internalBinaryWrite(message.playArc, writer.tag(5, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const PlayViewReply = new PlayViewReply$Type(); - - class PlayArcConf$Type extends MessageType { - constructor() { - super("PlayArcConf", [{ - no: 1, - name: "background_play_conf", - kind: "message", - T: () => ArcConf - }]) - } - - create(value) { - const message = {}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.backgroundPlayConf = ArcConf.internalBinaryRead(reader, reader.uint32(), options, message.backgroundPlayConf); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.backgroundPlayConf) ArcConf.internalBinaryWrite(message.backgroundPlayConf, writer.tag(1, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const PlayArcConf = new PlayArcConf$Type(); - - class ArcConf$Type extends MessageType { - constructor() { - super("ArcConf", [{ - no: 1, - name: "is_support", - kind: "scalar", - T: 8 - }, {no: 2, name: "disabled", kind: "scalar", T: 8}, { - no: 3, - name: "extra_content", - kind: "message", - T: () => ExtraContent - }]) - } - - create(value) { - const message = {isSupport: false, disabled: false}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.isSupport = reader.bool(); - break; - case 2: - message.disabled = reader.bool(); - break; - case 3: - message.extraContent = ExtraContent.internalBinaryRead(reader, reader.uint32(), options, message.extraContent); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.isSupport !== false) writer.tag(1, WireType.Varint).bool(message.isSupport); - if (message.disabled !== false) writer.tag(2, WireType.Varint).bool(message.disabled); - if (message.extraContent) ExtraContent.internalBinaryWrite(message.extraContent, writer.tag(3, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const ArcConf = new ArcConf$Type(); - - class ExtraContent$Type extends MessageType { - constructor() { - super("ExtraContent", [{ - no: 1, - name: "disabled_reason", - kind: "scalar", - T: 9 - }, {no: 2, name: "disabled_code", kind: "scalar", T: 3, L: 0}]) - } - - create(value) { - const message = {disabledReason: "", disabledCode: 0n}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.disabledReason = reader.string(); - break; - case 2: - message.disabledCode = reader.int64().toBigInt(); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.disabledReason !== "") writer.tag(1, WireType.LengthDelimited).string(message.disabledReason); - if (message.disabledCode !== 0n) writer.tag(2, WireType.Varint).int64(message.disabledCode); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const ExtraContent = new ExtraContent$Type(); + class PlayViewReply$Type extends MessageType{constructor(){super("PlayViewReply",[{no:5,name:"play_arc",kind:"message",T:()=>PlayArcConf}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posArcConf}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posExtraContent}])}create(value){const message={isSupport:false,disabled:false};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos DynamicList - }, { - no: 2, - name: "up_list", - kind: "message", - T: () => CardVideoUpList - }, {no: 3, name: "topic_list", kind: "message", T: () => TopicList}]) - } - - create(value) { - const message = {}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.dynamicList = DynamicList.internalBinaryRead(reader, reader.uint32(), options, message.dynamicList); - break; - case 2: - message.upList = CardVideoUpList.internalBinaryRead(reader, reader.uint32(), options, message.upList); - break; - case 3: - message.topicList = TopicList.internalBinaryRead(reader, reader.uint32(), options, message.topicList); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.dynamicList) DynamicList.internalBinaryWrite(message.dynamicList, writer.tag(1, WireType.LengthDelimited).fork(), options).join(); - if (message.upList) CardVideoUpList.internalBinaryWrite(message.upList, writer.tag(2, WireType.LengthDelimited).fork(), options).join(); - if (message.topicList) TopicList.internalBinaryWrite(message.topicList, writer.tag(3, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const DynAllReply = new DynAllReply$Type(); - - class DynVideoReply$Type extends MessageType { - constructor() { - super("DynVideoReply", [{ - no: 2, - name: "video_up_list", - kind: "message", - T: () => CardVideoUpList - }]) - } - - create(value) { - const message = {}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 2: - message.videoUpList = CardVideoUpList.internalBinaryRead(reader, reader.uint32(), options, message.videoUpList); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.videoUpList) CardVideoUpList.internalBinaryWrite(message.videoUpList, writer.tag(2, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const DynVideoReply = new DynVideoReply$Type(); - - class DynamicList$Type extends MessageType { - constructor() { - super("DynamicList", [{ - no: 1, - name: "list", - kind: "message", - repeat: 1, - T: () => DynamicItem - }]) - } - - create(value) { - const message = {list: []}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.list.push(DynamicItem.internalBinaryRead(reader, reader.uint32(), options)); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - for (let i = 0; i < message.list.length; i++) DynamicItem.internalBinaryWrite(message.list[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const DynamicList = new DynamicList$Type(); - - class CardVideoUpList$Type extends MessageType { - constructor() { - super("CardVideoUpList", [{no: 1, name: "title", kind: "scalar", T: 9}]) - } - - create(value) { - const message = {title: ""}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.title = reader.string(); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.title !== "") writer.tag(1, WireType.LengthDelimited).string(message.title); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const CardVideoUpList = new CardVideoUpList$Type(); - - class TopicList$Type extends MessageType { - constructor() { - super("TopicList", [{no: 1, name: "title", kind: "scalar", T: 9}]) - } - - create(value) { - const message = {title: ""}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.title = reader.string(); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.title !== "") writer.tag(1, WireType.LengthDelimited).string(message.title); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const TopicList = new TopicList$Type(); - - class DynamicItem$Type extends MessageType { - constructor() { - super("DynamicItem", [{ - no: 1, - name: "card_type", - kind: "enum", - T: () => ["DynamicType", DynamicType] - }]) - } - - create(value) { - const message = {cardType: 0}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.cardType = reader.int32(); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.cardType !== 0) writer.tag(1, WireType.Varint).int32(message.cardType); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const DynamicItem = new DynamicItem$Type(); + var DynamicType;(function(DynamicType){DynamicType[DynamicType["dyn_none"]=0]="dyn_none";DynamicType[DynamicType["ad"]=15]="ad"})(DynamicType||(DynamicType={}));class DynAllReply$Type extends MessageType{constructor(){super("DynAllReply",[{no:1,name:"dynamic_list",kind:"message",T:()=>DynamicList},{no:2,name:"up_list",kind:"message",T:()=>CardVideoUpList},{no:3,name:"topic_list",kind:"message",T:()=>TopicList}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posCardVideoUpList}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posDynamicItem}])}create(value){const message={list:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos["DynamicType",DynamicType]}])}create(value){const message={cardType:0};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos TIcon} - }, { - no: 10, - name: "relates", - kind: "message", - repeat: 1, - T: () => Relate - }, { - no: 30, - name: "cms", - kind: "message", - repeat: 1, - T: () => CM - }, { - no: 31, - name: "cm_config", - kind: "message", - T: () => CMConfig - }, {no: 41, name: "cm_ipad", kind: "message", T: () => CmIpad}]) - } - - create(value) { - const message = {tIcon: {}, relates: [], cms: []}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 6: - this.binaryReadMap6(message.tIcon, reader, options); - break; - case 10: - message.relates.push(Relate.internalBinaryRead(reader, reader.uint32(), options)); - break; - case 30: - message.cms.push(CM.internalBinaryRead(reader, reader.uint32(), options)); - break; - case 31: - message.cmConfig = CMConfig.internalBinaryRead(reader, reader.uint32(), options, message.cmConfig); - break; - case 41: - message.cmIpad = CmIpad.internalBinaryRead(reader, reader.uint32(), options, message.cmIpad); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - binaryReadMap6(map, reader, options) { - let len = reader.uint32(), end = reader.pos + len, key, val; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - key = reader.string(); - break; - case 2: - val = TIcon.internalBinaryRead(reader, reader.uint32(), options); - break; - default: - throw new globalThis.Error("unknown map entry field for field ViewReply.t_icon"); - } - } - map[key ?? ""] = val ?? TIcon.create() - } - - internalBinaryWrite(message, writer, options) { - for (let k of Object.keys(message.tIcon)) { - writer.tag(6, WireType.LengthDelimited).fork().tag(1, WireType.LengthDelimited).string(k); - writer.tag(2, WireType.LengthDelimited).fork(); - TIcon.internalBinaryWrite(message.tIcon[k], writer, options); - writer.join().join() - } - for (let i = 0; i < message.relates.length; i++) Relate.internalBinaryWrite(message.relates[i], writer.tag(10, WireType.LengthDelimited).fork(), options).join(); - for (let i = 0; i < message.cms.length; i++) CM.internalBinaryWrite(message.cms[i], writer.tag(30, WireType.LengthDelimited).fork(), options).join(); - if (message.cmConfig) CMConfig.internalBinaryWrite(message.cmConfig, writer.tag(31, WireType.LengthDelimited).fork(), options).join(); - if (message.cmIpad) CmIpad.internalBinaryWrite(message.cmIpad, writer.tag(41, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const ViewReply = new ViewReply$Type(); - - class CMConfig$Type extends MessageType { - constructor() { - super("CMConfig", [{ - no: 1, - name: "ads_control", - kind: "message", - T: () => Any - }]) - } - - create(value) { - const message = {}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.adsControl = Any.internalBinaryRead(reader, reader.uint32(), options, message.adsControl); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.adsControl) Any.internalBinaryWrite(message.adsControl, writer.tag(1, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const CMConfig = new CMConfig$Type(); - - class CmIpad$Type extends MessageType { - constructor() { - super("CmIpad", [{ - no: 5, - name: "aid", - kind: "scalar", - T: 3, - L: 0 - }]) - } - - create(value) { - const message = {aid: 0n}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 5: - message.aid = reader.int64().toBigInt(); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.aid !== 0n) writer.tag(5, WireType.Varint).int64(message.aid); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const CmIpad = new CmIpad$Type(); - - class TIcon$Type extends MessageType { - constructor() { - super("TIcon", [{no: 1, name: "icon", kind: "scalar", T: 9}]) - } - - create(value) { - const message = {icon: ""}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.icon = reader.string(); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.icon !== "") writer.tag(1, WireType.LengthDelimited).string(message.icon); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const TIcon = new TIcon$Type(); - - class Relate$Type extends MessageType { - constructor() { - super("Relate", [{ - no: 28, - name: "cm", - kind: "message", - T: () => CM - }]) - } - - create(value) { - const message = {}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message + break; + case false: + $.log(`🚧 ${$.name}`, "用户设置动态综合页广告动态不去除"); + break; } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 28: - message.cm = CM.internalBinaryRead(reader, reader.uint32(), options, message.cm); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) + body = DynAllReply.toBinary(data); + break; + case "DynVideo": // 动态视频页 + data = DynVideoReply.fromBinary(body); + switch (Settings?.Detail?.Most_visited) { + case true: + default: + if (data.videoUpList) { + data.videoUpList = null; + $.log(`🎉 ${$.name}`, "动态视频页最常访问去除"); } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.cm) CM.internalBinaryWrite(message.cm, writer.tag(28, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer + break; + case false: + $.log(`🚧 ${$.name}`, "用户设置动态视频页最常访问不去除"); + break; } - } - - const Relate = new Relate$Type(); + body = DynVideoReply.toBinary(data); + break; + } + break; + case "bilibili.app.view.v1.View": // 视频 + switch (PATHs?.[1]) { + case "View": // 视频播放页 + /****************** initialization start *******************/ + // protobuf/bilibili/app/view/view.proto + class ViewReply$Type extends MessageType{constructor(){super("ViewReply",[{no:6,name:"t_icon",kind:"map",K:9,V:{kind:"message",T:()=>TIcon}},{no:10,name:"relates",kind:"message",repeat:1,T:()=>Relate},{no:30,name:"cms",kind:"message",repeat:1,T:()=>CM},{no:31,name:"cm_config",kind:"message",T:()=>CMConfig},{no:41,name:"cm_ipad",kind:"message",T:()=>CmIpad}])}create(value){const message={tIcon:{},relates:[],cms:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posAny}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posCM}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos TFToast - }, { - no: 3, - name: "tfPanelCustomized", - kind: "message", - T: () => TFPanelCustomized - }]) - } - - create(value) { - const message = {tipsId: 0n}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.tipsId = reader.int64().toBigInt(); - break; - case 2: - message.tfToast = TFToast.internalBinaryRead(reader, reader.uint32(), options, message.tfToast); - break; - case 3: - message.tfPanelCustomized = TFPanelCustomized.internalBinaryRead(reader, reader.uint32(), options, message.tfPanelCustomized); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.tipsId !== 0n) writer.tag(1, WireType.Varint).int64(message.tipsId); - if (message.tfToast) TFToast.internalBinaryWrite(message.tfToast, writer.tag(2, WireType.LengthDelimited).fork(), options).join(); - if (message.tfPanelCustomized) TFPanelCustomized.internalBinaryWrite(message.tfPanelCustomized, writer.tag(3, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const TFInfoReply = new TFInfoReply$Type(); - - class TFToast$Type extends MessageType { - constructor() { - super("TFToast", [{ - no: 1, - name: "btnText", - kind: "scalar", - T: 9 - }]) - } - - create(value) { - const message = {btnText: ""}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.btnText = reader.string(); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.btnText !== "") writer.tag(1, WireType.LengthDelimited).string(message.btnText); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const TFToast = new TFToast$Type(); - - class TFPanelCustomized$Type extends MessageType { - constructor() { - super("TFPanelCustomized", [{ - no: 2, - name: "rightBtnText", - kind: "scalar", - T: 9 - }]) - } - - create(value) { - const message = {rightBtnText: ""}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 2: - message.rightBtnText = reader.string(); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.rightBtnText !== "") writer.tag(2, WireType.LengthDelimited).string(message.rightBtnText); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const TFPanelCustomized = new TFPanelCustomized$Type(); + class TFInfoReply$Type extends MessageType{constructor(){super("TFInfoReply",[{no:1,name:"tipsId",kind:"scalar",T:3,L:0},{no:2,name:"tfToast",kind:"message",T:()=>TFToast},{no:3,name:"tfPanelCustomized",kind:"message",T:()=>TFPanelCustomized}])}create(value){const message={tipsId:0n};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos Tab - }, {no: 7, name: "cm", kind: "message", T: () => CM}]) - } - - create(value) { - const message = {}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 5: - message.tab = Tab.internalBinaryRead(reader, reader.uint32(), options, message.tab); - break; - case 7: - message.cm = CM.internalBinaryRead(reader, reader.uint32(), options, message.cm); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.tab) Tab.internalBinaryWrite(message.tab, writer.tag(5, WireType.LengthDelimited).fork(), options).join(); - if (message.cm) CM.internalBinaryWrite(message.cm, writer.tag(7, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const ViewReply = new ViewReply$Type(); - - class Tab$Type extends MessageType { - constructor() { - super("bilibili.app.viewunite.v1.Tab", [{ - no: 1, - name: "tab_module", - kind: "message", - repeat: 1, - T: () => TabModule - }]) - } - - create(value) { - const message = {tabModule: []}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.tabModule.push(TabModule.internalBinaryRead(reader, reader.uint32(), options)); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - for (let i = 0; i < message.tabModule.length; i++) TabModule.internalBinaryWrite(message.tabModule[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const Tab = new Tab$Type(); - - class TabModule$Type extends MessageType { - constructor() { - super("bilibili.app.viewunite.v1.TabModule", [{ - no: 2, - name: "introduction", - kind: "message", - oneof: "tab", - T: () => IntroductionTab - }]) - } - - create(value) { - const message = {tab: {oneofKind: undefined}}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 2: - message.tab = { - oneofKind: "introduction", - introduction: IntroductionTab.internalBinaryRead(reader, reader.uint32(), options, message.tab.introduction) - }; - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.tab.oneofKind === "introduction") IntroductionTab.internalBinaryWrite(message.tab.introduction, writer.tag(2, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const TabModule = new TabModule$Type(); - - class IntroductionTab$Type extends MessageType { - constructor() { - super("bilibili.app.viewunite.v1.IntroductionTab", [{ - no: 2, - name: "modules", - kind: "message", - repeat: 1, - T: () => Module - }]) - } - - create(value) { - const message = {modules: []}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 2: - message.modules.push(Module.internalBinaryRead(reader, reader.uint32(), options)); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - for (let i = 0; i < message.modules.length; i++) Module.internalBinaryWrite(message.modules[i], writer.tag(2, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const IntroductionTab = new IntroductionTab$Type(); - - class Module$Type extends MessageType { - constructor() { - super("bilibili.app.viewunite.v1.Module", [{ - no: 1, - name: "type", - kind: "scalar", - T: 5 - }, { - no: 22, - name: "relates", - kind: "message", - oneof: "data", - T: () => Relates - }]) - } - - create(value) { - const message = {type: 0, data: {oneofKind: undefined}}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.type = reader.int32(); - break; - case 22: - message.data = { - oneofKind: "relates", - relates: Relates.internalBinaryRead(reader, reader.uint32(), options, message.data.relates) - }; - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.type !== 0) writer.tag(1, WireType.Varint).int32(message.type); - if (message.data.oneofKind === "relates") Relates.internalBinaryWrite(message.data.relates, writer.tag(22, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const Module = new Module$Type(); - - class Relates$Type extends MessageType { - constructor() { - super("bilibili.app.viewunite.v1.Relates", [{ - no: 1, - name: "cards", - kind: "message", - repeat: 1, - T: () => RelateCard - }]) - } - - create(value) { - const message = {cards: []}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.cards.push(RelateCard.internalBinaryRead(reader, reader.uint32(), options)); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - for (let i = 0; i < message.cards.length; i++) RelateCard.internalBinaryWrite(message.cards[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const Relates = new Relates$Type(); - - class RelateCard$Type extends MessageType { - constructor() { - super("bilibili.app.viewunite.v1.RelateCard", [{ - no: 1, - name: "relate_card_type", - kind: "scalar", - T: 5 - }]) - } - - create(value) { - const message = {relateCardType: 0}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.relateCardType = reader.int32(); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.relateCardType !== 0) writer.tag(1, WireType.Varint).int32(message.relateCardType); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const RelateCard = new RelateCard$Type(); - - class CM$Type extends MessageType { - constructor() { - super("bilibili.app.viewunite.v1.CM", [{ - no: 3, - name: "source_content", - kind: "message", - repeat: 1, - T: () => Any - }]) - } - - create(value) { - const message = {sourceContent: []}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 3: - message.sourceContent.push(Any.internalBinaryRead(reader, reader.uint32(), options)); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - for (let i = 0; i < message.sourceContent.length; i++) Any.internalBinaryWrite(message.sourceContent[i], writer.tag(3, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const CM = new CM$Type(); + class ViewReply$Type extends MessageType{constructor(){super("bilibili.app.viewunite.v1.ViewReply",[{no:5,name:"tab",kind:"message",T:()=>Tab},{no:7,name:"cm",kind:"message",T:()=>CM}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posTabModule}])}create(value){const message={tabModule:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posIntroductionTab}])}create(value){const message={tab:{oneofKind:undefined}};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posModule}])}create(value){const message={modules:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posRelates}])}create(value){const message={type:0,data:{oneofKind:undefined}};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posRelateCard}])}create(value){const message={cards:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posAny}])}create(value){const message={sourceContent:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos { + data.tab.tabModule[0].tab.introduction.modules =data.tab.tabModule[0].tab.introduction.modules.map((i) => { if (i.type === 28) { - i.data.relates.cards = i.data.relates.cards.filter((j) => j.relateCardType !== 5); + i.data.relates.cards = i.data.relates.cards.filter((j) => j.relateCardType !== 5 && j.relateCardType !== 4); $.log(`🎉 ${$.name}`, "视频详情下方推荐卡广告去除"); } return i; @@ -5478,165 +551,19 @@ const DataBase = { ); body = ViewReply.toBinary(data); break; - case false: - $.log(`🚧 ${$.name}`, "用户设置up主推荐广告不去除"); - break; - } - ; - break; - } - break; - case "bilibili.app.interface.v1.Teenagers": // 青少年模式 - switch (PATHs?.[1]) { - case "ModeStatus": // 青少年模式 - /****************** initialization start *******************/ - // protobuf/bilibili/app/interface/teenagers.proto - class ModeStatus$Type extends MessageType { - constructor() { - super("ModeStatus", [{ - no: 1, - name: "modes", - kind: "message", - repeat: 1, - T: () => Mode - }]) - } - - create(value) { - const message = {modes: []}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.modes.push(Mode.internalBinaryRead(reader, reader.uint32(), options)); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - for (let i = 0; i < message.modes.length; i++) Mode.internalBinaryWrite(message.modes[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const ModeStatus = new ModeStatus$Type(); - - class Mode$Type extends MessageType { - constructor() { - super("Mode", [{ - no: 2, - name: "name", - kind: "scalar", - T: 9 - }, {no: 5, name: "f5", kind: "message", T: () => F5}]) - } - - create(value) { - const message = {name: ""}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 2: - message.name = reader.string(); - break; - case 5: - message.f5 = F5.internalBinaryRead(reader, reader.uint32(), options, message.f5); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.name !== "") writer.tag(2, WireType.LengthDelimited).string(message.name); - if (message.f5) F5.internalBinaryWrite(message.f5, writer.tag(5, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const Mode = new Mode$Type(); - - class F5$Type extends MessageType { - constructor() { - super("F5", [{no: 1, name: "f1", kind: "scalar", T: 5}]) - } - - create(value) { - const message = {f1: 0}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.f1 = reader.int32(); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.f1 !== 0) writer.tag(1, WireType.Varint).int32(message.f1); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const F5 = new F5$Type(); + case false: + $.log(`🚧 ${$.name}`, "用户设置up主推荐广告不去除"); + break; + }; + break; + } + break; + case "bilibili.app.interface.v1.Teenagers": // 青少年模式 + switch (PATHs?.[1]) { + case "ModeStatus": // 青少年模式 + /****************** initialization start *******************/ + // protobuf/bilibili/app/interface/teenagers.proto + class ModeStatus$Type extends MessageType{constructor(){super("ModeStatus",[{no:1,name:"modes",kind:"message",repeat:1,T:()=>Mode}])}create(value){const message={modes:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posF5}])}create(value){const message={name:""};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos { @@ -5650,243 +577,12 @@ const DataBase = { }); body = ModeStatus.toBinary(data); break; - } - ; + }; break; case "bilibili.community.service.dm.v1.DM": //弹幕 /****************** initialization start *******************/ // protobuf/bilibili/community/service/dm/dm.proto - class CommandDm$Type extends MessageType { - constructor() { - super("CommandDm", [{no: 1, name: "id", kind: "scalar", T: 3, L: 0}]) - } - - create(value) { - const message = {id: 0n}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.id = reader.int64().toBigInt(); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.id !== 0n) writer.tag(1, WireType.Varint).int64(message.id); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const CommandDm = new CommandDm$Type(); - - class DmView$Type extends MessageType { - constructor() { - super("DmView", [{ - no: 1, - name: "commandDms", - kind: "message", - repeat: 1, - T: () => CommandDm - }]) - } - - create(value) { - const message = {commandDms: []}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.commandDms.push(CommandDm.internalBinaryRead(reader, reader.uint32(), options)); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - for (let i = 0; i < message.commandDms.length; i++) CommandDm.internalBinaryWrite(message.commandDms[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const DmView = new DmView$Type(); - - class DmViewReply$Type extends MessageType { - constructor() { - super("DmViewReply", [{ - no: 22, - name: "dmView", - kind: "message", - T: () => DmView - }]) - } - - create(value) { - const message = {}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 22: - message.dmView = DmView.internalBinaryRead(reader, reader.uint32(), options, message.dmView); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.dmView) DmView.internalBinaryWrite(message.dmView, writer.tag(22, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const DmViewReply = new DmViewReply$Type(); - - class DmSegMobileReply$Type extends MessageType { - constructor() { - super("DmSegMobileReply", [{ - no: 1, - name: "elems", - kind: "message", - repeat: 1, - T: () => DanmakuElem - }]) - } - - create(value) { - const message = {elems: []}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.elems.push(DanmakuElem.internalBinaryRead(reader, reader.uint32(), options)); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - for (let i = 0; i < message.elems.length; i++) DanmakuElem.internalBinaryWrite(message.elems[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const DmSegMobileReply = new DmSegMobileReply$Type(); - - class DanmakuElem$Type extends MessageType { - constructor() { - super("DanmakuElem", [{no: 24, name: "colorful", kind: "scalar", T: 5}]) - } - - create(value) { - const message = {colorful: 0}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 24: - message.colorful = reader.int32(); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.colorful !== 0) writer.tag(24, WireType.Varint).int32(message.colorful); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const DanmakuElem = new DanmakuElem$Type(); + class CommandDm$Type extends MessageType{constructor(){super("CommandDm",[{no:1,name:"id",kind:"scalar",T:3,L:0}])}create(value){const message={id:0n};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posCommandDm}])}create(value){const message={commandDms:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posDmView}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posDanmakuElem}])}create(value){const message={elems:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos CM - }]) - } - - create(value) { - const message = {}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 11: - message.cm = CM.internalBinaryRead(reader, reader.uint32(), options, message.cm); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.cm) CM.internalBinaryWrite(message.cm, writer.tag(11, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const MainListReply = new MainListReply$Type(); + class MainListReply$Type extends MessageType{constructor(){super("MainListReply",[{no:11,name:"cm",kind:"message",T:()=>CM}])}create(value){const message={};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos Item - }]) - } - - create(value) { - const message = {item: []}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 4: - message.item.push(Item.internalBinaryRead(reader, reader.uint32(), options)); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - for (let i = 0; i < message.item.length; i++) Item.internalBinaryWrite(message.item[i], writer.tag(4, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const SearchAllResponse = new SearchAllResponse$Type(); - - class Item$Type extends MessageType { - constructor() { - super("Item", [{ - no: 25, - name: "cm", - kind: "message", - oneof: "cardItem", - T: () => SearchAdCard - }]) - } - - create(value) { - const message = {cardItem: {oneofKind: undefined}}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 25: - message.cardItem = { - oneofKind: "cm", - cm: SearchAdCard.internalBinaryRead(reader, reader.uint32(), options, message.cardItem.cm) - }; - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.cardItem.oneofKind === "cm") SearchAdCard.internalBinaryWrite(message.cardItem.cm, writer.tag(25, WireType.LengthDelimited).fork(), options).join(); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const Item = new Item$Type(); - - class SearchAdCard$Type extends MessageType { - constructor() { - super("SearchAdCard", [{ - no: 1, - name: "json_str", - kind: "scalar", - T: 9 - }]) - } - - create(value) { - const message = {jsonStr: ""}; - globalThis.Object.defineProperty(message, MESSAGE_TYPE, { - enumerable: false, - value: this - }); - if (value !== undefined) reflectionMergePartial(this, message, value); - return message - } - - internalBinaryRead(reader, length, options, target) { - let message = target ?? this.create(), - end = reader.pos + length; - while (reader.pos < end) { - let [fieldNo, wireType] = reader.tag(); - switch (fieldNo) { - case 1: - message.jsonStr = reader.string(); - break; - default: - let u = options.readUnknownField; - if (u === "throw") throw new globalThis.Error(`Unknown field ${fieldNo}(wire type ${wireType})for ${this.typeName}`); - let d = reader.skip(wireType); - if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d) - } - } - return message - } - - internalBinaryWrite(message, writer, options) { - if (message.jsonStr !== "") writer.tag(1, WireType.LengthDelimited).string(message.jsonStr); - let u = options.writeUnknownFields; - if (u !== false) (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer); - return writer - } - } - - const SearchAdCard = new SearchAdCard$Type(); + class Item$Type extends MessageType{constructor(){super("bilibili.polymer.app.search.v1.Item",[{no:11,name:"game",kind:"message",oneof:"cardItem",T:()=>SearchGameCard},{no:25,name:"cm",kind:"message",oneof:"cardItem",T:()=>SearchAdCard}])}create(value){const message={cardItem:{oneofKind:undefined}};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posItem}])}create(value){const message={item:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos !(i.cardItem?.oneofKind === "cm")); + data.item = data.item.filter((i) => !(i.cardItem?.oneofKind === "cm" || i.cardItem?.oneofKind === "game")); $.log(`🎉 ${$.name}`, "搜索页广告去除"); body = SearchAllResponse.toBinary(data); break; @@ -6196,36 +689,28 @@ const DataBase = { break; } break; - } - ; + }; case "SearchByType": { // 分类结果(番剧、用户、影视、专栏) break; - } - ; - } - ; + }; + }; break; - } - ; + }; break; - } - ; + }; // protobuf部分处理完后,重新计算并添加B站gRPC校验头 - rawBody = newRawBody({header, body}); // gzip压缩有问题,别用 + rawBody = newRawBody({ header, body }); // gzip压缩有问题,别用 break; - } - ; + }; // 写入二进制数据 if ($.isQuanX()) $response.bodyBytes = rawBody else $response.body = rawBody; break; - } - ; + }; break; case false: break; - } - ; + }; })() .catch((e) => $.logErr(e)) .finally(() => { @@ -6239,12 +724,12 @@ const DataBase = { if ($.isQuanX()) { switch (FORMAT) { case undefined: // 视为无body - // 返回普通数据 - $.done({headers: $response.headers}); + // 返回普通数据 + $.done({ headers: $response.headers }); break; default: // 返回普通数据 - $.done({headers: $response.headers, body: $response.body}); + $.done({ headers: $response.headers, body: $response.body }); break; case "application/x-protobuf": case "application/grpc": @@ -6252,23 +737,16 @@ const DataBase = { case "applecation/octet-stream": // 返回二进制数据 //$.log(`${$response.bodyBytes.byteLength}---${$response.bodyBytes.buffer.byteLength}`); - $.done({ - headers: $response.headers, - bodyBytes: $response.bodyBytes.buffer.slice($response.bodyBytes.byteOffset, $response.bodyBytes.byteLength + $response.bodyBytes.byteOffset) - }); + $.done({ headers: $response.headers, bodyBytes: $response.bodyBytes.buffer.slice($response.bodyBytes.byteOffset, $response.bodyBytes.byteLength + $response.bodyBytes.byteOffset) }); break; - } - ; + }; } else $.done($response); break; - } - ; + }; case undefined: { // 无回复数据 break; - } - ; - } - ; + }; + }; }) /***************** Function *****************/ @@ -6282,13 +760,13 @@ const DataBase = { */ function setENV(name, platforms, database) { $.log(`☑️ ${$.name}, Set Environment Variables`, ""); - let {Settings, Caches, Configs} = getENV(name, platforms, database); + let { Settings, Caches, Configs } = getENV(name, platforms, database); /***************** Settings *****************/ $.log(`✅ ${$.name}, Set Environment Variables`, `Settings: ${typeof Settings}`, `Settings内容: ${JSON.stringify(Settings)}`, ""); /***************** Caches *****************/ //$.log(`✅ ${$.name}, Set Environment Variables`, `Caches: ${typeof Caches}`, `Caches内容: ${JSON.stringify(Caches)}`, ""); /***************** Configs *****************/ - return {Settings, Caches, Configs}; + return { Settings, Caches, Configs }; }; /** @@ -6299,7 +777,7 @@ function setENV(name, platforms, database) { * @param {String} type - encoding type * @return {ArrayBuffer} new raw Body with Checksum Header */ -function newRawBody({header, body}, encoding = undefined) { +function newRawBody({ header, body }, encoding = undefined) { //$.log(`⚠ ${$.name}, Create New Raw Body`, ""); // Header: 1位:是否校验数据 (0或者1) + 4位:校验值(数据长度) const flag = (encoding == "gzip") ? 1 : (encoding == "identity") ? 0 : (encoding == undefined) ? 0 : header?.[0] ?? 0; // encoding flag @@ -6325,426 +803,7 @@ function newRawBody({header, body}, encoding = undefined) { /***************** Env *****************/ // prettier-ignore // https://github.com/chavyleung/scripts/blob/master/Env.min.js -function Env(t, e) { - class s { - constructor(t) { - this.env = t - } - - send(t, e = "GET") { - t = "string" == typeof t ? {url: t} : t; - let s = this.get; - return "POST" === e && (s = this.post), new Promise((e, a) => { - s.call(this, t, (t, s, r) => { - t ? a(t) : e(s) - }) - }) - } - - get(t) { - return this.send.call(this.env, t) - } - - post(t) { - return this.send.call(this.env, t, "POST") - } - } - - return new class { - constructor(t, e) { - this.name = t, this.http = new s(this), this.data = null, this.dataFile = "box.dat", this.logs = [], this.isMute = !1, this.isNeedRewrite = !1, this.logSeparator = "\n", this.encoding = "utf-8", this.startTime = (new Date).getTime(), Object.assign(this, e), this.log("", `\ud83d\udd14${this.name}, \u5f00\u59cb!`) - } - - getEnv() { - return "undefined" != typeof $environment && $environment["surge-version"] ? "Surge" : "undefined" != typeof $environment && $environment["stash-version"] ? "Stash" : "undefined" != typeof module && module.exports ? "Node.js" : "undefined" != typeof $task ? "Quantumult X" : "undefined" != typeof $loon ? "Loon" : "undefined" != typeof $rocket ? "Shadowrocket" : void 0 - } - - isNode() { - return "Node.js" === this.getEnv() - } - - isQuanX() { - return "Quantumult X" === this.getEnv() - } - - isSurge() { - return "Surge" === this.getEnv() - } - - isLoon() { - return "Loon" === this.getEnv() - } - - isShadowrocket() { - return "Shadowrocket" === this.getEnv() - } - - isStash() { - return "Stash" === this.getEnv() - } - - toObj(t, e = null) { - try { - return JSON.parse(t) - } catch { - return e - } - } - - toStr(t, e = null) { - try { - return JSON.stringify(t) - } catch { - return e - } - } - - getjson(t, e) { - let s = e; - const a = this.getdata(t); - if (a) try { - s = JSON.parse(this.getdata(t)) - } catch { - } - return s - } - - setjson(t, e) { - try { - return this.setdata(JSON.stringify(t), e) - } catch { - return !1 - } - } - - getScript(t) { - return new Promise(e => { - this.get({url: t}, (t, s, a) => e(a)) - }) - } - - runScript(t, e) { - return new Promise(s => { - let a = this.getdata("@chavy_boxjs_userCfgs.httpapi"); - a = a ? a.replace(/\n/g, "").trim() : a; - let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); - r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; - const [i, o] = a.split("@"), n = { - url: `http://${o}/v1/scripting/evaluate`, - body: {script_text: t, mock_type: "cron", timeout: r}, - headers: {"X-Key": i, Accept: "*/*"}, - timeout: r - }; - this.post(n, (t, e, a) => s(a)) - }).catch(t => this.logErr(t)) - } - - loaddata() { - if (!this.isNode()) return {}; - { - this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); - const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), - s = this.fs.existsSync(t), a = !s && this.fs.existsSync(e); - if (!s && !a) return {}; - { - const a = s ? t : e; - try { - return JSON.parse(this.fs.readFileSync(a)) - } catch (t) { - return {} - } - } - } - } - - writedata() { - if (this.isNode()) { - this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); - const t = this.path.resolve(this.dataFile), e = this.path.resolve(process.cwd(), this.dataFile), - s = this.fs.existsSync(t), a = !s && this.fs.existsSync(e), r = JSON.stringify(this.data); - s ? this.fs.writeFileSync(t, r) : a ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) - } - } - - lodash_get(t, e, s) { - const a = e.replace(/\[(\d+)\]/g, ".$1").split("."); - let r = t; - for (const t of a) if (r = Object(r)[t], void 0 === r) return s; - return r - } - - lodash_set(t, e, s) { - return Object(t) !== t ? t : (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), e.slice(0, -1).reduce((t, s, a) => Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[a + 1]) >> 0 == +e[a + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) - } - - getdata(t) { - let e = this.getval(t); - if (/^@/.test(t)) { - const [, s, a] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; - if (r) try { - const t = JSON.parse(r); - e = t ? this.lodash_get(t, a, "") : e - } catch (t) { - e = "" - } - } - return e - } - - setdata(t, e) { - let s = !1; - if (/^@/.test(e)) { - const [, a, r] = /^@(.*?)\.(.*?)$/.exec(e), i = this.getval(a), - o = a ? "null" === i ? null : i || "{}" : "{}"; - try { - const e = JSON.parse(o); - this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), a) - } catch (e) { - const i = {}; - this.lodash_set(i, r, t), s = this.setval(JSON.stringify(i), a) - } - } else s = this.setval(t, e); - return s - } - - getval(t) { - switch (this.getEnv()) { - case"Surge": - case"Loon": - case"Stash": - case"Shadowrocket": - return $persistentStore.read(t); - case"Quantumult X": - return $prefs.valueForKey(t); - case"Node.js": - return this.data = this.loaddata(), this.data[t]; - default: - return this.data && this.data[t] || null - } - } - - setval(t, e) { - switch (this.getEnv()) { - case"Surge": - case"Loon": - case"Stash": - case"Shadowrocket": - return $persistentStore.write(t, e); - case"Quantumult X": - return $prefs.setValueForKey(t, e); - case"Node.js": - return this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0; - default: - return this.data && this.data[e] || null - } - } - - initGotEnv(t) { - this.got = this.got ? this.got : require("got"), this.cktough = this.cktough ? this.cktough : require("tough-cookie"), this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, t && (t.headers = t.headers ? t.headers : {}, void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) - } - - get(t, e = (() => { - })) { - switch (t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"], delete t.headers["content-type"], delete t.headers["content-length"]), this.getEnv()) { - case"Surge": - case"Loon": - case"Stash": - case"Shadowrocket": - default: - this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, {"X-Surge-Skip-Scripting": !1})), $httpClient.get(t, (t, s, a) => { - !t && s && (s.body = a, s.statusCode = s.status ? s.status : s.statusCode, s.status = s.statusCode), e(t, s, a) - }); - break; - case"Quantumult X": - this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, {hints: !1})), $task.fetch(t).then(t => { - const {statusCode: s, statusCode: a, headers: r, body: i, bodyBytes: o} = t; - e(null, {status: s, statusCode: a, headers: r, body: i, bodyBytes: o}, i, o) - }, t => e(t && t.error || "UndefinedError")); - break; - case"Node.js": - let s = require("iconv-lite"); - this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { - try { - if (t.headers["set-cookie"]) { - const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); - s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar - } - } catch (t) { - this.logErr(t) - } - }).then(t => { - const {statusCode: a, statusCode: r, headers: i, rawBody: o} = t, - n = s.decode(o, this.encoding); - e(null, {status: a, statusCode: r, headers: i, rawBody: o, body: n}, n) - }, t => { - const {message: a, response: r} = t; - e(a, r, r && s.decode(r.rawBody, this.encoding)) - }) - } - } - - post(t, e = (() => { - })) { - const s = t.method ? t.method.toLocaleLowerCase() : "post"; - switch (t.body && t.headers && !t.headers["Content-Type"] && !t.headers["content-type"] && (t.headers["content-type"] = "application/x-www-form-urlencoded"), t.headers && (delete t.headers["Content-Length"], delete t.headers["content-length"]), this.getEnv()) { - case"Surge": - case"Loon": - case"Stash": - case"Shadowrocket": - default: - this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, Object.assign(t.headers, {"X-Surge-Skip-Scripting": !1})), $httpClient[s](t, (t, s, a) => { - !t && s && (s.body = a, s.statusCode = s.status ? s.status : s.statusCode, s.status = s.statusCode), e(t, s, a) - }); - break; - case"Quantumult X": - t.method = s, this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, {hints: !1})), $task.fetch(t).then(t => { - const {statusCode: s, statusCode: a, headers: r, body: i, bodyBytes: o} = t; - e(null, {status: s, statusCode: a, headers: r, body: i, bodyBytes: o}, i, o) - }, t => e(t && t.error || "UndefinedError")); - break; - case"Node.js": - let a = require("iconv-lite"); - this.initGotEnv(t); - const {url: r, ...i} = t; - this.got[s](r, i).then(t => { - const {statusCode: s, statusCode: r, headers: i, rawBody: o} = t, - n = a.decode(o, this.encoding); - e(null, {status: s, statusCode: r, headers: i, rawBody: o, body: n}, n) - }, t => { - const {message: s, response: r} = t; - e(s, r, r && a.decode(r.rawBody, this.encoding)) - }) - } - } - - time(t, e = null) { - const s = e ? new Date(e) : new Date; - let a = { - "M+": s.getMonth() + 1, - "d+": s.getDate(), - "H+": s.getHours(), - "m+": s.getMinutes(), - "s+": s.getSeconds(), - "q+": Math.floor((s.getMonth() + 3) / 3), - S: s.getMilliseconds() - }; - /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); - for (let e in a) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? a[e] : ("00" + a[e]).substr(("" + a[e]).length))); - return t - } - - queryStr(t) { - let e = ""; - for (const s in t) { - let a = t[s]; - null != a && "" !== a && ("object" == typeof a && (a = JSON.stringify(a)), e += `${s}=${a}&`) - } - return e = e.substring(0, e.length - 1), e - } - - msg(e = t, s = "", a = "", r) { - const i = t => { - switch (typeof t) { - case void 0: - return t; - case"string": - switch (this.getEnv()) { - case"Surge": - case"Stash": - default: - return {url: t}; - case"Loon": - case"Shadowrocket": - return t; - case"Quantumult X": - return {"open-url": t}; - case"Node.js": - return - } - case"object": - switch (this.getEnv()) { - case"Surge": - case"Stash": - case"Shadowrocket": - default: { - let e = t.url || t.openUrl || t["open-url"]; - return {url: e} - } - case"Loon": { - let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; - return {openUrl: e, mediaUrl: s} - } - case"Quantumult X": { - let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl, - a = t["update-pasteboard"] || t.updatePasteboard; - return {"open-url": e, "media-url": s, "update-pasteboard": a} - } - case"Node.js": - return - } - default: - return - } - }; - if (!this.isMute) switch (this.getEnv()) { - case"Surge": - case"Loon": - case"Stash": - case"Shadowrocket": - default: - $notification.post(e, s, a, i(r)); - break; - case"Quantumult X": - $notify(e, s, a, i(r)); - break; - case"Node.js": - } - if (!this.isMuteLog) { - let t = ["", "==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="]; - t.push(e), s && t.push(s), a && t.push(a), console.log(t.join("\n")), this.logs = this.logs.concat(t) - } - } - - log(...t) { - t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) - } - - logErr(t, e) { - switch (this.getEnv()) { - case"Surge": - case"Loon": - case"Stash": - case"Shadowrocket": - case"Quantumult X": - default: - this.log("", `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t); - break; - case"Node.js": - this.log("", `\u2757\ufe0f${this.name}, \u9519\u8bef!`, t.stack) - } - } - - wait(t) { - return new Promise(e => setTimeout(e, t)) - } - - done(t = {}) { - const e = (new Date).getTime(), s = (e - this.startTime) / 1e3; - switch (this.log("", `\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`), this.log(), this.getEnv()) { - case"Surge": - case"Loon": - case"Stash": - case"Shadowrocket": - case"Quantumult X": - default: - $done(t); - break; - case"Node.js": - process.exit(1) - } - } - }(t, e) -} +function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,a)=>{s.call(this,t,(t,s,r)=>{t?a(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.encoding="utf-8",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}getEnv(){return"undefined"!=typeof $environment&&$environment["surge-version"]?"Surge":"undefined"!=typeof $environment&&$environment["stash-version"]?"Stash":"undefined"!=typeof module&&module.exports?"Node.js":"undefined"!=typeof $task?"Quantumult X":"undefined"!=typeof $loon?"Loon":"undefined"!=typeof $rocket?"Shadowrocket":void 0}isNode(){return"Node.js"===this.getEnv()}isQuanX(){return"Quantumult X"===this.getEnv()}isSurge(){return"Surge"===this.getEnv()}isLoon(){return"Loon"===this.getEnv()}isShadowrocket(){return"Shadowrocket"===this.getEnv()}isStash(){return"Stash"===this.getEnv()}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const a=this.getdata(t);if(a)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,a)=>e(a))})}runScript(t,e){return new Promise(s=>{let a=this.getdata("@chavy_boxjs_userCfgs.httpapi");a=a?a.replace(/\n/g,"").trim():a;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[i,o]=a.split("@"),n={url:`http://${o}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":i,Accept:"*/*"},timeout:r};this.post(n,(t,e,a)=>s(a))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),a=!s&&this.fs.existsSync(e);if(!s&&!a)return{};{const a=s?t:e;try{return JSON.parse(this.fs.readFileSync(a))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),a=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):a?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const a=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of a)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,a)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[a+1])>>0==+e[a+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,a]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,a,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,a,r]=/^@(.*?)\.(.*?)$/.exec(e),i=this.getval(a),o=a?"null"===i?null:i||"{}":"{}";try{const e=JSON.parse(o);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),a)}catch(e){const i={};this.lodash_set(i,r,t),s=this.setval(JSON.stringify(i),a)}}else s=this.setval(t,e);return s}getval(t){switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":return $persistentStore.read(t);case"Quantumult X":return $prefs.valueForKey(t);case"Node.js":return this.data=this.loaddata(),this.data[t];default:return this.data&&this.data[t]||null}}setval(t,e){switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":return $persistentStore.write(t,e);case"Quantumult X":return $prefs.setValueForKey(t,e);case"Node.js":return this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0;default:return this.data&&this.data[e]||null}}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){switch(t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"],delete t.headers["content-type"],delete t.headers["content-length"]),this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":default:this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,a)=>{!t&&s&&(s.body=a,s.statusCode=s.status?s.status:s.statusCode,s.status=s.statusCode),e(t,s,a)});break;case"Quantumult X":this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:a,headers:r,body:i,bodyBytes:o}=t;e(null,{status:s,statusCode:a,headers:r,body:i,bodyBytes:o},i,o)},t=>e(t&&t.error||"UndefinedError"));break;case"Node.js":let s=require("iconv-lite");this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:a,statusCode:r,headers:i,rawBody:o}=t,n=s.decode(o,this.encoding);e(null,{status:a,statusCode:r,headers:i,rawBody:o,body:n},n)},t=>{const{message:a,response:r}=t;e(a,r,r&&s.decode(r.rawBody,this.encoding))})}}post(t,e=(()=>{})){const s=t.method?t.method.toLocaleLowerCase():"post";switch(t.body&&t.headers&&!t.headers["Content-Type"]&&!t.headers["content-type"]&&(t.headers["content-type"]="application/x-www-form-urlencoded"),t.headers&&(delete t.headers["Content-Length"],delete t.headers["content-length"]),this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":default:this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient[s](t,(t,s,a)=>{!t&&s&&(s.body=a,s.statusCode=s.status?s.status:s.statusCode,s.status=s.statusCode),e(t,s,a)});break;case"Quantumult X":t.method=s,this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:a,headers:r,body:i,bodyBytes:o}=t;e(null,{status:s,statusCode:a,headers:r,body:i,bodyBytes:o},i,o)},t=>e(t&&t.error||"UndefinedError"));break;case"Node.js":let a=require("iconv-lite");this.initGotEnv(t);const{url:r,...i}=t;this.got[s](r,i).then(t=>{const{statusCode:s,statusCode:r,headers:i,rawBody:o}=t,n=a.decode(o,this.encoding);e(null,{status:s,statusCode:r,headers:i,rawBody:o,body:n},n)},t=>{const{message:s,response:r}=t;e(s,r,r&&a.decode(r.rawBody,this.encoding))})}}time(t,e=null){const s=e?new Date(e):new Date;let a={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in a)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?a[e]:("00"+a[e]).substr((""+a[e]).length)));return t}queryStr(t){let e="";for(const s in t){let a=t[s];null!=a&&""!==a&&("object"==typeof a&&(a=JSON.stringify(a)),e+=`${s}=${a}&`)}return e=e.substring(0,e.length-1),e}msg(e=t,s="",a="",r){const i=t=>{switch(typeof t){case void 0:return t;case"string":switch(this.getEnv()){case"Surge":case"Stash":default:return{url:t};case"Loon":case"Shadowrocket":return t;case"Quantumult X":return{"open-url":t};case"Node.js":return}case"object":switch(this.getEnv()){case"Surge":case"Stash":case"Shadowrocket":default:{let e=t.url||t.openUrl||t["open-url"];return{url:e}}case"Loon":{let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}case"Quantumult X":{let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl,a=t["update-pasteboard"]||t.updatePasteboard;return{"open-url":e,"media-url":s,"update-pasteboard":a}}case"Node.js":return}default:return}};if(!this.isMute)switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":default:$notification.post(e,s,a,i(r));break;case"Quantumult X":$notify(e,s,a,i(r));break;case"Node.js":}if(!this.isMuteLog){let t=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];t.push(e),s&&t.push(s),a&&t.push(a),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){switch(this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":case"Quantumult X":default:this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t);break;case"Node.js":this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack)}}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;switch(this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),this.getEnv()){case"Surge":case"Loon":case"Stash":case"Shadowrocket":case"Quantumult X":default:$done(t);break;case"Node.js":process.exit(1)}}}(t,e)} /** * Get Environment Variables @@ -6755,43 +814,8 @@ function Env(t, e) { * @param {Object} database - Default Database * @return {Object} { Settings, Caches, Configs } */ -function getENV(key, names, database) { - let BoxJs = $.getjson(key, database), Argument = {}; - if ("undefined" != typeof $argument && Boolean($argument)) { - let arg = Object.fromEntries($argument.split("&").map((item => item.split("=")))); - for (let item in arg) setPath(Argument, item, arg[item]) - } - const Store = {Settings: database?.Default?.Settings || {}, Configs: database?.Default?.Configs || {}, Caches: {}}; - Array.isArray(names) || (names = [names]); - for (let name of names) Store.Settings = {...Store.Settings, ...database?.[name]?.Settings, ...BoxJs?.[name]?.Settings, ...Argument}, Store.Configs = {...Store.Configs, ...database?.[name]?.Configs}, BoxJs?.[name]?.Caches && "string" == typeof BoxJs?.[name]?.Caches && (BoxJs[name].Caches = JSON.parse(BoxJs?.[name]?.Caches)), Store.Caches = {...Store.Caches, ...BoxJs?.[name]?.Caches}; - return function traverseObject(o, c) { - for (var t in o) { - var n = o[t]; - o[t] = "object" == typeof n && null !== n ? traverseObject(n, c) : c(t, n) - } - return o - }(Store.Settings, ((key, value) => ("true" === value || "false" === value ? value = JSON.parse(value) : "string" == typeof value && (value?.includes(",") ? value = value.split(",") : value && !isNaN(value) && (value = parseInt(value, 10))), value))), Store; - - function setPath(object, path, value) { - path.split(".").reduce(((o, p, i) => o[p] = path.split(".").length === ++i ? value : o[p] || {}), object) - } -} +function getENV(key,names,database){let BoxJs=$.getjson(key,database),Argument={};if("undefined"!=typeof $argument&&Boolean($argument)){let arg=Object.fromEntries($argument.split("&").map((item=>item.split("="))));for(let item in arg)setPath(Argument,item,arg[item])}const Store={Settings:database?.Default?.Settings||{},Configs:database?.Default?.Configs||{},Caches:{}};Array.isArray(names)||(names=[names]);for(let name of names)Store.Settings={...Store.Settings,...database?.[name]?.Settings,...BoxJs?.[name]?.Settings,...Argument},Store.Configs={...Store.Configs,...database?.[name]?.Configs},BoxJs?.[name]?.Caches&&"string"==typeof BoxJs?.[name]?.Caches&&(BoxJs[name].Caches=JSON.parse(BoxJs?.[name]?.Caches)),Store.Caches={...Store.Caches,...BoxJs?.[name]?.Caches};return function traverseObject(o,c){for(var t in o){var n=o[t];o[t]="object"==typeof n&&null!==n?traverseObject(n,c):c(t,n)}return o}(Store.Settings,((key,value)=>("true"===value||"false"===value?value=JSON.parse(value):"string"==typeof value&&(value?.includes(",")?value=value.split(","):value&&!isNaN(value)&&(value=parseInt(value,10))),value))),Store;function setPath(object,path,value){path.split(".").reduce(((o,p,i)=>o[p]=path.split(".").length===++i?value:o[p]||{}),object)}} // https://github.com/VirgilClyne/GetSomeFries/blob/main/function/URL/URLs.embedded.min.js -function URLs(t) { - return new class { - constructor(t = []) { - this.name = "URL v1.2.2", this.opts = t, this.json = {scheme: "", host: "", path: "", type: "", query: {}} - } - - parse(t) { - let s = t.match(/(?:(?.+):\/\/(?[^/]+))?\/?(?[^?]+)?\??(?[^?]+)?/)?.groups ?? null; - return s?.path ? s.paths = s?.path?.split("/") : s.path = "", s?.paths && (s.type = s?.paths?.[s?.paths?.length - 1]?.split(".")?.[1]), s?.query && (s.query = Object.fromEntries(s.query.split("&").map((t => t.split("="))))), s - } - stringify(t = this.json) { - let s = ""; - return t?.scheme && t?.host && (s += t.scheme + "://" + t.host), t?.path && (s += t?.host ? "/" + t.path : t.path), t?.query && (s += "?" + Object.entries(t.query).map((t => t.join("="))).join("&")), s - } - }(t) -} \ No newline at end of file +function URLs(t){return new class{constructor(t=[]){this.name="URL v1.2.2",this.opts=t,this.json={scheme:"",host:"",path:"",type:"",query:{}}}parse(t){let s=t.match(/(?:(?.+):\/\/(?[^/]+))?\/?(?[^?]+)?\??(?[^?]+)?/)?.groups??null;return s?.path?s.paths=s?.path?.split("/"):s.path="",s?.paths&&(s.type=s?.paths?.[s?.paths?.length-1]?.split(".")?.[1]),s?.query&&(s.query=Object.fromEntries(s.query.split("&").map((t=>t.split("="))))),s}stringify(t=this.json){let s="";return t?.scheme&&t?.host&&(s+=t.scheme+"://"+t.host),t?.path&&(s+=t?.host?"/"+t.path:t.path),t?.query&&(s+="?"+Object.entries(t.query).map((t=>t.join("="))).join("&")),s}}(t)} \ No newline at end of file diff --git a/Scripts/AdBlock/Bilibili/BiliBili.response.min.js b/Scripts/AdBlock/Bilibili/BiliBili.response.min.js index cab7a04..f0b4e62 100644 --- a/Scripts/AdBlock/Bilibili/BiliBili.response.min.js +++ b/Scripts/AdBlock/Bilibili/BiliBili.response.min.js @@ -542,8 +542,8 @@ const DataBase = { $.log(`🎉 ${$.name}`, "up主推荐广告去除"); } data.tab.tabModule[0].tab.introduction.modules =data.tab.tabModule[0].tab.introduction.modules.map((i) => { - if (i.type === 28){ - i.data.relates.cards = i.data.relates.cards.filter((j) => j.relateCardType !== 5); + if (i.type === 28) { + i.data.relates.cards = i.data.relates.cards.filter((j) => j.relateCardType !== 5 && j.relateCardType !== 4); $.log(`🎉 ${$.name}`, "视频详情下方推荐卡广告去除"); } return i; @@ -674,13 +674,13 @@ const DataBase = { switch (PATHs?.[1]) { case "SearchAll": { // 全部结果(综合) /****************** initialization start *******************/ - class SearchAllResponse$Type extends MessageType{constructor(){super("SearchAllResponse",[{no:4,name:"item",kind:"message",repeat:1,T:()=>Item}])}create(value){const message={item:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posSearchAdCard}])}create(value){const message={cardItem:{oneofKind:undefined}};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posSearchGameCard},{no:25,name:"cm",kind:"message",oneof:"cardItem",T:()=>SearchAdCard}])}create(value){const message={cardItem:{oneofKind:undefined}};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.posItem}])}create(value){const message={item:[]};globalThis.Object.defineProperty(message,MESSAGE_TYPE,{enumerable:false,value:this});if(value!==undefined)reflectionMergePartial(this,message,value);return message}internalBinaryRead(reader,length,options,target){let message=target??this.create(),end=reader.pos+length;while(reader.pos !(i.cardItem?.oneofKind === "cm")); + data.item = data.item.filter((i) => !(i.cardItem?.oneofKind === "cm" || i.cardItem?.oneofKind === "game")); $.log(`🎉 ${$.name}`, "搜索页广告去除"); body = SearchAllResponse.toBinary(data); break; diff --git a/Scripts/AdBlock/Other/BaiduMap.js b/Scripts/AdBlock/Other/BaiduMap.js index 09e94e1..a0a425f 100644 --- a/Scripts/AdBlock/Other/BaiduMap.js +++ b/Scripts/AdBlock/Other/BaiduMap.js @@ -1,2185 +1,4542 @@ let protobuf; -!function (g) { - "use strict"; - !function (r, e, t) { - var i = function t(i) { - var n = e[i]; - return n || r[i][0].call(n = e[i] = {exports: {}}, t, n, n.exports), n.exports - }(t[0]); - protobuf = i.util.global.protobuf = i, "function" == typeof define && define.amd && define(["long"], function (t) { - return t && t.isLong && (i.util.Long = t, i.configure()), i - }), "object" == typeof module && module && module.exports && (module.exports = i) - }({ - 1: [function (t, i, n) { - i.exports = function (t, i) { - var n = Array(arguments.length - 1), s = 0, r = 2, u = !0; - for (; r < arguments.length;) n[s++] = arguments[r++]; - return new Promise(function (r, e) { - n[s] = function (t) { - if (u) if (u = !1, t) e(t); else { - for (var i = Array(arguments.length - 1), n = 0; n < i.length;) i[n++] = arguments[n]; - r.apply(null, i) - } - }; - try { - t.apply(i || null, n) - } catch (t) { - u && (u = !1, e(t)) - } - }) - } - }, {}], 2: [function (t, i, n) { - n.length = function (t) { - var i = t.length; - if (!i) return 0; - for (var n = 0; 1 < --i % 4 && "=" == (t[0 | i] || "");) ++n; - return Math.ceil(3 * t.length) / 4 - n - }; - for (var f = Array(64), h = Array(123), r = 0; r < 64;) h[f[r] = r < 26 ? r + 65 : r < 52 ? r + 71 : r < 62 ? r - 4 : r - 59 | 43] = r++; - n.encode = function (t, i, n) { - for (var r, e = null, s = [], u = 0, o = 0; i < n;) { - var h = t[i++]; - switch (o) { - case 0: - s[u++] = f[h >> 2], r = (3 & h) << 4, o = 1; - break; - case 1: - s[u++] = f[r | h >> 4], r = (15 & h) << 2, o = 2; - break; - case 2: - s[u++] = f[r | h >> 6], s[u++] = f[63 & h], o = 0 - } - 8191 < u && ((e = e || []).push(String.fromCharCode.apply(String, s)), u = 0) - } - return o && (s[u++] = f[r], s[u++] = 61, 1 === o && (s[u++] = 61)), e ? (u && e.push(String.fromCharCode.apply(String, s.slice(0, u))), e.join("")) : String.fromCharCode.apply(String, s.slice(0, u)) - }; - var c = "invalid encoding"; - n.decode = function (t, i, n) { - for (var r, e = n, s = 0, u = 0; u < t.length;) { - var o = t.charCodeAt(u++); - if (61 == o && 1 < s) break; - if ((o = h[o]) === g) throw Error(c); - switch (s) { - case 0: - r = o, s = 1; - break; - case 1: - i[n++] = r << 2 | (48 & o) >> 4, r = o, s = 2; - break; - case 2: - i[n++] = (15 & r) << 4 | (60 & o) >> 2, r = o, s = 3; - break; - case 3: - i[n++] = (3 & r) << 6 | o, s = 0 - } - } - if (1 === s) throw Error(c); - return n - e - }, n.test = function (t) { - return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(t) - } - }, {}], 3: [function (t, i, n) { - function a(i, n) { - "string" == typeof i && (n = i, i = g); - var h = []; +!(function (g) { + 'use strict'; + !(function (r, e, t) { + var i = (function t(i) { + var n = e[i]; + return ( + n || r[i][0].call((n = e[i] = { exports: {} }), t, n, n.exports), + n.exports + ); + })(t[0]); + (protobuf = i.util.global.protobuf = i), + 'function' == typeof define && + define.amd && + define(['long'], function (t) { + return t && t.isLong && ((i.util.Long = t), i.configure()), i; + }), + 'object' == typeof module && + module && + module.exports && + (module.exports = i); + })( + { + 1: [ + function (t, i, n) { + i.exports = function (t, i) { + var n = Array(arguments.length - 1), + s = 0, + r = 2, + u = !0; + for (; r < arguments.length; ) n[s++] = arguments[r++]; + return new Promise(function (r, e) { + n[s] = function (t) { + if (u) + if (((u = !1), t)) e(t); + else { + for ( + var i = Array(arguments.length - 1), n = 0; + n < i.length; - function f(t) { - if ("string" != typeof t) { - var i = c(); - if (a.verbose && console.log("codegen: " + i), i = "return " + i, t) { - for (var n = Object.keys(t), r = Array(n.length + 1), e = Array(n.length), s = 0; s < n.length;) r[s] = n[s], e[s] = t[n[s++]]; - return r[s] = i, Function.apply(null, r).apply(null, e) - } - return Function(i)() - } - for (var u = Array(arguments.length - 1), o = 0; o < u.length;) u[o] = arguments[++o]; - if (o = 0, t = t.replace(/%([%dfijs])/g, function (t, i) { - var n = u[o++]; - switch (i) { - case"d": - case"f": - return "" + +("" + n); - case"i": - return "" + Math.floor(n); - case"j": - return JSON.stringify(n); - case"s": - return "" + n - } - return "%" - }), o !== u.length) throw Error("parameter count mismatch"); - return h.push(t), f - } - - function c(t) { - return "function " + (t || n || "") + "(" + (i && i.join(",") || "") + "){\n " + h.join("\n ") + "\n}" - } - - return f.toString = c, f + ) + i[n++] = arguments[n]; + r.apply(null, i); + } + }; + try { + t.apply(i || null, n); + } catch (t) { + u && ((u = !1), e(t)); + } + }); + }; + }, + {}, + ], + 2: [ + function (t, i, n) { + n.length = function (t) { + var i = t.length; + if (!i) return 0; + for (var n = 0; 1 < --i % 4 && '=' == (t[0 | i] || ''); ) ++n; + return Math.ceil(3 * t.length) / 4 - n; + }; + for (var f = Array(64), h = Array(123), r = 0; r < 64; ) + h[ + (f[r] = + r < 26 + ? r + 65 + : r < 52 + ? r + 71 + : r < 62 + ? r - 4 + : (r - 59) | 43) + ] = r++; + n.encode = function (t, i, n) { + for (var r, e = null, s = [], u = 0, o = 0; i < n; ) { + var h = t[i++]; + switch (o) { + case 0: + (s[u++] = f[h >> 2]), (r = (3 & h) << 4), (o = 1); + break; + case 1: + (s[u++] = f[r | (h >> 4)]), (r = (15 & h) << 2), (o = 2); + break; + case 2: + (s[u++] = f[r | (h >> 6)]), (s[u++] = f[63 & h]), (o = 0); + } + 8191 < u && + ((e = e || []).push(String.fromCharCode.apply(String, s)), + (u = 0)); } - - (i.exports = a).verbose = !1 - }, {}], 4: [function (t, i, n) { - function r() { - this.t = {} + return ( + o && ((s[u++] = f[r]), (s[u++] = 61), 1 === o && (s[u++] = 61)), + e + ? (u && + e.push(String.fromCharCode.apply(String, s.slice(0, u))), + e.join('')) + : String.fromCharCode.apply(String, s.slice(0, u)) + ); + }; + var c = 'invalid encoding'; + (n.decode = function (t, i, n) { + for (var r, e = n, s = 0, u = 0; u < t.length; ) { + var o = t.charCodeAt(u++); + if (61 == o && 1 < s) break; + if ((o = h[o]) === g) throw Error(c); + switch (s) { + case 0: + (r = o), (s = 1); + break; + case 1: + (i[n++] = (r << 2) | ((48 & o) >> 4)), (r = o), (s = 2); + break; + case 2: + (i[n++] = ((15 & r) << 4) | ((60 & o) >> 2)), + (r = o), + (s = 3); + break; + case 3: + (i[n++] = ((3 & r) << 6) | o), (s = 0); + } } + if (1 === s) throw Error(c); + return n - e; + }), + (n.test = function (t) { + return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test( + t + ); + }); + }, + {}, + ], + 3: [ + function (t, i, n) { + function a(i, n) { + 'string' == typeof i && ((n = i), (i = g)); + var h = []; + function f(t) { + if ('string' != typeof t) { + var i = c(); + if ( + (a.verbose && console.log('codegen: ' + i), + (i = 'return ' + i), + t) + ) { + for ( + var n = Object.keys(t), + r = Array(n.length + 1), + e = Array(n.length), + s = 0; + s < n.length; - (i.exports = r).prototype.on = function (t, i, n) { - return (this.t[t] || (this.t[t] = [])).push({fn: i, ctx: n || this}), this - }, r.prototype.off = function (t, i) { - if (t === g) this.t = {}; else if (i === g) this.t[t] = []; else for (var n = this.t[t], r = 0; r < n.length;) n[r].fn === i ? n.splice(r, 1) : ++r; - return this - }, r.prototype.emit = function (t) { - var i = this.t[t]; - if (i) { - for (var n = [], r = 1; r < arguments.length;) n.push(arguments[r++]); - for (r = 0; r < i.length;) i[r].fn.apply(i[r++].ctx, n) + ) + (r[s] = n[s]), (e[s] = t[n[s++]]); + return (r[s] = i), Function.apply(null, r).apply(null, e); } - return this - } - }, {}], 5: [function (t, i, n) { - i.exports = o; - var s = t(1), u = t(7)("fs"); - - function o(n, r, e) { - return r = "function" == typeof r ? (e = r, {}) : r || {}, e ? !r.xhr && u && u.readFile ? u.readFile(n, function (t, i) { - return t && "undefined" != typeof XMLHttpRequest ? o.xhr(n, r, e) : t ? e(t) : e(null, r.binary ? i : i.toString("utf8")) - }) : o.xhr(n, r, e) : s(o, this, n, r) + return Function(i)(); + } + for (var u = Array(arguments.length - 1), o = 0; o < u.length; ) + u[o] = arguments[++o]; + if ( + ((o = 0), + (t = t.replace(/%([%dfijs])/g, function (t, i) { + var n = u[o++]; + switch (i) { + case 'd': + case 'f': + return '' + +('' + n); + case 'i': + return '' + Math.floor(n); + case 'j': + return JSON.stringify(n); + case 's': + return '' + n; + } + return '%'; + })), + o !== u.length) + ) + throw Error('parameter count mismatch'); + return h.push(t), f; } - - o.xhr = function (t, n, r) { - var e = new XMLHttpRequest; - e.onreadystatechange = function () { - if (4 !== e.readyState) return g; - if (0 !== e.status && 200 !== e.status) return r(Error("status " + e.status)); - if (n.binary) { - if (!(t = e.response)) for (var t = [], i = 0; i < e.responseText.length; ++i) t.push(255 & e.responseText.charCodeAt(i)); - return r(null, "undefined" != typeof Uint8Array ? new Uint8Array(t) : t) - } - return r(null, e.responseText) - }, n.binary && ("overrideMimeType" in e && e.overrideMimeType("text/plain; charset=x-user-defined"), e.responseType = "arraybuffer"), e.open("GET", t), e.send() + function c(t) { + return ( + 'function ' + + (t || n || '') + + '(' + + ((i && i.join(',')) || '') + + '){\n ' + + h.join('\n ') + + '\n}' + ); } - }, {1: 1, 7: 7}], 6: [function (t, i, n) { - function r(t) { - function i(t, i, n, r) { - var e = i < 0 ? 1 : 0; - t(0 === (i = e ? -i : i) ? 0 < 1 / i ? 0 : 2147483648 : isNaN(i) ? 2143289344 : 34028234663852886e22 < i ? (e << 31 | 2139095040) >>> 0 : i < 11754943508222875e-54 ? (e << 31 | Math.round(i / 1401298464324817e-60)) >>> 0 : (e << 31 | 127 + (t = Math.floor(Math.log(i) / Math.LN2)) << 23 | 8388607 & Math.round(i * Math.pow(2, -t) * 8388608)) >>> 0, n, r) - } - - function n(t, i, n) { - t = t(i, n), i = 2 * (t >> 31) + 1, n = t >>> 23 & 255, t &= 8388607; - return 255 == n ? t ? NaN : 1 / 0 * i : 0 == n ? 1401298464324817e-60 * i * t : i * Math.pow(2, n - 150) * (8388608 + t) - } - - function r(t, i, n) { - o[0] = t, i[n] = h[0], i[n + 1] = h[1], i[n + 2] = h[2], i[n + 3] = h[3] - } - - function e(t, i, n) { - o[0] = t, i[n] = h[3], i[n + 1] = h[2], i[n + 2] = h[1], i[n + 3] = h[0] - } - - function s(t, i) { - return h[0] = t[i], h[1] = t[i + 1], h[2] = t[i + 2], h[3] = t[i + 3], o[0] - } - - function u(t, i) { - return h[3] = t[i], h[2] = t[i + 1], h[1] = t[i + 2], h[0] = t[i + 3], o[0] - } - - var o, h, f, c, a; - - function l(t, i, n, r, e, s) { - var u, o = r < 0 ? 1 : 0; - 0 === (r = o ? -r : r) ? (t(0, e, s + i), t(0 < 1 / r ? 0 : 2147483648, e, s + n)) : isNaN(r) ? (t(0, e, s + i), t(2146959360, e, s + n)) : 17976931348623157e292 < r ? (t(0, e, s + i), t((o << 31 | 2146435072) >>> 0, e, s + n)) : r < 22250738585072014e-324 ? (t((u = r / 5e-324) >>> 0, e, s + i), t((o << 31 | u / 4294967296) >>> 0, e, s + n)) : (t(4503599627370496 * (u = r * Math.pow(2, -(r = 1024 === (r = Math.floor(Math.log(r) / Math.LN2)) ? 1023 : r))) >>> 0, e, s + i), t((o << 31 | r + 1023 << 20 | 1048576 * u & 1048575) >>> 0, e, s + n)) - } - - function d(t, i, n, r, e) { - i = t(r, e + i), t = t(r, e + n), r = 2 * (t >> 31) + 1, e = t >>> 20 & 2047, n = 4294967296 * (1048575 & t) + i; - return 2047 == e ? n ? NaN : 1 / 0 * r : 0 == e ? 5e-324 * r * n : r * Math.pow(2, e - 1075) * (n + 4503599627370496) - } - - function v(t, i, n) { - f[0] = t, i[n] = c[0], i[n + 1] = c[1], i[n + 2] = c[2], i[n + 3] = c[3], i[n + 4] = c[4], i[n + 5] = c[5], i[n + 6] = c[6], i[n + 7] = c[7] - } - - function b(t, i, n) { - f[0] = t, i[n] = c[7], i[n + 1] = c[6], i[n + 2] = c[5], i[n + 3] = c[4], i[n + 4] = c[3], i[n + 5] = c[2], i[n + 6] = c[1], i[n + 7] = c[0] - } - - function p(t, i) { - return c[0] = t[i], c[1] = t[i + 1], c[2] = t[i + 2], c[3] = t[i + 3], c[4] = t[i + 4], c[5] = t[i + 5], c[6] = t[i + 6], c[7] = t[i + 7], f[0] - } - - function y(t, i) { - return c[7] = t[i], c[6] = t[i + 1], c[5] = t[i + 2], c[4] = t[i + 3], c[3] = t[i + 4], c[2] = t[i + 5], c[1] = t[i + 6], c[0] = t[i + 7], f[0] - } - - return "undefined" != typeof Float32Array ? (o = new Float32Array([-0]), h = new Uint8Array(o.buffer), a = 128 === h[3], t.writeFloatLE = a ? r : e, t.writeFloatBE = a ? e : r, t.readFloatLE = a ? s : u, t.readFloatBE = a ? u : s) : (t.writeFloatLE = i.bind(null, m), t.writeFloatBE = i.bind(null, w), t.readFloatLE = n.bind(null, g), t.readFloatBE = n.bind(null, j)), "undefined" != typeof Float64Array ? (f = new Float64Array([-0]), c = new Uint8Array(f.buffer), a = 128 === c[7], t.writeDoubleLE = a ? v : b, t.writeDoubleBE = a ? b : v, t.readDoubleLE = a ? p : y, t.readDoubleBE = a ? y : p) : (t.writeDoubleLE = l.bind(null, m, 0, 4), t.writeDoubleBE = l.bind(null, w, 4, 0), t.readDoubleLE = d.bind(null, g, 0, 4), t.readDoubleBE = d.bind(null, j, 4, 0)), t + return (f.toString = c), f; + } + (i.exports = a).verbose = !1; + }, + {}, + ], + 4: [ + function (t, i, n) { + function r() { + this.t = {}; + } + ((i.exports = r).prototype.on = function (t, i, n) { + return ( + (this.t[t] || (this.t[t] = [])).push({ fn: i, ctx: n || this }), + this + ); + }), + (r.prototype.off = function (t, i) { + if (t === g) this.t = {}; + else if (i === g) this.t[t] = []; + else + for (var n = this.t[t], r = 0; r < n.length; ) + n[r].fn === i ? n.splice(r, 1) : ++r; + return this; + }), + (r.prototype.emit = function (t) { + var i = this.t[t]; + if (i) { + for (var n = [], r = 1; r < arguments.length; ) + n.push(arguments[r++]); + for (r = 0; r < i.length; ) i[r].fn.apply(i[r++].ctx, n); + } + return this; + }); + }, + {}, + ], + 5: [ + function (t, i, n) { + i.exports = o; + var s = t(1), + u = t(7)('fs'); + function o(n, r, e) { + return ( + (r = 'function' == typeof r ? ((e = r), {}) : r || {}), + e + ? !r.xhr && u && u.readFile + ? u.readFile(n, function (t, i) { + return t && 'undefined' != typeof XMLHttpRequest + ? o.xhr(n, r, e) + : t + ? e(t) + : e(null, r.binary ? i : i.toString('utf8')); + }) + : o.xhr(n, r, e) + : s(o, this, n, r) + ); + } + o.xhr = function (t, n, r) { + var e = new XMLHttpRequest(); + (e.onreadystatechange = function () { + if (4 !== e.readyState) return g; + if (0 !== e.status && 200 !== e.status) + return r(Error('status ' + e.status)); + if (n.binary) { + if (!(t = e.response)) + for (var t = [], i = 0; i < e.responseText.length; ++i) + t.push(255 & e.responseText.charCodeAt(i)); + return r( + null, + 'undefined' != typeof Uint8Array ? new Uint8Array(t) : t + ); + } + return r(null, e.responseText); + }), + n.binary && + ('overrideMimeType' in e && + e.overrideMimeType('text/plain; charset=x-user-defined'), + (e.responseType = 'arraybuffer')), + e.open('GET', t), + e.send(); + }; + }, + { 1: 1, 7: 7 }, + ], + 6: [ + function (t, i, n) { + function r(t) { + function i(t, i, n, r) { + var e = i < 0 ? 1 : 0; + t( + 0 === (i = e ? -i : i) + ? 0 < 1 / i + ? 0 + : 2147483648 + : isNaN(i) + ? 2143289344 + : 34028234663852886e22 < i + ? ((e << 31) | 2139095040) >>> 0 + : i < 11754943508222875e-54 + ? ((e << 31) | Math.round(i / 1401298464324817e-60)) >>> 0 + : ((e << 31) | + ((127 + (t = Math.floor(Math.log(i) / Math.LN2))) << 23) | + (8388607 & Math.round(i * Math.pow(2, -t) * 8388608))) >>> + 0, + n, + r + ); } - - function m(t, i, n) { - i[n] = 255 & t, i[n + 1] = t >>> 8 & 255, i[n + 2] = t >>> 16 & 255, i[n + 3] = t >>> 24 + function n(t, i, n) { + (t = t(i, n)), + (i = 2 * (t >> 31) + 1), + (n = (t >>> 23) & 255), + (t &= 8388607); + return 255 == n + ? t + ? NaN + : (1 / 0) * i + : 0 == n + ? 1401298464324817e-60 * i * t + : i * Math.pow(2, n - 150) * (8388608 + t); } - - function w(t, i, n) { - i[n] = t >>> 24, i[n + 1] = t >>> 16 & 255, i[n + 2] = t >>> 8 & 255, i[n + 3] = 255 & t + function r(t, i, n) { + (o[0] = t), + (i[n] = h[0]), + (i[n + 1] = h[1]), + (i[n + 2] = h[2]), + (i[n + 3] = h[3]); } - - function g(t, i) { - return (t[i] | t[i + 1] << 8 | t[i + 2] << 16 | t[i + 3] << 24) >>> 0 + function e(t, i, n) { + (o[0] = t), + (i[n] = h[3]), + (i[n + 1] = h[2]), + (i[n + 2] = h[1]), + (i[n + 3] = h[0]); } - - function j(t, i) { - return (t[i] << 24 | t[i + 1] << 16 | t[i + 2] << 8 | t[i + 3]) >>> 0 + function s(t, i) { + return ( + (h[0] = t[i]), + (h[1] = t[i + 1]), + (h[2] = t[i + 2]), + (h[3] = t[i + 3]), + o[0] + ); } - - i.exports = r(r) - }, {}], 7: [function (t, i, n) { - function r(t) { - try { - var i = eval("require")(t); - if (i && (i.length || Object.keys(i).length)) return i - } catch (t) { - } - return null + function u(t, i) { + return ( + (h[3] = t[i]), + (h[2] = t[i + 1]), + (h[1] = t[i + 2]), + (h[0] = t[i + 3]), + o[0] + ); } - - i.exports = r - }, {}], 8: [function (t, i, n) { - var e = n.isAbsolute = function (t) { - return /^(?:\/|\w+:)/.test(t) - }, r = n.normalize = function (t) { - var i = (t = t.replace(/\\/g, "/").replace(/\/{2,}/g, "/")).split("/"), n = e(t), t = ""; - n && (t = i.shift() + "/"); - for (var r = 0; r < i.length;) ".." === i[r] ? 0 < r && ".." !== i[r - 1] ? i.splice(--r, 2) : n ? i.splice(r, 1) : ++r : "." === i[r] ? i.splice(r, 1) : ++r; - return t + i.join("/") - }; - n.resolve = function (t, i, n) { - return n || (i = r(i)), !e(i) && (t = (t = n ? t : r(t)).replace(/(?:\/|^)[^/]+$/, "")).length ? r(t + "/" + i) : i + var o, h, f, c, a; + function l(t, i, n, r, e, s) { + var u, + o = r < 0 ? 1 : 0; + 0 === (r = o ? -r : r) + ? (t(0, e, s + i), t(0 < 1 / r ? 0 : 2147483648, e, s + n)) + : isNaN(r) + ? (t(0, e, s + i), t(2146959360, e, s + n)) + : 17976931348623157e292 < r + ? (t(0, e, s + i), t(((o << 31) | 2146435072) >>> 0, e, s + n)) + : r < 22250738585072014e-324 + ? (t((u = r / 5e-324) >>> 0, e, s + i), + t(((o << 31) | (u / 4294967296)) >>> 0, e, s + n)) + : (t( + (4503599627370496 * + (u = + r * + Math.pow( + 2, + -(r = + 1024 === (r = Math.floor(Math.log(r) / Math.LN2)) + ? 1023 + : r) + ))) >>> + 0, + e, + s + i + ), + t( + ((o << 31) | + ((r + 1023) << 20) | + ((1048576 * u) & 1048575)) >>> + 0, + e, + s + n + )); } - }, {}], 9: [function (t, i, n) { - i.exports = function (i, n, t) { - var r = t || 8192, e = r >>> 1, s = null, u = r; - return function (t) { - if (t < 1 || e < t) return i(t); - r < u + t && (s = i(r), u = 0); - t = n.call(s, u, u += t); - return 7 & u && (u = 1 + (7 | u)), t - } + function d(t, i, n, r, e) { + (i = t(r, e + i)), + (t = t(r, e + n)), + (r = 2 * (t >> 31) + 1), + (e = (t >>> 20) & 2047), + (n = 4294967296 * (1048575 & t) + i); + return 2047 == e + ? n + ? NaN + : (1 / 0) * r + : 0 == e + ? 5e-324 * r * n + : r * Math.pow(2, e - 1075) * (n + 4503599627370496); } - }, {}], 10: [function (t, i, n) { - n.length = function (t) { - for (var i, n = 0, r = 0; r < t.length; ++r) (i = t.charCodeAt(r)) < 128 ? n += 1 : i < 2048 ? n += 2 : 55296 == (64512 & i) && 56320 == (64512 & t.charCodeAt(r + 1)) ? (++r, n += 4) : n += 3; - return n - }, n.read = function (t, i, n) { - if (n - i < 1) return ""; - for (var r, e = null, s = [], u = 0; i < n;) (r = t[i++]) < 128 ? s[u++] = r : 191 < r && r < 224 ? s[u++] = (31 & r) << 6 | 63 & t[i++] : 239 < r && r < 365 ? (r = ((7 & r) << 18 | (63 & t[i++]) << 12 | (63 & t[i++]) << 6 | 63 & t[i++]) - 65536, s[u++] = 55296 + (r >> 10), s[u++] = 56320 + (1023 & r)) : s[u++] = (15 & r) << 12 | (63 & t[i++]) << 6 | 63 & t[i++], 8191 < u && ((e = e || []).push(String.fromCharCode.apply(String, s)), u = 0); - return e ? (u && e.push(String.fromCharCode.apply(String, s.slice(0, u))), e.join("")) : String.fromCharCode.apply(String, s.slice(0, u)) - }, n.write = function (t, i, n) { - for (var r, e, s = n, u = 0; u < t.length; ++u) (r = t.charCodeAt(u)) < 128 ? i[n++] = r : (r < 2048 ? i[n++] = r >> 6 | 192 : (55296 == (64512 & r) && 56320 == (64512 & (e = t.charCodeAt(u + 1))) ? (++u, i[n++] = (r = 65536 + ((1023 & r) << 10) + (1023 & e)) >> 18 | 240, i[n++] = r >> 12 & 63 | 128) : i[n++] = r >> 12 | 224, i[n++] = r >> 6 & 63 | 128), i[n++] = 63 & r | 128); - return n - s + function v(t, i, n) { + (f[0] = t), + (i[n] = c[0]), + (i[n + 1] = c[1]), + (i[n + 2] = c[2]), + (i[n + 3] = c[3]), + (i[n + 4] = c[4]), + (i[n + 5] = c[5]), + (i[n + 6] = c[6]), + (i[n + 7] = c[7]); } - }, {}], 11: [function (t, i, n) { - var l = t(14), d = t(33); - - function u(t, i, n, r) { - var e = !1; - if (i.resolvedType) if (i.resolvedType instanceof l) { - t("switch(d%s){", r); - for (var s = i.resolvedType.values, u = Object.keys(s), o = 0; o < u.length; ++o) s[u[o]] !== i.typeDefault || e || (t("default:")('if(typeof(d%s)==="number"){m%s=d%s;break}', r, r, r), i.repeated || t("break"), e = !0), t("case%j:", u[o])("case %i:", s[u[o]])("m%s=%j", r, s[u[o]])("break"); - t("}") - } else t('if(typeof d%s!=="object")', r)("throw TypeError(%j)", i.fullName + ": object expected")("m%s=types[%i].fromObject(d%s)", r, n, r); else { - var h = !1; - switch (i.type) { - case"double": - case"float": - t("m%s=Number(d%s)", r, r); - break; - case"uint32": - case"fixed32": - t("m%s=d%s>>>0", r, r); - break; - case"int32": - case"sint32": - case"sfixed32": - t("m%s=d%s|0", r, r); - break; - case"uint64": - h = !0; - case"int64": - case"sint64": - case"fixed64": - case"sfixed64": - t("if(util.Long)")("(m%s=util.Long.fromValue(d%s)).unsigned=%j", r, r, h)('else if(typeof d%s==="string")', r)("m%s=parseInt(d%s,10)", r, r)('else if(typeof d%s==="number")', r)("m%s=d%s", r, r)('else if(typeof d%s==="object")', r)("m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)", r, r, r, h ? "true" : ""); - break; - case"bytes": - t('if(typeof d%s==="string")', r)("util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)", r, r, r)("else if(d%s.length >= 0)", r)("m%s=d%s", r, r); - break; - case"string": - t("m%s=String(d%s)", r, r); - break; - case"bool": - t("m%s=Boolean(d%s)", r, r) - } - } - return t + function b(t, i, n) { + (f[0] = t), + (i[n] = c[7]), + (i[n + 1] = c[6]), + (i[n + 2] = c[5]), + (i[n + 3] = c[4]), + (i[n + 4] = c[3]), + (i[n + 5] = c[2]), + (i[n + 6] = c[1]), + (i[n + 7] = c[0]); } - - function v(t, i, n, r) { - if (i.resolvedType) i.resolvedType instanceof l ? t("d%s=o.enums===String?(types[%i].values[m%s]===undefined?m%s:types[%i].values[m%s]):m%s", r, n, r, r, n, r, r) : t("d%s=types[%i].toObject(m%s,o)", r, n, r); else { - var e = !1; - switch (i.type) { - case"double": - case"float": - t("d%s=o.json&&!isFinite(m%s)?String(m%s):m%s", r, r, r, r); - break; - case"uint64": - e = !0; - case"int64": - case"sint64": - case"fixed64": - case"sfixed64": - t('if(typeof m%s==="number")', r)("d%s=o.longs===String?String(m%s):m%s", r, r, r)("else")("d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low>>>0,m%s.high>>>0).toNumber(%s):m%s", r, r, r, r, e ? "true" : "", r); - break; - case"bytes": - t("d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s", r, r, r, r, r); - break; - default: - t("d%s=m%s", r, r) - } - } - return t + function p(t, i) { + return ( + (c[0] = t[i]), + (c[1] = t[i + 1]), + (c[2] = t[i + 2]), + (c[3] = t[i + 3]), + (c[4] = t[i + 4]), + (c[5] = t[i + 5]), + (c[6] = t[i + 6]), + (c[7] = t[i + 7]), + f[0] + ); } - - n.fromObject = function (t) { - var i = t.fieldsArray, - n = d.codegen(["d"], t.name + "$fromObject")("if(d instanceof this.ctor)")("return d"); - if (!i.length) return n("return new this.ctor"); - n("var m=new this.ctor"); - for (var r = 0; r < i.length; ++r) { - var e = i[r].resolve(), s = d.safeProp(e.name); - e.map ? (n("if(d%s){", s)('if(typeof d%s!=="object")', s)("throw TypeError(%j)", e.fullName + ": object expected")("m%s={}", s)("for(var ks=Object.keys(d%s),i=0;i>>3){"); - for (var n = 0; n < t.fieldsArray.length; ++n) { - var r = t.i[n].resolve(), e = r.resolvedType instanceof o ? "int32" : r.type, - s = "m" + f.safeProp(r.name); - i("case %i: {", r.id), r.map ? (i("if(%s===util.emptyObject)", s)("%s={}", s)("var c2 = r.uint32()+r.pos"), h.defaults[r.keyType] !== g ? i("k=%j", h.defaults[r.keyType]) : i("k=null"), h.defaults[e] !== g ? i("value=%j", h.defaults[e]) : i("value=null"), i("while(r.pos>>3){")("case 1: k=r.%s(); break", r.keyType)("case 2:"), h.basic[e] === g ? i("value=types[%i].decode(r,r.uint32())", n) : i("value=r.%s()", e), i("break")("default:")("r.skipType(tag2&7)")("break")("}")("}"), h.long[r.keyType] !== g ? i('%s[typeof k==="object"?util.longToHash(k):k]=value', s) : i("%s[k]=value", s)) : r.repeated ? (i("if(!(%s&&%s.length))", s, s)("%s=[]", s), h.packed[e] !== g && i("if((t&7)===2){")("var c2=r.uint32()+r.pos")("while(r.pos>> 0, 8 | c.mapKey[s.keyType], s.keyType), h === g ? n("types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()", u, i) : n(".uint32(%i).%s(%s[ks[i]]).ldelim()", 16 | h, o, i), n("}")("}")) : s.repeated ? (n("if(%s!=null&&%s.length){", i, i), s.packed && c.packed[o] !== g ? n("w.uint32(%i).fork()", (s.id << 3 | 2) >>> 0)("for(var i=0;i<%s.length;++i)", i)("w.%s(%s[i])", o, i)("w.ldelim()") : (n("for(var i=0;i<%s.length;++i)", i), h === g ? l(n, s, u, i + "[i]") : n("w.uint32(%i).%s(%s[i])", (s.id << 3 | h) >>> 0, o, i)), n("}")) : (s.optional && n("if(%s!=null&&Object.hasOwnProperty.call(m,%j))", i, s.name), h === g ? l(n, s, u, i) : n("w.uint32(%i).%s(%s)", (s.id << 3 | h) >>> 0, o, i)) - } - return n("return w") + return ( + 'undefined' != typeof Float32Array + ? ((o = new Float32Array([-0])), + (h = new Uint8Array(o.buffer)), + (a = 128 === h[3]), + (t.writeFloatLE = a ? r : e), + (t.writeFloatBE = a ? e : r), + (t.readFloatLE = a ? s : u), + (t.readFloatBE = a ? u : s)) + : ((t.writeFloatLE = i.bind(null, m)), + (t.writeFloatBE = i.bind(null, w)), + (t.readFloatLE = n.bind(null, g)), + (t.readFloatBE = n.bind(null, j))), + 'undefined' != typeof Float64Array + ? ((f = new Float64Array([-0])), + (c = new Uint8Array(f.buffer)), + (a = 128 === c[7]), + (t.writeDoubleLE = a ? v : b), + (t.writeDoubleBE = a ? b : v), + (t.readDoubleLE = a ? p : y), + (t.readDoubleBE = a ? y : p)) + : ((t.writeDoubleLE = l.bind(null, m, 0, 4)), + (t.writeDoubleBE = l.bind(null, w, 4, 0)), + (t.readDoubleLE = d.bind(null, g, 0, 4)), + (t.readDoubleBE = d.bind(null, j, 4, 0))), + t + ); + } + function m(t, i, n) { + (i[n] = 255 & t), + (i[n + 1] = (t >>> 8) & 255), + (i[n + 2] = (t >>> 16) & 255), + (i[n + 3] = t >>> 24); + } + function w(t, i, n) { + (i[n] = t >>> 24), + (i[n + 1] = (t >>> 16) & 255), + (i[n + 2] = (t >>> 8) & 255), + (i[n + 3] = 255 & t); + } + function g(t, i) { + return ( + (t[i] | (t[i + 1] << 8) | (t[i + 2] << 16) | (t[i + 3] << 24)) >>> + 0 + ); + } + function j(t, i) { + return ( + ((t[i] << 24) | (t[i + 1] << 16) | (t[i + 2] << 8) | t[i + 3]) >>> + 0 + ); + } + i.exports = r(r); + }, + {}, + ], + 7: [ + function (t, i, n) { + function r(t) { + try { + var i = eval('require')(t); + if (i && (i.length || Object.keys(i).length)) return i; + } catch (t) {} + return null; + } + i.exports = r; + }, + {}, + ], + 8: [ + function (t, i, n) { + var e = (n.isAbsolute = function (t) { + return /^(?:\/|\w+:)/.test(t); + }), + r = (n.normalize = function (t) { + var i = (t = t.replace(/\\/g, '/').replace(/\/{2,}/g, '/')).split( + '/' + ), + n = e(t), + t = ''; + n && (t = i.shift() + '/'); + for (var r = 0; r < i.length; ) + '..' === i[r] + ? 0 < r && '..' !== i[r - 1] + ? i.splice(--r, 2) + : n + ? i.splice(r, 1) + : ++r + : '.' === i[r] + ? i.splice(r, 1) + : ++r; + return t + i.join('/'); + }); + n.resolve = function (t, i, n) { + return ( + n || (i = r(i)), + !e(i) && + (t = (t = n ? t : r(t)).replace(/(?:\/|^)[^/]+$/, '')).length + ? r(t + '/' + i) + : i + ); + }; + }, + {}, + ], + 9: [ + function (t, i, n) { + i.exports = function (i, n, t) { + var r = t || 8192, + e = r >>> 1, + s = null, + u = r; + return function (t) { + if (t < 1 || e < t) return i(t); + r < u + t && ((s = i(r)), (u = 0)); + t = n.call(s, u, (u += t)); + return 7 & u && (u = 1 + (7 | u)), t; }; - var f = t(14), c = t(32), a = t(33); - - function l(t, i, n, r) { - i.resolvedType.group ? t("types[%i].encode(%s,w.uint32(%i)).uint32(%i)", n, r, (i.id << 3 | 3) >>> 0, (i.id << 3 | 4) >>> 0) : t("types[%i].encode(%s,w.uint32(%i).fork()).ldelim()", n, r, (i.id << 3 | 2) >>> 0) - } - }, {14: 14, 32: 32, 33: 33}], 14: [function (t, i, n) { - i.exports = s; - var h = t(22), r = (((s.prototype = Object.create(h.prototype)).constructor = s).className = "Enum", t(21)), - e = t(33); - - function s(t, i, n, r, e, s) { - if (h.call(this, t, n), i && "object" != typeof i) throw TypeError("values must be an object"); - if (this.valuesById = {}, this.values = Object.create(this.valuesById), this.comment = r, this.comments = e || {}, this.valuesOptions = s, this.reserved = g, i) for (var u = Object.keys(i), o = 0; o < u.length; ++o) "number" == typeof i[u[o]] && (this.valuesById[this.values[u[o]] = i[u[o]]] = u[o]) - } - - s.fromJSON = function (t, i) { - t = new s(t, i.values, i.options, i.comment, i.comments); - return t.reserved = i.reserved, t - }, s.prototype.toJSON = function (t) { - t = !!t && !!t.keepComments; - return e.toObject(["options", this.options, "valuesOptions", this.valuesOptions, "values", this.values, "reserved", this.reserved && this.reserved.length ? this.reserved : g, "comment", t ? this.comment : g, "comments", t ? this.comments : g]) - }, s.prototype.add = function (t, i, n, r) { - if (!e.isString(t)) throw TypeError("name must be a string"); - if (!e.isInteger(i)) throw TypeError("id must be an integer"); - if (this.values[t] !== g) throw Error("duplicate name '" + t + "' in " + this); - if (this.isReservedId(i)) throw Error("id " + i + " is reserved in " + this); - if (this.isReservedName(t)) throw Error("name '" + t + "' is reserved in " + this); - if (this.valuesById[i] !== g) { - if (!this.options || !this.options.allow_alias) throw Error("duplicate id " + i + " in " + this); - this.values[t] = i - } else this.valuesById[this.values[t] = i] = t; - return r && (this.valuesOptions === g && (this.valuesOptions = {}), this.valuesOptions[t] = r || null), this.comments[t] = n || null, this - }, s.prototype.remove = function (t) { - if (!e.isString(t)) throw TypeError("name must be a string"); - var i = this.values[t]; - if (null == i) throw Error("name '" + t + "' does not exist in " + this); - return delete this.valuesById[i], delete this.values[t], delete this.comments[t], this.valuesOptions && delete this.valuesOptions[t], this - }, s.prototype.isReservedId = function (t) { - return r.isReservedId(this.reserved, t) - }, s.prototype.isReservedName = function (t) { - return r.isReservedName(this.reserved, t) - } - }, {21: 21, 22: 22, 33: 33}], 15: [function (t, i, n) { - i.exports = u; - var r, o = t(22), - e = (((u.prototype = Object.create(o.prototype)).constructor = u).className = "Field", t(14)), - h = t(32), f = t(33), c = /^required|optional|repeated$/; - - function u(t, i, n, r, e, s, u) { - if (f.isObject(r) ? (u = e, s = r, r = e = g) : f.isObject(e) && (u = s, s = e, e = g), o.call(this, t, s), !f.isInteger(i) || i < 0) throw TypeError("id must be a non-negative integer"); - if (!f.isString(n)) throw TypeError("type must be a string"); - if (r !== g && !c.test(r = r.toString().toLowerCase())) throw TypeError("rule must be a string rule"); - if (e !== g && !f.isString(e)) throw TypeError("extend must be a string"); - this.rule = (r = "proto3_optional" === r ? "optional" : r) && "optional" !== r ? r : g, this.type = n, this.id = i, this.extend = e || g, this.required = "required" === r, this.optional = !this.required, this.repeated = "repeated" === r, this.map = !1, this.message = null, this.partOf = null, this.typeDefault = null, this.defaultValue = null, this.long = !!f.Long && h.long[n] !== g, this.bytes = "bytes" === n, this.resolvedType = null, this.extensionField = null, this.declaringField = null, this.n = null, this.comment = u - } - - u.fromJSON = function (t, i) { - return new u(t, i.id, i.type, i.rule, i.extend, i.options, i.comment) - }, Object.defineProperty(u.prototype, "packed", { - get: function () { - return null === this.n && (this.n = !1 !== this.getOption("packed")), this.n - } - }), u.prototype.setOption = function (t, i, n) { - return "packed" === t && (this.n = null), o.prototype.setOption.call(this, t, i, n) - }, u.prototype.toJSON = function (t) { - t = !!t && !!t.keepComments; - return f.toObject(["rule", "optional" !== this.rule && this.rule || g, "type", this.type, "id", this.id, "extend", this.extend, "options", this.options, "comment", t ? this.comment : g]) - }, u.prototype.resolve = function () { - var t; - return this.resolved ? this : ((this.typeDefault = h.defaults[this.type]) === g ? (this.resolvedType = (this.declaringField || this).parent.lookupTypeOrEnum(this.type), this.resolvedType instanceof r ? this.typeDefault = null : this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]) : this.options && this.options.proto3_optional && (this.typeDefault = null), this.options && null != this.options.default && (this.typeDefault = this.options.default, this.resolvedType instanceof e && "string" == typeof this.typeDefault && (this.typeDefault = this.resolvedType.values[this.typeDefault])), this.options && (!0 !== this.options.packed && (this.options.packed === g || !this.resolvedType || this.resolvedType instanceof e) || delete this.options.packed, Object.keys(this.options).length || (this.options = g)), this.long ? (this.typeDefault = f.Long.fromNumber(this.typeDefault, "u" == (this.type[0] || "")), Object.freeze && Object.freeze(this.typeDefault)) : this.bytes && "string" == typeof this.typeDefault && (f.base64.test(this.typeDefault) ? f.base64.decode(this.typeDefault, t = f.newBuffer(f.base64.length(this.typeDefault)), 0) : f.utf8.write(this.typeDefault, t = f.newBuffer(f.utf8.length(this.typeDefault)), 0), this.typeDefault = t), this.map ? this.defaultValue = f.emptyObject : this.repeated ? this.defaultValue = f.emptyArray : this.defaultValue = this.typeDefault, this.parent instanceof r && (this.parent.ctor.prototype[this.name] = this.defaultValue), o.prototype.resolve.call(this)) - }, u.d = function (n, r, e, s) { - return "function" == typeof r ? r = f.decorateType(r).name : r && "object" == typeof r && (r = f.decorateEnum(r).name), function (t, i) { - f.decorateType(t.constructor).add(new u(i, n, r, e, {default: s})) - } - }, u.r = function (t) { - r = t + }; + }, + {}, + ], + 10: [ + function (t, i, n) { + (n.length = function (t) { + for (var i, n = 0, r = 0; r < t.length; ++r) + (i = t.charCodeAt(r)) < 128 + ? (n += 1) + : i < 2048 + ? (n += 2) + : 55296 == (64512 & i) && 56320 == (64512 & t.charCodeAt(r + 1)) + ? (++r, (n += 4)) + : (n += 3); + return n; + }), + (n.read = function (t, i, n) { + if (n - i < 1) return ''; + for (var r, e = null, s = [], u = 0; i < n; ) + (r = t[i++]) < 128 + ? (s[u++] = r) + : 191 < r && r < 224 + ? (s[u++] = ((31 & r) << 6) | (63 & t[i++])) + : 239 < r && r < 365 + ? ((r = + (((7 & r) << 18) | + ((63 & t[i++]) << 12) | + ((63 & t[i++]) << 6) | + (63 & t[i++])) - + 65536), + (s[u++] = 55296 + (r >> 10)), + (s[u++] = 56320 + (1023 & r))) + : (s[u++] = + ((15 & r) << 12) | ((63 & t[i++]) << 6) | (63 & t[i++])), + 8191 < u && + ((e = e || []).push(String.fromCharCode.apply(String, s)), + (u = 0)); + return e + ? (u && + e.push(String.fromCharCode.apply(String, s.slice(0, u))), + e.join('')) + : String.fromCharCode.apply(String, s.slice(0, u)); + }), + (n.write = function (t, i, n) { + for (var r, e, s = n, u = 0; u < t.length; ++u) + (r = t.charCodeAt(u)) < 128 + ? (i[n++] = r) + : (r < 2048 + ? (i[n++] = (r >> 6) | 192) + : (55296 == (64512 & r) && + 56320 == (64512 & (e = t.charCodeAt(u + 1))) + ? (++u, + (i[n++] = + ((r = 65536 + ((1023 & r) << 10) + (1023 & e)) >> + 18) | + 240), + (i[n++] = ((r >> 12) & 63) | 128)) + : (i[n++] = (r >> 12) | 224), + (i[n++] = ((r >> 6) & 63) | 128)), + (i[n++] = (63 & r) | 128)); + return n - s; + }); + }, + {}, + ], + 11: [ + function (t, i, n) { + var l = t(14), + d = t(33); + function u(t, i, n, r) { + var e = !1; + if (i.resolvedType) + if (i.resolvedType instanceof l) { + t('switch(d%s){', r); + for ( + var s = i.resolvedType.values, u = Object.keys(s), o = 0; + o < u.length; + ++o + ) + s[u[o]] !== i.typeDefault || + e || + (t('default:')( + 'if(typeof(d%s)==="number"){m%s=d%s;break}', + r, + r, + r + ), + i.repeated || t('break'), + (e = !0)), + t('case%j:', u[o])('case %i:', s[u[o]])( + 'm%s=%j', + r, + s[u[o]] + )('break'); + t('}'); + } else + t('if(typeof d%s!=="object")', r)( + 'throw TypeError(%j)', + i.fullName + ': object expected' + )('m%s=types[%i].fromObject(d%s)', r, n, r); + else { + var h = !1; + switch (i.type) { + case 'double': + case 'float': + t('m%s=Number(d%s)', r, r); + break; + case 'uint32': + case 'fixed32': + t('m%s=d%s>>>0', r, r); + break; + case 'int32': + case 'sint32': + case 'sfixed32': + t('m%s=d%s|0', r, r); + break; + case 'uint64': + h = !0; + case 'int64': + case 'sint64': + case 'fixed64': + case 'sfixed64': + t('if(util.Long)')( + '(m%s=util.Long.fromValue(d%s)).unsigned=%j', + r, + r, + h + )('else if(typeof d%s==="string")', r)( + 'm%s=parseInt(d%s,10)', + r, + r + )('else if(typeof d%s==="number")', r)( + 'm%s=d%s', + r, + r + )('else if(typeof d%s==="object")', r)( + 'm%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)', + r, + r, + r, + h ? 'true' : '' + ); + break; + case 'bytes': + t('if(typeof d%s==="string")', r)( + 'util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)', + r, + r, + r + )('else if(d%s.length >= 0)', r)('m%s=d%s', r, r); + break; + case 'string': + t('m%s=String(d%s)', r, r); + break; + case 'bool': + t('m%s=Boolean(d%s)', r, r); + } } - }, {14: 14, 22: 22, 32: 32, 33: 33}], 16: [function (t, i, n) { - var r = i.exports = t(17); - r.build = "light", r.load = function (t, i, n) { - return (i = "function" == typeof i ? (n = i, new r.Root) : i || new r.Root).load(t, n) - }, r.loadSync = function (t, i) { - return (i = i || new r.Root).loadSync(t) - }, r.encoder = t(13), r.decoder = t(12), r.verifier = t(36), r.converter = t(11), r.ReflectionObject = t(22), r.Namespace = t(21), r.Root = t(26), r.Enum = t(14), r.Type = t(31), r.Field = t(15), r.OneOf = t(23), r.MapField = t(18), r.Service = t(30), r.Method = t(20), r.Message = t(19), r.wrappers = t(37), r.types = t(32), r.util = t(33), r.ReflectionObject.r(r.Root), r.Namespace.r(r.Type, r.Service, r.Enum), r.Root.r(r.Type), r.Field.r(r.Type) - }, { - 11: 11, - 12: 12, - 13: 13, - 14: 14, - 15: 15, - 17: 17, - 18: 18, - 19: 19, - 20: 20, - 21: 21, - 22: 22, - 23: 23, - 26: 26, - 30: 30, - 31: 31, - 32: 32, - 33: 33, - 36: 36, - 37: 37 - }], 17: [function (t, i, n) { - var r = n; - - function e() { - r.util.r(), r.Writer.r(r.BufferWriter), r.Reader.r(r.BufferReader) + return t; + } + function v(t, i, n, r) { + if (i.resolvedType) + i.resolvedType instanceof l + ? t( + 'd%s=o.enums===String?(types[%i].values[m%s]===undefined?m%s:types[%i].values[m%s]):m%s', + r, + n, + r, + r, + n, + r, + r + ) + : t('d%s=types[%i].toObject(m%s,o)', r, n, r); + else { + var e = !1; + switch (i.type) { + case 'double': + case 'float': + t('d%s=o.json&&!isFinite(m%s)?String(m%s):m%s', r, r, r, r); + break; + case 'uint64': + e = !0; + case 'int64': + case 'sint64': + case 'fixed64': + case 'sfixed64': + t('if(typeof m%s==="number")', r)( + 'd%s=o.longs===String?String(m%s):m%s', + r, + r, + r + )('else')( + 'd%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low>>>0,m%s.high>>>0).toNumber(%s):m%s', + r, + r, + r, + r, + e ? 'true' : '', + r + ); + break; + case 'bytes': + t( + 'd%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s', + r, + r, + r, + r, + r + ); + break; + default: + t('d%s=m%s', r, r); + } } - - r.build = "minimal", r.Writer = t(38), r.BufferWriter = t(39), r.Reader = t(24), r.BufferReader = t(25), r.util = t(35), r.rpc = t(28), r.roots = t(27), r.configure = e, e() - }, {24: 24, 25: 25, 27: 27, 28: 28, 35: 35, 38: 38, 39: 39}], 18: [function (t, i, n) { - i.exports = s; - var u = t(15), - r = (((s.prototype = Object.create(u.prototype)).constructor = s).className = "MapField", t(32)), - o = t(33); - - function s(t, i, n, r, e, s) { - if (u.call(this, t, i, r, g, g, e, s), !o.isString(n)) throw TypeError("keyType must be a string"); - this.keyType = n, this.resolvedKeyType = null, this.map = !0 + return t; + } + (n.fromObject = function (t) { + var i = t.fieldsArray, + n = d.codegen( + ['d'], + t.name + '$fromObject' + )('if(d instanceof this.ctor)')('return d'); + if (!i.length) return n('return new this.ctor'); + n('var m=new this.ctor'); + for (var r = 0; r < i.length; ++r) { + var e = i[r].resolve(), + s = d.safeProp(e.name); + e.map + ? (n('if(d%s){', s)('if(typeof d%s!=="object")', s)( + 'throw TypeError(%j)', + e.fullName + ': object expected' + )('m%s={}', s)( + 'for(var ks=Object.keys(d%s),i=0;i>>3){'); + for (var n = 0; n < t.fieldsArray.length; ++n) { + var r = t.i[n].resolve(), + e = r.resolvedType instanceof o ? 'int32' : r.type, + s = 'm' + f.safeProp(r.name); + i('case %i: {', r.id), + r.map + ? (i('if(%s===util.emptyObject)', s)('%s={}', s)( + 'var c2 = r.uint32()+r.pos' + ), + h.defaults[r.keyType] !== g + ? i('k=%j', h.defaults[r.keyType]) + : i('k=null'), + h.defaults[e] !== g + ? i('value=%j', h.defaults[e]) + : i('value=null'), + i('while(r.pos>>3){' + )( + 'case 1: k=r.%s(); break', + r.keyType + )('case 2:'), + h.basic[e] === g + ? i('value=types[%i].decode(r,r.uint32())', n) + : i('value=r.%s()', e), + i('break')('default:')('r.skipType(tag2&7)')('break')('}')( + '}' + ), + h.long[r.keyType] !== g + ? i( + '%s[typeof k==="object"?util.longToHash(k):k]=value', + s + ) + : i('%s[k]=value', s)) + : r.repeated + ? (i('if(!(%s&&%s.length))', s, s)('%s=[]', s), + h.packed[e] !== g && + i('if((t&7)===2){')('var c2=r.uint32()+r.pos')( + 'while(r.pos i) return !0; - return !1 - }, a.isReservedName = function (t, i) { - if (t) for (var n = 0; n < t.length; ++n) if (t[n] === i) return !0; - return !1 - }, Object.defineProperty(a.prototype, "nestedArray", { - get: function () { - return this.e || (this.e = h.toArray(this.nested)) - } - }), a.prototype.toJSON = function (t) { - return h.toObject(["options", this.options, "nested", c(this.nestedArray, t)]) - }, a.prototype.addJSON = function (t) { - if (t) for (var i, n = Object.keys(t), r = 0; r < n.length; ++r) i = t[n[r]], this.add((i.fields !== g ? e : i.values !== g ? u : i.methods !== g ? s : i.id !== g ? o : a).fromJSON(n[r], i)); - return this - }, a.prototype.get = function (t) { - return this.nested && this.nested[t] || null - }, a.prototype.getEnum = function (t) { - if (this.nested && this.nested[t] instanceof u) return this.nested[t].values; - throw Error("no such enum: " + t) - }, a.prototype.add = function (t) { - if (!(t instanceof o && t.extend !== g || t instanceof e || t instanceof f || t instanceof u || t instanceof s || t instanceof a)) throw TypeError("object must be a valid nested object"); - if (this.nested) { - var i = this.get(t.name); - if (i) { - if (!(i instanceof a && t instanceof a) || i instanceof e || i instanceof s) throw Error("duplicate name '" + t.name + "' in " + this); - for (var n = i.nestedArray, r = 0; r < n.length; ++r) t.add(n[r]); - this.remove(i), this.nested || (this.nested = {}), t.setOptions(i.options, !0) - } - } else this.nested = {}; - return (this.nested[t.name] = t).onAdd(this), l(this) - }, a.prototype.remove = function (t) { - if (!(t instanceof r)) throw TypeError("object must be a ReflectionObject"); - if (t.parent !== this) throw Error(t + " is not a member of " + this); - return delete this.nested[t.name], Object.keys(this.nested).length || (this.nested = g), t.onRemove(this), l(this) - }, a.prototype.define = function (t, i) { - if (h.isString(t)) t = t.split("."); else if (!Array.isArray(t)) throw TypeError("illegal path"); - if (t && t.length && "" === t[0]) throw Error("path must be relative"); - for (var n = this; 0 < t.length;) { - var r = t.shift(); - if (n.nested && n.nested[r]) { - if (!((n = n.nested[r]) instanceof a)) throw Error("path conflicts with non-namespace objects") - } else n.add(n = new a(r)) - } - return i && n.addJSON(i), n - }, a.prototype.resolveAll = function () { - for (var t = this.nestedArray, i = 0; i < t.length;) t[i] instanceof a ? t[i++].resolveAll() : t[i++].resolve(); - return this.resolve() - }, a.prototype.lookup = function (t, i, n) { - if ("boolean" == typeof i ? (n = i, i = g) : i && !Array.isArray(i) && (i = [i]), h.isString(t) && t.length) { - if ("." === t) return this.root; - t = t.split(".") - } else if (!t.length) return this; - if ("" === t[0]) return this.root.lookup(t.slice(1), i); - var r = this.get(t[0]); - if (r) { - if (1 === t.length) { - if (!i || ~i.indexOf(r.constructor)) return r - } else if (r instanceof a && (r = r.lookup(t.slice(1), i, !0))) return r - } else for (var e = 0; e < this.nestedArray.length; ++e) if (this.e[e] instanceof a && (r = this.e[e].lookup(t, i, !0))) return r; - return null === this.parent || n ? null : this.parent.lookup(t, i) - }, a.prototype.lookupType = function (t) { - var i = this.lookup(t, [e]); - if (i) return i; - throw Error("no such type: " + t) - }, a.prototype.lookupEnum = function (t) { - var i = this.lookup(t, [u]); - if (i) return i; - throw Error("no such Enum '" + t + "' in " + this) - }, a.prototype.lookupTypeOrEnum = function (t) { - var i = this.lookup(t, [e, u]); - if (i) return i; - throw Error("no such Type or Enum '" + t + "' in " + this) - }, a.prototype.lookupService = function (t) { - var i = this.lookup(t, [s]); - if (i) return i; - throw Error("no such Service '" + t + "' in " + this) - }, a.r = function (t, i, n) { - e = t, s = i, u = n + for ( + i('default:')('r.skipType(t&7)')('break')('}')('}'), n = 0; + n < t.i.length; + ++n + ) { + var u = t.i[n]; + u.required && + i('if(!m.hasOwnProperty(%j))', u.name)( + 'throw util.ProtocolError(%j,{instance:m})', + "missing required '" + u.name + "'" + ); } - }, {15: 15, 22: 22, 23: 23, 33: 33}], 22: [function (t, i, n) { - (i.exports = e).className = "ReflectionObject"; - var r, u = t(33); - - function e(t, i) { - if (!u.isString(t)) throw TypeError("name must be a string"); - if (i && !u.isObject(i)) throw TypeError("options must be an object"); - this.options = i, this.parsedOptions = null, this.name = t, this.parent = null, this.resolved = !1, this.comment = null, this.filename = null + return i('return m'); + }; + var o = t(14), + h = t(32), + f = t(33); + }, + { 14: 14, 32: 32, 33: 33 }, + ], + 13: [ + function (t, i, n) { + i.exports = function (t) { + for ( + var i, + n = a.codegen(['m', 'w'], t.name + '$encode')('if(!w)')( + 'w=Writer.create()' + ), + r = t.fieldsArray.slice().sort(a.compareFieldsById), + e = 0; + e < r.length; + ++e + ) { + var s = r[e].resolve(), + u = t.i.indexOf(s), + o = s.resolvedType instanceof f ? 'int32' : s.type, + h = c.basic[o]; + (i = 'm' + a.safeProp(s.name)), + s.map + ? (n( + 'if(%s!=null&&Object.hasOwnProperty.call(m,%j)){', + i, + s.name + )('for(var ks=Object.keys(%s),i=0;i>> 0, + 8 | c.mapKey[s.keyType], + s.keyType + ), + h === g + ? n( + 'types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()', + u, + i + ) + : n('.uint32(%i).%s(%s[ks[i]]).ldelim()', 16 | h, o, i), + n('}')('}')) + : s.repeated + ? (n('if(%s!=null&&%s.length){', i, i), + s.packed && c.packed[o] !== g + ? n('w.uint32(%i).fork()', ((s.id << 3) | 2) >>> 0)( + 'for(var i=0;i<%s.length;++i)', + i + )( + 'w.%s(%s[i])', + o, + i + )('w.ldelim()') + : (n('for(var i=0;i<%s.length;++i)', i), + h === g + ? l(n, s, u, i + '[i]') + : n( + 'w.uint32(%i).%s(%s[i])', + ((s.id << 3) | h) >>> 0, + o, + i + )), + n('}')) + : (s.optional && + n( + 'if(%s!=null&&Object.hasOwnProperty.call(m,%j))', + i, + s.name + ), + h === g + ? l(n, s, u, i) + : n( + 'w.uint32(%i).%s(%s)', + ((s.id << 3) | h) >>> 0, + o, + i + )); } - - Object.defineProperties(e.prototype, { - root: { - get: function () { - for (var t = this; null !== t.parent;) t = t.parent; - return t - } - }, fullName: { - get: function () { - for (var t = [this.name], i = this.parent; i;) t.unshift(i.name), i = i.parent; - return t.join(".") - } + return n('return w'); + }; + var f = t(14), + c = t(32), + a = t(33); + function l(t, i, n, r) { + i.resolvedType.group + ? t( + 'types[%i].encode(%s,w.uint32(%i)).uint32(%i)', + n, + r, + ((i.id << 3) | 3) >>> 0, + ((i.id << 3) | 4) >>> 0 + ) + : t( + 'types[%i].encode(%s,w.uint32(%i).fork()).ldelim()', + n, + r, + ((i.id << 3) | 2) >>> 0 + ); + } + }, + { 14: 14, 32: 32, 33: 33 }, + ], + 14: [ + function (t, i, n) { + i.exports = s; + var h = t(22), + r = + ((((s.prototype = Object.create(h.prototype)).constructor = + s).className = 'Enum'), + t(21)), + e = t(33); + function s(t, i, n, r, e, s) { + if ((h.call(this, t, n), i && 'object' != typeof i)) + throw TypeError('values must be an object'); + if ( + ((this.valuesById = {}), + (this.values = Object.create(this.valuesById)), + (this.comment = r), + (this.comments = e || {}), + (this.valuesOptions = s), + (this.reserved = g), + i) + ) + for (var u = Object.keys(i), o = 0; o < u.length; ++o) + 'number' == typeof i[u[o]] && + (this.valuesById[(this.values[u[o]] = i[u[o]])] = u[o]); + } + (s.fromJSON = function (t, i) { + t = new s(t, i.values, i.options, i.comment, i.comments); + return (t.reserved = i.reserved), t; + }), + (s.prototype.toJSON = function (t) { + t = !!t && !!t.keepComments; + return e.toObject([ + 'options', + this.options, + 'valuesOptions', + this.valuesOptions, + 'values', + this.values, + 'reserved', + this.reserved && this.reserved.length ? this.reserved : g, + 'comment', + t ? this.comment : g, + 'comments', + t ? this.comments : g, + ]); + }), + (s.prototype.add = function (t, i, n, r) { + if (!e.isString(t)) throw TypeError('name must be a string'); + if (!e.isInteger(i)) throw TypeError('id must be an integer'); + if (this.values[t] !== g) + throw Error("duplicate name '" + t + "' in " + this); + if (this.isReservedId(i)) + throw Error('id ' + i + ' is reserved in ' + this); + if (this.isReservedName(t)) + throw Error("name '" + t + "' is reserved in " + this); + if (this.valuesById[i] !== g) { + if (!this.options || !this.options.allow_alias) + throw Error('duplicate id ' + i + ' in ' + this); + this.values[t] = i; + } else this.valuesById[(this.values[t] = i)] = t; + return ( + r && + (this.valuesOptions === g && (this.valuesOptions = {}), + (this.valuesOptions[t] = r || null)), + (this.comments[t] = n || null), + this + ); + }), + (s.prototype.remove = function (t) { + if (!e.isString(t)) throw TypeError('name must be a string'); + var i = this.values[t]; + if (null == i) + throw Error("name '" + t + "' does not exist in " + this); + return ( + delete this.valuesById[i], + delete this.values[t], + delete this.comments[t], + this.valuesOptions && delete this.valuesOptions[t], + this + ); + }), + (s.prototype.isReservedId = function (t) { + return r.isReservedId(this.reserved, t); + }), + (s.prototype.isReservedName = function (t) { + return r.isReservedName(this.reserved, t); + }); + }, + { 21: 21, 22: 22, 33: 33 }, + ], + 15: [ + function (t, i, n) { + i.exports = u; + var r, + o = t(22), + e = + ((((u.prototype = Object.create(o.prototype)).constructor = + u).className = 'Field'), + t(14)), + h = t(32), + f = t(33), + c = /^required|optional|repeated$/; + function u(t, i, n, r, e, s, u) { + if ( + (f.isObject(r) + ? ((u = e), (s = r), (r = e = g)) + : f.isObject(e) && ((u = s), (s = e), (e = g)), + o.call(this, t, s), + !f.isInteger(i) || i < 0) + ) + throw TypeError('id must be a non-negative integer'); + if (!f.isString(n)) throw TypeError('type must be a string'); + if (r !== g && !c.test((r = r.toString().toLowerCase()))) + throw TypeError('rule must be a string rule'); + if (e !== g && !f.isString(e)) + throw TypeError('extend must be a string'); + (this.rule = + (r = 'proto3_optional' === r ? 'optional' : r) && 'optional' !== r + ? r + : g), + (this.type = n), + (this.id = i), + (this.extend = e || g), + (this.required = 'required' === r), + (this.optional = !this.required), + (this.repeated = 'repeated' === r), + (this.map = !1), + (this.message = null), + (this.partOf = null), + (this.typeDefault = null), + (this.defaultValue = null), + (this.long = !!f.Long && h.long[n] !== g), + (this.bytes = 'bytes' === n), + (this.resolvedType = null), + (this.extensionField = null), + (this.declaringField = null), + (this.n = null), + (this.comment = u); + } + (u.fromJSON = function (t, i) { + return new u( + t, + i.id, + i.type, + i.rule, + i.extend, + i.options, + i.comment + ); + }), + Object.defineProperty(u.prototype, 'packed', { + get: function () { + return ( + null === this.n && (this.n = !1 !== this.getOption('packed')), + this.n + ); + }, + }), + (u.prototype.setOption = function (t, i, n) { + return ( + 'packed' === t && (this.n = null), + o.prototype.setOption.call(this, t, i, n) + ); + }), + (u.prototype.toJSON = function (t) { + t = !!t && !!t.keepComments; + return f.toObject([ + 'rule', + ('optional' !== this.rule && this.rule) || g, + 'type', + this.type, + 'id', + this.id, + 'extend', + this.extend, + 'options', + this.options, + 'comment', + t ? this.comment : g, + ]); + }), + (u.prototype.resolve = function () { + var t; + return this.resolved + ? this + : ((this.typeDefault = h.defaults[this.type]) === g + ? ((this.resolvedType = ( + this.declaringField || this + ).parent.lookupTypeOrEnum(this.type)), + this.resolvedType instanceof r + ? (this.typeDefault = null) + : (this.typeDefault = + this.resolvedType.values[ + Object.keys(this.resolvedType.values)[0] + ])) + : this.options && + this.options.proto3_optional && + (this.typeDefault = null), + this.options && + null != this.options.default && + ((this.typeDefault = this.options.default), + this.resolvedType instanceof e && + 'string' == typeof this.typeDefault && + (this.typeDefault = + this.resolvedType.values[this.typeDefault])), + this.options && + ((!0 !== this.options.packed && + (this.options.packed === g || + !this.resolvedType || + this.resolvedType instanceof e)) || + delete this.options.packed, + Object.keys(this.options).length || (this.options = g)), + this.long + ? ((this.typeDefault = f.Long.fromNumber( + this.typeDefault, + 'u' == (this.type[0] || '') + )), + Object.freeze && Object.freeze(this.typeDefault)) + : this.bytes && + 'string' == typeof this.typeDefault && + (f.base64.test(this.typeDefault) + ? f.base64.decode( + this.typeDefault, + (t = f.newBuffer( + f.base64.length(this.typeDefault) + )), + 0 + ) + : f.utf8.write( + this.typeDefault, + (t = f.newBuffer(f.utf8.length(this.typeDefault))), + 0 + ), + (this.typeDefault = t)), + this.map + ? (this.defaultValue = f.emptyObject) + : this.repeated + ? (this.defaultValue = f.emptyArray) + : (this.defaultValue = this.typeDefault), + this.parent instanceof r && + (this.parent.ctor.prototype[this.name] = this.defaultValue), + o.prototype.resolve.call(this)); + }), + (u.d = function (n, r, e, s) { + return ( + 'function' == typeof r + ? (r = f.decorateType(r).name) + : r && 'object' == typeof r && (r = f.decorateEnum(r).name), + function (t, i) { + f.decorateType(t.constructor).add( + new u(i, n, r, e, { default: s }) + ); } - }), e.prototype.toJSON = function () { - throw Error() - }, e.prototype.onAdd = function (t) { - this.parent && this.parent !== t && this.parent.remove(this), this.parent = t, this.resolved = !1; - t = t.root; - t instanceof r && t.u(this) - }, e.prototype.onRemove = function (t) { - t = t.root; - t instanceof r && t.o(this), this.parent = null, this.resolved = !1 - }, e.prototype.resolve = function () { - return this.resolved || this.root instanceof r && (this.resolved = !0), this - }, e.prototype.getOption = function (t) { - return this.options ? this.options[t] : g - }, e.prototype.setOption = function (t, i, n) { - return n && this.options && this.options[t] !== g || ((this.options || (this.options = {}))[t] = i), this - }, e.prototype.setParsedOption = function (i, t, n) { - this.parsedOptions || (this.parsedOptions = []); - var r, e, s = this.parsedOptions; - return n ? (r = s.find(function (t) { - return Object.prototype.hasOwnProperty.call(t, i) - })) ? (e = r[i], u.setProperty(e, n, t)) : ((r = {})[i] = u.setProperty({}, n, t), s.push(r)) : ((e = {})[i] = t, s.push(e)), this - }, e.prototype.setOptions = function (t, i) { - if (t) for (var n = Object.keys(t), r = 0; r < n.length; ++r) this.setOption(n[r], t[n[r]], i); - return this - }, e.prototype.toString = function () { - var t = this.constructor.className, i = this.fullName; - return i.length ? t + " " + i : t - }, e.r = function (t) { - r = t - } - }, {33: 33}], 23: [function (t, i, n) { - i.exports = u; - var e = t(22), - r = (((u.prototype = Object.create(e.prototype)).constructor = u).className = "OneOf", t(15)), - s = t(33); - - function u(t, i, n, r) { - if (Array.isArray(i) || (n = i, i = g), e.call(this, t, n), i !== g && !Array.isArray(i)) throw TypeError("fieldNames must be an Array"); - this.oneof = i || [], this.fieldsArray = [], this.comment = r - } - - function o(t) { - if (t.parent) for (var i = 0; i < t.fieldsArray.length; ++i) t.fieldsArray[i].parent || t.parent.add(t.fieldsArray[i]) - } - - u.fromJSON = function (t, i) { - return new u(t, i.oneof, i.options, i.comment) - }, u.prototype.toJSON = function (t) { - t = !!t && !!t.keepComments; - return s.toObject(["options", this.options, "oneof", this.oneof, "comment", t ? this.comment : g]) - }, u.prototype.add = function (t) { - if (t instanceof r) return t.parent && t.parent !== this.parent && t.parent.remove(t), this.oneof.push(t.name), this.fieldsArray.push(t), o(t.partOf = this), this; - throw TypeError("field must be a Field") - }, u.prototype.remove = function (t) { - if (!(t instanceof r)) throw TypeError("field must be a Field"); - var i = this.fieldsArray.indexOf(t); - if (i < 0) throw Error(t + " is not a member of " + this); - return this.fieldsArray.splice(i, 1), -1 < (i = this.oneof.indexOf(t.name)) && this.oneof.splice(i, 1), t.partOf = null, this - }, u.prototype.onAdd = function (t) { - e.prototype.onAdd.call(this, t); - for (var i = 0; i < this.oneof.length; ++i) { - var n = t.get(this.oneof[i]); - n && !n.partOf && (n.partOf = this).fieldsArray.push(n) + ); + }), + (u.r = function (t) { + r = t; + }); + }, + { 14: 14, 22: 22, 32: 32, 33: 33 }, + ], + 16: [ + function (t, i, n) { + var r = (i.exports = t(17)); + (r.build = 'light'), + (r.load = function (t, i, n) { + return (i = + 'function' == typeof i + ? ((n = i), new r.Root()) + : i || new r.Root()).load(t, n); + }), + (r.loadSync = function (t, i) { + return (i = i || new r.Root()).loadSync(t); + }), + (r.encoder = t(13)), + (r.decoder = t(12)), + (r.verifier = t(36)), + (r.converter = t(11)), + (r.ReflectionObject = t(22)), + (r.Namespace = t(21)), + (r.Root = t(26)), + (r.Enum = t(14)), + (r.Type = t(31)), + (r.Field = t(15)), + (r.OneOf = t(23)), + (r.MapField = t(18)), + (r.Service = t(30)), + (r.Method = t(20)), + (r.Message = t(19)), + (r.wrappers = t(37)), + (r.types = t(32)), + (r.util = t(33)), + r.ReflectionObject.r(r.Root), + r.Namespace.r(r.Type, r.Service, r.Enum), + r.Root.r(r.Type), + r.Field.r(r.Type); + }, + { + 11: 11, + 12: 12, + 13: 13, + 14: 14, + 15: 15, + 17: 17, + 18: 18, + 19: 19, + 20: 20, + 21: 21, + 22: 22, + 23: 23, + 26: 26, + 30: 30, + 31: 31, + 32: 32, + 33: 33, + 36: 36, + 37: 37, + }, + ], + 17: [ + function (t, i, n) { + var r = n; + function e() { + r.util.r(), r.Writer.r(r.BufferWriter), r.Reader.r(r.BufferReader); + } + (r.build = 'minimal'), + (r.Writer = t(38)), + (r.BufferWriter = t(39)), + (r.Reader = t(24)), + (r.BufferReader = t(25)), + (r.util = t(35)), + (r.rpc = t(28)), + (r.roots = t(27)), + (r.configure = e), + e(); + }, + { 24: 24, 25: 25, 27: 27, 28: 28, 35: 35, 38: 38, 39: 39 }, + ], + 18: [ + function (t, i, n) { + i.exports = s; + var u = t(15), + r = + ((((s.prototype = Object.create(u.prototype)).constructor = + s).className = 'MapField'), + t(32)), + o = t(33); + function s(t, i, n, r, e, s) { + if ((u.call(this, t, i, r, g, g, e, s), !o.isString(n))) + throw TypeError('keyType must be a string'); + (this.keyType = n), (this.resolvedKeyType = null), (this.map = !0); + } + (s.fromJSON = function (t, i) { + return new s(t, i.id, i.keyType, i.type, i.options, i.comment); + }), + (s.prototype.toJSON = function (t) { + t = !!t && !!t.keepComments; + return o.toObject([ + 'keyType', + this.keyType, + 'type', + this.type, + 'id', + this.id, + 'extend', + this.extend, + 'options', + this.options, + 'comment', + t ? this.comment : g, + ]); + }), + (s.prototype.resolve = function () { + if (this.resolved) return this; + if (r.mapKey[this.keyType] === g) + throw Error('invalid key type: ' + this.keyType); + return u.prototype.resolve.call(this); + }), + (s.d = function (n, r, e) { + return ( + 'function' == typeof e + ? (e = o.decorateType(e).name) + : e && 'object' == typeof e && (e = o.decorateEnum(e).name), + function (t, i) { + o.decorateType(t.constructor).add(new s(i, n, r, e)); } - o(this) - }, u.prototype.onRemove = function (t) { - for (var i, n = 0; n < this.fieldsArray.length; ++n) (i = this.fieldsArray[n]).parent && i.parent.remove(i); - e.prototype.onRemove.call(this, t) - }, u.d = function () { - for (var n = Array(arguments.length), t = 0; t < arguments.length;) n[t] = arguments[t++]; - return function (t, i) { - s.decorateType(t.constructor).add(new u(i, n)), Object.defineProperty(t, i, { - get: s.oneOfGetter(n), - set: s.oneOfSetter(n) - }) + ); + }); + }, + { 15: 15, 32: 32, 33: 33 }, + ], + 19: [ + function (t, i, n) { + i.exports = e; + var r = t(35); + function e(t) { + if (t) + for (var i = Object.keys(t), n = 0; n < i.length; ++n) + this[i[n]] = t[i[n]]; + } + (e.create = function (t) { + return this.$type.create(t); + }), + (e.encode = function (t, i) { + return this.$type.encode(t, i); + }), + (e.encodeDelimited = function (t, i) { + return this.$type.encodeDelimited(t, i); + }), + (e.decode = function (t) { + return this.$type.decode(t); + }), + (e.decodeDelimited = function (t) { + return this.$type.decodeDelimited(t); + }), + (e.verify = function (t) { + return this.$type.verify(t); + }), + (e.fromObject = function (t) { + return this.$type.fromObject(t); + }), + (e.toObject = function (t, i) { + return this.$type.toObject(t, i); + }), + (e.prototype.toJSON = function () { + return this.$type.toObject(this, r.toJSONOptions); + }); + }, + { 35: 35 }, + ], + 20: [ + function (t, i, n) { + i.exports = r; + var f = t(22), + c = + ((((r.prototype = Object.create(f.prototype)).constructor = + r).className = 'Method'), + t(33)); + function r(t, i, n, r, e, s, u, o, h) { + if ( + (c.isObject(e) + ? ((u = e), (e = s = g)) + : c.isObject(s) && ((u = s), (s = g)), + i !== g && !c.isString(i)) + ) + throw TypeError('type must be a string'); + if (!c.isString(n)) throw TypeError('requestType must be a string'); + if (!c.isString(r)) + throw TypeError('responseType must be a string'); + f.call(this, t, u), + (this.type = i || 'rpc'), + (this.requestType = n), + (this.requestStream = !!e || g), + (this.responseType = r), + (this.responseStream = !!s || g), + (this.resolvedRequestType = null), + (this.resolvedResponseType = null), + (this.comment = o), + (this.parsedOptions = h); + } + (r.fromJSON = function (t, i) { + return new r( + t, + i.type, + i.requestType, + i.responseType, + i.requestStream, + i.responseStream, + i.options, + i.comment, + i.parsedOptions + ); + }), + (r.prototype.toJSON = function (t) { + t = !!t && !!t.keepComments; + return c.toObject([ + 'type', + ('rpc' !== this.type && this.type) || g, + 'requestType', + this.requestType, + 'requestStream', + this.requestStream, + 'responseType', + this.responseType, + 'responseStream', + this.responseStream, + 'options', + this.options, + 'comment', + t ? this.comment : g, + 'parsedOptions', + this.parsedOptions, + ]); + }), + (r.prototype.resolve = function () { + return this.resolved + ? this + : ((this.resolvedRequestType = this.parent.lookupType( + this.requestType + )), + (this.resolvedResponseType = this.parent.lookupType( + this.responseType + )), + f.prototype.resolve.call(this)); + }); + }, + { 22: 22, 33: 33 }, + ], + 21: [ + function (t, i, n) { + i.exports = a; + var e, + s, + u, + r = t(22), + o = + ((((a.prototype = Object.create(r.prototype)).constructor = + a).className = 'Namespace'), + t(15)), + h = t(33), + f = t(23); + function c(t, i) { + if (!t || !t.length) return g; + for (var n = {}, r = 0; r < t.length; ++r) + n[t[r].name] = t[r].toJSON(i); + return n; + } + function a(t, i) { + r.call(this, t, i), (this.nested = g), (this.e = null); + } + function l(t) { + return (t.e = null), t; + } + (a.fromJSON = function (t, i) { + return new a(t, i.options).addJSON(i.nested); + }), + (a.arrayToJSON = c), + (a.isReservedId = function (t, i) { + if (t) + for (var n = 0; n < t.length; ++n) + if ('string' != typeof t[n] && t[n][0] <= i && t[n][1] > i) + return !0; + return !1; + }), + (a.isReservedName = function (t, i) { + if (t) + for (var n = 0; n < t.length; ++n) if (t[n] === i) return !0; + return !1; + }), + Object.defineProperty(a.prototype, 'nestedArray', { + get: function () { + return this.e || (this.e = h.toArray(this.nested)); + }, + }), + (a.prototype.toJSON = function (t) { + return h.toObject([ + 'options', + this.options, + 'nested', + c(this.nestedArray, t), + ]); + }), + (a.prototype.addJSON = function (t) { + if (t) + for (var i, n = Object.keys(t), r = 0; r < n.length; ++r) + (i = t[n[r]]), + this.add( + (i.fields !== g + ? e + : i.values !== g + ? u + : i.methods !== g + ? s + : i.id !== g + ? o + : a + ).fromJSON(n[r], i) + ); + return this; + }), + (a.prototype.get = function (t) { + return (this.nested && this.nested[t]) || null; + }), + (a.prototype.getEnum = function (t) { + if (this.nested && this.nested[t] instanceof u) + return this.nested[t].values; + throw Error('no such enum: ' + t); + }), + (a.prototype.add = function (t) { + if ( + !( + (t instanceof o && t.extend !== g) || + t instanceof e || + t instanceof f || + t instanceof u || + t instanceof s || + t instanceof a + ) + ) + throw TypeError('object must be a valid nested object'); + if (this.nested) { + var i = this.get(t.name); + if (i) { + if ( + !(i instanceof a && t instanceof a) || + i instanceof e || + i instanceof s + ) + throw Error("duplicate name '" + t.name + "' in " + this); + for (var n = i.nestedArray, r = 0; r < n.length; ++r) + t.add(n[r]); + this.remove(i), + this.nested || (this.nested = {}), + t.setOptions(i.options, !0); } - } - }, {15: 15, 22: 22, 33: 33}], 24: [function (t, i, n) { - i.exports = h; - var r, e = t(35), s = e.LongBits, u = e.utf8; - - function o(t, i) { - return RangeError("index out of range: " + t.pos + " + " + (i || 1) + " > " + t.len) - } - - function h(t) { - this.buf = t, this.pos = 0, this.len = t.length - } - - function f() { - return e.Buffer ? function (t) { - return (h.create = function (t) { - return e.Buffer.isBuffer(t) ? new r(t) : a(t) - })(t) - } : a - } - - var c, a = "undefined" != typeof Uint8Array ? function (t) { - if (t instanceof Uint8Array || Array.isArray(t)) return new h(t); - throw Error("illegal buffer") - } : function (t) { - if (Array.isArray(t)) return new h(t); - throw Error("illegal buffer") - }; + } else this.nested = {}; + return (this.nested[t.name] = t).onAdd(this), l(this); + }), + (a.prototype.remove = function (t) { + if (!(t instanceof r)) + throw TypeError('object must be a ReflectionObject'); + if (t.parent !== this) + throw Error(t + ' is not a member of ' + this); + return ( + delete this.nested[t.name], + Object.keys(this.nested).length || (this.nested = g), + t.onRemove(this), + l(this) + ); + }), + (a.prototype.define = function (t, i) { + if (h.isString(t)) t = t.split('.'); + else if (!Array.isArray(t)) throw TypeError('illegal path'); + if (t && t.length && '' === t[0]) + throw Error('path must be relative'); + for (var n = this; 0 < t.length; ) { + var r = t.shift(); + if (n.nested && n.nested[r]) { + if (!((n = n.nested[r]) instanceof a)) + throw Error('path conflicts with non-namespace objects'); + } else n.add((n = new a(r))); + } + return i && n.addJSON(i), n; + }), + (a.prototype.resolveAll = function () { + for (var t = this.nestedArray, i = 0; i < t.length; ) + t[i] instanceof a ? t[i++].resolveAll() : t[i++].resolve(); + return this.resolve(); + }), + (a.prototype.lookup = function (t, i, n) { + if ( + ('boolean' == typeof i + ? ((n = i), (i = g)) + : i && !Array.isArray(i) && (i = [i]), + h.isString(t) && t.length) + ) { + if ('.' === t) return this.root; + t = t.split('.'); + } else if (!t.length) return this; + if ('' === t[0]) return this.root.lookup(t.slice(1), i); + var r = this.get(t[0]); + if (r) { + if (1 === t.length) { + if (!i || ~i.indexOf(r.constructor)) return r; + } else if (r instanceof a && (r = r.lookup(t.slice(1), i, !0))) + return r; + } else + for (var e = 0; e < this.nestedArray.length; ++e) + if ( + this.e[e] instanceof a && + (r = this.e[e].lookup(t, i, !0)) + ) + return r; + return null === this.parent || n + ? null + : this.parent.lookup(t, i); + }), + (a.prototype.lookupType = function (t) { + var i = this.lookup(t, [e]); + if (i) return i; + throw Error('no such type: ' + t); + }), + (a.prototype.lookupEnum = function (t) { + var i = this.lookup(t, [u]); + if (i) return i; + throw Error("no such Enum '" + t + "' in " + this); + }), + (a.prototype.lookupTypeOrEnum = function (t) { + var i = this.lookup(t, [e, u]); + if (i) return i; + throw Error("no such Type or Enum '" + t + "' in " + this); + }), + (a.prototype.lookupService = function (t) { + var i = this.lookup(t, [s]); + if (i) return i; + throw Error("no such Service '" + t + "' in " + this); + }), + (a.r = function (t, i, n) { + (e = t), (s = i), (u = n); + }); + }, + { 15: 15, 22: 22, 23: 23, 33: 33 }, + ], + 22: [ + function (t, i, n) { + (i.exports = e).className = 'ReflectionObject'; + var r, + u = t(33); + function e(t, i) { + if (!u.isString(t)) throw TypeError('name must be a string'); + if (i && !u.isObject(i)) + throw TypeError('options must be an object'); + (this.options = i), + (this.parsedOptions = null), + (this.name = t), + (this.parent = null), + (this.resolved = !1), + (this.comment = null), + (this.filename = null); + } + Object.defineProperties(e.prototype, { + root: { + get: function () { + for (var t = this; null !== t.parent; ) t = t.parent; + return t; + }, + }, + fullName: { + get: function () { + for (var t = [this.name], i = this.parent; i; ) + t.unshift(i.name), (i = i.parent); + return t.join('.'); + }, + }, + }), + (e.prototype.toJSON = function () { + throw Error(); + }), + (e.prototype.onAdd = function (t) { + this.parent && this.parent !== t && this.parent.remove(this), + (this.parent = t), + (this.resolved = !1); + t = t.root; + t instanceof r && t.u(this); + }), + (e.prototype.onRemove = function (t) { + t = t.root; + t instanceof r && t.o(this), + (this.parent = null), + (this.resolved = !1); + }), + (e.prototype.resolve = function () { + return ( + this.resolved || + (this.root instanceof r && (this.resolved = !0)), + this + ); + }), + (e.prototype.getOption = function (t) { + return this.options ? this.options[t] : g; + }), + (e.prototype.setOption = function (t, i, n) { + return ( + (n && this.options && this.options[t] !== g) || + ((this.options || (this.options = {}))[t] = i), + this + ); + }), + (e.prototype.setParsedOption = function (i, t, n) { + this.parsedOptions || (this.parsedOptions = []); + var r, + e, + s = this.parsedOptions; + return ( + n + ? (r = s.find(function (t) { + return Object.prototype.hasOwnProperty.call(t, i); + })) + ? ((e = r[i]), u.setProperty(e, n, t)) + : (((r = {})[i] = u.setProperty({}, n, t)), s.push(r)) + : (((e = {})[i] = t), s.push(e)), + this + ); + }), + (e.prototype.setOptions = function (t, i) { + if (t) + for (var n = Object.keys(t), r = 0; r < n.length; ++r) + this.setOption(n[r], t[n[r]], i); + return this; + }), + (e.prototype.toString = function () { + var t = this.constructor.className, + i = this.fullName; + return i.length ? t + ' ' + i : t; + }), + (e.r = function (t) { + r = t; + }); + }, + { 33: 33 }, + ], + 23: [ + function (t, i, n) { + i.exports = u; + var e = t(22), + r = + ((((u.prototype = Object.create(e.prototype)).constructor = + u).className = 'OneOf'), + t(15)), + s = t(33); + function u(t, i, n, r) { + if ( + (Array.isArray(i) || ((n = i), (i = g)), + e.call(this, t, n), + i !== g && !Array.isArray(i)) + ) + throw TypeError('fieldNames must be an Array'); + (this.oneof = i || []), (this.fieldsArray = []), (this.comment = r); + } + function o(t) { + if (t.parent) + for (var i = 0; i < t.fieldsArray.length; ++i) + t.fieldsArray[i].parent || t.parent.add(t.fieldsArray[i]); + } + (u.fromJSON = function (t, i) { + return new u(t, i.oneof, i.options, i.comment); + }), + (u.prototype.toJSON = function (t) { + t = !!t && !!t.keepComments; + return s.toObject([ + 'options', + this.options, + 'oneof', + this.oneof, + 'comment', + t ? this.comment : g, + ]); + }), + (u.prototype.add = function (t) { + if (t instanceof r) + return ( + t.parent && t.parent !== this.parent && t.parent.remove(t), + this.oneof.push(t.name), + this.fieldsArray.push(t), + o((t.partOf = this)), + this + ); + throw TypeError('field must be a Field'); + }), + (u.prototype.remove = function (t) { + if (!(t instanceof r)) throw TypeError('field must be a Field'); + var i = this.fieldsArray.indexOf(t); + if (i < 0) throw Error(t + ' is not a member of ' + this); + return ( + this.fieldsArray.splice(i, 1), + -1 < (i = this.oneof.indexOf(t.name)) && + this.oneof.splice(i, 1), + (t.partOf = null), + this + ); + }), + (u.prototype.onAdd = function (t) { + e.prototype.onAdd.call(this, t); + for (var i = 0; i < this.oneof.length; ++i) { + var n = t.get(this.oneof[i]); + n && !n.partOf && (n.partOf = this).fieldsArray.push(n); + } + o(this); + }), + (u.prototype.onRemove = function (t) { + for (var i, n = 0; n < this.fieldsArray.length; ++n) + (i = this.fieldsArray[n]).parent && i.parent.remove(i); + e.prototype.onRemove.call(this, t); + }), + (u.d = function () { + for ( + var n = Array(arguments.length), t = 0; + t < arguments.length; - function l() { - var t = new s(0, 0), i = 0; - if (!(4 < this.len - this.pos)) { - for (; i < 3; ++i) { - if (this.pos >= this.len) throw o(this); - if (t.lo = (t.lo | (127 & this.buf[this.pos]) << 7 * i) >>> 0, this.buf[this.pos++] < 128) return t - } - return t.lo = (t.lo | (127 & this.buf[this.pos++]) << 7 * i) >>> 0, t - } - for (; i < 4; ++i) if (t.lo = (t.lo | (127 & this.buf[this.pos]) << 7 * i) >>> 0, this.buf[this.pos++] < 128) return t; - if (t.lo = (t.lo | (127 & this.buf[this.pos]) << 28) >>> 0, t.hi = (t.hi | (127 & this.buf[this.pos]) >> 4) >>> 0, this.buf[this.pos++] < 128) return t; - if (i = 0, 4 < this.len - this.pos) { - for (; i < 5; ++i) if (t.hi = (t.hi | (127 & this.buf[this.pos]) << 7 * i + 3) >>> 0, this.buf[this.pos++] < 128) return t - } else for (; i < 5; ++i) { - if (this.pos >= this.len) throw o(this); - if (t.hi = (t.hi | (127 & this.buf[this.pos]) << 7 * i + 3) >>> 0, this.buf[this.pos++] < 128) return t + ) + n[t] = arguments[t++]; + return function (t, i) { + s.decorateType(t.constructor).add(new u(i, n)), + Object.defineProperty(t, i, { + get: s.oneOfGetter(n), + set: s.oneOfSetter(n), + }); + }; + }); + }, + { 15: 15, 22: 22, 33: 33 }, + ], + 24: [ + function (t, i, n) { + i.exports = h; + var r, + e = t(35), + s = e.LongBits, + u = e.utf8; + function o(t, i) { + return RangeError( + 'index out of range: ' + t.pos + ' + ' + (i || 1) + ' > ' + t.len + ); + } + function h(t) { + (this.buf = t), (this.pos = 0), (this.len = t.length); + } + function f() { + return e.Buffer + ? function (t) { + return (h.create = function (t) { + return e.Buffer.isBuffer(t) ? new r(t) : a(t); + })(t); } - throw Error("invalid varint encoding") - } - - function d(t, i) { - return (t[i - 4] | t[i - 3] << 8 | t[i - 2] << 16 | t[i - 1] << 24) >>> 0 + : a; + } + var c, + a = + 'undefined' != typeof Uint8Array + ? function (t) { + if (t instanceof Uint8Array || Array.isArray(t)) + return new h(t); + throw Error('illegal buffer'); + } + : function (t) { + if (Array.isArray(t)) return new h(t); + throw Error('illegal buffer'); + }; + function l() { + var t = new s(0, 0), + i = 0; + if (!(4 < this.len - this.pos)) { + for (; i < 3; ++i) { + if (this.pos >= this.len) throw o(this); + if ( + ((t.lo = + (t.lo | ((127 & this.buf[this.pos]) << (7 * i))) >>> 0), + this.buf[this.pos++] < 128) + ) + return t; + } + return ( + (t.lo = + (t.lo | ((127 & this.buf[this.pos++]) << (7 * i))) >>> 0), + t + ); } - - function v() { - if (this.pos + 8 > this.len) throw o(this, 8); - return new s(d(this.buf, this.pos += 4), d(this.buf, this.pos += 4)) - } - - h.create = f(), h.prototype.h = e.Array.prototype.subarray || e.Array.prototype.slice, h.prototype.uint32 = (c = 4294967295, function () { - if (c = (127 & this.buf[this.pos]) >>> 0, this.buf[this.pos++] < 128 || (c = (c | (127 & this.buf[this.pos]) << 7) >>> 0, this.buf[this.pos++] < 128 || (c = (c | (127 & this.buf[this.pos]) << 14) >>> 0, this.buf[this.pos++] < 128 || (c = (c | (127 & this.buf[this.pos]) << 21) >>> 0, this.buf[this.pos++] < 128 || (c = (c | (15 & this.buf[this.pos]) << 28) >>> 0, this.buf[this.pos++] < 128 || !((this.pos += 5) > this.len)))))) return c; - throw this.pos = this.len, o(this, 10) - }), h.prototype.int32 = function () { - return 0 | this.uint32() - }, h.prototype.sint32 = function () { - var t = this.uint32(); - return t >>> 1 ^ -(1 & t) | 0 - }, h.prototype.bool = function () { - return 0 !== this.uint32() - }, h.prototype.fixed32 = function () { - if (this.pos + 4 > this.len) throw o(this, 4); - return d(this.buf, this.pos += 4) - }, h.prototype.sfixed32 = function () { - if (this.pos + 4 > this.len) throw o(this, 4); - return 0 | d(this.buf, this.pos += 4) - }, h.prototype.float = function () { - if (this.pos + 4 > this.len) throw o(this, 4); - var t = e.float.readFloatLE(this.buf, this.pos); - return this.pos += 4, t - }, h.prototype.double = function () { - if (this.pos + 8 > this.len) throw o(this, 4); - var t = e.float.readDoubleLE(this.buf, this.pos); - return this.pos += 8, t - }, h.prototype.bytes = function () { - var t = this.uint32(), i = this.pos, n = this.pos + t; - if (n > this.len) throw o(this, t); - return this.pos += t, Array.isArray(this.buf) ? this.buf.slice(i, n) : i === n ? new this.buf.constructor(0) : this.h.call(this.buf, i, n) - }, h.prototype.string = function () { - var t = this.bytes(); - return u.read(t, 0, t.length) - }, h.prototype.skip = function (t) { - if ("number" == typeof t) { - if (this.pos + t > this.len) throw o(this, t); - this.pos += t - } else do { - if (this.pos >= this.len) throw o(this) + for (; i < 4; ++i) + if ( + ((t.lo = + (t.lo | ((127 & this.buf[this.pos]) << (7 * i))) >>> 0), + this.buf[this.pos++] < 128) + ) + return t; + if ( + ((t.lo = (t.lo | ((127 & this.buf[this.pos]) << 28)) >>> 0), + (t.hi = (t.hi | ((127 & this.buf[this.pos]) >> 4)) >>> 0), + this.buf[this.pos++] < 128) + ) + return t; + if (((i = 0), 4 < this.len - this.pos)) { + for (; i < 5; ++i) + if ( + ((t.hi = + (t.hi | ((127 & this.buf[this.pos]) << (7 * i + 3))) >>> 0), + this.buf[this.pos++] < 128) + ) + return t; + } else + for (; i < 5; ++i) { + if (this.pos >= this.len) throw o(this); + if ( + ((t.hi = + (t.hi | ((127 & this.buf[this.pos]) << (7 * i + 3))) >>> 0), + this.buf[this.pos++] < 128) + ) + return t; + } + throw Error('invalid varint encoding'); + } + function d(t, i) { + return ( + (t[i - 4] | + (t[i - 3] << 8) | + (t[i - 2] << 16) | + (t[i - 1] << 24)) >>> + 0 + ); + } + function v() { + if (this.pos + 8 > this.len) throw o(this, 8); + return new s( + d(this.buf, (this.pos += 4)), + d(this.buf, (this.pos += 4)) + ); + } + (h.create = f()), + (h.prototype.h = + e.Array.prototype.subarray || e.Array.prototype.slice), + (h.prototype.uint32 = + ((c = 4294967295), + function () { + if ( + ((c = (127 & this.buf[this.pos]) >>> 0), + this.buf[this.pos++] < 128 || + ((c = (c | ((127 & this.buf[this.pos]) << 7)) >>> 0), + this.buf[this.pos++] < 128 || + ((c = (c | ((127 & this.buf[this.pos]) << 14)) >>> 0), + this.buf[this.pos++] < 128 || + ((c = (c | ((127 & this.buf[this.pos]) << 21)) >>> 0), + this.buf[this.pos++] < 128 || + ((c = (c | ((15 & this.buf[this.pos]) << 28)) >>> 0), + this.buf[this.pos++] < 128 || + !((this.pos += 5) > this.len)))))) + ) + return c; + throw ((this.pos = this.len), o(this, 10)); + })), + (h.prototype.int32 = function () { + return 0 | this.uint32(); + }), + (h.prototype.sint32 = function () { + var t = this.uint32(); + return ((t >>> 1) ^ -(1 & t)) | 0; + }), + (h.prototype.bool = function () { + return 0 !== this.uint32(); + }), + (h.prototype.fixed32 = function () { + if (this.pos + 4 > this.len) throw o(this, 4); + return d(this.buf, (this.pos += 4)); + }), + (h.prototype.sfixed32 = function () { + if (this.pos + 4 > this.len) throw o(this, 4); + return 0 | d(this.buf, (this.pos += 4)); + }), + (h.prototype.float = function () { + if (this.pos + 4 > this.len) throw o(this, 4); + var t = e.float.readFloatLE(this.buf, this.pos); + return (this.pos += 4), t; + }), + (h.prototype.double = function () { + if (this.pos + 8 > this.len) throw o(this, 4); + var t = e.float.readDoubleLE(this.buf, this.pos); + return (this.pos += 8), t; + }), + (h.prototype.bytes = function () { + var t = this.uint32(), + i = this.pos, + n = this.pos + t; + if (n > this.len) throw o(this, t); + return ( + (this.pos += t), + Array.isArray(this.buf) + ? this.buf.slice(i, n) + : i === n + ? new this.buf.constructor(0) + : this.h.call(this.buf, i, n) + ); + }), + (h.prototype.string = function () { + var t = this.bytes(); + return u.read(t, 0, t.length); + }), + (h.prototype.skip = function (t) { + if ('number' == typeof t) { + if (this.pos + t > this.len) throw o(this, t); + this.pos += t; + } else + do { + if (this.pos >= this.len) throw o(this); } while (128 & this.buf[this.pos++]); - return this - }, h.prototype.skipType = function (t) { - switch (t) { - case 0: - this.skip(); - break; - case 1: - this.skip(8); - break; - case 2: - this.skip(this.uint32()); - break; - case 3: - for (; 4 != (t = 7 & this.uint32());) this.skipType(t); - break; - case 5: - this.skip(4); - break; - default: - throw Error("invalid wire type " + t + " at offset " + this.pos) + return this; + }), + (h.prototype.skipType = function (t) { + switch (t) { + case 0: + this.skip(); + break; + case 1: + this.skip(8); + break; + case 2: + this.skip(this.uint32()); + break; + case 3: + for (; 4 != (t = 7 & this.uint32()); ) this.skipType(t); + break; + case 5: + this.skip(4); + break; + default: + throw Error( + 'invalid wire type ' + t + ' at offset ' + this.pos + ); + } + return this; + }), + (h.r = function (t) { + (r = t), (h.create = f()), r.r(); + var i = e.Long ? 'toLong' : 'toNumber'; + e.merge(h.prototype, { + int64: function () { + return l.call(this)[i](!1); + }, + uint64: function () { + return l.call(this)[i](!0); + }, + sint64: function () { + return l.call(this).zzDecode()[i](!1); + }, + fixed64: function () { + return v.call(this)[i](!0); + }, + sfixed64: function () { + return v.call(this)[i](!1); + }, + }); + }); + }, + { 35: 35 }, + ], + 25: [ + function (t, i, n) { + i.exports = s; + var r = t(24), + e = + (((s.prototype = Object.create(r.prototype)).constructor = s), + t(35)); + function s(t) { + r.call(this, t); + } + (s.r = function () { + e.Buffer && (s.prototype.h = e.Buffer.prototype.slice); + }), + (s.prototype.string = function () { + var t = this.uint32(); + return this.buf.utf8Slice + ? this.buf.utf8Slice( + this.pos, + (this.pos = Math.min(this.pos + t, this.len)) + ) + : this.buf.toString( + 'utf-8', + this.pos, + (this.pos = Math.min(this.pos + t, this.len)) + ); + }), + s.r(); + }, + { 24: 24, 35: 35 }, + ], + 26: [ + function (t, i, n) { + i.exports = h; + var r, + d, + v, + e = t(21), + s = + ((((h.prototype = Object.create(e.prototype)).constructor = + h).className = 'Root'), + t(15)), + u = t(14), + o = t(23), + b = t(33); + function h(t) { + e.call(this, '', t), (this.deferred = []), (this.files = []); + } + function p() {} + (h.fromJSON = function (t, i) { + return ( + (i = i || new h()), + t.options && i.setOptions(t.options), + i.addJSON(t.nested) + ); + }), + (h.prototype.resolvePath = b.path.resolve), + (h.prototype.fetch = b.fetch), + (h.prototype.load = function t(i, s, e) { + 'function' == typeof s && ((e = s), (s = g)); + var u = this; + if (!e) return b.asPromise(t, u, i, s); + var o = e === p; + function h(t, i) { + if (e) { + var n = e; + if (((e = null), o)) throw t; + n(t, i); } - return this - }, h.r = function (t) { - r = t, h.create = f(), r.r(); - var i = e.Long ? "toLong" : "toNumber"; - e.merge(h.prototype, { - int64: function () { - return l.call(this)[i](!1) - }, uint64: function () { - return l.call(this)[i](!0) - }, sint64: function () { - return l.call(this).zzDecode()[i](!1) - }, fixed64: function () { - return v.call(this)[i](!0) - }, sfixed64: function () { - return v.call(this)[i](!1) - } - }) - } - }, {35: 35}], 25: [function (t, i, n) { - i.exports = s; - var r = t(24), e = ((s.prototype = Object.create(r.prototype)).constructor = s, t(35)); - - function s(t) { - r.call(this, t) - } - - s.r = function () { - e.Buffer && (s.prototype.h = e.Buffer.prototype.slice) - }, s.prototype.string = function () { - var t = this.uint32(); - return this.buf.utf8Slice ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + t, this.len)) : this.buf.toString("utf-8", this.pos, this.pos = Math.min(this.pos + t, this.len)) - }, s.r() - }, {24: 24, 35: 35}], 26: [function (t, i, n) { - i.exports = h; - var r, d, v, e = t(21), - s = (((h.prototype = Object.create(e.prototype)).constructor = h).className = "Root", t(15)), u = t(14), - o = t(23), b = t(33); - - function h(t) { - e.call(this, "", t), this.deferred = [], this.files = [] - } - - function p() { - } - - h.fromJSON = function (t, i) { - return i = i || new h, t.options && i.setOptions(t.options), i.addJSON(t.nested) - }, h.prototype.resolvePath = b.path.resolve, h.prototype.fetch = b.fetch, h.prototype.load = function t(i, s, e) { - "function" == typeof s && (e = s, s = g); - var u = this; - if (!e) return b.asPromise(t, u, i, s); - var o = e === p; - - function h(t, i) { - if (e) { - var n = e; - if (e = null, o) throw t; - n(t, i) - } + } + function f(t) { + var i = t.lastIndexOf('google/protobuf/'); + if (-1 < i) { + t = t.substring(i); + if (t in v) return t; } - - function f(t) { - var i = t.lastIndexOf("google/protobuf/"); - if (-1 < i) { - t = t.substring(i); - if (t in v) return t - } - return null + return null; + } + function c(t, i) { + try { + if ( + (b.isString(i) && + '{' == (i[0] || '') && + (i = JSON.parse(i)), + b.isString(i)) + ) { + d.filename = t; + var n, + r = d(i, u, s), + e = 0; + if (r.imports) + for (; e < r.imports.length; ++e) + (n = + f(r.imports[e]) || u.resolvePath(t, r.imports[e])) && + a(n); + if (r.weakImports) + for (e = 0; e < r.weakImports.length; ++e) + (n = + f(r.weakImports[e]) || + u.resolvePath(t, r.weakImports[e])) && a(n, !0); + } else u.setOptions(i.options).addJSON(i.nested); + } catch (t) { + h(t); } - - function c(t, i) { + o || l || h(null, u); + } + function a(n, r) { + if (!~u.files.indexOf(n)) + if ((u.files.push(n), n in v)) + o + ? c(n, v[n]) + : (++l, + setTimeout(function () { + --l, c(n, v[n]); + })); + else if (o) { + var t; try { - if (b.isString(i) && "{" == (i[0] || "") && (i = JSON.parse(i)), b.isString(i)) { - d.filename = t; - var n, r = d(i, u, s), e = 0; - if (r.imports) for (; e < r.imports.length; ++e) (n = f(r.imports[e]) || u.resolvePath(t, r.imports[e])) && a(n); - if (r.weakImports) for (e = 0; e < r.weakImports.length; ++e) (n = f(r.weakImports[e]) || u.resolvePath(t, r.weakImports[e])) && a(n, !0) - } else u.setOptions(i.options).addJSON(i.nested) + t = b.fs.readFileSync(n).toString('utf8'); } catch (t) { - h(t) + return void (r || h(t)); } - o || l || h(null, u) - } - - function a(n, r) { - if (!~u.files.indexOf(n)) if (u.files.push(n), n in v) o ? c(n, v[n]) : (++l, setTimeout(function () { - --l, c(n, v[n]) - })); else if (o) { - var t; - try { - t = b.fs.readFileSync(n).toString("utf8") - } catch (t) { - return void (r || h(t)) - } - c(n, t) - } else ++l, u.fetch(n, function (t, i) { - --l, e && (t ? r ? l || h(null, u) : h(t) : c(n, i)) - }) - } - - var l = 0; - b.isString(i) && (i = [i]); - for (var n, r = 0; r < i.length; ++r) (n = u.resolvePath("", i[r])) && a(n); - return o ? u : (l || h(null, u), g) - }, h.prototype.loadSync = function (t, i) { - if (b.isNode) return this.load(t, i, p); - throw Error("not supported") - }, h.prototype.resolveAll = function () { - if (this.deferred.length) throw Error("unresolvable extensions: " + this.deferred.map(function (t) { - return "'extend " + t.extend + "' in " + t.parent.fullName - }).join(", ")); - return e.prototype.resolveAll.call(this) - }; - var f = /^[A-Z]/; - - function c(t, i) { - var n, r = i.parent.lookup(i.extend); - if (r) return ((n = new s(i.fullName, i.id, i.type, i.rule, g, i.options)).declaringField = i).extensionField = n, r.add(n), 1 - } - - h.prototype.u = function (t) { - if (t instanceof s) t.extend === g || t.extensionField || c(0, t) || this.deferred.push(t); else if (t instanceof u) f.test(t.name) && (t.parent[t.name] = t.values); else if (!(t instanceof o)) { - if (t instanceof r) for (var i = 0; i < this.deferred.length;) c(0, this.deferred[i]) ? this.deferred.splice(i, 1) : ++i; - for (var n = 0; n < t.nestedArray.length; ++n) this.u(t.e[n]); - f.test(t.name) && (t.parent[t.name] = t) - } - }, h.prototype.o = function (t) { - var i; - if (t instanceof s) t.extend !== g && (t.extensionField ? (t.extensionField.parent.remove(t.extensionField), t.extensionField = null) : -1 < (i = this.deferred.indexOf(t)) && this.deferred.splice(i, 1)); else if (t instanceof u) f.test(t.name) && delete t.parent[t.name]; else if (t instanceof e) { - for (var n = 0; n < t.nestedArray.length; ++n) this.o(t.e[n]); - f.test(t.name) && delete t.parent[t.name] - } - }, h.r = function (t, i, n) { - r = t, d = i, v = n - } - }, {14: 14, 15: 15, 21: 21, 23: 23, 33: 33}], 27: [function (t, i, n) { - i.exports = {} - }, {}], 28: [function (t, i, n) { - n.Service = t(29) - }, {29: 29}], 29: [function (t, i, n) { - i.exports = r; - var o = t(35); - - function r(t, i, n) { - if ("function" != typeof t) throw TypeError("rpcImpl must be a function"); - o.EventEmitter.call(this), this.rpcImpl = t, this.requestDelimited = !!i, this.responseDelimited = !!n + c(n, t); + } else + ++l, + u.fetch(n, function (t, i) { + --l, e && (t ? (r ? l || h(null, u) : h(t)) : c(n, i)); + }); + } + var l = 0; + b.isString(i) && (i = [i]); + for (var n, r = 0; r < i.length; ++r) + (n = u.resolvePath('', i[r])) && a(n); + return o ? u : (l || h(null, u), g); + }), + (h.prototype.loadSync = function (t, i) { + if (b.isNode) return this.load(t, i, p); + throw Error('not supported'); + }), + (h.prototype.resolveAll = function () { + if (this.deferred.length) + throw Error( + 'unresolvable extensions: ' + + this.deferred + .map(function (t) { + return ( + "'extend " + t.extend + "' in " + t.parent.fullName + ); + }) + .join(', ') + ); + return e.prototype.resolveAll.call(this); + }); + var f = /^[A-Z]/; + function c(t, i) { + var n, + r = i.parent.lookup(i.extend); + if (r) + return ( + (((n = new s( + i.fullName, + i.id, + i.type, + i.rule, + g, + i.options + )).declaringField = i).extensionField = n), + r.add(n), + 1 + ); + } + (h.prototype.u = function (t) { + if (t instanceof s) + t.extend === g || + t.extensionField || + c(0, t) || + this.deferred.push(t); + else if (t instanceof u) + f.test(t.name) && (t.parent[t.name] = t.values); + else if (!(t instanceof o)) { + if (t instanceof r) + for (var i = 0; i < this.deferred.length; ) + c(0, this.deferred[i]) ? this.deferred.splice(i, 1) : ++i; + for (var n = 0; n < t.nestedArray.length; ++n) this.u(t.e[n]); + f.test(t.name) && (t.parent[t.name] = t); } - - ((r.prototype = Object.create(o.EventEmitter.prototype)).constructor = r).prototype.rpcCall = function t(n, i, r, e, s) { - if (!e) throw TypeError("request must be specified"); - var u = this; - if (!s) return o.asPromise(t, u, n, i, r, e); - if (!u.rpcImpl) return setTimeout(function () { - s(Error("already ended")) - }, 0), g; - try { - return u.rpcImpl(n, i[u.requestDelimited ? "encodeDelimited" : "encode"](e).finish(), function (t, i) { - if (t) return u.emit("error", t, n), s(t); - if (null === i) return u.end(!0), g; - if (!(i instanceof r)) try { - i = r[u.responseDelimited ? "decodeDelimited" : "decode"](i) - } catch (t) { - return u.emit("error", t, n), s(t) - } - return u.emit("data", i, n), s(null, i) - }) - } catch (t) { - return u.emit("error", t, n), setTimeout(function () { - s(t) - }, 0), g + }), + (h.prototype.o = function (t) { + var i; + if (t instanceof s) + t.extend !== g && + (t.extensionField + ? (t.extensionField.parent.remove(t.extensionField), + (t.extensionField = null)) + : -1 < (i = this.deferred.indexOf(t)) && + this.deferred.splice(i, 1)); + else if (t instanceof u) + f.test(t.name) && delete t.parent[t.name]; + else if (t instanceof e) { + for (var n = 0; n < t.nestedArray.length; ++n) this.o(t.e[n]); + f.test(t.name) && delete t.parent[t.name]; + } + }), + (h.r = function (t, i, n) { + (r = t), (d = i), (v = n); + }); + }, + { 14: 14, 15: 15, 21: 21, 23: 23, 33: 33 }, + ], + 27: [ + function (t, i, n) { + i.exports = {}; + }, + {}, + ], + 28: [ + function (t, i, n) { + n.Service = t(29); + }, + { 29: 29 }, + ], + 29: [ + function (t, i, n) { + i.exports = r; + var o = t(35); + function r(t, i, n) { + if ('function' != typeof t) + throw TypeError('rpcImpl must be a function'); + o.EventEmitter.call(this), + (this.rpcImpl = t), + (this.requestDelimited = !!i), + (this.responseDelimited = !!n); + } + (((r.prototype = Object.create( + o.EventEmitter.prototype + )).constructor = r).prototype.rpcCall = function t(n, i, r, e, s) { + if (!e) throw TypeError('request must be specified'); + var u = this; + if (!s) return o.asPromise(t, u, n, i, r, e); + if (!u.rpcImpl) + return ( + setTimeout(function () { + s(Error('already ended')); + }, 0), + g + ); + try { + return u.rpcImpl( + n, + i[u.requestDelimited ? 'encodeDelimited' : 'encode']( + e + ).finish(), + function (t, i) { + if (t) return u.emit('error', t, n), s(t); + if (null === i) return u.end(!0), g; + if (!(i instanceof r)) + try { + i = + r[u.responseDelimited ? 'decodeDelimited' : 'decode']( + i + ); + } catch (t) { + return u.emit('error', t, n), s(t); + } + return u.emit('data', i, n), s(null, i); } - }, r.prototype.end = function (t) { - return this.rpcImpl && (t || this.rpcImpl(null, null, null), this.rpcImpl = null, this.emit("end").off()), this - } - }, {35: 35}], 30: [function (t, i, n) { - i.exports = u; - var r = t(21), - s = (((u.prototype = Object.create(r.prototype)).constructor = u).className = "Service", t(20)), - o = t(33), h = t(28); - - function u(t, i) { - r.call(this, t, i), this.methods = {}, this.f = null - } - - function e(t) { - return t.f = null, t + ); + } catch (t) { + return ( + u.emit('error', t, n), + setTimeout(function () { + s(t); + }, 0), + g + ); } - - u.fromJSON = function (t, i) { - var n = new u(t, i.options); - if (i.methods) for (var r = Object.keys(i.methods), e = 0; e < r.length; ++e) n.add(s.fromJSON(r[e], i.methods[r[e]])); - return i.nested && n.addJSON(i.nested), n.comment = i.comment, n - }, u.prototype.toJSON = function (t) { - var i = r.prototype.toJSON.call(this, t), n = !!t && !!t.keepComments; - return o.toObject(["options", i && i.options || g, "methods", r.arrayToJSON(this.methodsArray, t) || {}, "nested", i && i.nested || g, "comment", n ? this.comment : g]) - }, Object.defineProperty(u.prototype, "methodsArray", { - get: function () { - return this.f || (this.f = o.toArray(this.methods)) - } - }), u.prototype.get = function (t) { - return this.methods[t] || r.prototype.get.call(this, t) - }, u.prototype.resolveAll = function () { - for (var t = this.methodsArray, i = 0; i < t.length; ++i) t[i].resolve(); - return r.prototype.resolve.call(this) - }, u.prototype.add = function (t) { - if (this.get(t.name)) throw Error("duplicate name '" + t.name + "' in " + this); - return t instanceof s ? e((this.methods[t.name] = t).parent = this) : r.prototype.add.call(this, t) - }, u.prototype.remove = function (t) { - if (t instanceof s) { - if (this.methods[t.name] !== t) throw Error(t + " is not a member of " + this); - return delete this.methods[t.name], t.parent = null, e(this) + }), + (r.prototype.end = function (t) { + return ( + this.rpcImpl && + (t || this.rpcImpl(null, null, null), + (this.rpcImpl = null), + this.emit('end').off()), + this + ); + }); + }, + { 35: 35 }, + ], + 30: [ + function (t, i, n) { + i.exports = u; + var r = t(21), + s = + ((((u.prototype = Object.create(r.prototype)).constructor = + u).className = 'Service'), + t(20)), + o = t(33), + h = t(28); + function u(t, i) { + r.call(this, t, i), (this.methods = {}), (this.f = null); + } + function e(t) { + return (t.f = null), t; + } + (u.fromJSON = function (t, i) { + var n = new u(t, i.options); + if (i.methods) + for (var r = Object.keys(i.methods), e = 0; e < r.length; ++e) + n.add(s.fromJSON(r[e], i.methods[r[e]])); + return i.nested && n.addJSON(i.nested), (n.comment = i.comment), n; + }), + (u.prototype.toJSON = function (t) { + var i = r.prototype.toJSON.call(this, t), + n = !!t && !!t.keepComments; + return o.toObject([ + 'options', + (i && i.options) || g, + 'methods', + r.arrayToJSON(this.methodsArray, t) || {}, + 'nested', + (i && i.nested) || g, + 'comment', + n ? this.comment : g, + ]); + }), + Object.defineProperty(u.prototype, 'methodsArray', { + get: function () { + return this.f || (this.f = o.toArray(this.methods)); + }, + }), + (u.prototype.get = function (t) { + return this.methods[t] || r.prototype.get.call(this, t); + }), + (u.prototype.resolveAll = function () { + for (var t = this.methodsArray, i = 0; i < t.length; ++i) + t[i].resolve(); + return r.prototype.resolve.call(this); + }), + (u.prototype.add = function (t) { + if (this.get(t.name)) + throw Error("duplicate name '" + t.name + "' in " + this); + return t instanceof s + ? e(((this.methods[t.name] = t).parent = this)) + : r.prototype.add.call(this, t); + }), + (u.prototype.remove = function (t) { + if (t instanceof s) { + if (this.methods[t.name] !== t) + throw Error(t + ' is not a member of ' + this); + return delete this.methods[t.name], (t.parent = null), e(this); + } + return r.prototype.remove.call(this, t); + }), + (u.prototype.create = function (t, i, n) { + for ( + var r, e = new h.Service(t, i, n), s = 0; + s < this.methodsArray.length; + ++s + ) { + var u = o + .lcFirst((r = this.f[s]).resolve().name) + .replace(/[^$\w_]/g, ''); + e[u] = o.codegen( + ['r', 'c'], + o.isReserved(u) ? u + '_' : u + )('return this.rpcCall(m,q,s,r,c)')({ + m: r, + q: r.resolvedRequestType.ctor, + s: r.resolvedResponseType.ctor, + }); + } + return e; + }); + }, + { 20: 20, 21: 21, 28: 28, 33: 33 }, + ], + 31: [ + function (t, i, n) { + i.exports = w; + var u = t(21), + o = + ((((w.prototype = Object.create(u.prototype)).constructor = + w).className = 'Type'), + t(14)), + h = t(23), + f = t(15), + c = t(18), + a = t(30), + e = t(19), + s = t(24), + l = t(38), + d = t(33), + v = t(13), + b = t(12), + p = t(36), + y = t(11), + m = t(37); + function w(t, i) { + u.call(this, t, i), + (this.fields = {}), + (this.oneofs = g), + (this.extensions = g), + (this.reserved = g), + (this.group = g), + (this.c = null), + (this.i = null), + (this.a = null), + (this.l = null); + } + function r(t) { + return ( + (t.c = t.i = t.a = null), + delete t.encode, + delete t.decode, + delete t.verify, + t + ); + } + Object.defineProperties(w.prototype, { + fieldsById: { + get: function () { + if (!this.c) { + this.c = {}; + for ( + var t = Object.keys(this.fields), i = 0; + i < t.length; + ++i + ) { + var n = this.fields[t[i]], + r = n.id; + if (this.c[r]) + throw Error('duplicate id ' + r + ' in ' + this); + this.c[r] = n; + } } - return r.prototype.remove.call(this, t) - }, u.prototype.create = function (t, i, n) { - for (var r, e = new h.Service(t, i, n), s = 0; s < this.methodsArray.length; ++s) { - var u = o.lcFirst((r = this.f[s]).resolve().name).replace(/[^$\w_]/g, ""); - e[u] = o.codegen(["r", "c"], o.isReserved(u) ? u + "_" : u)("return this.rpcCall(m,q,s,r,c)")({ - m: r, - q: r.resolvedRequestType.ctor, - s: r.resolvedResponseType.ctor - }) + return this.c; + }, + }, + fieldsArray: { + get: function () { + return this.i || (this.i = d.toArray(this.fields)); + }, + }, + oneofsArray: { + get: function () { + return this.a || (this.a = d.toArray(this.oneofs)); + }, + }, + ctor: { + get: function () { + return this.l || (this.ctor = w.generateConstructor(this)()); + }, + set: function (t) { + for ( + var i = t.prototype, + n = + (i instanceof e || + (((t.prototype = new e()).constructor = t), + d.merge(t.prototype, i)), + (t.$type = t.prototype.$type = this), + d.merge(t, e, !0), + (this.l = t), + 0); + n < this.fieldsArray.length; + ++n + ) + this.i[n].resolve(); + for (var r = {}, n = 0; n < this.oneofsArray.length; ++n) + r[this.a[n].resolve().name] = { + get: d.oneOfGetter(this.a[n].oneof), + set: d.oneOfSetter(this.a[n].oneof), + }; + n && Object.defineProperties(t.prototype, r); + }, + }, + }), + (w.generateConstructor = function (t) { + for ( + var i, n = d.codegen(['p'], t.name), r = 0; + r < t.fieldsArray.length; + ++r + ) + (i = t.i[r]).map + ? n('this%s={}', d.safeProp(i.name)) + : i.repeated && n('this%s=[]', d.safeProp(i.name)); + return n( + 'if(p)for(var ks=Object.keys(p),i=0;i>> 0, this.hi = i >>> 0 - } - - var s = e.zero = new e(0, 0), u = (s.toNumber = function () { - return 0 - }, s.zzEncode = s.zzDecode = function () { - return this - }, s.length = function () { - return 1 - }, e.zeroHash = "\0\0\0\0\0\0\0\0", e.fromNumber = function (t) { + return i; + }), + /\\/g), + h = /"/g, + f = + ((s.isReserved = function (t) { + return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test( + t + ); + }), + (s.safeProp = function (t) { + return !/^[$\w_]+$/.test(t) || s.isReserved(t) + ? '["' + t.replace(o, '\\\\').replace(h, '\\"') + '"]' + : '.' + t; + }), + (s.ucFirst = function (t) { + return (t[0] || '').toUpperCase() + t.substring(1); + }), + /_([a-z])/g), + c = + ((s.camelCase = function (t) { + return ( + t.substring(0, 1) + + t.substring(1).replace(f, function (t, i) { + return i.toUpperCase(); + }) + ); + }), + (s.compareFieldsById = function (t, i) { + return t.id - i.id; + }), + (s.decorateType = function (t, i) { + return t.$type + ? (i && + t.$type.name !== i && + (s.decorateRoot.remove(t.$type), + (t.$type.name = i), + s.decorateRoot.add(t.$type)), + t.$type) + : ((i = new (r = r || n(31))(i || t.name)), + s.decorateRoot.add(i), + (i.ctor = t), + Object.defineProperty(t, '$type', { + value: i, + enumerable: !1, + }), + Object.defineProperty(t.prototype, '$type', { + value: i, + enumerable: !1, + }), + i); + }), + 0); + (s.decorateEnum = function (t) { + var i; + return ( + t.$type || + ((i = new (e = e || n(14))('Enum' + c++, t)), + s.decorateRoot.add(i), + Object.defineProperty(t, '$type', { value: i, enumerable: !1 }), + i) + ); + }), + (s.setProperty = function (t, i, n) { + if ('object' != typeof t) + throw TypeError('dst must be an object'); + if (i) + return (function t(i, n, r) { + var e = n.shift(); + return ( + '__proto__' !== e && + (0 < n.length + ? (i[e] = t(i[e] || {}, n, r)) + : ((n = i[e]) && (r = [].concat(n).concat(r)), + (i[e] = r))), + i + ); + })(t, (i = i.split('.')), n); + throw TypeError('path must be specified'); + }), + Object.defineProperty(s, 'decorateRoot', { + get: function () { + return u.decorated || (u.decorated = new (n(26))()); + }, + }); + }, + { 14: 14, 26: 26, 27: 27, 3: 3, 31: 31, 35: 35, 5: 5, 8: 8 }, + ], + 34: [ + function (t, i, n) { + i.exports = e; + var r = t(35); + function e(t, i) { + (this.lo = t >>> 0), (this.hi = i >>> 0); + } + var s = (e.zero = new e(0, 0)), + u = + ((s.toNumber = function () { + return 0; + }), + (s.zzEncode = s.zzDecode = + function () { + return this; + }), + (s.length = function () { + return 1; + }), + (e.zeroHash = '\0\0\0\0\0\0\0\0'), + (e.fromNumber = function (t) { var i, n; - return 0 === t ? s : (n = (t = (i = t < 0) ? -t : t) >>> 0, t = (t - n) / 4294967296 >>> 0, i && (t = ~t >>> 0, n = ~n >>> 0, 4294967295 < ++n && (n = 0, 4294967295 < ++t && (t = 0))), new e(n, t)) - }, e.from = function (t) { - if ("number" == typeof t) return e.fromNumber(t); + return 0 === t + ? s + : ((n = (t = (i = t < 0) ? -t : t) >>> 0), + (t = ((t - n) / 4294967296) >>> 0), + i && + ((t = ~t >>> 0), + (n = ~n >>> 0), + 4294967295 < ++n && + ((n = 0), 4294967295 < ++t && (t = 0))), + new e(n, t)); + }), + (e.from = function (t) { + if ('number' == typeof t) return e.fromNumber(t); if (r.isString(t)) { - if (!r.Long) return e.fromNumber(parseInt(t, 10)); - t = r.Long.fromString(t) + if (!r.Long) return e.fromNumber(parseInt(t, 10)); + t = r.Long.fromString(t); } - return t.low || t.high ? new e(t.low >>> 0, t.high >>> 0) : s - }, e.prototype.toNumber = function (t) { + return t.low || t.high ? new e(t.low >>> 0, t.high >>> 0) : s; + }), + (e.prototype.toNumber = function (t) { var i; - return !t && this.hi >>> 31 ? (t = 1 + ~this.lo >>> 0, i = ~this.hi >>> 0, -(t + 4294967296 * (i = t ? i : i + 1 >>> 0))) : this.lo + 4294967296 * this.hi - }, e.prototype.toLong = function (t) { - return r.Long ? new r.Long(0 | this.lo, 0 | this.hi, !!t) : { - low: 0 | this.lo, - high: 0 | this.hi, - unsigned: !!t - } - }, String.prototype.charCodeAt); - e.fromHash = function (t) { - return "\0\0\0\0\0\0\0\0" === t ? s : new e((u.call(t, 0) | u.call(t, 1) << 8 | u.call(t, 2) << 16 | u.call(t, 3) << 24) >>> 0, (u.call(t, 4) | u.call(t, 5) << 8 | u.call(t, 6) << 16 | u.call(t, 7) << 24) >>> 0) - }, e.prototype.toHash = function () { - return String.fromCharCode(255 & this.lo, this.lo >>> 8 & 255, this.lo >>> 16 & 255, this.lo >>> 24, 255 & this.hi, this.hi >>> 8 & 255, this.hi >>> 16 & 255, this.hi >>> 24) - }, e.prototype.zzEncode = function () { - var t = this.hi >> 31; - return this.hi = ((this.hi << 1 | this.lo >>> 31) ^ t) >>> 0, this.lo = (this.lo << 1 ^ t) >>> 0, this - }, e.prototype.zzDecode = function () { - var t = -(1 & this.lo); - return this.lo = ((this.lo >>> 1 | this.hi << 31) ^ t) >>> 0, this.hi = (this.hi >>> 1 ^ t) >>> 0, this - }, e.prototype.length = function () { - var t = this.lo, i = (this.lo >>> 28 | this.hi << 4) >>> 0, n = this.hi >>> 24; - return 0 == n ? 0 == i ? t < 16384 ? t < 128 ? 1 : 2 : t < 2097152 ? 3 : 4 : i < 16384 ? i < 128 ? 5 : 6 : i < 2097152 ? 7 : 8 : n < 128 ? 9 : 10 - } - }, {35: 35}], 35: [function (t, i, n) { - var r = n; - - function e(t, i, n) { - for (var r = Object.keys(i), e = 0; e < r.length; ++e) t[r[e]] !== g && n || (t[r[e]] = i[r[e]]); - return t - } - - function s(t) { - function n(t, i) { - if (!(this instanceof n)) return new n(t, i); - Object.defineProperty(this, "message", { - get: function () { - return t - } - }), Error.captureStackTrace ? Error.captureStackTrace(this, n) : Object.defineProperty(this, "stack", {value: Error().stack || ""}), i && e(this, i) - } - - return n.prototype = Object.create(Error.prototype, { - constructor: { - value: n, - writable: !0, - enumerable: !1, - configurable: !0 - }, name: { - get() { - return t - }, set: g, enumerable: !1, configurable: !0 - }, toString: { - value() { - return this.name + ": " + this.message - }, writable: !0, enumerable: !1, configurable: !0 - } - }), n + return !t && this.hi >>> 31 + ? ((t = (1 + ~this.lo) >>> 0), + (i = ~this.hi >>> 0), + -(t + 4294967296 * (i = t ? i : (i + 1) >>> 0))) + : this.lo + 4294967296 * this.hi; + }), + (e.prototype.toLong = function (t) { + return r.Long + ? new r.Long(0 | this.lo, 0 | this.hi, !!t) + : { low: 0 | this.lo, high: 0 | this.hi, unsigned: !!t }; + }), + String.prototype.charCodeAt); + (e.fromHash = function (t) { + return '\0\0\0\0\0\0\0\0' === t + ? s + : new e( + (u.call(t, 0) | + (u.call(t, 1) << 8) | + (u.call(t, 2) << 16) | + (u.call(t, 3) << 24)) >>> + 0, + (u.call(t, 4) | + (u.call(t, 5) << 8) | + (u.call(t, 6) << 16) | + (u.call(t, 7) << 24)) >>> + 0 + ); + }), + (e.prototype.toHash = function () { + return String.fromCharCode( + 255 & this.lo, + (this.lo >>> 8) & 255, + (this.lo >>> 16) & 255, + this.lo >>> 24, + 255 & this.hi, + (this.hi >>> 8) & 255, + (this.hi >>> 16) & 255, + this.hi >>> 24 + ); + }), + (e.prototype.zzEncode = function () { + var t = this.hi >> 31; + return ( + (this.hi = (((this.hi << 1) | (this.lo >>> 31)) ^ t) >>> 0), + (this.lo = ((this.lo << 1) ^ t) >>> 0), + this + ); + }), + (e.prototype.zzDecode = function () { + var t = -(1 & this.lo); + return ( + (this.lo = (((this.lo >>> 1) | (this.hi << 31)) ^ t) >>> 0), + (this.hi = ((this.hi >>> 1) ^ t) >>> 0), + this + ); + }), + (e.prototype.length = function () { + var t = this.lo, + i = ((this.lo >>> 28) | (this.hi << 4)) >>> 0, + n = this.hi >>> 24; + return 0 == n + ? 0 == i + ? t < 16384 + ? t < 128 + ? 1 + : 2 + : t < 2097152 + ? 3 + : 4 + : i < 16384 + ? i < 128 + ? 5 + : 6 + : i < 2097152 + ? 7 + : 8 + : n < 128 + ? 9 + : 10; + }); + }, + { 35: 35 }, + ], + 35: [ + function (t, i, n) { + var r = n; + function e(t, i, n) { + for (var r = Object.keys(i), e = 0; e < r.length; ++e) + (t[r[e]] !== g && n) || (t[r[e]] = i[r[e]]); + return t; + } + function s(t) { + function n(t, i) { + if (!(this instanceof n)) return new n(t, i); + Object.defineProperty(this, 'message', { + get: function () { + return t; + }, + }), + Error.captureStackTrace + ? Error.captureStackTrace(this, n) + : Object.defineProperty(this, 'stack', { + value: Error().stack || '', + }), + i && e(this, i); } - - r.asPromise = t(1), r.base64 = t(2), r.EventEmitter = t(4), r.float = t(6), r.inquire = t(7), r.utf8 = t(10), r.pool = t(9), r.LongBits = t(34), r.isNode = !!("undefined" != typeof global && global && global.process && global.process.versions && global.process.versions.node), r.global = r.isNode && global || "undefined" != typeof window && window || "undefined" != typeof self && self || this, r.emptyArray = Object.freeze ? Object.freeze([]) : [], r.emptyObject = Object.freeze ? Object.freeze({}) : {}, r.isInteger = Number.isInteger || function (t) { - return "number" == typeof t && isFinite(t) && Math.floor(t) === t - }, r.isString = function (t) { - return "string" == typeof t || t instanceof String - }, r.isObject = function (t) { - return t && "object" == typeof t - }, r.isset = r.isSet = function (t, i) { + return ( + (n.prototype = Object.create(Error.prototype, { + constructor: { + value: n, + writable: !0, + enumerable: !1, + configurable: !0, + }, + name: { + get() { + return t; + }, + set: g, + enumerable: !1, + configurable: !0, + }, + toString: { + value() { + return this.name + ': ' + this.message; + }, + writable: !0, + enumerable: !1, + configurable: !0, + }, + })), + n + ); + } + (r.asPromise = t(1)), + (r.base64 = t(2)), + (r.EventEmitter = t(4)), + (r.float = t(6)), + (r.inquire = t(7)), + (r.utf8 = t(10)), + (r.pool = t(9)), + (r.LongBits = t(34)), + (r.isNode = !!( + 'undefined' != typeof global && + global && + global.process && + global.process.versions && + global.process.versions.node + )), + (r.global = + (r.isNode && global) || + ('undefined' != typeof window && window) || + ('undefined' != typeof self && self) || + this), + (r.emptyArray = Object.freeze ? Object.freeze([]) : []), + (r.emptyObject = Object.freeze ? Object.freeze({}) : {}), + (r.isInteger = + Number.isInteger || + function (t) { + return ( + 'number' == typeof t && isFinite(t) && Math.floor(t) === t + ); + }), + (r.isString = function (t) { + return 'string' == typeof t || t instanceof String; + }), + (r.isObject = function (t) { + return t && 'object' == typeof t; + }), + (r.isset = r.isSet = + function (t, i) { var n = t[i]; - return null != n && t.hasOwnProperty(i) && ("object" != typeof n || 0 < (Array.isArray(n) ? n : Object.keys(n)).length) - }, r.Buffer = function () { - try { - var t = r.inquire("buffer").Buffer; - return t.prototype.utf8Write ? t : null - } catch (t) { - return null - } - }(), r.v = null, r.b = null, r.newBuffer = function (t) { - return "number" == typeof t ? r.Buffer ? r.b(t) : new r.Array(t) : r.Buffer ? r.v(t) : "undefined" == typeof Uint8Array ? t : new Uint8Array(t) - }, r.Array = "undefined" != typeof Uint8Array ? Uint8Array : Array, r.Long = r.global.dcodeIO && r.global.dcodeIO.Long || r.global.Long || r.inquire("long"), r.key2Re = /^true|false|0|1$/, r.key32Re = /^-?(?:0|[1-9][0-9]*)$/, r.key64Re = /^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/, r.longToHash = function (t) { - return t ? r.LongBits.from(t).toHash() : r.LongBits.zeroHash - }, r.longFromHash = function (t, i) { - t = r.LongBits.fromHash(t); - return r.Long ? r.Long.fromBits(t.lo, t.hi, i) : t.toNumber(!!i) - }, r.merge = e, r.lcFirst = function (t) { - return (t[0] || "").toLowerCase() + t.substring(1) - }, r.newError = s, r.ProtocolError = s("ProtocolError"), r.oneOfGetter = function (t) { - for (var n = {}, i = 0; i < t.length; ++i) n[t[i]] = 1; - return function () { - for (var t = Object.keys(this), i = t.length - 1; -1 < i; --i) if (1 === n[t[i]] && this[t[i]] !== g && null !== this[t[i]]) return t[i] - } - }, r.oneOfSetter = function (n) { - return function (t) { - for (var i = 0; i < n.length; ++i) n[i] !== t && delete this[n[i]] - } - }, r.toJSONOptions = {longs: String, enums: String, bytes: String, json: !0}, r.r = function () { - var n = r.Buffer; - n ? (r.v = n.from !== Uint8Array.from && n.from || function (t, i) { - return new n(t, i) - }, r.b = n.allocUnsafe || function (t) { - return new n(t) - }) : r.v = r.b = null - } - }, {1: 1, 10: 10, 2: 2, 34: 34, 4: 4, 6: 6, 7: 7, 9: 9}], 36: [function (t, i, n) { - i.exports = function (t) { - var i = h.codegen(["m"], t.name + "$verify")('if(typeof m!=="object"||m===null)')("return%j", "object expected"), - n = t.oneofsArray, r = {}; - n.length && i("var p={}"); - for (var e = 0; e < t.fieldsArray.length; ++e) { - var s, u = t.i[e].resolve(), o = "m" + h.safeProp(u.name); - u.optional && i("if(%s!=null&&m.hasOwnProperty(%j)){", o, u.name), u.map ? (i("if(!util.isObject(%s))", o)("return%j", f(u, "object"))("var k=Object.keys(%s)", o)("for(var i=0;i>> 7 | t.hi << 25) >>> 0, t.hi >>>= 7; - for (; 127 < t.lo;) i[n++] = 127 & t.lo | 128, t.lo = t.lo >>> 7; - i[n++] = t.lo - } - - function p(t, i, n) { - i[n] = 255 & t, i[n + 1] = t >>> 8 & 255, i[n + 2] = t >>> 16 & 255, i[n + 3] = t >>> 24 - } - - a.create = l(), a.alloc = function (t) { - return new e.Array(t) - }, e.Array !== Array && (a.alloc = e.pool(a.alloc, e.Array.prototype.subarray)), a.prototype.p = function (t, i, n) { - return this.tail = this.tail.next = new h(t, i, n), this.len += i, this - }, (v.prototype = Object.create(h.prototype)).fn = function (t, i, n) { - for (; 127 < t;) i[n++] = 127 & t | 128, t >>>= 7; - i[n] = t - }, a.prototype.uint32 = function (t) { - return this.len += (this.tail = this.tail.next = new v((t >>>= 0) < 128 ? 1 : t < 16384 ? 2 : t < 2097152 ? 3 : t < 268435456 ? 4 : 5, t)).len, this - }, a.prototype.int32 = function (t) { - return t < 0 ? this.p(b, 10, s.fromNumber(t)) : this.uint32(t) - }, a.prototype.sint32 = function (t) { - return this.uint32((t << 1 ^ t >> 31) >>> 0) - }, a.prototype.int64 = a.prototype.uint64 = function (t) { + : function () { + return new a(); + }; + } + function d(t, i, n) { + i[n] = 255 & t; + } + function v(t, i) { + (this.len = t), (this.next = g), (this.val = i); + } + function b(t, i, n) { + for (; t.hi; ) + (i[n++] = (127 & t.lo) | 128), + (t.lo = ((t.lo >>> 7) | (t.hi << 25)) >>> 0), + (t.hi >>>= 7); + for (; 127 < t.lo; ) + (i[n++] = (127 & t.lo) | 128), (t.lo = t.lo >>> 7); + i[n++] = t.lo; + } + function p(t, i, n) { + (i[n] = 255 & t), + (i[n + 1] = (t >>> 8) & 255), + (i[n + 2] = (t >>> 16) & 255), + (i[n + 3] = t >>> 24); + } + (a.create = l()), + (a.alloc = function (t) { + return new e.Array(t); + }), + e.Array !== Array && + (a.alloc = e.pool(a.alloc, e.Array.prototype.subarray)), + (a.prototype.p = function (t, i, n) { + return ( + (this.tail = this.tail.next = new h(t, i, n)), + (this.len += i), + this + ); + }), + ((v.prototype = Object.create(h.prototype)).fn = function ( + t, + i, + n + ) { + for (; 127 < t; ) (i[n++] = (127 & t) | 128), (t >>>= 7); + i[n] = t; + }), + (a.prototype.uint32 = function (t) { + return ( + (this.len += (this.tail = this.tail.next = + new v( + (t >>>= 0) < 128 + ? 1 + : t < 16384 + ? 2 + : t < 2097152 + ? 3 + : t < 268435456 + ? 4 + : 5, + t + )).len), + this + ); + }), + (a.prototype.int32 = function (t) { + return t < 0 ? this.p(b, 10, s.fromNumber(t)) : this.uint32(t); + }), + (a.prototype.sint32 = function (t) { + return this.uint32(((t << 1) ^ (t >> 31)) >>> 0); + }), + (a.prototype.int64 = a.prototype.uint64 = + function (t) { t = s.from(t); - return this.p(b, t.length(), t) - }, a.prototype.sint64 = function (t) { - t = s.from(t).zzEncode(); - return this.p(b, t.length(), t) - }, a.prototype.bool = function (t) { - return this.p(d, 1, t ? 1 : 0) - }, a.prototype.sfixed32 = a.prototype.fixed32 = function (t) { - return this.p(p, 4, t >>> 0) - }, a.prototype.sfixed64 = a.prototype.fixed64 = function (t) { + return this.p(b, t.length(), t); + }), + (a.prototype.sint64 = function (t) { + t = s.from(t).zzEncode(); + return this.p(b, t.length(), t); + }), + (a.prototype.bool = function (t) { + return this.p(d, 1, t ? 1 : 0); + }), + (a.prototype.sfixed32 = a.prototype.fixed32 = + function (t) { + return this.p(p, 4, t >>> 0); + }), + (a.prototype.sfixed64 = a.prototype.fixed64 = + function (t) { t = s.from(t); - return this.p(p, 4, t.lo).p(p, 4, t.hi) - }, a.prototype.float = function (t) { - return this.p(e.float.writeFloatLE, 4, t) - }, a.prototype.double = function (t) { - return this.p(e.float.writeDoubleLE, 8, t) - }; - var y = e.Array.prototype.set ? function (t, i, n) { - i.set(t, n) - } : function (t, i, n) { - for (var r = 0; r < t.length; ++r) i[n + r] = t[r] - }; - a.prototype.bytes = function (t) { - var i, n = t.length >>> 0; - return n ? (e.isString(t) && (i = a.alloc(n = u.length(t)), u.decode(t, i, 0), t = i), this.uint32(n).p(y, n, t)) : this.p(d, 1, 0) - }, a.prototype.string = function (t) { - var i = o.length(t); - return i ? this.uint32(i).p(o.write, i, t) : this.p(d, 1, 0) - }, a.prototype.fork = function () { - return this.states = new c(this), this.head = this.tail = new h(f, 0, 0), this.len = 0, this - }, a.prototype.reset = function () { - return this.states ? (this.head = this.states.head, this.tail = this.states.tail, this.len = this.states.len, this.states = this.states.next) : (this.head = this.tail = new h(f, 0, 0), this.len = 0), this - }, a.prototype.ldelim = function () { - var t = this.head, i = this.tail, n = this.len; - return this.reset().uint32(n), n && (this.tail.next = t.next, this.tail = i, this.len += n), this - }, a.prototype.finish = function () { - for (var t = this.head.next, i = this.constructor.alloc(this.len), n = 0; t;) t.fn(t.val, i, n), n += t.len, t = t.next; - return i - }, a.r = function (t) { - r = t, a.create = l(), r.r() - } - }, {35: 35}], 39: [function (t, i, n) { - i.exports = s; - var r = t(38), e = ((s.prototype = Object.create(r.prototype)).constructor = s, t(35)); - - function s() { - r.call(this) - } + return this.p(p, 4, t.lo).p(p, 4, t.hi); + }), + (a.prototype.float = function (t) { + return this.p(e.float.writeFloatLE, 4, t); + }), + (a.prototype.double = function (t) { + return this.p(e.float.writeDoubleLE, 8, t); + }); + var y = e.Array.prototype.set + ? function (t, i, n) { + i.set(t, n); + } + : function (t, i, n) { + for (var r = 0; r < t.length; ++r) i[n + r] = t[r]; + }; + (a.prototype.bytes = function (t) { + var i, + n = t.length >>> 0; + return n + ? (e.isString(t) && + ((i = a.alloc((n = u.length(t)))), + u.decode(t, i, 0), + (t = i)), + this.uint32(n).p(y, n, t)) + : this.p(d, 1, 0); + }), + (a.prototype.string = function (t) { + var i = o.length(t); + return i ? this.uint32(i).p(o.write, i, t) : this.p(d, 1, 0); + }), + (a.prototype.fork = function () { + return ( + (this.states = new c(this)), + (this.head = this.tail = new h(f, 0, 0)), + (this.len = 0), + this + ); + }), + (a.prototype.reset = function () { + return ( + this.states + ? ((this.head = this.states.head), + (this.tail = this.states.tail), + (this.len = this.states.len), + (this.states = this.states.next)) + : ((this.head = this.tail = new h(f, 0, 0)), (this.len = 0)), + this + ); + }), + (a.prototype.ldelim = function () { + var t = this.head, + i = this.tail, + n = this.len; + return ( + this.reset().uint32(n), + n && + ((this.tail.next = t.next), (this.tail = i), (this.len += n)), + this + ); + }), + (a.prototype.finish = function () { + for ( + var t = this.head.next, + i = this.constructor.alloc(this.len), + n = 0; + t; - function u(t, i, n) { - t.length < 40 ? e.utf8.write(t, i, n) : i.utf8Write ? i.utf8Write(t, n) : i.write(t, n) - } - - s.r = function () { - s.alloc = e.b, s.writeBytesBuffer = e.Buffer && e.Buffer.prototype instanceof Uint8Array && "set" === e.Buffer.prototype.set.name ? function (t, i, n) { - i.set(t, n) - } : function (t, i, n) { - if (t.copy) t.copy(i, n, 0, t.length); else for (var r = 0; r < t.length;) i[n++] = t[r++] - } - }, s.prototype.bytes = function (t) { - var i = (t = e.isString(t) ? e.v(t, "base64") : t).length >>> 0; - return this.uint32(i), i && this.p(s.writeBytesBuffer, i, t), this - }, s.prototype.string = function (t) { - var i = e.Buffer.byteLength(t); - return this.uint32(i), i && this.p(u, i, t), this - }, s.r() - }, {35: 35, 38: 38}] - }, {}, [16]) -}(); + ) + t.fn(t.val, i, n), (n += t.len), (t = t.next); + return i; + }), + (a.r = function (t) { + (r = t), (a.create = l()), r.r(); + }); + }, + { 35: 35 }, + ], + 39: [ + function (t, i, n) { + i.exports = s; + var r = t(38), + e = + (((s.prototype = Object.create(r.prototype)).constructor = s), + t(35)); + function s() { + r.call(this); + } + function u(t, i, n) { + t.length < 40 + ? e.utf8.write(t, i, n) + : i.utf8Write + ? i.utf8Write(t, n) + : i.write(t, n); + } + (s.r = function () { + (s.alloc = e.b), + (s.writeBytesBuffer = + e.Buffer && + e.Buffer.prototype instanceof Uint8Array && + 'set' === e.Buffer.prototype.set.name + ? function (t, i, n) { + i.set(t, n); + } + : function (t, i, n) { + if (t.copy) t.copy(i, n, 0, t.length); + else for (var r = 0; r < t.length; ) i[n++] = t[r++]; + }); + }), + (s.prototype.bytes = function (t) { + var i = (t = e.isString(t) ? e.v(t, 'base64') : t).length >>> 0; + return ( + this.uint32(i), i && this.p(s.writeBytesBuffer, i, t), this + ); + }), + (s.prototype.string = function (t) { + var i = e.Buffer.byteLength(t); + return this.uint32(i), i && this.p(u, i, t), this; + }), + s.r(); + }, + { 35: 35, 38: 38 }, + ], + }, + {}, + [16] + ); +})(); // https://github.com/emn178/js-md5 做了修改 let md5 = null; (function () { - 'use strict'; - var ERROR = 'input is invalid type'; - var WINDOW = typeof window === 'object'; - var root = WINDOW ? window : {}; - if (root.JS_MD5_NO_WINDOW) { - WINDOW = false - } - var WEB_WORKER = !WINDOW && typeof self === 'object'; - var NODE_JS = !root.JS_MD5_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node; + 'use strict'; + var ERROR = 'input is invalid type'; + var WINDOW = typeof window === 'object'; + var root = WINDOW ? window : {}; + if (root.JS_MD5_NO_WINDOW) { + WINDOW = false; + } + var WEB_WORKER = !WINDOW && typeof self === 'object'; + var NODE_JS = + !root.JS_MD5_NO_NODE_JS && + typeof process === 'object' && + process.versions && + process.versions.node; + if (NODE_JS) { + root = global; + } else if (WEB_WORKER) { + root = self; + } + var COMMON_JS = + !root.JS_MD5_NO_COMMON_JS && typeof module === 'object' && module.exports; + var AMD = typeof define === 'function' && define.amd; + var ARRAY_BUFFER = + !root.JS_MD5_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined'; + var HEX_CHARS = '0123456789abcdef'.split(''); + var EXTRA = [128, 32768, 8388608, -2147483648]; + var SHIFT = [0, 8, 16, 24]; + var OUTPUT_TYPES = [ + 'hex', + 'array', + 'digest', + 'buffer', + 'arrayBuffer', + 'base64', + ]; + var BASE64_ENCODE_CHAR = + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split( + '' + ); + var blocks = [], + buffer8; + if (ARRAY_BUFFER) { + var buffer = new ArrayBuffer(68); + buffer8 = new Uint8Array(buffer); + blocks = new Uint32Array(buffer); + } + if (root.JS_MD5_NO_NODE_JS || !Array.isArray) { + Array.isArray = function (obj) { + return Object.prototype.toString.call(obj) === '[object Array]'; + }; + } + if ( + ARRAY_BUFFER && + (root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView) + ) { + ArrayBuffer.isView = function (obj) { + return ( + typeof obj === 'object' && + obj.buffer && + obj.buffer.constructor === ArrayBuffer + ); + }; + } + var createOutputMethod = function (outputType) { + return function (message) { + return new Md5(true).update(message)[outputType](); + }; + }; + var createMethod = function () { + var method = createOutputMethod('hex'); if (NODE_JS) { - root = global - } else if (WEB_WORKER) { - root = self + method = nodeWrap(method); } - var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && typeof module === 'object' && module.exports; - var AMD = typeof define === 'function' && define.amd; - var ARRAY_BUFFER = !root.JS_MD5_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined'; - var HEX_CHARS = '0123456789abcdef'.split(''); - var EXTRA = [128, 32768, 8388608, -2147483648]; - var SHIFT = [0, 8, 16, 24]; - var OUTPUT_TYPES = ['hex', 'array', 'digest', 'buffer', 'arrayBuffer', 'base64']; - var BASE64_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); - var blocks = [], buffer8; - if (ARRAY_BUFFER) { - var buffer = new ArrayBuffer(68); - buffer8 = new Uint8Array(buffer); - blocks = new Uint32Array(buffer) + method.create = function () { + return new Md5(); + }; + method.update = function (message) { + return method.create().update(message); + }; + for (var i = 0; i < OUTPUT_TYPES.length; ++i) { + var type = OUTPUT_TYPES[i]; + method[type] = createOutputMethod(type); } - if (root.JS_MD5_NO_NODE_JS || !Array.isArray) { - Array.isArray = function (obj) { - return Object.prototype.toString.call(obj) === '[object Array]' + return method; + }; + var nodeWrap = function (method) { + var crypto = eval("require('crypto')"); + var Buffer = eval("require('buffer').Buffer"); + var nodeMethod = function (message) { + if (typeof message === 'string') { + return crypto.createHash('md5').update(message, 'utf8').digest('hex'); + } else { + if (message === null || message === undefined) { + throw ERROR; + } else if (message.constructor === ArrayBuffer) { + message = new Uint8Array(message); } + } + if ( + Array.isArray(message) || + ArrayBuffer.isView(message) || + message.constructor === Buffer + ) { + return crypto + .createHash('md5') + .update(new Buffer(message)) + .digest('hex'); + } else { + return method(message); + } + }; + return nodeMethod; + }; + function Md5(sharedMemory) { + if (sharedMemory) { + blocks[0] = + blocks[16] = + blocks[1] = + blocks[2] = + blocks[3] = + blocks[4] = + blocks[5] = + blocks[6] = + blocks[7] = + blocks[8] = + blocks[9] = + blocks[10] = + blocks[11] = + blocks[12] = + blocks[13] = + blocks[14] = + blocks[15] = + 0; + this.blocks = blocks; + this.buffer8 = buffer8; + } else { + if (ARRAY_BUFFER) { + var buffer = new ArrayBuffer(68); + this.buffer8 = new Uint8Array(buffer); + this.blocks = new Uint32Array(buffer); + } else { + this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + } } - if (ARRAY_BUFFER && (root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) { - ArrayBuffer.isView = function (obj) { - return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer - } + this.h0 = + this.h1 = + this.h2 = + this.h3 = + this.start = + this.bytes = + this.hBytes = + 0; + this.finalized = this.hashed = false; + this.first = true; + } + Md5.prototype.update = function (message) { + if (this.finalized) { + return; } - var createOutputMethod = function (outputType) { - return function (message) { - return new Md5(true).update(message)[outputType]() + var notString, + type = typeof message; + if (type !== 'string') { + if (type === 'object') { + if (message === null) { + throw ERROR; + } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) { + message = new Uint8Array(message); + } else if (!Array.isArray(message)) { + if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) { + throw ERROR; + } } - }; - var createMethod = function () { - var method = createOutputMethod('hex'); - if (NODE_JS) { - method = nodeWrap(method) - } - method.create = function () { - return new Md5() - }; - method.update = function (message) { - return method.create().update(message) - }; - for (var i = 0; i < OUTPUT_TYPES.length; ++i) { - var type = OUTPUT_TYPES[i]; - method[type] = createOutputMethod(type) + } else { + throw ERROR; + } + notString = true; + } + var code, + index = 0, + i, + length = message.length, + blocks = this.blocks; + var buffer8 = this.buffer8; + while (index < length) { + if (this.hashed) { + this.hashed = false; + blocks[0] = blocks[16]; + blocks[16] = + blocks[1] = + blocks[2] = + blocks[3] = + blocks[4] = + blocks[5] = + blocks[6] = + blocks[7] = + blocks[8] = + blocks[9] = + blocks[10] = + blocks[11] = + blocks[12] = + blocks[13] = + blocks[14] = + blocks[15] = + 0; + } + if (notString) { + if (ARRAY_BUFFER) { + for (i = this.start; index < length && i < 64; ++index) { + buffer8[i++] = message[index]; + } + } else { + for (i = this.start; index < length && i < 64; ++index) { + blocks[i >> 2] |= message[index] << SHIFT[i++ & 3]; + } } - return method - }; - var nodeWrap = function (method) { - var crypto = eval("require('crypto')"); - var Buffer = eval("require('buffer').Buffer"); - var nodeMethod = function (message) { - if (typeof message === 'string') { - return crypto.createHash('md5').update(message, 'utf8').digest('hex') + } else { + if (ARRAY_BUFFER) { + for (i = this.start; index < length && i < 64; ++index) { + code = message.charCodeAt(index); + if (code < 0x80) { + buffer8[i++] = code; + } else if (code < 0x800) { + buffer8[i++] = 0xc0 | (code >> 6); + buffer8[i++] = 0x80 | (code & 0x3f); + } else if (code < 0xd800 || code >= 0xe000) { + buffer8[i++] = 0xe0 | (code >> 12); + buffer8[i++] = 0x80 | ((code >> 6) & 0x3f); + buffer8[i++] = 0x80 | (code & 0x3f); } else { - if (message === null || message === undefined) { - throw ERROR; - } else if (message.constructor === ArrayBuffer) { - message = new Uint8Array(message) - } + code = + 0x10000 + + (((code & 0x3ff) << 10) | + (message.charCodeAt(++index) & 0x3ff)); + buffer8[i++] = 0xf0 | (code >> 18); + buffer8[i++] = 0x80 | ((code >> 12) & 0x3f); + buffer8[i++] = 0x80 | ((code >> 6) & 0x3f); + buffer8[i++] = 0x80 | (code & 0x3f); } - if (Array.isArray(message) || ArrayBuffer.isView(message) || message.constructor === Buffer) { - return crypto.createHash('md5').update(new Buffer(message)).digest('hex') - } else { - return method(message) - } - }; - return nodeMethod - }; - - function Md5(sharedMemory) { - if (sharedMemory) { - blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; - this.blocks = blocks; - this.buffer8 = buffer8 + } } else { - if (ARRAY_BUFFER) { - var buffer = new ArrayBuffer(68); - this.buffer8 = new Uint8Array(buffer); - this.blocks = new Uint32Array(buffer) + for (i = this.start; index < length && i < 64; ++index) { + code = message.charCodeAt(index); + if (code < 0x80) { + blocks[i >> 2] |= code << SHIFT[i++ & 3]; + } else if (code < 0x800) { + blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; + } else if (code < 0xd800 || code >= 0xe000) { + blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; } else { - this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + code = + 0x10000 + + (((code & 0x3ff) << 10) | + (message.charCodeAt(++index) & 0x3ff)); + blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= + (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; + blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; } + } } - this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = this.hBytes = 0; - this.finalized = this.hashed = false; - this.first = true + } + this.lastByteIndex = i; + this.bytes += i - this.start; + if (i >= 64) { + this.start = i - 64; + this.hash(); + this.hashed = true; + } else { + this.start = i; + } } - - Md5.prototype.update = function (message) { - if (this.finalized) { - return - } - var notString, type = typeof message; - if (type !== 'string') { - if (type === 'object') { - if (message === null) { - throw ERROR; - } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) { - message = new Uint8Array(message) - } else if (!Array.isArray(message)) { - if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) { - throw ERROR; - } - } - } else { - throw ERROR; - } - notString = true - } - var code, index = 0, i, length = message.length, blocks = this.blocks; - var buffer8 = this.buffer8; - while (index < length) { - if (this.hashed) { - this.hashed = false; - blocks[0] = blocks[16]; - blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0 - } - if (notString) { - if (ARRAY_BUFFER) { - for (i = this.start; index < length && i < 64; ++index) { - buffer8[i++] = message[index] - } - } else { - for (i = this.start; index < length && i < 64; ++index) { - blocks[i >> 2] |= message[index] << SHIFT[i++ & 3] - } - } - } else { - if (ARRAY_BUFFER) { - for (i = this.start; index < length && i < 64; ++index) { - code = message.charCodeAt(index); - if (code < 0x80) { - buffer8[i++] = code - } else if (code < 0x800) { - buffer8[i++] = 0xc0 | (code >> 6); - buffer8[i++] = 0x80 | (code & 0x3f) - } else if (code < 0xd800 || code >= 0xe000) { - buffer8[i++] = 0xe0 | (code >> 12); - buffer8[i++] = 0x80 | ((code >> 6) & 0x3f); - buffer8[i++] = 0x80 | (code & 0x3f) - } else { - code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff)); - buffer8[i++] = 0xf0 | (code >> 18); - buffer8[i++] = 0x80 | ((code >> 12) & 0x3f); - buffer8[i++] = 0x80 | ((code >> 6) & 0x3f); - buffer8[i++] = 0x80 | (code & 0x3f) - } - } - } else { - for (i = this.start; index < length && i < 64; ++index) { - code = message.charCodeAt(index); - if (code < 0x80) { - blocks[i >> 2] |= code << SHIFT[i++ & 3] - } else if (code < 0x800) { - blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3] - } else if (code < 0xd800 || code >= 0xe000) { - blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3] - } else { - code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff)); - blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; - blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3] - } - } - } - } - this.lastByteIndex = i; - this.bytes += i - this.start; - if (i >= 64) { - this.start = i - 64; - this.hash(); - this.hashed = true - } else { - this.start = i - } - } - if (this.bytes > 4294967295) { - this.hBytes += this.bytes / 4294967296 << 0; - this.bytes = this.bytes % 4294967296 - } - return this - }; - Md5.prototype.finalize = function () { - if (this.finalized) { - return - } - this.finalized = true; - var blocks = this.blocks, i = this.lastByteIndex; - blocks[i >> 2] |= EXTRA[i & 3]; - if (i >= 56) { - if (!this.hashed) { - this.hash() - } - blocks[0] = blocks[16]; - blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0 - } - blocks[14] = this.bytes << 3; - blocks[15] = this.hBytes << 3 | this.bytes >>> 29; - this.hash() - }; - Md5.prototype.hash = function () { - var a, b, c, d, bc, da, blocks = this.blocks; - if (this.first) { - a = blocks[0] - 680876937; - a = (a << 7 | a >>> 25) - 271733879 << 0; - d = (-1732584194 ^ a & 2004318071) + blocks[1] - 117830708; - d = (d << 12 | d >>> 20) + a << 0; - c = (-271733879 ^ (d & (a ^ -271733879))) + blocks[2] - 1126478375; - c = (c << 17 | c >>> 15) + d << 0; - b = (a ^ (c & (d ^ a))) + blocks[3] - 1316259209; - b = (b << 22 | b >>> 10) + c << 0 - } else { - a = this.h0; - b = this.h1; - c = this.h2; - d = this.h3; - a += (d ^ (b & (c ^ d))) + blocks[0] - 680876936; - a = (a << 7 | a >>> 25) + b << 0; - d += (c ^ (a & (b ^ c))) + blocks[1] - 389564586; - d = (d << 12 | d >>> 20) + a << 0; - c += (b ^ (d & (a ^ b))) + blocks[2] + 606105819; - c = (c << 17 | c >>> 15) + d << 0; - b += (a ^ (c & (d ^ a))) + blocks[3] - 1044525330; - b = (b << 22 | b >>> 10) + c << 0 - } - a += (d ^ (b & (c ^ d))) + blocks[4] - 176418897; - a = (a << 7 | a >>> 25) + b << 0; - d += (c ^ (a & (b ^ c))) + blocks[5] + 1200080426; - d = (d << 12 | d >>> 20) + a << 0; - c += (b ^ (d & (a ^ b))) + blocks[6] - 1473231341; - c = (c << 17 | c >>> 15) + d << 0; - b += (a ^ (c & (d ^ a))) + blocks[7] - 45705983; - b = (b << 22 | b >>> 10) + c << 0; - a += (d ^ (b & (c ^ d))) + blocks[8] + 1770035416; - a = (a << 7 | a >>> 25) + b << 0; - d += (c ^ (a & (b ^ c))) + blocks[9] - 1958414417; - d = (d << 12 | d >>> 20) + a << 0; - c += (b ^ (d & (a ^ b))) + blocks[10] - 42063; - c = (c << 17 | c >>> 15) + d << 0; - b += (a ^ (c & (d ^ a))) + blocks[11] - 1990404162; - b = (b << 22 | b >>> 10) + c << 0; - a += (d ^ (b & (c ^ d))) + blocks[12] + 1804603682; - a = (a << 7 | a >>> 25) + b << 0; - d += (c ^ (a & (b ^ c))) + blocks[13] - 40341101; - d = (d << 12 | d >>> 20) + a << 0; - c += (b ^ (d & (a ^ b))) + blocks[14] - 1502002290; - c = (c << 17 | c >>> 15) + d << 0; - b += (a ^ (c & (d ^ a))) + blocks[15] + 1236535329; - b = (b << 22 | b >>> 10) + c << 0; - a += (c ^ (d & (b ^ c))) + blocks[1] - 165796510; - a = (a << 5 | a >>> 27) + b << 0; - d += (b ^ (c & (a ^ b))) + blocks[6] - 1069501632; - d = (d << 9 | d >>> 23) + a << 0; - c += (a ^ (b & (d ^ a))) + blocks[11] + 643717713; - c = (c << 14 | c >>> 18) + d << 0; - b += (d ^ (a & (c ^ d))) + blocks[0] - 373897302; - b = (b << 20 | b >>> 12) + c << 0; - a += (c ^ (d & (b ^ c))) + blocks[5] - 701558691; - a = (a << 5 | a >>> 27) + b << 0; - d += (b ^ (c & (a ^ b))) + blocks[10] + 38016083; - d = (d << 9 | d >>> 23) + a << 0; - c += (a ^ (b & (d ^ a))) + blocks[15] - 660478335; - c = (c << 14 | c >>> 18) + d << 0; - b += (d ^ (a & (c ^ d))) + blocks[4] - 405537848; - b = (b << 20 | b >>> 12) + c << 0; - a += (c ^ (d & (b ^ c))) + blocks[9] + 568446438; - a = (a << 5 | a >>> 27) + b << 0; - d += (b ^ (c & (a ^ b))) + blocks[14] - 1019803690; - d = (d << 9 | d >>> 23) + a << 0; - c += (a ^ (b & (d ^ a))) + blocks[3] - 187363961; - c = (c << 14 | c >>> 18) + d << 0; - b += (d ^ (a & (c ^ d))) + blocks[8] + 1163531501; - b = (b << 20 | b >>> 12) + c << 0; - a += (c ^ (d & (b ^ c))) + blocks[13] - 1444681467; - a = (a << 5 | a >>> 27) + b << 0; - d += (b ^ (c & (a ^ b))) + blocks[2] - 51403784; - d = (d << 9 | d >>> 23) + a << 0; - c += (a ^ (b & (d ^ a))) + blocks[7] + 1735328473; - c = (c << 14 | c >>> 18) + d << 0; - b += (d ^ (a & (c ^ d))) + blocks[12] - 1926607734; - b = (b << 20 | b >>> 12) + c << 0; - bc = b ^ c; - a += (bc ^ d) + blocks[5] - 378558; - a = (a << 4 | a >>> 28) + b << 0; - d += (bc ^ a) + blocks[8] - 2022574463; - d = (d << 11 | d >>> 21) + a << 0; - da = d ^ a; - c += (da ^ b) + blocks[11] + 1839030562; - c = (c << 16 | c >>> 16) + d << 0; - b += (da ^ c) + blocks[14] - 35309556; - b = (b << 23 | b >>> 9) + c << 0; - bc = b ^ c; - a += (bc ^ d) + blocks[1] - 1530992060; - a = (a << 4 | a >>> 28) + b << 0; - d += (bc ^ a) + blocks[4] + 1272893353; - d = (d << 11 | d >>> 21) + a << 0; - da = d ^ a; - c += (da ^ b) + blocks[7] - 155497632; - c = (c << 16 | c >>> 16) + d << 0; - b += (da ^ c) + blocks[10] - 1094730640; - b = (b << 23 | b >>> 9) + c << 0; - bc = b ^ c; - a += (bc ^ d) + blocks[13] + 681279174; - a = (a << 4 | a >>> 28) + b << 0; - d += (bc ^ a) + blocks[0] - 358537222; - d = (d << 11 | d >>> 21) + a << 0; - da = d ^ a; - c += (da ^ b) + blocks[3] - 722521979; - c = (c << 16 | c >>> 16) + d << 0; - b += (da ^ c) + blocks[6] + 76029189; - b = (b << 23 | b >>> 9) + c << 0; - bc = b ^ c; - a += (bc ^ d) + blocks[9] - 640364487; - a = (a << 4 | a >>> 28) + b << 0; - d += (bc ^ a) + blocks[12] - 421815835; - d = (d << 11 | d >>> 21) + a << 0; - da = d ^ a; - c += (da ^ b) + blocks[15] + 530742520; - c = (c << 16 | c >>> 16) + d << 0; - b += (da ^ c) + blocks[2] - 995338651; - b = (b << 23 | b >>> 9) + c << 0; - a += (c ^ (b | ~d)) + blocks[0] - 198630844; - a = (a << 6 | a >>> 26) + b << 0; - d += (b ^ (a | ~c)) + blocks[7] + 1126891415; - d = (d << 10 | d >>> 22) + a << 0; - c += (a ^ (d | ~b)) + blocks[14] - 1416354905; - c = (c << 15 | c >>> 17) + d << 0; - b += (d ^ (c | ~a)) + blocks[5] - 57434055; - b = (b << 21 | b >>> 11) + c << 0; - a += (c ^ (b | ~d)) + blocks[12] + 1700485571; - a = (a << 6 | a >>> 26) + b << 0; - d += (b ^ (a | ~c)) + blocks[3] - 1894986606; - d = (d << 10 | d >>> 22) + a << 0; - c += (a ^ (d | ~b)) + blocks[10] - 1051523; - c = (c << 15 | c >>> 17) + d << 0; - b += (d ^ (c | ~a)) + blocks[1] - 2054922799; - b = (b << 21 | b >>> 11) + c << 0; - a += (c ^ (b | ~d)) + blocks[8] + 1873313359; - a = (a << 6 | a >>> 26) + b << 0; - d += (b ^ (a | ~c)) + blocks[15] - 30611744; - d = (d << 10 | d >>> 22) + a << 0; - c += (a ^ (d | ~b)) + blocks[6] - 1560198380; - c = (c << 15 | c >>> 17) + d << 0; - b += (d ^ (c | ~a)) + blocks[13] + 1309151649; - b = (b << 21 | b >>> 11) + c << 0; - a += (c ^ (b | ~d)) + blocks[4] - 145523070; - a = (a << 6 | a >>> 26) + b << 0; - d += (b ^ (a | ~c)) + blocks[11] - 1120210379; - d = (d << 10 | d >>> 22) + a << 0; - c += (a ^ (d | ~b)) + blocks[2] + 718787259; - c = (c << 15 | c >>> 17) + d << 0; - b += (d ^ (c | ~a)) + blocks[9] - 343485551; - b = (b << 21 | b >>> 11) + c << 0; - if (this.first) { - this.h0 = a + 1732584193 << 0; - this.h1 = b - 271733879 << 0; - this.h2 = c - 1732584194 << 0; - this.h3 = d + 271733878 << 0; - this.first = false - } else { - this.h0 = this.h0 + a << 0; - this.h1 = this.h1 + b << 0; - this.h2 = this.h2 + c << 0; - this.h3 = this.h3 + d << 0 - } - }; - Md5.prototype.hex = function () { - this.finalize(); - var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3; - return HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] + HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] + HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] + HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] + HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] + HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] + HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] + HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] + HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] + HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] + HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] + HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] + HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] + HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] + HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] + HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] - }; - Md5.prototype.toString = Md5.prototype.hex; - Md5.prototype.digest = function () { - this.finalize(); - var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3; - return [h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 24) & 0xFF, h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 24) & 0xFF, h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 24) & 0xFF, h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 24) & 0xFF] - }; - Md5.prototype.array = Md5.prototype.digest; - Md5.prototype.arrayBuffer = function () { - this.finalize(); - var buffer = new ArrayBuffer(16); - var blocks = new Uint32Array(buffer); - blocks[0] = this.h0; - blocks[1] = this.h1; - blocks[2] = this.h2; - blocks[3] = this.h3; - return buffer - }; - Md5.prototype.buffer = Md5.prototype.arrayBuffer; - Md5.prototype.base64 = function () { - var v1, v2, v3, base64Str = '', bytes = this.array(); - for (var i = 0; i < 15;) { - v1 = bytes[i++]; - v2 = bytes[i++]; - v3 = bytes[i++]; - base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + BASE64_ENCODE_CHAR[(v1 << 4 | v2 >>> 4) & 63] + BASE64_ENCODE_CHAR[(v2 << 2 | v3 >>> 6) & 63] + BASE64_ENCODE_CHAR[v3 & 63] - } - v1 = bytes[i]; - base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + BASE64_ENCODE_CHAR[(v1 << 4) & 63] + '=='; - return base64Str - }; - var exports = createMethod(); - if (COMMON_JS) { - module.exports = exports + if (this.bytes > 4294967295) { + this.hBytes += (this.bytes / 4294967296) << 0; + this.bytes = this.bytes % 4294967296; + } + return this; + }; + Md5.prototype.finalize = function () { + if (this.finalized) { + return; + } + this.finalized = true; + var blocks = this.blocks, + i = this.lastByteIndex; + blocks[i >> 2] |= EXTRA[i & 3]; + if (i >= 56) { + if (!this.hashed) { + this.hash(); + } + blocks[0] = blocks[16]; + blocks[16] = + blocks[1] = + blocks[2] = + blocks[3] = + blocks[4] = + blocks[5] = + blocks[6] = + blocks[7] = + blocks[8] = + blocks[9] = + blocks[10] = + blocks[11] = + blocks[12] = + blocks[13] = + blocks[14] = + blocks[15] = + 0; + } + blocks[14] = this.bytes << 3; + blocks[15] = (this.hBytes << 3) | (this.bytes >>> 29); + this.hash(); + }; + Md5.prototype.hash = function () { + var a, + b, + c, + d, + bc, + da, + blocks = this.blocks; + if (this.first) { + a = blocks[0] - 680876937; + a = (((a << 7) | (a >>> 25)) - 271733879) << 0; + d = (-1732584194 ^ (a & 2004318071)) + blocks[1] - 117830708; + d = (((d << 12) | (d >>> 20)) + a) << 0; + c = (-271733879 ^ (d & (a ^ -271733879))) + blocks[2] - 1126478375; + c = (((c << 17) | (c >>> 15)) + d) << 0; + b = (a ^ (c & (d ^ a))) + blocks[3] - 1316259209; + b = (((b << 22) | (b >>> 10)) + c) << 0; } else { - root.md5 = exports; - md5 = exports; - if (AMD) { - define(function () { - return exports - }) - } + a = this.h0; + b = this.h1; + c = this.h2; + d = this.h3; + a += (d ^ (b & (c ^ d))) + blocks[0] - 680876936; + a = (((a << 7) | (a >>> 25)) + b) << 0; + d += (c ^ (a & (b ^ c))) + blocks[1] - 389564586; + d = (((d << 12) | (d >>> 20)) + a) << 0; + c += (b ^ (d & (a ^ b))) + blocks[2] + 606105819; + c = (((c << 17) | (c >>> 15)) + d) << 0; + b += (a ^ (c & (d ^ a))) + blocks[3] - 1044525330; + b = (((b << 22) | (b >>> 10)) + c) << 0; + } + a += (d ^ (b & (c ^ d))) + blocks[4] - 176418897; + a = (((a << 7) | (a >>> 25)) + b) << 0; + d += (c ^ (a & (b ^ c))) + blocks[5] + 1200080426; + d = (((d << 12) | (d >>> 20)) + a) << 0; + c += (b ^ (d & (a ^ b))) + blocks[6] - 1473231341; + c = (((c << 17) | (c >>> 15)) + d) << 0; + b += (a ^ (c & (d ^ a))) + blocks[7] - 45705983; + b = (((b << 22) | (b >>> 10)) + c) << 0; + a += (d ^ (b & (c ^ d))) + blocks[8] + 1770035416; + a = (((a << 7) | (a >>> 25)) + b) << 0; + d += (c ^ (a & (b ^ c))) + blocks[9] - 1958414417; + d = (((d << 12) | (d >>> 20)) + a) << 0; + c += (b ^ (d & (a ^ b))) + blocks[10] - 42063; + c = (((c << 17) | (c >>> 15)) + d) << 0; + b += (a ^ (c & (d ^ a))) + blocks[11] - 1990404162; + b = (((b << 22) | (b >>> 10)) + c) << 0; + a += (d ^ (b & (c ^ d))) + blocks[12] + 1804603682; + a = (((a << 7) | (a >>> 25)) + b) << 0; + d += (c ^ (a & (b ^ c))) + blocks[13] - 40341101; + d = (((d << 12) | (d >>> 20)) + a) << 0; + c += (b ^ (d & (a ^ b))) + blocks[14] - 1502002290; + c = (((c << 17) | (c >>> 15)) + d) << 0; + b += (a ^ (c & (d ^ a))) + blocks[15] + 1236535329; + b = (((b << 22) | (b >>> 10)) + c) << 0; + a += (c ^ (d & (b ^ c))) + blocks[1] - 165796510; + a = (((a << 5) | (a >>> 27)) + b) << 0; + d += (b ^ (c & (a ^ b))) + blocks[6] - 1069501632; + d = (((d << 9) | (d >>> 23)) + a) << 0; + c += (a ^ (b & (d ^ a))) + blocks[11] + 643717713; + c = (((c << 14) | (c >>> 18)) + d) << 0; + b += (d ^ (a & (c ^ d))) + blocks[0] - 373897302; + b = (((b << 20) | (b >>> 12)) + c) << 0; + a += (c ^ (d & (b ^ c))) + blocks[5] - 701558691; + a = (((a << 5) | (a >>> 27)) + b) << 0; + d += (b ^ (c & (a ^ b))) + blocks[10] + 38016083; + d = (((d << 9) | (d >>> 23)) + a) << 0; + c += (a ^ (b & (d ^ a))) + blocks[15] - 660478335; + c = (((c << 14) | (c >>> 18)) + d) << 0; + b += (d ^ (a & (c ^ d))) + blocks[4] - 405537848; + b = (((b << 20) | (b >>> 12)) + c) << 0; + a += (c ^ (d & (b ^ c))) + blocks[9] + 568446438; + a = (((a << 5) | (a >>> 27)) + b) << 0; + d += (b ^ (c & (a ^ b))) + blocks[14] - 1019803690; + d = (((d << 9) | (d >>> 23)) + a) << 0; + c += (a ^ (b & (d ^ a))) + blocks[3] - 187363961; + c = (((c << 14) | (c >>> 18)) + d) << 0; + b += (d ^ (a & (c ^ d))) + blocks[8] + 1163531501; + b = (((b << 20) | (b >>> 12)) + c) << 0; + a += (c ^ (d & (b ^ c))) + blocks[13] - 1444681467; + a = (((a << 5) | (a >>> 27)) + b) << 0; + d += (b ^ (c & (a ^ b))) + blocks[2] - 51403784; + d = (((d << 9) | (d >>> 23)) + a) << 0; + c += (a ^ (b & (d ^ a))) + blocks[7] + 1735328473; + c = (((c << 14) | (c >>> 18)) + d) << 0; + b += (d ^ (a & (c ^ d))) + blocks[12] - 1926607734; + b = (((b << 20) | (b >>> 12)) + c) << 0; + bc = b ^ c; + a += (bc ^ d) + blocks[5] - 378558; + a = (((a << 4) | (a >>> 28)) + b) << 0; + d += (bc ^ a) + blocks[8] - 2022574463; + d = (((d << 11) | (d >>> 21)) + a) << 0; + da = d ^ a; + c += (da ^ b) + blocks[11] + 1839030562; + c = (((c << 16) | (c >>> 16)) + d) << 0; + b += (da ^ c) + blocks[14] - 35309556; + b = (((b << 23) | (b >>> 9)) + c) << 0; + bc = b ^ c; + a += (bc ^ d) + blocks[1] - 1530992060; + a = (((a << 4) | (a >>> 28)) + b) << 0; + d += (bc ^ a) + blocks[4] + 1272893353; + d = (((d << 11) | (d >>> 21)) + a) << 0; + da = d ^ a; + c += (da ^ b) + blocks[7] - 155497632; + c = (((c << 16) | (c >>> 16)) + d) << 0; + b += (da ^ c) + blocks[10] - 1094730640; + b = (((b << 23) | (b >>> 9)) + c) << 0; + bc = b ^ c; + a += (bc ^ d) + blocks[13] + 681279174; + a = (((a << 4) | (a >>> 28)) + b) << 0; + d += (bc ^ a) + blocks[0] - 358537222; + d = (((d << 11) | (d >>> 21)) + a) << 0; + da = d ^ a; + c += (da ^ b) + blocks[3] - 722521979; + c = (((c << 16) | (c >>> 16)) + d) << 0; + b += (da ^ c) + blocks[6] + 76029189; + b = (((b << 23) | (b >>> 9)) + c) << 0; + bc = b ^ c; + a += (bc ^ d) + blocks[9] - 640364487; + a = (((a << 4) | (a >>> 28)) + b) << 0; + d += (bc ^ a) + blocks[12] - 421815835; + d = (((d << 11) | (d >>> 21)) + a) << 0; + da = d ^ a; + c += (da ^ b) + blocks[15] + 530742520; + c = (((c << 16) | (c >>> 16)) + d) << 0; + b += (da ^ c) + blocks[2] - 995338651; + b = (((b << 23) | (b >>> 9)) + c) << 0; + a += (c ^ (b | ~d)) + blocks[0] - 198630844; + a = (((a << 6) | (a >>> 26)) + b) << 0; + d += (b ^ (a | ~c)) + blocks[7] + 1126891415; + d = (((d << 10) | (d >>> 22)) + a) << 0; + c += (a ^ (d | ~b)) + blocks[14] - 1416354905; + c = (((c << 15) | (c >>> 17)) + d) << 0; + b += (d ^ (c | ~a)) + blocks[5] - 57434055; + b = (((b << 21) | (b >>> 11)) + c) << 0; + a += (c ^ (b | ~d)) + blocks[12] + 1700485571; + a = (((a << 6) | (a >>> 26)) + b) << 0; + d += (b ^ (a | ~c)) + blocks[3] - 1894986606; + d = (((d << 10) | (d >>> 22)) + a) << 0; + c += (a ^ (d | ~b)) + blocks[10] - 1051523; + c = (((c << 15) | (c >>> 17)) + d) << 0; + b += (d ^ (c | ~a)) + blocks[1] - 2054922799; + b = (((b << 21) | (b >>> 11)) + c) << 0; + a += (c ^ (b | ~d)) + blocks[8] + 1873313359; + a = (((a << 6) | (a >>> 26)) + b) << 0; + d += (b ^ (a | ~c)) + blocks[15] - 30611744; + d = (((d << 10) | (d >>> 22)) + a) << 0; + c += (a ^ (d | ~b)) + blocks[6] - 1560198380; + c = (((c << 15) | (c >>> 17)) + d) << 0; + b += (d ^ (c | ~a)) + blocks[13] + 1309151649; + b = (((b << 21) | (b >>> 11)) + c) << 0; + a += (c ^ (b | ~d)) + blocks[4] - 145523070; + a = (((a << 6) | (a >>> 26)) + b) << 0; + d += (b ^ (a | ~c)) + blocks[11] - 1120210379; + d = (((d << 10) | (d >>> 22)) + a) << 0; + c += (a ^ (d | ~b)) + blocks[2] + 718787259; + c = (((c << 15) | (c >>> 17)) + d) << 0; + b += (d ^ (c | ~a)) + blocks[9] - 343485551; + b = (((b << 21) | (b >>> 11)) + c) << 0; + if (this.first) { + this.h0 = (a + 1732584193) << 0; + this.h1 = (b - 271733879) << 0; + this.h2 = (c - 1732584194) << 0; + this.h3 = (d + 271733878) << 0; + this.first = false; + } else { + this.h0 = (this.h0 + a) << 0; + this.h1 = (this.h1 + b) << 0; + this.h2 = (this.h2 + c) << 0; + this.h3 = (this.h3 + d) << 0; + } + }; + Md5.prototype.hex = function () { + this.finalize(); + var h0 = this.h0, + h1 = this.h1, + h2 = this.h2, + h3 = this.h3; + return ( + HEX_CHARS[(h0 >> 4) & 0x0f] + + HEX_CHARS[h0 & 0x0f] + + HEX_CHARS[(h0 >> 12) & 0x0f] + + HEX_CHARS[(h0 >> 8) & 0x0f] + + HEX_CHARS[(h0 >> 20) & 0x0f] + + HEX_CHARS[(h0 >> 16) & 0x0f] + + HEX_CHARS[(h0 >> 28) & 0x0f] + + HEX_CHARS[(h0 >> 24) & 0x0f] + + HEX_CHARS[(h1 >> 4) & 0x0f] + + HEX_CHARS[h1 & 0x0f] + + HEX_CHARS[(h1 >> 12) & 0x0f] + + HEX_CHARS[(h1 >> 8) & 0x0f] + + HEX_CHARS[(h1 >> 20) & 0x0f] + + HEX_CHARS[(h1 >> 16) & 0x0f] + + HEX_CHARS[(h1 >> 28) & 0x0f] + + HEX_CHARS[(h1 >> 24) & 0x0f] + + HEX_CHARS[(h2 >> 4) & 0x0f] + + HEX_CHARS[h2 & 0x0f] + + HEX_CHARS[(h2 >> 12) & 0x0f] + + HEX_CHARS[(h2 >> 8) & 0x0f] + + HEX_CHARS[(h2 >> 20) & 0x0f] + + HEX_CHARS[(h2 >> 16) & 0x0f] + + HEX_CHARS[(h2 >> 28) & 0x0f] + + HEX_CHARS[(h2 >> 24) & 0x0f] + + HEX_CHARS[(h3 >> 4) & 0x0f] + + HEX_CHARS[h3 & 0x0f] + + HEX_CHARS[(h3 >> 12) & 0x0f] + + HEX_CHARS[(h3 >> 8) & 0x0f] + + HEX_CHARS[(h3 >> 20) & 0x0f] + + HEX_CHARS[(h3 >> 16) & 0x0f] + + HEX_CHARS[(h3 >> 28) & 0x0f] + + HEX_CHARS[(h3 >> 24) & 0x0f] + ); + }; + Md5.prototype.toString = Md5.prototype.hex; + Md5.prototype.digest = function () { + this.finalize(); + var h0 = this.h0, + h1 = this.h1, + h2 = this.h2, + h3 = this.h3; + return [ + h0 & 0xff, + (h0 >> 8) & 0xff, + (h0 >> 16) & 0xff, + (h0 >> 24) & 0xff, + h1 & 0xff, + (h1 >> 8) & 0xff, + (h1 >> 16) & 0xff, + (h1 >> 24) & 0xff, + h2 & 0xff, + (h2 >> 8) & 0xff, + (h2 >> 16) & 0xff, + (h2 >> 24) & 0xff, + h3 & 0xff, + (h3 >> 8) & 0xff, + (h3 >> 16) & 0xff, + (h3 >> 24) & 0xff, + ]; + }; + Md5.prototype.array = Md5.prototype.digest; + Md5.prototype.arrayBuffer = function () { + this.finalize(); + var buffer = new ArrayBuffer(16); + var blocks = new Uint32Array(buffer); + blocks[0] = this.h0; + blocks[1] = this.h1; + blocks[2] = this.h2; + blocks[3] = this.h3; + return buffer; + }; + Md5.prototype.buffer = Md5.prototype.arrayBuffer; + Md5.prototype.base64 = function () { + var v1, + v2, + v3, + base64Str = '', + bytes = this.array(); + for (var i = 0; i < 15; ) { + v1 = bytes[i++]; + v2 = bytes[i++]; + v3 = bytes[i++]; + base64Str += + BASE64_ENCODE_CHAR[v1 >>> 2] + + BASE64_ENCODE_CHAR[((v1 << 4) | (v2 >>> 4)) & 63] + + BASE64_ENCODE_CHAR[((v2 << 2) | (v3 >>> 6)) & 63] + + BASE64_ENCODE_CHAR[v3 & 63]; + } + v1 = bytes[i]; + base64Str += + BASE64_ENCODE_CHAR[v1 >>> 2] + BASE64_ENCODE_CHAR[(v1 << 4) & 63] + '=='; + return base64Str; + }; + var exports = createMethod(); + if (COMMON_JS) { + module.exports = exports; + } else { + root.md5 = exports; + md5 = exports; + if (AMD) { + define(function () { + return exports; + }); } + } })(); const baiduMapJson = { - "options": {"java_package": "com.smile.baidumap.model"}, - "nested": { - "RepHead": { - "fields": { - "md5": {"type": "string", "id": 1}, - "range": {"type": "string", "id": 2}, - "messageHead": {"rule": "repeated", "type": "MessageHead", "id": 3} - } - }, - "MessageHead": { - "fields": { - "offset": {"type": "int32", "id": 1}, - "length": {"type": "int32", "id": 2}, - "name": {"type": "string", "id": 3} - } - }, - "Result": {"fields": {"type": {"type": "int32", "id": 1}, "error": {"type": "int32", "id": 2}}}, - "Ads": { - "fields": { - "option": {"type": "Option", "id": 1}, - "content": {"rule": "repeated", "type": "Content", "id": 2} - } - }, - "Option": { - "fields": { - "lasttime": {"type": "int32", "id": 1}, - "checkcode": {"type": "string", "id": 2}, - "errmsg": {"type": "string", "id": 3} - } - }, - "Content": { - "fields": { - "type": {"type": "string", "id": 1}, - "data": {"type": "string", "id": 2}, - "intval": {"type": "int32", "id": 3}, - "start": {"type": "int32", "id": 4}, - "end": {"type": "int32", "id": 5}, - "id": {"type": "int32", "id": 6}, - "updatetime": {"type": "int32", "id": 7}, - "order": {"type": "int32", "id": 8}, - "ctrlMode": {"type": "string", "id": 9}, - "dayTimes": {"type": "int32", "id": 10} - } - } - } + options: { java_package: 'com.smile.baidumap.model' }, + nested: { + RepHead: { + fields: { + md5: { type: 'string', id: 1 }, + range: { type: 'string', id: 2 }, + messageHead: { rule: 'repeated', type: 'MessageHead', id: 3 }, + }, + }, + MessageHead: { + fields: { + offset: { type: 'int32', id: 1 }, + length: { type: 'int32', id: 2 }, + name: { type: 'string', id: 3 }, + }, + }, + Result: { + fields: { + type: { type: 'int32', id: 1 }, + error: { type: 'int32', id: 2 }, + }, + }, + Ads: { + fields: { + option: { type: 'Option', id: 1 }, + content: { rule: 'repeated', type: 'Content', id: 2 }, + }, + }, + Option: { + fields: { + lasttime: { type: 'int32', id: 1 }, + checkcode: { type: 'string', id: 2 }, + errmsg: { type: 'string', id: 3 }, + }, + }, + Content: { + fields: { + type: { type: 'string', id: 1 }, + data: { type: 'string', id: 2 }, + intval: { type: 'int32', id: 3 }, + start: { type: 'int32', id: 4 }, + end: { type: 'int32', id: 5 }, + id: { type: 'int32', id: 6 }, + updatetime: { type: 'int32', id: 7 }, + order: { type: 'int32', id: 8 }, + ctrlMode: { type: 'string', id: 9 }, + dayTimes: { type: 'int32', id: 10 }, + }, + }, + }, }; const baiduMapRoot = protobuf.Root.fromJSON(baiduMapJson); -const isQuanX = typeof $task != "undefined"; -const binaryBody = isQuanX ? new Uint8Array($response.bodyBytes) : $response.body; +const isQuanX = typeof $task != 'undefined'; +const binaryBody = isQuanX + ? new Uint8Array($response.bodyBytes) + : $response.body; //console.log(`原始数据总长度:${binaryBody.byteLength}`); const beginOffset = 4; -const prefixLength = new DataView(binaryBody.slice(0, beginOffset).buffer).getInt32(0); +const prefixLength = new DataView( + binaryBody.slice(0, beginOffset).buffer +).getInt32(0); //console.log(`前缀给定的RepHead长度:${prefixLength}`); // 解析RepHead const repHeadData = binaryBody.slice(beginOffset, beginOffset + prefixLength); -const repHeadType = baiduMapRoot.lookupType("RepHead"); +const repHeadType = baiduMapRoot.lookupType('RepHead'); const repHeadMessage = repHeadType.decode(repHeadData); const originMd5 = repHeadMessage.md5; //console.log(`解析出的原始repHead长度:${repHeadType.encode(repHeadMessage).finish().length}`); @@ -2189,39 +4546,46 @@ let newResult = null; let newAds = null; const dataBeginOffset = beginOffset + prefixLength; for (let i = 0; i < repHeadMessage.messageHead.length; i++) { - let messageHead = repHeadMessage.messageHead[i]; - const name = messageHead.name; - const targetDataLength = messageHead.length; - //console.log("messageHead:" + JSON.stringify(messageHead)); + let messageHead = repHeadMessage.messageHead[i]; + const name = messageHead.name; + const targetDataLength = messageHead.length; + //console.log("messageHead:" + JSON.stringify(messageHead)); - // 开始解析 Result和Ads - const currentOffset = dataBeginOffset + messageHead.offset; - //console.log(`开始解析${name}数据,起始offset:${currentOffset},读取长度为:${targetDataLength}`); - const targetData = binaryBody.slice(currentOffset, currentOffset + targetDataLength); + // 开始解析 Result和Ads + const currentOffset = dataBeginOffset + messageHead.offset; + //console.log(`开始解析${name}数据,起始offset:${currentOffset},读取长度为:${targetDataLength}`); + const targetData = binaryBody.slice( + currentOffset, + currentOffset + targetDataLength + ); - if (name === 'Result') { - // Result我们无需修改 - const resultType = baiduMapRoot.lookupType(name); - const resultMessage = resultType.decode(targetData); - const parseMd5 = md5(binaryBody.slice(currentOffset)); - console.log(`解析出的md5和原始md5相同?:${parseMd5 === originMd5}`); - newResult = resultType.encode(resultMessage).finish(); - //console.log(`解析出的Result:${JSON.stringify(resultMessage)}`); - } else if (name === 'Ads') { - // 对Ads进行修改 - const adsType = baiduMapRoot.lookupType(name); - let adsMessage = adsType.decode(targetData); - for (let j = 0; j < adsMessage.content.length; j++) { - let item = adsMessage.content[j]; - if ((item.type.indexOf('_banner') !== -1 || item.type.indexOf('splash_screen1040') !== -1) - && item.hasOwnProperty('start') && item.hasOwnProperty('end')) { - adsMessage.content[j].start = 1648746061; - adsMessage.content[j].end = 1648832461; - console.log(`设置${item.type}时间为过期`); - } - } - newAds = adsType.encode(adsMessage).finish(); + if (name === 'Result') { + // Result我们无需修改 + const resultType = baiduMapRoot.lookupType(name); + const resultMessage = resultType.decode(targetData); + const parseMd5 = md5(binaryBody.slice(currentOffset)); + console.log(`解析出的md5和原始md5相同?:${parseMd5 === originMd5}`); + newResult = resultType.encode(resultMessage).finish(); + //console.log(`解析出的Result:${JSON.stringify(resultMessage)}`); + } else if (name === 'Ads') { + // 对Ads进行修改 + const adsType = baiduMapRoot.lookupType(name); + let adsMessage = adsType.decode(targetData); + for (let j = 0; j < adsMessage.content.length; j++) { + let item = adsMessage.content[j]; + if ( + (item.type.indexOf('_banner') !== -1 || + item.type.indexOf('splash_screen1040') !== -1) && + item.hasOwnProperty('start') && + item.hasOwnProperty('end') + ) { + adsMessage.content[j].start = 1648746061; + adsMessage.content[j].end = 1648832461; + console.log(`设置${item.type}时间为过期`); + } } + newAds = adsType.encode(adsMessage).finish(); + } } // 生成新RepHead @@ -2237,18 +4601,33 @@ repHeadMessage.messageHead[1].length = newAds.byteLength; const newRepHead = repHeadType.encode(repHeadMessage).finish(); - -const totalLength = beginOffset + newRepHead.byteLength + newResult.byteLength + newAds.byteLength; +const totalLength = + beginOffset + + newRepHead.byteLength + + newResult.byteLength + + newAds.byteLength; //console.log(`totalLength:${totalLength}`); let body = new Uint8Array(totalLength); -body.set(Uint8Array.from([(newRepHead.byteLength >> 24) & 0xff, (newRepHead.byteLength >> 16) & 0xff, (newRepHead.byteLength >> 8) & 0xff, newRepHead.byteLength & 0xff])); +body.set( + Uint8Array.from([ + (newRepHead.byteLength >> 24) & 0xff, + (newRepHead.byteLength >> 16) & 0xff, + (newRepHead.byteLength >> 8) & 0xff, + newRepHead.byteLength & 0xff, + ]) +); body.set(newRepHead, beginOffset); body.set(newResult, beginOffset + newRepHead.byteLength); body.set(newAds, beginOffset + newRepHead.byteLength + newResult.byteLength); console.log(`${body.byteLength}---${body.buffer.byteLength}`); if (isQuanX) { - $done({bodyBytes: body.buffer.slice(body.byteOffset, body.byteLength + body.byteOffset)}); + $done({ + bodyBytes: body.buffer.slice( + body.byteOffset, + body.byteLength + body.byteOffset + ), + }); } else { - $done({body}); -} \ No newline at end of file + $done({ body }); +} diff --git a/Scripts/AdBlock/Other/Quark.js b/Scripts/AdBlock/Other/Quark.js index 7ac86ac..a9a6a9b 100644 --- a/Scripts/AdBlock/Other/Quark.js +++ b/Scripts/AdBlock/Other/Quark.js @@ -1,317 +1,714 @@ var version_ = 'jsjiami.com.v7'; var _0x412946 = _0xd235; -(function (_0x1e6c3f, _0x1ff154, _0x15328a, _0x1d3fed, _0x33d093, _0x21ad39, _0xd358b) { - return _0x1e6c3f = _0x1e6c3f >> 0x4, _0x21ad39 = 'hs', _0xd358b = 'hs', function (_0x4ad759, _0x4be1a3, _0xa0871e, _0x5d549c, _0x1faed9) { - var _0x39032c = _0xd235; - _0x5d549c = 'tfi', _0x21ad39 = _0x5d549c + _0x21ad39, _0x1faed9 = 'up', _0xd358b += _0x1faed9, _0x21ad39 = _0xa0871e(_0x21ad39), _0xd358b = _0xa0871e(_0xd358b), _0xa0871e = 0x0; - var _0x28002c = _0x4ad759(); - while (!![] && --_0x1d3fed + _0x4be1a3) { - try { - _0x5d549c = -parseInt(_0x39032c(0x1aa, 'YMkj')) / 0x1 + -parseInt(_0x39032c(0x19c, '#)mD')) / 0x2 + -parseInt(_0x39032c(0x1b9, '8!ZH')) / 0x3 * (parseInt(_0x39032c(0x1db, 'l)%1')) / 0x4) + -parseInt(_0x39032c(0x175, ']89@')) / 0x5 * (-parseInt(_0x39032c(0x1d1, '2[Ac')) / 0x6) + parseInt(_0x39032c(0x18e, '8!ZH')) / 0x7 + -parseInt(_0x39032c(0x1b6, 'vViI')) / 0x8 * (parseInt(_0x39032c(0x1bf, 'J8iM')) / 0x9) + parseInt(_0x39032c(0x180, 't9W!')) / 0xa; - } catch (_0x405dab) { - _0x5d549c = _0xa0871e; - } finally { - _0x1faed9 = _0x28002c[_0x21ad39](); - if (_0x1e6c3f <= _0x1d3fed) _0xa0871e ? _0x33d093 ? _0x5d549c = _0x1faed9 : _0x33d093 = _0x1faed9 : _0xa0871e = _0x1faed9; else { - if (_0xa0871e == _0x33d093['replace'](/[YrxdfWVUFDyBIuHbKLhX=]/g, '')) { - if (_0x5d549c === _0x4be1a3) { - _0x28002c['un' + _0x21ad39](_0x1faed9); - break; - } - _0x28002c[_0xd358b](_0x1faed9); - } - } +((function ( + _0x1e6c3f, + _0x1ff154, + _0x15328a, + _0x1d3fed, + _0x33d093, + _0x21ad39, + _0xd358b +) { + return ( + (_0x1e6c3f = _0x1e6c3f >> 0x4), + (_0x21ad39 = 'hs'), + (_0xd358b = 'hs'), + (function (_0x4ad759, _0x4be1a3, _0xa0871e, _0x5d549c, _0x1faed9) { + var _0x39032c = _0xd235; + (_0x5d549c = 'tfi'), + (_0x21ad39 = _0x5d549c + _0x21ad39), + (_0x1faed9 = 'up'), + (_0xd358b += _0x1faed9), + (_0x21ad39 = _0xa0871e(_0x21ad39)), + (_0xd358b = _0xa0871e(_0xd358b)), + (_0xa0871e = 0x0); + var _0x28002c = _0x4ad759(); + while (!![] && --_0x1d3fed + _0x4be1a3) { + try { + _0x5d549c = + -parseInt(_0x39032c(0x1aa, 'YMkj')) / 0x1 + + -parseInt(_0x39032c(0x19c, '#)mD')) / 0x2 + + (-parseInt(_0x39032c(0x1b9, '8!ZH')) / 0x3) * + (parseInt(_0x39032c(0x1db, 'l)%1')) / 0x4) + + (-parseInt(_0x39032c(0x175, ']89@')) / 0x5) * + (-parseInt(_0x39032c(0x1d1, '2[Ac')) / 0x6) + + parseInt(_0x39032c(0x18e, '8!ZH')) / 0x7 + + (-parseInt(_0x39032c(0x1b6, 'vViI')) / 0x8) * + (parseInt(_0x39032c(0x1bf, 'J8iM')) / 0x9) + + parseInt(_0x39032c(0x180, 't9W!')) / 0xa; + } catch (_0x405dab) { + _0x5d549c = _0xa0871e; + } finally { + _0x1faed9 = _0x28002c[_0x21ad39](); + if (_0x1e6c3f <= _0x1d3fed) + _0xa0871e + ? _0x33d093 + ? (_0x5d549c = _0x1faed9) + : (_0x33d093 = _0x1faed9) + : (_0xa0871e = _0x1faed9); + else { + if ( + _0xa0871e == _0x33d093['replace'](/[YrxdfWVUFDyBIuHbKLhX=]/g, '') + ) { + if (_0x5d549c === _0x4be1a3) { + _0x28002c['un' + _0x21ad39](_0x1faed9); + break; + } + _0x28002c[_0xd358b](_0x1faed9); } + } } - }(_0x15328a, _0x1ff154, function (_0xe541ea, _0x194479, _0x37c1d2, _0x314e54, _0x4e79dc, _0x4d0927, _0x183b22) { - return _0x194479 = '\x73\x70\x6c\x69\x74', _0xe541ea = arguments[0x0], _0xe541ea = _0xe541ea[_0x194479](''), _0x37c1d2 = `\x72\x65\x76\x65\x72\x73\x65`, _0xe541ea = _0xe541ea[_0x37c1d2]('\x76'), _0x314e54 = `\x6a\x6f\x69\x6e`, (0x12823c, _0xe541ea[_0x314e54]('')); - }); -}(0xc10, 0x73cc9, _0x582a, 0xc3), _0x582a) && (version_ = _0x582a); + } + })( + _0x15328a, + _0x1ff154, + function ( + _0xe541ea, + _0x194479, + _0x37c1d2, + _0x314e54, + _0x4e79dc, + _0x4d0927, + _0x183b22 + ) { + return ( + (_0x194479 = '\x73\x70\x6c\x69\x74'), + (_0xe541ea = arguments[0x0]), + (_0xe541ea = _0xe541ea[_0x194479]('')), + (_0x37c1d2 = `\x72\x65\x76\x65\x72\x73\x65`), + (_0xe541ea = _0xe541ea[_0x37c1d2]('\x76')), + (_0x314e54 = `\x6a\x6f\x69\x6e`), + (0x12823c, _0xe541ea[_0x314e54]('')) + ); + } + ) + ); +})(0xc10, 0x73cc9, _0x582a, 0xc3), +_0x582a) && (version_ = _0x582a); (function () { - var _0x444e62 = _0xd235, _0x56675b = { - 'RwhUB': function (_0x591197, _0x5c04eb) { - return _0x591197 !== _0x5c04eb; - }, - 'jrrBm': function (_0x52de88, _0x2a0fea) { - return _0x52de88 === _0x2a0fea; - }, - 'IYPUM': _0x444e62(0x1bb, 'FS2M'), - 'ZpSWE': _0x444e62(0x183, 'l)%1'), - 'mlSrt': function (_0x4f9b8f, _0x447348) { - return _0x4f9b8f === _0x447348; - } - }, - _0x4be2a6 = _0x56675b[_0x444e62(0x185, 'Q!qj')](typeof window, _0x444e62(0x1b0, '2Rbe')) ? window : _0x56675b[_0x444e62(0x17c, 'Bm[$')](typeof process, _0x56675b['IYPUM']) && typeof require === _0x56675b[_0x444e62(0x17b, 'ENXP')] && _0x56675b[_0x444e62(0x1ca, 'ST6i')](typeof global, _0x56675b[_0x444e62(0x16d, '*KK6')]) ? global : this; - _0x4be2a6['setInterval'](_0x54e194, 0x7d0); -}()); - + var _0x444e62 = _0xd235, + _0x56675b = { + RwhUB: function (_0x591197, _0x5c04eb) { + return _0x591197 !== _0x5c04eb; + }, + jrrBm: function (_0x52de88, _0x2a0fea) { + return _0x52de88 === _0x2a0fea; + }, + IYPUM: _0x444e62(0x1bb, 'FS2M'), + ZpSWE: _0x444e62(0x183, 'l)%1'), + mlSrt: function (_0x4f9b8f, _0x447348) { + return _0x4f9b8f === _0x447348; + }, + }, + _0x4be2a6 = _0x56675b[_0x444e62(0x185, 'Q!qj')]( + typeof window, + _0x444e62(0x1b0, '2Rbe') + ) + ? window + : _0x56675b[_0x444e62(0x17c, 'Bm[$')]( + typeof process, + _0x56675b['IYPUM'] + ) && + typeof require === _0x56675b[_0x444e62(0x17b, 'ENXP')] && + _0x56675b[_0x444e62(0x1ca, 'ST6i')]( + typeof global, + _0x56675b[_0x444e62(0x16d, '*KK6')] + ) + ? global + : this; + _0x4be2a6['setInterval'](_0x54e194, 0x7d0); +})(); function _0xd235(_0x881cfd, _0x31c139) { - var _0x52bf78 = _0x582a(); - return _0xd235 = function (_0x24e5b1, _0x16a5e2) { - _0x24e5b1 = _0x24e5b1 - 0x16a; - var _0xb8c7de = _0x52bf78[_0x24e5b1]; - if (_0xd235['pTCaYN'] === undefined) { - var _0x54e194 = function (_0x54d668) { - var _0x42dd97 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/='; - var _0x3a2582 = '', _0x3eb3bd = ''; - for (var _0x31ec84 = 0x0, _0x2560e4, _0xa95f06, _0x4cf6be = 0x0; _0xa95f06 = _0x54d668['charAt'](_0x4cf6be++); ~_0xa95f06 && (_0x2560e4 = _0x31ec84 % 0x4 ? _0x2560e4 * 0x40 + _0xa95f06 : _0xa95f06, _0x31ec84++ % 0x4) ? _0x3a2582 += String['fromCharCode'](0xff & _0x2560e4 >> (-0x2 * _0x31ec84 & 0x6)) : 0x0) { - _0xa95f06 = _0x42dd97['indexOf'](_0xa95f06); - } - for (var _0x3234b8 = 0x0, _0x2746b8 = _0x3a2582['length']; _0x3234b8 < _0x2746b8; _0x3234b8++) { - _0x3eb3bd += '%' + ('00' + _0x3a2582['charCodeAt'](_0x3234b8)['toString'](0x10))['slice'](-0x2); - } - return decodeURIComponent(_0x3eb3bd); - }; - var _0xd235ef = function (_0x2653c6, _0x559a20) { - var _0x4463d7 = [], _0x1ab425 = 0x0, _0x3a076c, _0x4180ba = ''; - _0x2653c6 = _0x54e194(_0x2653c6); - var _0x5b0acc; - for (_0x5b0acc = 0x0; _0x5b0acc < 0x100; _0x5b0acc++) { - _0x4463d7[_0x5b0acc] = _0x5b0acc; - } - for (_0x5b0acc = 0x0; _0x5b0acc < 0x100; _0x5b0acc++) { - _0x1ab425 = (_0x1ab425 + _0x4463d7[_0x5b0acc] + _0x559a20['charCodeAt'](_0x5b0acc % _0x559a20['length'])) % 0x100, _0x3a076c = _0x4463d7[_0x5b0acc], _0x4463d7[_0x5b0acc] = _0x4463d7[_0x1ab425], _0x4463d7[_0x1ab425] = _0x3a076c; - } - _0x5b0acc = 0x0, _0x1ab425 = 0x0; - for (var _0x2085e7 = 0x0; _0x2085e7 < _0x2653c6['length']; _0x2085e7++) { - _0x5b0acc = (_0x5b0acc + 0x1) % 0x100, _0x1ab425 = (_0x1ab425 + _0x4463d7[_0x5b0acc]) % 0x100, _0x3a076c = _0x4463d7[_0x5b0acc], _0x4463d7[_0x5b0acc] = _0x4463d7[_0x1ab425], _0x4463d7[_0x1ab425] = _0x3a076c, _0x4180ba += String['fromCharCode'](_0x2653c6['charCodeAt'](_0x2085e7) ^ _0x4463d7[(_0x4463d7[_0x5b0acc] + _0x4463d7[_0x1ab425]) % 0x100]); - } - return _0x4180ba; - }; - _0xd235['MRVxhq'] = _0xd235ef, _0x881cfd = arguments, _0xd235['pTCaYN'] = !![]; - } - var _0x1e7890 = _0x52bf78[0x0], _0x2da6d7 = _0x24e5b1 + _0x1e7890, _0x582a8f = _0x881cfd[_0x2da6d7]; - return !_0x582a8f ? (_0xd235['cKenCw'] === undefined && (_0xd235['cKenCw'] = !![]), _0xb8c7de = _0xd235['MRVxhq'](_0xb8c7de, _0x16a5e2), _0x881cfd[_0x2da6d7] = _0xb8c7de) : _0xb8c7de = _0x582a8f, _0xb8c7de; - }, _0xd235(_0x881cfd, _0x31c139); + var _0x52bf78 = _0x582a(); + return ( + (_0xd235 = function (_0x24e5b1, _0x16a5e2) { + _0x24e5b1 = _0x24e5b1 - 0x16a; + var _0xb8c7de = _0x52bf78[_0x24e5b1]; + if (_0xd235['pTCaYN'] === undefined) { + var _0x54e194 = function (_0x54d668) { + var _0x42dd97 = + 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/='; + var _0x3a2582 = '', + _0x3eb3bd = ''; + for ( + var _0x31ec84 = 0x0, _0x2560e4, _0xa95f06, _0x4cf6be = 0x0; + (_0xa95f06 = _0x54d668['charAt'](_0x4cf6be++)); + ~_0xa95f06 && + ((_0x2560e4 = + _0x31ec84 % 0x4 ? _0x2560e4 * 0x40 + _0xa95f06 : _0xa95f06), + _0x31ec84++ % 0x4) + ? (_0x3a2582 += String['fromCharCode']( + 0xff & (_0x2560e4 >> ((-0x2 * _0x31ec84) & 0x6)) + )) + : 0x0 + ) { + _0xa95f06 = _0x42dd97['indexOf'](_0xa95f06); + } + for ( + var _0x3234b8 = 0x0, _0x2746b8 = _0x3a2582['length']; + _0x3234b8 < _0x2746b8; + _0x3234b8++ + ) { + _0x3eb3bd += + '%' + + ('00' + _0x3a2582['charCodeAt'](_0x3234b8)['toString'](0x10))[ + 'slice' + ](-0x2); + } + return decodeURIComponent(_0x3eb3bd); + }; + var _0xd235ef = function (_0x2653c6, _0x559a20) { + var _0x4463d7 = [], + _0x1ab425 = 0x0, + _0x3a076c, + _0x4180ba = ''; + _0x2653c6 = _0x54e194(_0x2653c6); + var _0x5b0acc; + for (_0x5b0acc = 0x0; _0x5b0acc < 0x100; _0x5b0acc++) { + _0x4463d7[_0x5b0acc] = _0x5b0acc; + } + for (_0x5b0acc = 0x0; _0x5b0acc < 0x100; _0x5b0acc++) { + (_0x1ab425 = + (_0x1ab425 + + _0x4463d7[_0x5b0acc] + + _0x559a20['charCodeAt'](_0x5b0acc % _0x559a20['length'])) % + 0x100), + (_0x3a076c = _0x4463d7[_0x5b0acc]), + (_0x4463d7[_0x5b0acc] = _0x4463d7[_0x1ab425]), + (_0x4463d7[_0x1ab425] = _0x3a076c); + } + (_0x5b0acc = 0x0), (_0x1ab425 = 0x0); + for ( + var _0x2085e7 = 0x0; + _0x2085e7 < _0x2653c6['length']; + _0x2085e7++ + ) { + (_0x5b0acc = (_0x5b0acc + 0x1) % 0x100), + (_0x1ab425 = (_0x1ab425 + _0x4463d7[_0x5b0acc]) % 0x100), + (_0x3a076c = _0x4463d7[_0x5b0acc]), + (_0x4463d7[_0x5b0acc] = _0x4463d7[_0x1ab425]), + (_0x4463d7[_0x1ab425] = _0x3a076c), + (_0x4180ba += String['fromCharCode']( + _0x2653c6['charCodeAt'](_0x2085e7) ^ + _0x4463d7[ + (_0x4463d7[_0x5b0acc] + _0x4463d7[_0x1ab425]) % 0x100 + ] + )); + } + return _0x4180ba; + }; + (_0xd235['MRVxhq'] = _0xd235ef), + (_0x881cfd = arguments), + (_0xd235['pTCaYN'] = !![]); + } + var _0x1e7890 = _0x52bf78[0x0], + _0x2da6d7 = _0x24e5b1 + _0x1e7890, + _0x582a8f = _0x881cfd[_0x2da6d7]; + return ( + !_0x582a8f + ? (_0xd235['cKenCw'] === undefined && (_0xd235['cKenCw'] = !![]), + (_0xb8c7de = _0xd235['MRVxhq'](_0xb8c7de, _0x16a5e2)), + (_0x881cfd[_0x2da6d7] = _0xb8c7de)) + : (_0xb8c7de = _0x582a8f), + _0xb8c7de + ); + }), + _0xd235(_0x881cfd, _0x31c139) + ); } - var _0x1e7890 = (function () { - var _0x3a5e73 = { - 'sarsz': function (_0x23875d, _0x36e8a8) { - return _0x23875d !== _0x36e8a8; - }, 'vtLPT': 'cGCJn' - }, _0x283469 = !![]; - return function (_0x1e081b, _0x4c38df) { - var _0x8a912c = _0xd235; - if (_0x3a5e73[_0x8a912c(0x1ba, 'vnO)')]('cGCJn', _0x3a5e73[_0x8a912c(0x1d9, 'v7R8')])) _0x142377[_0x8a912c(0x186, 'l)%1')](_0x8a912c(0x1ab, 'S@V6')) && delete _0x12b5d2[_0x8a912c(0x1a0, 'l)%1')][_0x51d64d]; else { - var _0x1c80af = _0x283469 ? function () { - var _0x1fec6b = _0x8a912c; - if (_0x4c38df) { - var _0x4e74ec = _0x4c38df[_0x1fec6b(0x1cc, 'zXvO')](_0x1e081b, arguments); - return _0x4c38df = null, _0x4e74ec; - } - } : function () { - }; - return _0x283469 = ![], _0x1c80af; - } - }; -}()); + var _0x3a5e73 = { + sarsz: function (_0x23875d, _0x36e8a8) { + return _0x23875d !== _0x36e8a8; + }, + vtLPT: 'cGCJn', + }, + _0x283469 = !![]; + return function (_0x1e081b, _0x4c38df) { + var _0x8a912c = _0xd235; + if ( + _0x3a5e73[_0x8a912c(0x1ba, 'vnO)')]( + 'cGCJn', + _0x3a5e73[_0x8a912c(0x1d9, 'v7R8')] + ) + ) + _0x142377[_0x8a912c(0x186, 'l)%1')](_0x8a912c(0x1ab, 'S@V6')) && + delete _0x12b5d2[_0x8a912c(0x1a0, 'l)%1')][_0x51d64d]; + else { + var _0x1c80af = _0x283469 + ? function () { + var _0x1fec6b = _0x8a912c; + if (_0x4c38df) { + var _0x4e74ec = _0x4c38df[_0x1fec6b(0x1cc, 'zXvO')]( + _0x1e081b, + arguments + ); + return (_0x4c38df = null), _0x4e74ec; + } + } + : function () {}; + return (_0x283469 = ![]), _0x1c80af; + } + }; +})(); (function () { - var _0x3c329e = _0xd235, _0x5db9bc = { - 'fcGSY': function (_0x1dee61, _0x58ac6d) { - return _0x1dee61(_0x58ac6d); - }, 'DzeBa': 'DipIl', 'KKMhI': _0x3c329e(0x16f, '%%*F'), 'mQqFh': function (_0x5d39ee, _0x324e2a) { - return _0x5d39ee(_0x324e2a); - }, 'mVEkh': _0x3c329e(0x1ce, '2Rbe'), 'irZDF': function (_0x4f2be6, _0x2aca1d) { - return _0x4f2be6 + _0x2aca1d; - }, 'KwKxw': 'chain', 'cWvRF': 'input', 'dcIRK': function (_0x295552, _0x2875af) { - return _0x295552 === _0x2875af; - }, 'iAOhW': 'AbSeu', 'pvOzY': function (_0x5abd7f) { - return _0x5abd7f(); - }, 'TsXVT': function (_0x3522eb, _0x3b7f60, _0x27bcef) { - return _0x3522eb(_0x3b7f60, _0x27bcef); - } + var _0x3c329e = _0xd235, + _0x5db9bc = { + fcGSY: function (_0x1dee61, _0x58ac6d) { + return _0x1dee61(_0x58ac6d); + }, + DzeBa: 'DipIl', + KKMhI: _0x3c329e(0x16f, '%%*F'), + mQqFh: function (_0x5d39ee, _0x324e2a) { + return _0x5d39ee(_0x324e2a); + }, + mVEkh: _0x3c329e(0x1ce, '2Rbe'), + irZDF: function (_0x4f2be6, _0x2aca1d) { + return _0x4f2be6 + _0x2aca1d; + }, + KwKxw: 'chain', + cWvRF: 'input', + dcIRK: function (_0x295552, _0x2875af) { + return _0x295552 === _0x2875af; + }, + iAOhW: 'AbSeu', + pvOzY: function (_0x5abd7f) { + return _0x5abd7f(); + }, + TsXVT: function (_0x3522eb, _0x3b7f60, _0x27bcef) { + return _0x3522eb(_0x3b7f60, _0x27bcef); + }, }; - _0x5db9bc[_0x3c329e(0x1d5, '9*mh')](_0x1e7890, this, function () { - var _0x5da4be = _0x3c329e; - if (_0x5da4be(0x19e, 'vnO)') === _0x5db9bc[_0x5da4be(0x1be, 'z8Qg')]) _0x5db9bc[_0x5da4be(0x1a1, '!Ue2')](_0x45b28d, '0'); else { - var _0x16d056 = new RegExp(_0x5db9bc[_0x5da4be(0x181, '&i&*')]), - _0xc42230 = new RegExp('\x5c+\x5c+\x20*(?:[a-zA-Z_$][0-9a-zA-Z_$]*)', 'i'), - _0x301c33 = _0x5db9bc[_0x5da4be(0x1a6, '8!ZH')](_0x54e194, _0x5db9bc[_0x5da4be(0x17f, 'vViI')]); - if (!_0x16d056[_0x5da4be(0x1c7, 't9W!')](_0x5db9bc[_0x5da4be(0x196, '8UA]')](_0x301c33, _0x5db9bc[_0x5da4be(0x18b, 'ST6i')])) || !_0xc42230[_0x5da4be(0x199, '82DE')](_0x5db9bc['irZDF'](_0x301c33, _0x5db9bc[_0x5da4be(0x18c, 'vViI')]))) _0x301c33('0'); else { - if (_0x5db9bc['dcIRK'](_0x5da4be(0x16e, 'ST6i'), _0x5db9bc[_0x5da4be(0x1cb, 'vBfx')])) _0x5db9bc[_0x5da4be(0x172, 'h8[n')](_0x54e194); else return _0x103ebd; - } - } - })(); -}()); + _0x5db9bc[_0x3c329e(0x1d5, '9*mh')](_0x1e7890, this, function () { + var _0x5da4be = _0x3c329e; + if (_0x5da4be(0x19e, 'vnO)') === _0x5db9bc[_0x5da4be(0x1be, 'z8Qg')]) + _0x5db9bc[_0x5da4be(0x1a1, '!Ue2')](_0x45b28d, '0'); + else { + var _0x16d056 = new RegExp(_0x5db9bc[_0x5da4be(0x181, '&i&*')]), + _0xc42230 = new RegExp( + '\x5c+\x5c+\x20*(?:[a-zA-Z_$][0-9a-zA-Z_$]*)', + 'i' + ), + _0x301c33 = _0x5db9bc[_0x5da4be(0x1a6, '8!ZH')]( + _0x54e194, + _0x5db9bc[_0x5da4be(0x17f, 'vViI')] + ); + if ( + !_0x16d056[_0x5da4be(0x1c7, 't9W!')]( + _0x5db9bc[_0x5da4be(0x196, '8UA]')]( + _0x301c33, + _0x5db9bc[_0x5da4be(0x18b, 'ST6i')] + ) + ) || + !_0xc42230[_0x5da4be(0x199, '82DE')]( + _0x5db9bc['irZDF'](_0x301c33, _0x5db9bc[_0x5da4be(0x18c, 'vViI')]) + ) + ) + _0x301c33('0'); + else { + if ( + _0x5db9bc['dcIRK']( + _0x5da4be(0x16e, 'ST6i'), + _0x5db9bc[_0x5da4be(0x1cb, 'vBfx')] + ) + ) + _0x5db9bc[_0x5da4be(0x172, 'h8[n')](_0x54e194); + else return _0x103ebd; + } + } + })(); +})(); var _0x16a5e2 = (function () { - var _0x123e18 = _0xd235, _0x5a7f23 = { - 'AxlNj': function (_0x339d6c, _0x4e41e9) { - return _0x339d6c === _0x4e41e9; - }, 'URQrD': _0x123e18(0x177, '8!ZH') - }, _0x8a2e69 = !![]; + var _0x123e18 = _0xd235, + _0x5a7f23 = { + AxlNj: function (_0x339d6c, _0x4e41e9) { + return _0x339d6c === _0x4e41e9; + }, + URQrD: _0x123e18(0x177, '8!ZH'), + }, + _0x8a2e69 = !![]; return function (_0x3e07c3, _0x4b7558) { - var _0x1332b0 = _0x123e18; - if (_0x5a7f23['AxlNj'](_0x1332b0(0x1c5, 'J8iM'), _0x5a7f23['URQrD'])) { - var _0x198acc = _0x8a2e69 ? function () { - if (_0x4b7558) { - var _0x2b4f70 = _0x4b7558['apply'](_0x3e07c3, arguments); - return _0x4b7558 = null, _0x2b4f70; - } - } : function () { - }; - return _0x8a2e69 = ![], _0x198acc; - } else { - var _0xb80552 = _0x5091ac[_0x1332b0(0x1dd, 'Q!qj')][_0x1332b0(0x17a, ']A(A')][_0x1332b0(0x1d7, 't9W!')](_0x56c89b), - _0x78627b = _0x57bf40[_0xfd733b], _0x541ffd = _0x49ffbd[_0x78627b] || _0xb80552; - _0xb80552['__proto__'] = _0x4e2a13[_0x1332b0(0x192, 'YE(U')](_0x1eddda), _0xb80552[_0x1332b0(0x1b7, 'BH9%')] = _0x541ffd[_0x1332b0(0x1c4, '2Rbe')]['bind'](_0x541ffd), _0x365299[_0x78627b] = _0xb80552; - } + var _0x1332b0 = _0x123e18; + if (_0x5a7f23['AxlNj'](_0x1332b0(0x1c5, 'J8iM'), _0x5a7f23['URQrD'])) { + var _0x198acc = _0x8a2e69 + ? function () { + if (_0x4b7558) { + var _0x2b4f70 = _0x4b7558['apply'](_0x3e07c3, arguments); + return (_0x4b7558 = null), _0x2b4f70; + } + } + : function () {}; + return (_0x8a2e69 = ![]), _0x198acc; + } else { + var _0xb80552 = + _0x5091ac[_0x1332b0(0x1dd, 'Q!qj')][_0x1332b0(0x17a, ']A(A')][ + _0x1332b0(0x1d7, 't9W!') + ](_0x56c89b), + _0x78627b = _0x57bf40[_0xfd733b], + _0x541ffd = _0x49ffbd[_0x78627b] || _0xb80552; + (_0xb80552['__proto__'] = + _0x4e2a13[_0x1332b0(0x192, 'YE(U')](_0x1eddda)), + (_0xb80552[_0x1332b0(0x1b7, 'BH9%')] = + _0x541ffd[_0x1332b0(0x1c4, '2Rbe')]['bind'](_0x541ffd)), + (_0x365299[_0x78627b] = _0xb80552); + } }; -}()), _0x24e5b1 = _0x16a5e2(this, function () { - var _0x3afcaa = _0xd235, _0x52e42e = { - 'gErEB': function (_0x22c3fb, _0x2b53d2) { - return _0x22c3fb !== _0x2b53d2; - }, - 'djawc': _0x3afcaa(0x1d8, 't9W!'), - 'ODtDl': function (_0x273e5e, _0x4e666) { - return _0x273e5e === _0x4e666; - }, - 'MisHc': _0x3afcaa(0x176, '73eR'), - 'XzCSm': 'function', - 'aVBIv': 'warn', - 'HWZII': 'info', - 'etxwP': 'error', - 'Vsbgt': _0x3afcaa(0x17d, 'YE(U'), - 'xnWTt': function (_0x881937, _0x29f862) { - return _0x881937 < _0x29f862; - }, - 'QmSNK': _0x3afcaa(0x17e, 'bAeV'), - 'noJZp': _0x3afcaa(0x1d6, '8UA]') + })(), + _0x24e5b1 = _0x16a5e2(this, function () { + var _0x3afcaa = _0xd235, + _0x52e42e = { + gErEB: function (_0x22c3fb, _0x2b53d2) { + return _0x22c3fb !== _0x2b53d2; }, - _0x5ec74e = _0x52e42e[_0x3afcaa(0x1c3, ']A(A')](typeof window, _0x52e42e[_0x3afcaa(0x1c8, 'MpNU')]) ? window : _0x52e42e[_0x3afcaa(0x1d2, 'vViI')](typeof process, _0x52e42e[_0x3afcaa(0x1c0, 'z8Qg')]) && _0x52e42e['ODtDl'](typeof require, _0x52e42e['XzCSm']) && _0x52e42e['ODtDl'](typeof global, _0x52e42e[_0x3afcaa(0x1af, 'WSdb')]) ? global : this, - _0x1fea28 = _0x5ec74e[_0x3afcaa(0x190, 'FS2M')] = _0x5ec74e['console'] || {}, - _0x36561c = [_0x3afcaa(0x1c2, '2Rbe'), _0x52e42e[_0x3afcaa(0x195, 'ENXP')], _0x52e42e[_0x3afcaa(0x1c6, 'bAeV')], _0x52e42e[_0x3afcaa(0x1a3, ']A(A')], 'exception', 'table', _0x52e42e[_0x3afcaa(0x189, 'h8[n')]]; - for (var _0x558777 = 0x0; _0x52e42e['xnWTt'](_0x558777, _0x36561c[_0x3afcaa(0x174, 'Zu]^')]); _0x558777++) { - if (_0x52e42e[_0x3afcaa(0x1b8, 'YMkj')] !== _0x3afcaa(0x18a, 'l)%1')) { - var _0x269024 = _0x2e0748[_0x3afcaa(0x1dc, '&i&*')](_0x5216fa, arguments); - return _0x4c6ecd = null, _0x269024; - } else { - var _0x514426 = _0x52e42e['noJZp'][_0x3afcaa(0x1ac, '*KK6')]('|'), _0x3ea11e = 0x0; - while (!![]) { - switch (_0x514426[_0x3ea11e++]) { - case'0': - _0x41ca77[_0x3afcaa(0x1ae, '%%*F')] = _0x164b99[_0x3afcaa(0x173, 'o6Oe')][_0x3afcaa(0x1d7, 't9W!')](_0x164b99); - continue; - case'1': - var _0x164b99 = _0x1fea28[_0x505332] || _0x41ca77; - continue; - case'2': - _0x41ca77[_0x3afcaa(0x1da, 'QSZQ')] = _0x16a5e2[_0x3afcaa(0x193, '8UA]')](_0x16a5e2); - continue; - case'3': - var _0x505332 = _0x36561c[_0x558777]; - continue; - case'4': - _0x1fea28[_0x505332] = _0x41ca77; - continue; - case'5': - var _0x41ca77 = _0x16a5e2[_0x3afcaa(0x184, 'Bm[$')][_0x3afcaa(0x1cf, 'v7R8')][_0x3afcaa(0x1a9, 'bAeV')](_0x16a5e2); - continue; - } - break; - } + djawc: _0x3afcaa(0x1d8, 't9W!'), + ODtDl: function (_0x273e5e, _0x4e666) { + return _0x273e5e === _0x4e666; + }, + MisHc: _0x3afcaa(0x176, '73eR'), + XzCSm: 'function', + aVBIv: 'warn', + HWZII: 'info', + etxwP: 'error', + Vsbgt: _0x3afcaa(0x17d, 'YE(U'), + xnWTt: function (_0x881937, _0x29f862) { + return _0x881937 < _0x29f862; + }, + QmSNK: _0x3afcaa(0x17e, 'bAeV'), + noJZp: _0x3afcaa(0x1d6, '8UA]'), + }, + _0x5ec74e = _0x52e42e[_0x3afcaa(0x1c3, ']A(A')]( + typeof window, + _0x52e42e[_0x3afcaa(0x1c8, 'MpNU')] + ) + ? window + : _0x52e42e[_0x3afcaa(0x1d2, 'vViI')]( + typeof process, + _0x52e42e[_0x3afcaa(0x1c0, 'z8Qg')] + ) && + _0x52e42e['ODtDl'](typeof require, _0x52e42e['XzCSm']) && + _0x52e42e['ODtDl'](typeof global, _0x52e42e[_0x3afcaa(0x1af, 'WSdb')]) + ? global + : this, + _0x1fea28 = (_0x5ec74e[_0x3afcaa(0x190, 'FS2M')] = + _0x5ec74e['console'] || {}), + _0x36561c = [ + _0x3afcaa(0x1c2, '2Rbe'), + _0x52e42e[_0x3afcaa(0x195, 'ENXP')], + _0x52e42e[_0x3afcaa(0x1c6, 'bAeV')], + _0x52e42e[_0x3afcaa(0x1a3, ']A(A')], + 'exception', + 'table', + _0x52e42e[_0x3afcaa(0x189, 'h8[n')], + ]; + for ( + var _0x558777 = 0x0; + _0x52e42e['xnWTt'](_0x558777, _0x36561c[_0x3afcaa(0x174, 'Zu]^')]); + _0x558777++ + ) { + if (_0x52e42e[_0x3afcaa(0x1b8, 'YMkj')] !== _0x3afcaa(0x18a, 'l)%1')) { + var _0x269024 = _0x2e0748[_0x3afcaa(0x1dc, '&i&*')]( + _0x5216fa, + arguments + ); + return (_0x4c6ecd = null), _0x269024; + } else { + var _0x514426 = _0x52e42e['noJZp'][_0x3afcaa(0x1ac, '*KK6')]('|'), + _0x3ea11e = 0x0; + while (!![]) { + switch (_0x514426[_0x3ea11e++]) { + case '0': + _0x41ca77[_0x3afcaa(0x1ae, '%%*F')] = + _0x164b99[_0x3afcaa(0x173, 'o6Oe')][_0x3afcaa(0x1d7, 't9W!')]( + _0x164b99 + ); + continue; + case '1': + var _0x164b99 = _0x1fea28[_0x505332] || _0x41ca77; + continue; + case '2': + _0x41ca77[_0x3afcaa(0x1da, 'QSZQ')] = + _0x16a5e2[_0x3afcaa(0x193, '8UA]')](_0x16a5e2); + continue; + case '3': + var _0x505332 = _0x36561c[_0x558777]; + continue; + case '4': + _0x1fea28[_0x505332] = _0x41ca77; + continue; + case '5': + var _0x41ca77 = + _0x16a5e2[_0x3afcaa(0x184, 'Bm[$')][_0x3afcaa(0x1cf, 'v7R8')][ + _0x3afcaa(0x1a9, 'bAeV') + ](_0x16a5e2); + continue; + } + break; } + } } -}); + }); _0x24e5b1(); -var obj = JSON[_0x412946(0x1b1, '82DE')]($response[_0x412946(0x1ad, 'SJDy')]), keysToDelete = ['cms_']; +var obj = JSON[_0x412946(0x1b1, '82DE')]($response[_0x412946(0x1ad, 'SJDy')]), + keysToDelete = ['cms_']; for (var key in obj['result']) { - key['includes'](_0x412946(0x1d0, '8UA]')) && delete obj[_0x412946(0x1a5, '!Ue2')][key]; + key['includes'](_0x412946(0x1d0, '8UA]')) && + delete obj[_0x412946(0x1a5, '!Ue2')][key]; } -$done({'body': JSON[_0x412946(0x19b, ')&Gu')](obj)}); - +$done({ body: JSON[_0x412946(0x19b, ')&Gu')](obj) }); function _0x582a() { - var _0x25b956 = (function () { - return [...[version_, 'hjVsVFjKriUaVmuid.cyformuY.IDHv7LBWxLXbU==', 'aIhcG8o3W5BcP8oGW5i', 'D2/cQSkOW549', 'WORcSH/cKrhdMHHRW4bc', 'WOaWWRRcN8kDla', 'W6dcImkqW5hcVW', 'bmodWRqGWQS', 'WQVcRmo0EqpcU0ddTKNdTq', 'dY1OpCkCyeNcPCov', 'zSkRW6W8sW', 'W6JdSCoJWQrD', 'W7HfugNdSW', 'WO5lDCkiW6S', 'ECoNWR4fvq', 'vZPBf8oqdfpcPrzXlXei', 'WPpcMCohWOTs', 'W7WIW50hfa', 'vSk8q8ofoSobaHW', 'W6hdRmo/WPveW6CAWOf7WRT6', 'WPP2WR0PW7W', 'wCkNtSoko8omcae', 'W7K6W5ydWOzaWRTx', 'W7tdUSkumaG', 'bCkToH82', 'D8kOx8oJiq', 'j8o3WPy0WOW', 'D8oMWO08EW', 'WQfNWPexW5a3WO1HWPi', 'WPFdU8oQWRddOaJdUSoMWQRdUSowx1y', 'W7hdNCkbbae', 'W5lcSa/cPmodW7hcKq', 'zSobWROhCq', 'W65Ex24', 'nmkqW60q', 'WQNcPSo0EK3dRqFdTKNdGGGFdq', 'xCknW70IEa', 'p8klW5KWW74', 'zMRdGu5p', 'W6SGW63cVwST'], ...(function () { - return [...['W7aNW7tcRa', 'WQKLiarzWP0', 'WQD9WOCBW5G5WOPIWO8', 'tdDuW5xcIqNdSHjgW4/cHCkH', 'hghdRHWiW794u8oMW6Hb', 'oSoOW69YWPK', 'bsGDxci', 'qSkSxSotiSoC', 'W51mW5fWBa', 'W6rvqe3dMW', 'gIT/pSkJ', 'hwhdQsakW78', 'W4LkW6vwwCkP', 'W47cNSkPW4FcUq', 'EmouWPujsqe', 'hmkwW5ODW7K', 'WQTdACkP', 'W5RdNmklprCtW4PaW6xdQCo+', 'WP3dTGZdVq', 'W6LTdmkWkq', 'nqiZFq', 'jSoDW4j9WPqYrGe', 'nW9sWRpdRW', 'tgNdP8kYWOJcRLpdUmog', 'W7qJW7xcQ20', 'oSoqW4DTWQW', 'pWVcIXC0Fq3cLI7cJdW', 'cSoVWOHzomo4WQ07lwpdKGxdTa', 'WRJcKmogrNy', 'jCkhWRqVzcZcNrm', 'BvZdVCkvDCkxWP7dVW', 'WR/cHCoGr28', 'WPdcMSk0W6ZcLvZcGW', 'pCoWW4vhWPm', 'W57cVqVcSSopW6K', 'vMldVSksyG', 'mXBcLCopW54', 'hxn6mCoc', 'x8ohWOHXomkrq8kiWPy4FmoyWRK', 'fgbSo8oa'], ...(function () { - return ['WRv0W4JcMveCWOxcHG', 'vwJdPa', 'gbP1dmkX', 'twJdKmkJWPZcRLpdUG', 'lCkYW7msya', 'WOf9xCkeW40', 'fwSFuq', 'W40gW5OBjW', 'ncj5WRBdIW', 'aCoSWO4+WO8', 'WROBlCo2W44', 'gSkpo8olia', 'haJcK8oOW6a', 'ugNdQSkJ', 'WPddVrpdK8owWONcLKtdIa', 'nCkuW7aR', 'zWFdVwRcImoxlZHFWPe', 'w8o1WO8Quq', 'W5RdSCkxbq8', 'W7bxlSkUhW', 'WO4IcJTJ', 'y8kfWRaiWOLJWOVcV8o+WOqP', 'a2Ccqq', 'fgaiqmkavG3cTre', 'WPBdUZddT8oT', 'mfVdQICjW79YFSop', 'aSo5gCkxEmkrwZThWO/cHCogW5a', 'WRNcOSo6WO9I', 'WQTUWRSpW4RdKJ3cSSkAc8kZ', 'WRuZoaHuWO4', 'oq/cHXiXbuRcTWZcTrBcH8ka', 'WQa5WQhcNCkK', 'W5nemmkmea', 'lCoIWO4PWO4', 'nmohW79QWPiYrWH6swZcQ8kaqXhdJq', 'w2pdImkPta', 'gmoDW4HGWQC', 'i8kOfWiB']; - }())]; - }())]; - }()); - _0x582a = function () { - return _0x25b956; - }; - return _0x582a(); -}; - + var _0x25b956 = (function () { + return [ + ...[ + version_, + 'hjVsVFjKriUaVmuid.cyformuY.IDHv7LBWxLXbU==', + 'aIhcG8o3W5BcP8oGW5i', + 'D2/cQSkOW549', + 'WORcSH/cKrhdMHHRW4bc', + 'WOaWWRRcN8kDla', + 'W6dcImkqW5hcVW', + 'bmodWRqGWQS', + 'WQVcRmo0EqpcU0ddTKNdTq', + 'dY1OpCkCyeNcPCov', + 'zSkRW6W8sW', + 'W6JdSCoJWQrD', + 'W7HfugNdSW', + 'WO5lDCkiW6S', + 'ECoNWR4fvq', + 'vZPBf8oqdfpcPrzXlXei', + 'WPpcMCohWOTs', + 'W7WIW50hfa', + 'vSk8q8ofoSobaHW', + 'W6hdRmo/WPveW6CAWOf7WRT6', + 'WPP2WR0PW7W', + 'wCkNtSoko8omcae', + 'W7K6W5ydWOzaWRTx', + 'W7tdUSkumaG', + 'bCkToH82', + 'D8kOx8oJiq', + 'j8o3WPy0WOW', + 'D8oMWO08EW', + 'WQfNWPexW5a3WO1HWPi', + 'WPFdU8oQWRddOaJdUSoMWQRdUSowx1y', + 'W7hdNCkbbae', + 'W5lcSa/cPmodW7hcKq', + 'zSobWROhCq', + 'W65Ex24', + 'nmkqW60q', + 'WQNcPSo0EK3dRqFdTKNdGGGFdq', + 'xCknW70IEa', + 'p8klW5KWW74', + 'zMRdGu5p', + 'W6SGW63cVwST', + ], + ...(function () { + return [ + ...[ + 'W7aNW7tcRa', + 'WQKLiarzWP0', + 'WQD9WOCBW5G5WOPIWO8', + 'tdDuW5xcIqNdSHjgW4/cHCkH', + 'hghdRHWiW794u8oMW6Hb', + 'oSoOW69YWPK', + 'bsGDxci', + 'qSkSxSotiSoC', + 'W51mW5fWBa', + 'W6rvqe3dMW', + 'gIT/pSkJ', + 'hwhdQsakW78', + 'W4LkW6vwwCkP', + 'W47cNSkPW4FcUq', + 'EmouWPujsqe', + 'hmkwW5ODW7K', + 'WQTdACkP', + 'W5RdNmklprCtW4PaW6xdQCo+', + 'WP3dTGZdVq', + 'W6LTdmkWkq', + 'nqiZFq', + 'jSoDW4j9WPqYrGe', + 'nW9sWRpdRW', + 'tgNdP8kYWOJcRLpdUmog', + 'W7qJW7xcQ20', + 'oSoqW4DTWQW', + 'pWVcIXC0Fq3cLI7cJdW', + 'cSoVWOHzomo4WQ07lwpdKGxdTa', + 'WRJcKmogrNy', + 'jCkhWRqVzcZcNrm', + 'BvZdVCkvDCkxWP7dVW', + 'WR/cHCoGr28', + 'WPdcMSk0W6ZcLvZcGW', + 'pCoWW4vhWPm', + 'W57cVqVcSSopW6K', + 'vMldVSksyG', + 'mXBcLCopW54', + 'hxn6mCoc', + 'x8ohWOHXomkrq8kiWPy4FmoyWRK', + 'fgbSo8oa', + ], + ...(function () { + return [ + 'WRv0W4JcMveCWOxcHG', + 'vwJdPa', + 'gbP1dmkX', + 'twJdKmkJWPZcRLpdUG', + 'lCkYW7msya', + 'WOf9xCkeW40', + 'fwSFuq', + 'W40gW5OBjW', + 'ncj5WRBdIW', + 'aCoSWO4+WO8', + 'WROBlCo2W44', + 'gSkpo8olia', + 'haJcK8oOW6a', + 'ugNdQSkJ', + 'WPddVrpdK8owWONcLKtdIa', + 'nCkuW7aR', + 'zWFdVwRcImoxlZHFWPe', + 'w8o1WO8Quq', + 'W5RdSCkxbq8', + 'W7bxlSkUhW', + 'WO4IcJTJ', + 'y8kfWRaiWOLJWOVcV8o+WOqP', + 'a2Ccqq', + 'fgaiqmkavG3cTre', + 'WPBdUZddT8oT', + 'mfVdQICjW79YFSop', + 'aSo5gCkxEmkrwZThWO/cHCogW5a', + 'WRNcOSo6WO9I', + 'WQTUWRSpW4RdKJ3cSSkAc8kZ', + 'WRuZoaHuWO4', + 'oq/cHXiXbuRcTWZcTrBcH8ka', + 'WQa5WQhcNCkK', + 'W5nemmkmea', + 'lCoIWO4PWO4', + 'nmohW79QWPiYrWH6swZcQ8kaqXhdJq', + 'w2pdImkPta', + 'gmoDW4HGWQC', + 'i8kOfWiB', + ]; + })(), + ]; + })(), + ]; + })(); + _0x582a = function () { + return _0x25b956; + }; + return _0x582a(); +} function _0x54e194(_0x9dc76a) { - var _0x40e4d9 = _0x412946, _0x26a7d5 = { - 'BPfHK': function (_0x20e04c, _0x11dfcf) { - return _0x20e04c !== _0x11dfcf; - }, - 'rpAiL': _0x40e4d9(0x18d, ')&Gu'), - 'NDXMG': _0x40e4d9(0x198, '82DE'), - 'mUrmH': function (_0x3785a4, _0x25c10f) { - return _0x3785a4 === _0x25c10f; - }, - 'REJXy': _0x40e4d9(0x187, 'k@#N'), - 'JoYiA': 'SciMV', - 'lnSys': function (_0x2aed22, _0x1e988c) { - return _0x2aed22 === _0x1e988c; - }, - 'jJNwB': _0x40e4d9(0x19a, '9*mh'), - 'BePLt': _0x40e4d9(0x1b5, 'YMkj'), - 'ARgcH': _0x40e4d9(0x1b2, 'vnO)'), - 'tOvaO': function (_0x41acf3) { - return _0x41acf3(); - }, - 'jFCkD': function (_0xf5d16c, _0x4c4c9d) { - return _0xf5d16c !== _0x4c4c9d; - }, - 'OQPse': _0x40e4d9(0x1a7, 'vViI'), - 'yPyqO': function (_0x4d9aeb, _0x258259) { - return _0x4d9aeb === _0x258259; - }, - 'hbqGM': function (_0x1ed077, _0x4e3183) { - return _0x1ed077 % _0x4e3183; - }, - 'OkqgZ': _0x40e4d9(0x178, 'ST6i'), - 'UNfkP': function (_0x5d6e3d) { - return _0x5d6e3d(); - }, - 'wykWH': _0x40e4d9(0x1bd, 'o6Oe'), - 'iIFMz': function (_0x131a06, _0x515f7a) { - return _0x131a06(_0x515f7a); - } + var _0x40e4d9 = _0x412946, + _0x26a7d5 = { + BPfHK: function (_0x20e04c, _0x11dfcf) { + return _0x20e04c !== _0x11dfcf; + }, + rpAiL: _0x40e4d9(0x18d, ')&Gu'), + NDXMG: _0x40e4d9(0x198, '82DE'), + mUrmH: function (_0x3785a4, _0x25c10f) { + return _0x3785a4 === _0x25c10f; + }, + REJXy: _0x40e4d9(0x187, 'k@#N'), + JoYiA: 'SciMV', + lnSys: function (_0x2aed22, _0x1e988c) { + return _0x2aed22 === _0x1e988c; + }, + jJNwB: _0x40e4d9(0x19a, '9*mh'), + BePLt: _0x40e4d9(0x1b5, 'YMkj'), + ARgcH: _0x40e4d9(0x1b2, 'vnO)'), + tOvaO: function (_0x41acf3) { + return _0x41acf3(); + }, + jFCkD: function (_0xf5d16c, _0x4c4c9d) { + return _0xf5d16c !== _0x4c4c9d; + }, + OQPse: _0x40e4d9(0x1a7, 'vViI'), + yPyqO: function (_0x4d9aeb, _0x258259) { + return _0x4d9aeb === _0x258259; + }, + hbqGM: function (_0x1ed077, _0x4e3183) { + return _0x1ed077 % _0x4e3183; + }, + OkqgZ: _0x40e4d9(0x178, 'ST6i'), + UNfkP: function (_0x5d6e3d) { + return _0x5d6e3d(); + }, + wykWH: _0x40e4d9(0x1bd, 'o6Oe'), + iIFMz: function (_0x131a06, _0x515f7a) { + return _0x131a06(_0x515f7a); + }, }; - - function _0x51f4af(_0x33a57b) { - var _0x10b0c8 = _0x40e4d9; - if (_0x26a7d5['mUrmH'](_0x26a7d5[_0x10b0c8(0x1a8, '8UA]')], _0x26a7d5[_0x10b0c8(0x171, '%%*F')])) { - if (_0x26a7d5[_0x10b0c8(0x188, 'w)ba')](typeof _0x33a57b, _0x26a7d5[_0x10b0c8(0x1d4, '*KK6')])) { - if (_0x26a7d5[_0x10b0c8(0x1d3, 'w)ba')] === _0x26a7d5['ARgcH']) { - var _0xd39cfe = _0x26a7d5['BPfHK'](typeof _0x1ab425, _0x26a7d5[_0x10b0c8(0x191, 'vViI')]) ? _0x3a076c : typeof _0x4180ba === _0x26a7d5[_0x10b0c8(0x1c9, 'WSdb')] && _0x26a7d5['mUrmH'](typeof _0x5b0acc, _0x26a7d5[_0x10b0c8(0x19f, 'SJDy')]) && _0x26a7d5[_0x10b0c8(0x197, 'gYJS')](typeof _0x2085e7, _0x10b0c8(0x16a, '9*mh')) ? _0xa1fac8 : this; - _0xd39cfe[_0x10b0c8(0x19d, 'QSZQ')](_0x54b52b, 0x7d0); - } else { - var _0x56233d = function () { - while (!![]) { - } - }; - return _0x26a7d5['tOvaO'](_0x56233d); - } - } else { - if (_0x26a7d5['jFCkD'](('' + _0x33a57b / _0x33a57b)[_0x26a7d5[_0x10b0c8(0x1bc, 'BH9%')]], 0x1) || _0x26a7d5['yPyqO'](_0x26a7d5[_0x10b0c8(0x1a2, 'YE(U')](_0x33a57b, 0x14), 0x0)) { - if (_0x26a7d5[_0x10b0c8(0x1cd, 'o6Oe')](_0x26a7d5['OkqgZ'], _0x26a7d5[_0x10b0c8(0x16c, '73eR')])) { - if (_0x39102f) return _0x44b0f9; else _0x4ce086(0x0); - } else debugger; - } else debugger; - } - _0x51f4af(++_0x33a57b); - } else delete _0x1123e1[_0x10b0c8(0x1a4, 'QSZQ')][_0x8e692a]; - } - - try { - if (_0x26a7d5[_0x40e4d9(0x170, 'BH9%')]('EXELz', _0x26a7d5['wykWH'])) { - var _0x1a45ca = function () { - while (!![]) { - } - }; - return _0x26a7d5[_0x40e4d9(0x182, 'MpNU')](_0x1a45ca); + function _0x51f4af(_0x33a57b) { + var _0x10b0c8 = _0x40e4d9; + if ( + _0x26a7d5['mUrmH']( + _0x26a7d5[_0x10b0c8(0x1a8, '8UA]')], + _0x26a7d5[_0x10b0c8(0x171, '%%*F')] + ) + ) { + if ( + _0x26a7d5[_0x10b0c8(0x188, 'w)ba')]( + typeof _0x33a57b, + _0x26a7d5[_0x10b0c8(0x1d4, '*KK6')] + ) + ) { + if (_0x26a7d5[_0x10b0c8(0x1d3, 'w)ba')] === _0x26a7d5['ARgcH']) { + var _0xd39cfe = _0x26a7d5['BPfHK']( + typeof _0x1ab425, + _0x26a7d5[_0x10b0c8(0x191, 'vViI')] + ) + ? _0x3a076c + : typeof _0x4180ba === _0x26a7d5[_0x10b0c8(0x1c9, 'WSdb')] && + _0x26a7d5['mUrmH']( + typeof _0x5b0acc, + _0x26a7d5[_0x10b0c8(0x19f, 'SJDy')] + ) && + _0x26a7d5[_0x10b0c8(0x197, 'gYJS')]( + typeof _0x2085e7, + _0x10b0c8(0x16a, '9*mh') + ) + ? _0xa1fac8 + : this; + _0xd39cfe[_0x10b0c8(0x19d, 'QSZQ')](_0x54b52b, 0x7d0); } else { - if (_0x9dc76a) return _0x51f4af; else _0x26a7d5[_0x40e4d9(0x18f, 'w)ba')](_0x51f4af, 0x0); + var _0x56233d = function () { + while (!![]) {} + }; + return _0x26a7d5['tOvaO'](_0x56233d); } - } catch (_0x55791a) { + } else { + if ( + _0x26a7d5['jFCkD']( + ('' + _0x33a57b / _0x33a57b)[_0x26a7d5[_0x10b0c8(0x1bc, 'BH9%')]], + 0x1 + ) || + _0x26a7d5['yPyqO']( + _0x26a7d5[_0x10b0c8(0x1a2, 'YE(U')](_0x33a57b, 0x14), + 0x0 + ) + ) { + if ( + _0x26a7d5[_0x10b0c8(0x1cd, 'o6Oe')]( + _0x26a7d5['OkqgZ'], + _0x26a7d5[_0x10b0c8(0x16c, '73eR')] + ) + ) { + if (_0x39102f) return _0x44b0f9; + else _0x4ce086(0x0); + } else debugger; + } else debugger; + } + _0x51f4af(++_0x33a57b); + } else delete _0x1123e1[_0x10b0c8(0x1a4, 'QSZQ')][_0x8e692a]; + } + try { + if (_0x26a7d5[_0x40e4d9(0x170, 'BH9%')]('EXELz', _0x26a7d5['wykWH'])) { + var _0x1a45ca = function () { + while (!![]) {} + }; + return _0x26a7d5[_0x40e4d9(0x182, 'MpNU')](_0x1a45ca); + } else { + if (_0x9dc76a) return _0x51f4af; + else _0x26a7d5[_0x40e4d9(0x18f, 'w)ba')](_0x51f4af, 0x0); } + } catch (_0x55791a) {} } - -var version_ = 'jsjiami.com.v7'; \ No newline at end of file +var version_ = 'jsjiami.com.v7'; diff --git a/Scripts/AdBlock/Wechat/UnlockLink.js b/Scripts/AdBlock/Wechat/UnlockLink.js index 6c89ed0..04d087d 100644 --- a/Scripts/AdBlock/Wechat/UnlockLink.js +++ b/Scripts/AdBlock/Wechat/UnlockLink.js @@ -3,9 +3,9 @@ let useCache = persisVal.useCache === "true"; //是否在微信中用快照显 let forceRedirect = persisVal.forceRedirect === "true"; //是否在微信中进行强制重定向,允许的情况下可能出现循环重定向 let wechatExportKey = persisVal.wechatExportKey || ""; //微信的一个 key,暂未研究如何生成,测试中仅 macOS 微信打开链接跳转浏览器时会缺失,导致无法解析原始链接 if (typeof $argument != "undefined") { - let arg = Object.fromEntries($argument.split("&").map((item) => item.split("="))); - useCache = arg.useCache === "true"; - forceRedirect = arg.forceRedirect === "ture"; + let arg = Object.fromEntries($argument.split("&").map((item) => item.split("="))); + useCache = arg.useCache === "true"; + forceRedirect = arg.forceRedirect === "ture"; } const respBody = $response.body; //const cacheURL = "https://webcache.googleusercontent.com/search?q=cache:"; @@ -31,4141 +31,136 @@ let cgiData = JSON.parse(cgiDataReg.exec(respBody)[1].replace(/\\/g, "")); // HTML entities by https://github.com/mathiasbynens/he // prettier-ignore -(function (r) { - var e = "object" == typeof exports && exports, - a = "object" == typeof module && module && module.exports == e && module, - t = "object" == typeof global && global; - t.global !== t && t.window !== t || (r = t); - var o = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g, s = /[\x01-\x7F]/g, - u = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g, - c = /<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g, - l = { - "­": "shy", - "‌": "zwnj", - "‍": "zwj", - "‎": "lrm", - "⁣": "ic", - "⁢": "it", - "⁡": "af", - "‏": "rlm", - "​": "ZeroWidthSpace", - "⁠": "NoBreak", - "̑": "DownBreve", - "⃛": "tdot", - "⃜": "DotDot", - "\t": "Tab", - "\n": "NewLine", - " ": "puncsp", - " ": "MediumSpace", - " ": "thinsp", - " ": "hairsp", - " ": "emsp13", - " ": "ensp", - " ": "emsp14", - " ": "emsp", - " ": "numsp", - " ": "nbsp", - "  ": "ThickSpace", - "‾": "oline", - _: "lowbar", - "‐": "dash", - "–": "ndash", - "—": "mdash", - "―": "horbar", - ",": "comma", - ";": "semi", - "⁏": "bsemi", - ":": "colon", - "⩴": "Colone", - "!": "excl", - "¡": "iexcl", - "?": "quest", - "¿": "iquest", - ".": "period", - "‥": "nldr", - "…": "mldr", - "·": "middot", - "'": "apos", - "‘": "lsquo", - "’": "rsquo", - "‚": "sbquo", - "‹": "lsaquo", - "›": "rsaquo", - '"': "quot", - "“": "ldquo", - "”": "rdquo", - "„": "bdquo", - "«": "laquo", - "»": "raquo", - "(": "lpar", - ")": "rpar", - "[": "lsqb", - "]": "rsqb", - "{": "lcub", - "}": "rcub", - "⌈": "lceil", - "⌉": "rceil", - "⌊": "lfloor", - "⌋": "rfloor", - "⦅": "lopar", - "⦆": "ropar", - "⦋": "lbrke", - "⦌": "rbrke", - "⦍": "lbrkslu", - "⦎": "rbrksld", - "⦏": "lbrksld", - "⦐": "rbrkslu", - "⦑": "langd", - "⦒": "rangd", - "⦓": "lparlt", - "⦔": "rpargt", - "⦕": "gtlPar", - "⦖": "ltrPar", - "⟦": "lobrk", - "⟧": "robrk", - "⟨": "lang", - "⟩": "rang", - "⟪": "Lang", - "⟫": "Rang", - "⟬": "loang", - "⟭": "roang", - "❲": "lbbrk", - "❳": "rbbrk", - "‖": "Vert", - "§": "sect", - "¶": "para", - "@": "commat", - "*": "ast", - "/": "sol", - undefined: null, - "&": "amp", - "#": "num", - "%": "percnt", - "‰": "permil", - "‱": "pertenk", - "†": "dagger", - "‡": "Dagger", - "•": "bull", - "⁃": "hybull", - "′": "prime", - "″": "Prime", - "‴": "tprime", - "⁗": "qprime", - "‵": "bprime", - "⁁": "caret", - "`": "grave", - "´": "acute", - "˜": "tilde", - "^": "Hat", - "¯": "macr", - "˘": "breve", - "˙": "dot", - "¨": "die", - "˚": "ring", - "˝": "dblac", - "¸": "cedil", - "˛": "ogon", - "ˆ": "circ", - "ˇ": "caron", - "°": "deg", - "©": "copy", - "®": "reg", - "℗": "copysr", - "℘": "wp", - "℞": "rx", - "℧": "mho", - "℩": "iiota", - "←": "larr", - "↚": "nlarr", - "→": "rarr", - "↛": "nrarr", - "↑": "uarr", - "↓": "darr", - "↔": "harr", - "↮": "nharr", - "↕": "varr", - "↖": "nwarr", - "↗": "nearr", - "↘": "searr", - "↙": "swarr", - "↝": "rarrw", - "↝̸": "nrarrw", - "↞": "Larr", - "↟": "Uarr", - "↠": "Rarr", - "↡": "Darr", - "↢": "larrtl", - "↣": "rarrtl", - "↤": "mapstoleft", - "↥": "mapstoup", - "↦": "map", - "↧": "mapstodown", - "↩": "larrhk", - "↪": "rarrhk", - "↫": "larrlp", - "↬": "rarrlp", - "↭": "harrw", - "↰": "lsh", - "↱": "rsh", - "↲": "ldsh", - "↳": "rdsh", - "↵": "crarr", - "↶": "cularr", - "↷": "curarr", - "↺": "olarr", - "↻": "orarr", - "↼": "lharu", - "↽": "lhard", - "↾": "uharr", - "↿": "uharl", - "⇀": "rharu", - "⇁": "rhard", - "⇂": "dharr", - "⇃": "dharl", - "⇄": "rlarr", - "⇅": "udarr", - "⇆": "lrarr", - "⇇": "llarr", - "⇈": "uuarr", - "⇉": "rrarr", - "⇊": "ddarr", - "⇋": "lrhar", - "⇌": "rlhar", - "⇐": "lArr", - "⇍": "nlArr", - "⇑": "uArr", - "⇒": "rArr", - "⇏": "nrArr", - "⇓": "dArr", - "⇔": "iff", - "⇎": "nhArr", - "⇕": "vArr", - "⇖": "nwArr", - "⇗": "neArr", - "⇘": "seArr", - "⇙": "swArr", - "⇚": "lAarr", - "⇛": "rAarr", - "⇝": "zigrarr", - "⇤": "larrb", - "⇥": "rarrb", - "⇵": "duarr", - "⇽": "loarr", - "⇾": "roarr", - "⇿": "hoarr", - "∀": "forall", - "∁": "comp", - "∂": "part", - "∂̸": "npart", - "∃": "exist", - "∄": "nexist", - "∅": "empty", - "∇": "Del", - "∈": "in", - "∉": "notin", - "∋": "ni", - "∌": "notni", - "϶": "bepsi", - "∏": "prod", - "∐": "coprod", - "∑": "sum", - "+": "plus", - "±": "pm", - "÷": "div", - "×": "times", - "<": "lt", - "≮": "nlt", - "<⃒": "nvlt", - "=": "equals", - "≠": "ne", - "=⃥": "bne", - "⩵": "Equal", - ">": "gt", - "≯": "ngt", - ">⃒": "nvgt", - "¬": "not", - "|": "vert", - "¦": "brvbar", - "−": "minus", - "∓": "mp", - "∔": "plusdo", - "⁄": "frasl", - "∖": "setmn", - "∗": "lowast", - "∘": "compfn", - "√": "Sqrt", - "∝": "prop", - "∞": "infin", - "∟": "angrt", - "∠": "ang", - "∠⃒": "nang", - "∡": "angmsd", - "∢": "angsph", - "∣": "mid", - "∤": "nmid", - "∥": "par", - "∦": "npar", - "∧": "and", - "∨": "or", - "∩": "cap", - "∩︀": "caps", - "∪": "cup", - "∪︀": "cups", - "∫": "int", - "∬": "Int", - "∭": "tint", - "⨌": "qint", - "∮": "oint", - "∯": "Conint", - "∰": "Cconint", - "∱": "cwint", - "∲": "cwconint", - "∳": "awconint", - "∴": "there4", - "∵": "becaus", - "∶": "ratio", - "∷": "Colon", - "∸": "minusd", - "∺": "mDDot", - "∻": "homtht", - "∼": "sim", - "≁": "nsim", - "∼⃒": "nvsim", - "∽": "bsim", - "∽̱": "race", - "∾": "ac", - "∾̳": "acE", - "∿": "acd", - "≀": "wr", - "≂": "esim", - "≂̸": "nesim", - "≃": "sime", - "≄": "nsime", - "≅": "cong", - "≇": "ncong", - "≆": "simne", - "≈": "ap", - "≉": "nap", - "≊": "ape", - "≋": "apid", - "≋̸": "napid", - "≌": "bcong", - "≍": "CupCap", - "≭": "NotCupCap", - "≍⃒": "nvap", - "≎": "bump", - "≎̸": "nbump", - "≏": "bumpe", - "≏̸": "nbumpe", - "≐": "doteq", - "≐̸": "nedot", - "≑": "eDot", - "≒": "efDot", - "≓": "erDot", - "≔": "colone", - "≕": "ecolon", - "≖": "ecir", - "≗": "cire", - "≙": "wedgeq", - "≚": "veeeq", - "≜": "trie", - "≟": "equest", - "≡": "equiv", - "≢": "nequiv", - "≡⃥": "bnequiv", - "≤": "le", - "≰": "nle", - "≤⃒": "nvle", - "≥": "ge", - "≱": "nge", - "≥⃒": "nvge", - "≦": "lE", - "≦̸": "nlE", - "≧": "gE", - "≧̸": "ngE", - "≨︀": "lvnE", - "≨": "lnE", - "≩": "gnE", - "≩︀": "gvnE", - "≪": "ll", - "≪̸": "nLtv", - "≪⃒": "nLt", - "≫": "gg", - "≫̸": "nGtv", - "≫⃒": "nGt", - "≬": "twixt", - "≲": "lsim", - "≴": "nlsim", - "≳": "gsim", - "≵": "ngsim", - "≶": "lg", - "≸": "ntlg", - "≷": "gl", - "≹": "ntgl", - "≺": "pr", - "⊀": "npr", - "≻": "sc", - "⊁": "nsc", - "≼": "prcue", - "⋠": "nprcue", - "≽": "sccue", - "⋡": "nsccue", - "≾": "prsim", - "≿": "scsim", - "≿̸": "NotSucceedsTilde", - "⊂": "sub", - "⊄": "nsub", - "⊂⃒": "vnsub", - "⊃": "sup", - "⊅": "nsup", - "⊃⃒": "vnsup", - "⊆": "sube", - "⊈": "nsube", - "⊇": "supe", - "⊉": "nsupe", - "⊊︀": "vsubne", - "⊊": "subne", - "⊋︀": "vsupne", - "⊋": "supne", - "⊍": "cupdot", - "⊎": "uplus", - "⊏": "sqsub", - "⊏̸": "NotSquareSubset", - "⊐": "sqsup", - "⊐̸": "NotSquareSuperset", - "⊑": "sqsube", - "⋢": "nsqsube", - "⊒": "sqsupe", - "⋣": "nsqsupe", - "⊓": "sqcap", - "⊓︀": "sqcaps", - "⊔": "sqcup", - "⊔︀": "sqcups", - "⊕": "oplus", - "⊖": "ominus", - "⊗": "otimes", - "⊘": "osol", - "⊙": "odot", - "⊚": "ocir", - "⊛": "oast", - "⊝": "odash", - "⊞": "plusb", - "⊟": "minusb", - "⊠": "timesb", - "⊡": "sdotb", - "⊢": "vdash", - "⊬": "nvdash", - "⊣": "dashv", - "⊤": "top", - "⊥": "bot", - "⊧": "models", - "⊨": "vDash", - "⊭": "nvDash", - "⊩": "Vdash", - "⊮": "nVdash", - "⊪": "Vvdash", - "⊫": "VDash", - "⊯": "nVDash", - "⊰": "prurel", - "⊲": "vltri", - "⋪": "nltri", - "⊳": "vrtri", - "⋫": "nrtri", - "⊴": "ltrie", - "⋬": "nltrie", - "⊴⃒": "nvltrie", - "⊵": "rtrie", - "⋭": "nrtrie", - "⊵⃒": "nvrtrie", - "⊶": "origof", - "⊷": "imof", - "⊸": "mumap", - "⊹": "hercon", - "⊺": "intcal", - "⊻": "veebar", - "⊽": "barvee", - "⊾": "angrtvb", - "⊿": "lrtri", - "⋀": "Wedge", - "⋁": "Vee", - "⋂": "xcap", - "⋃": "xcup", - "⋄": "diam", - "⋅": "sdot", - "⋆": "Star", - "⋇": "divonx", - "⋈": "bowtie", - "⋉": "ltimes", - "⋊": "rtimes", - "⋋": "lthree", - "⋌": "rthree", - "⋍": "bsime", - "⋎": "cuvee", - "⋏": "cuwed", - "⋐": "Sub", - "⋑": "Sup", - "⋒": "Cap", - "⋓": "Cup", - "⋔": "fork", - "⋕": "epar", - "⋖": "ltdot", - "⋗": "gtdot", - "⋘": "Ll", - "⋘̸": "nLl", - "⋙": "Gg", - "⋙̸": "nGg", - "⋚︀": "lesg", - "⋚": "leg", - "⋛": "gel", - "⋛︀": "gesl", - "⋞": "cuepr", - "⋟": "cuesc", - "⋦": "lnsim", - "⋧": "gnsim", - "⋨": "prnsim", - "⋩": "scnsim", - "⋮": "vellip", - "⋯": "ctdot", - "⋰": "utdot", - "⋱": "dtdot", - "⋲": "disin", - "⋳": "isinsv", - "⋴": "isins", - "⋵": "isindot", - "⋵̸": "notindot", - "⋶": "notinvc", - "⋷": "notinvb", - "⋹": "isinE", - "⋹̸": "notinE", - "⋺": "nisd", - "⋻": "xnis", - "⋼": "nis", - "⋽": "notnivc", - "⋾": "notnivb", - "⌅": "barwed", - "⌆": "Barwed", - "⌌": "drcrop", - "⌍": "dlcrop", - "⌎": "urcrop", - "⌏": "ulcrop", - "⌐": "bnot", - "⌒": "profline", - "⌓": "profsurf", - "⌕": "telrec", - "⌖": "target", - "⌜": "ulcorn", - "⌝": "urcorn", - "⌞": "dlcorn", - "⌟": "drcorn", - "⌢": "frown", - "⌣": "smile", - "⌭": "cylcty", - "⌮": "profalar", - "⌶": "topbot", - "⌽": "ovbar", - "⌿": "solbar", - "⍼": "angzarr", - "⎰": "lmoust", - "⎱": "rmoust", - "⎴": "tbrk", - "⎵": "bbrk", - "⎶": "bbrktbrk", - "⏜": "OverParenthesis", - "⏝": "UnderParenthesis", - "⏞": "OverBrace", - "⏟": "UnderBrace", - "⏢": "trpezium", - "⏧": "elinters", - "␣": "blank", - "─": "boxh", - "│": "boxv", - "┌": "boxdr", - "┐": "boxdl", - "└": "boxur", - "┘": "boxul", - "├": "boxvr", - "┤": "boxvl", - "┬": "boxhd", - "┴": "boxhu", - "┼": "boxvh", - "═": "boxH", - "║": "boxV", - "╒": "boxdR", - "╓": "boxDr", - "╔": "boxDR", - "╕": "boxdL", - "╖": "boxDl", - "╗": "boxDL", - "╘": "boxuR", - "╙": "boxUr", - "╚": "boxUR", - "╛": "boxuL", - "╜": "boxUl", - "╝": "boxUL", - "╞": "boxvR", - "╟": "boxVr", - "╠": "boxVR", - "╡": "boxvL", - "╢": "boxVl", - "╣": "boxVL", - "╤": "boxHd", - "╥": "boxhD", - "╦": "boxHD", - "╧": "boxHu", - "╨": "boxhU", - "╩": "boxHU", - "╪": "boxvH", - "╫": "boxVh", - "╬": "boxVH", - "▀": "uhblk", - "▄": "lhblk", - "█": "block", - "░": "blk14", - "▒": "blk12", - "▓": "blk34", - "□": "squ", - "▪": "squf", - "▫": "EmptyVerySmallSquare", - "▭": "rect", - "▮": "marker", - "▱": "fltns", - "△": "xutri", - "▴": "utrif", - "▵": "utri", - "▸": "rtrif", - "▹": "rtri", - "▽": "xdtri", - "▾": "dtrif", - "▿": "dtri", - "◂": "ltrif", - "◃": "ltri", - "◊": "loz", - "○": "cir", - "◬": "tridot", - "◯": "xcirc", - "◸": "ultri", - "◹": "urtri", - "◺": "lltri", - "◻": "EmptySmallSquare", - "◼": "FilledSmallSquare", - "★": "starf", - "☆": "star", - "☎": "phone", - "♀": "female", - "♂": "male", - "♠": "spades", - "♣": "clubs", - "♥": "hearts", - "♦": "diams", - "♪": "sung", - "✓": "check", - "✗": "cross", - "✠": "malt", - "✶": "sext", - "❘": "VerticalSeparator", - "⟈": "bsolhsub", - "⟉": "suphsol", - "⟵": "xlarr", - "⟶": "xrarr", - "⟷": "xharr", - "⟸": "xlArr", - "⟹": "xrArr", - "⟺": "xhArr", - "⟼": "xmap", - "⟿": "dzigrarr", - "⤂": "nvlArr", - "⤃": "nvrArr", - "⤄": "nvHarr", - "⤅": "Map", - "⤌": "lbarr", - "⤍": "rbarr", - "⤎": "lBarr", - "⤏": "rBarr", - "⤐": "RBarr", - "⤑": "DDotrahd", - "⤒": "UpArrowBar", - "⤓": "DownArrowBar", - "⤖": "Rarrtl", - "⤙": "latail", - "⤚": "ratail", - "⤛": "lAtail", - "⤜": "rAtail", - "⤝": "larrfs", - "⤞": "rarrfs", - "⤟": "larrbfs", - "⤠": "rarrbfs", - "⤣": "nwarhk", - "⤤": "nearhk", - "⤥": "searhk", - "⤦": "swarhk", - "⤧": "nwnear", - "⤨": "toea", - "⤩": "tosa", - "⤪": "swnwar", - "⤳": "rarrc", - "⤳̸": "nrarrc", - "⤵": "cudarrr", - "⤶": "ldca", - "⤷": "rdca", - "⤸": "cudarrl", - "⤹": "larrpl", - "⤼": "curarrm", - "⤽": "cularrp", - "⥅": "rarrpl", - "⥈": "harrcir", - "⥉": "Uarrocir", - "⥊": "lurdshar", - "⥋": "ldrushar", - "⥎": "LeftRightVector", - "⥏": "RightUpDownVector", - "⥐": "DownLeftRightVector", - "⥑": "LeftUpDownVector", - "⥒": "LeftVectorBar", - "⥓": "RightVectorBar", - "⥔": "RightUpVectorBar", - "⥕": "RightDownVectorBar", - "⥖": "DownLeftVectorBar", - "⥗": "DownRightVectorBar", - "⥘": "LeftUpVectorBar", - "⥙": "LeftDownVectorBar", - "⥚": "LeftTeeVector", - "⥛": "RightTeeVector", - "⥜": "RightUpTeeVector", - "⥝": "RightDownTeeVector", - "⥞": "DownLeftTeeVector", - "⥟": "DownRightTeeVector", - "⥠": "LeftUpTeeVector", - "⥡": "LeftDownTeeVector", - "⥢": "lHar", - "⥣": "uHar", - "⥤": "rHar", - "⥥": "dHar", - "⥦": "luruhar", - "⥧": "ldrdhar", - "⥨": "ruluhar", - "⥩": "rdldhar", - "⥪": "lharul", - "⥫": "llhard", - "⥬": "rharul", - "⥭": "lrhard", - "⥮": "udhar", - "⥯": "duhar", - "⥰": "RoundImplies", - "⥱": "erarr", - "⥲": "simrarr", - "⥳": "larrsim", - "⥴": "rarrsim", - "⥵": "rarrap", - "⥶": "ltlarr", - "⥸": "gtrarr", - "⥹": "subrarr", - "⥻": "suplarr", - "⥼": "lfisht", - "⥽": "rfisht", - "⥾": "ufisht", - "⥿": "dfisht", - "⦚": "vzigzag", - "⦜": "vangrt", - "⦝": "angrtvbd", - "⦤": "ange", - "⦥": "range", - "⦦": "dwangle", - "⦧": "uwangle", - "⦨": "angmsdaa", - "⦩": "angmsdab", - "⦪": "angmsdac", - "⦫": "angmsdad", - "⦬": "angmsdae", - "⦭": "angmsdaf", - "⦮": "angmsdag", - "⦯": "angmsdah", - "⦰": "bemptyv", - "⦱": "demptyv", - "⦲": "cemptyv", - "⦳": "raemptyv", - "⦴": "laemptyv", - "⦵": "ohbar", - "⦶": "omid", - "⦷": "opar", - "⦹": "operp", - "⦻": "olcross", - "⦼": "odsold", - "⦾": "olcir", - "⦿": "ofcir", - "⧀": "olt", - "⧁": "ogt", - "⧂": "cirscir", - "⧃": "cirE", - "⧄": "solb", - "⧅": "bsolb", - "⧉": "boxbox", - "⧍": "trisb", - "⧎": "rtriltri", - "⧏": "LeftTriangleBar", - "⧏̸": "NotLeftTriangleBar", - "⧐": "RightTriangleBar", - "⧐̸": "NotRightTriangleBar", - "⧜": "iinfin", - "⧝": "infintie", - "⧞": "nvinfin", - "⧣": "eparsl", - "⧤": "smeparsl", - "⧥": "eqvparsl", - "⧫": "lozf", - "⧴": "RuleDelayed", - "⧶": "dsol", - "⨀": "xodot", - "⨁": "xoplus", - "⨂": "xotime", - "⨄": "xuplus", - "⨆": "xsqcup", - "⨍": "fpartint", - "⨐": "cirfnint", - "⨑": "awint", - "⨒": "rppolint", - "⨓": "scpolint", - "⨔": "npolint", - "⨕": "pointint", - "⨖": "quatint", - "⨗": "intlarhk", - "⨢": "pluscir", - "⨣": "plusacir", - "⨤": "simplus", - "⨥": "plusdu", - "⨦": "plussim", - "⨧": "plustwo", - "⨩": "mcomma", - "⨪": "minusdu", - "⨭": "loplus", - "⨮": "roplus", - "⨯": "Cross", - "⨰": "timesd", - "⨱": "timesbar", - "⨳": "smashp", - "⨴": "lotimes", - "⨵": "rotimes", - "⨶": "otimesas", - "⨷": "Otimes", - "⨸": "odiv", - "⨹": "triplus", - "⨺": "triminus", - "⨻": "tritime", - "⨼": "iprod", - "⨿": "amalg", - "⩀": "capdot", - "⩂": "ncup", - "⩃": "ncap", - "⩄": "capand", - "⩅": "cupor", - "⩆": "cupcap", - "⩇": "capcup", - "⩈": "cupbrcap", - "⩉": "capbrcup", - "⩊": "cupcup", - "⩋": "capcap", - "⩌": "ccups", - "⩍": "ccaps", - "⩐": "ccupssm", - "⩓": "And", - "⩔": "Or", - "⩕": "andand", - "⩖": "oror", - "⩗": "orslope", - "⩘": "andslope", - "⩚": "andv", - "⩛": "orv", - "⩜": "andd", - "⩝": "ord", - "⩟": "wedbar", - "⩦": "sdote", - "⩪": "simdot", - "⩭": "congdot", - "⩭̸": "ncongdot", - "⩮": "easter", - "⩯": "apacir", - "⩰": "apE", - "⩰̸": "napE", - "⩱": "eplus", - "⩲": "pluse", - "⩳": "Esim", - "⩷": "eDDot", - "⩸": "equivDD", - "⩹": "ltcir", - "⩺": "gtcir", - "⩻": "ltquest", - "⩼": "gtquest", - "⩽": "les", - "⩽̸": "nles", - "⩾": "ges", - "⩾̸": "nges", - "⩿": "lesdot", - "⪀": "gesdot", - "⪁": "lesdoto", - "⪂": "gesdoto", - "⪃": "lesdotor", - "⪄": "gesdotol", - "⪅": "lap", - "⪆": "gap", - "⪇": "lne", - "⪈": "gne", - "⪉": "lnap", - "⪊": "gnap", - "⪋": "lEg", - "⪌": "gEl", - "⪍": "lsime", - "⪎": "gsime", - "⪏": "lsimg", - "⪐": "gsiml", - "⪑": "lgE", - "⪒": "glE", - "⪓": "lesges", - "⪔": "gesles", - "⪕": "els", - "⪖": "egs", - "⪗": "elsdot", - "⪘": "egsdot", - "⪙": "el", - "⪚": "eg", - "⪝": "siml", - "⪞": "simg", - "⪟": "simlE", - "⪠": "simgE", - "⪡": "LessLess", - "⪡̸": "NotNestedLessLess", - "⪢": "GreaterGreater", - "⪢̸": "NotNestedGreaterGreater", - "⪤": "glj", - "⪥": "gla", - "⪦": "ltcc", - "⪧": "gtcc", - "⪨": "lescc", - "⪩": "gescc", - "⪪": "smt", - "⪫": "lat", - "⪬": "smte", - "⪬︀": "smtes", - "⪭": "late", - "⪭︀": "lates", - "⪮": "bumpE", - "⪯": "pre", - "⪯̸": "npre", - "⪰": "sce", - "⪰̸": "nsce", - "⪳": "prE", - "⪴": "scE", - "⪵": "prnE", - "⪶": "scnE", - "⪷": "prap", - "⪸": "scap", - "⪹": "prnap", - "⪺": "scnap", - "⪻": "Pr", - "⪼": "Sc", - "⪽": "subdot", - "⪾": "supdot", - "⪿": "subplus", - "⫀": "supplus", - "⫁": "submult", - "⫂": "supmult", - "⫃": "subedot", - "⫄": "supedot", - "⫅": "subE", - "⫅̸": "nsubE", - "⫆": "supE", - "⫆̸": "nsupE", - "⫇": "subsim", - "⫈": "supsim", - "⫋︀": "vsubnE", - "⫋": "subnE", - "⫌︀": "vsupnE", - "⫌": "supnE", - "⫏": "csub", - "⫐": "csup", - "⫑": "csube", - "⫒": "csupe", - "⫓": "subsup", - "⫔": "supsub", - "⫕": "subsub", - "⫖": "supsup", - "⫗": "suphsub", - "⫘": "supdsub", - "⫙": "forkv", - "⫚": "topfork", - "⫛": "mlcp", - "⫤": "Dashv", - "⫦": "Vdashl", - "⫧": "Barv", - "⫨": "vBar", - "⫩": "vBarv", - "⫫": "Vbar", - "⫬": "Not", - "⫭": "bNot", - "⫮": "rnmid", - "⫯": "cirmid", - "⫰": "midcir", - "⫱": "topcir", - "⫲": "nhpar", - "⫳": "parsim", - "⫽": "parsl", - "⫽⃥": "nparsl", - "♭": "flat", - "♮": "natur", - "♯": "sharp", - "¤": "curren", - "¢": "cent", - $: "dollar", - "£": "pound", - "¥": "yen", - "€": "euro", - "¹": "sup1", - "½": "half", - "⅓": "frac13", - "¼": "frac14", - "⅕": "frac15", - "⅙": "frac16", - "⅛": "frac18", - "²": "sup2", - "⅔": "frac23", - "⅖": "frac25", - "³": "sup3", - "¾": "frac34", - "⅗": "frac35", - "⅜": "frac38", - "⅘": "frac45", - "⅚": "frac56", - "⅝": "frac58", - "⅞": "frac78", - "𝒶": "ascr", - "𝕒": "aopf", - "𝔞": "afr", - "𝔸": "Aopf", - "𝔄": "Afr", - "𝒜": "Ascr", - "ª": "ordf", - "á": "aacute", - "Á": "Aacute", - "à": "agrave", - "À": "Agrave", - "ă": "abreve", - "Ă": "Abreve", - "â": "acirc", - "Â": "Acirc", - "å": "aring", - "Å": "angst", - "ä": "auml", - "Ä": "Auml", - "ã": "atilde", - "Ã": "Atilde", - "ą": "aogon", - "Ą": "Aogon", - "ā": "amacr", - "Ā": "Amacr", - "æ": "aelig", - "Æ": "AElig", - "𝒷": "bscr", - "𝕓": "bopf", - "𝔟": "bfr", - "𝔹": "Bopf", - "ℬ": "Bscr", - "𝔅": "Bfr", - "𝔠": "cfr", - "𝒸": "cscr", - "𝕔": "copf", - "ℭ": "Cfr", - "𝒞": "Cscr", - "ℂ": "Copf", - "ć": "cacute", - "Ć": "Cacute", - "ĉ": "ccirc", - "Ĉ": "Ccirc", - "č": "ccaron", - "Č": "Ccaron", - "ċ": "cdot", - "Ċ": "Cdot", - "ç": "ccedil", - "Ç": "Ccedil", - "℅": "incare", - "𝔡": "dfr", - "ⅆ": "dd", - "𝕕": "dopf", - "𝒹": "dscr", - "𝒟": "Dscr", - "𝔇": "Dfr", - "ⅅ": "DD", - "𝔻": "Dopf", - "ď": "dcaron", - "Ď": "Dcaron", - "đ": "dstrok", - "Đ": "Dstrok", - "ð": "eth", - "Ð": "ETH", - "ⅇ": "ee", - "ℯ": "escr", - "𝔢": "efr", - "𝕖": "eopf", - "ℰ": "Escr", - "𝔈": "Efr", - "𝔼": "Eopf", - "é": "eacute", - "É": "Eacute", - "è": "egrave", - "È": "Egrave", - "ê": "ecirc", - "Ê": "Ecirc", - "ě": "ecaron", - "Ě": "Ecaron", - "ë": "euml", - "Ë": "Euml", - "ė": "edot", - "Ė": "Edot", - "ę": "eogon", - "Ę": "Eogon", - "ē": "emacr", - "Ē": "Emacr", - "𝔣": "ffr", - "𝕗": "fopf", - "𝒻": "fscr", - "𝔉": "Ffr", - "𝔽": "Fopf", - "ℱ": "Fscr", - "ff": "fflig", - "ffi": "ffilig", - "ffl": "ffllig", - "fi": "filig", - fj: "fjlig", - "fl": "fllig", - "ƒ": "fnof", - "ℊ": "gscr", - "𝕘": "gopf", - "𝔤": "gfr", - "𝒢": "Gscr", - "𝔾": "Gopf", - "𝔊": "Gfr", - "ǵ": "gacute", - "ğ": "gbreve", - "Ğ": "Gbreve", - "ĝ": "gcirc", - "Ĝ": "Gcirc", - "ġ": "gdot", - "Ġ": "Gdot", - "Ģ": "Gcedil", - "𝔥": "hfr", - "ℎ": "planckh", - "𝒽": "hscr", - "𝕙": "hopf", - "ℋ": "Hscr", - "ℌ": "Hfr", - "ℍ": "Hopf", - "ĥ": "hcirc", - "Ĥ": "Hcirc", - "ℏ": "hbar", - "ħ": "hstrok", - "Ħ": "Hstrok", - "𝕚": "iopf", - "𝔦": "ifr", - "𝒾": "iscr", - "ⅈ": "ii", - "𝕀": "Iopf", - "ℐ": "Iscr", - "ℑ": "Im", - "í": "iacute", - "Í": "Iacute", - "ì": "igrave", - "Ì": "Igrave", - "î": "icirc", - "Î": "Icirc", - "ï": "iuml", - "Ï": "Iuml", - "ĩ": "itilde", - "Ĩ": "Itilde", - "İ": "Idot", - "į": "iogon", - "Į": "Iogon", - "ī": "imacr", - "Ī": "Imacr", - "ij": "ijlig", - "IJ": "IJlig", - "ı": "imath", - "𝒿": "jscr", - "𝕛": "jopf", - "𝔧": "jfr", - "𝒥": "Jscr", - "𝔍": "Jfr", - "𝕁": "Jopf", - "ĵ": "jcirc", - "Ĵ": "Jcirc", - "ȷ": "jmath", - "𝕜": "kopf", - "𝓀": "kscr", - "𝔨": "kfr", - "𝒦": "Kscr", - "𝕂": "Kopf", - "𝔎": "Kfr", - "ķ": "kcedil", - "Ķ": "Kcedil", - "𝔩": "lfr", - "𝓁": "lscr", - "ℓ": "ell", - "𝕝": "lopf", - "ℒ": "Lscr", - "𝔏": "Lfr", - "𝕃": "Lopf", - "ĺ": "lacute", - "Ĺ": "Lacute", - "ľ": "lcaron", - "Ľ": "Lcaron", - "ļ": "lcedil", - "Ļ": "Lcedil", - "ł": "lstrok", - "Ł": "Lstrok", - "ŀ": "lmidot", - "Ŀ": "Lmidot", - "𝔪": "mfr", - "𝕞": "mopf", - "𝓂": "mscr", - "𝔐": "Mfr", - "𝕄": "Mopf", - "ℳ": "Mscr", - "𝔫": "nfr", - "𝕟": "nopf", - "𝓃": "nscr", - "ℕ": "Nopf", - "𝒩": "Nscr", - "𝔑": "Nfr", - "ń": "nacute", - "Ń": "Nacute", - "ň": "ncaron", - "Ň": "Ncaron", - "ñ": "ntilde", - "Ñ": "Ntilde", - "ņ": "ncedil", - "Ņ": "Ncedil", - "№": "numero", - "ŋ": "eng", - "Ŋ": "ENG", - "𝕠": "oopf", - "𝔬": "ofr", - "ℴ": "oscr", - "𝒪": "Oscr", - "𝔒": "Ofr", - "𝕆": "Oopf", - "º": "ordm", - "ó": "oacute", - "Ó": "Oacute", - "ò": "ograve", - "Ò": "Ograve", - "ô": "ocirc", - "Ô": "Ocirc", - "ö": "ouml", - "Ö": "Ouml", - "ő": "odblac", - "Ő": "Odblac", - "õ": "otilde", - "Õ": "Otilde", - "ø": "oslash", - "Ø": "Oslash", - "ō": "omacr", - "Ō": "Omacr", - "œ": "oelig", - "Œ": "OElig", - "𝔭": "pfr", - "𝓅": "pscr", - "𝕡": "popf", - "ℙ": "Popf", - "𝔓": "Pfr", - "𝒫": "Pscr", - "𝕢": "qopf", - "𝔮": "qfr", - "𝓆": "qscr", - "𝒬": "Qscr", - "𝔔": "Qfr", - "ℚ": "Qopf", - "ĸ": "kgreen", - "𝔯": "rfr", - "𝕣": "ropf", - "𝓇": "rscr", - "ℛ": "Rscr", - "ℜ": "Re", - "ℝ": "Ropf", - "ŕ": "racute", - "Ŕ": "Racute", - "ř": "rcaron", - "Ř": "Rcaron", - "ŗ": "rcedil", - "Ŗ": "Rcedil", - "𝕤": "sopf", - "𝓈": "sscr", - "𝔰": "sfr", - "𝕊": "Sopf", - "𝔖": "Sfr", - "𝒮": "Sscr", - "Ⓢ": "oS", - "ś": "sacute", - "Ś": "Sacute", - "ŝ": "scirc", - "Ŝ": "Scirc", - "š": "scaron", - "Š": "Scaron", - "ş": "scedil", - "Ş": "Scedil", - "ß": "szlig", - "𝔱": "tfr", - "𝓉": "tscr", - "𝕥": "topf", - "𝒯": "Tscr", - "𝔗": "Tfr", - "𝕋": "Topf", - "ť": "tcaron", - "Ť": "Tcaron", - "ţ": "tcedil", - "Ţ": "Tcedil", - "™": "trade", - "ŧ": "tstrok", - "Ŧ": "Tstrok", - "𝓊": "uscr", - "𝕦": "uopf", - "𝔲": "ufr", - "𝕌": "Uopf", - "𝔘": "Ufr", - "𝒰": "Uscr", - "ú": "uacute", - "Ú": "Uacute", - "ù": "ugrave", - "Ù": "Ugrave", - "ŭ": "ubreve", - "Ŭ": "Ubreve", - "û": "ucirc", - "Û": "Ucirc", - "ů": "uring", - "Ů": "Uring", - "ü": "uuml", - "Ü": "Uuml", - "ű": "udblac", - "Ű": "Udblac", - "ũ": "utilde", - "Ũ": "Utilde", - "ų": "uogon", - "Ų": "Uogon", - "ū": "umacr", - "Ū": "Umacr", - "𝔳": "vfr", - "𝕧": "vopf", - "𝓋": "vscr", - "𝔙": "Vfr", - "𝕍": "Vopf", - "𝒱": "Vscr", - "𝕨": "wopf", - "𝓌": "wscr", - "𝔴": "wfr", - "𝒲": "Wscr", - "𝕎": "Wopf", - "𝔚": "Wfr", - "ŵ": "wcirc", - "Ŵ": "Wcirc", - "𝔵": "xfr", - "𝓍": "xscr", - "𝕩": "xopf", - "𝕏": "Xopf", - "𝔛": "Xfr", - "𝒳": "Xscr", - "𝔶": "yfr", - "𝓎": "yscr", - "𝕪": "yopf", - "𝒴": "Yscr", - "𝔜": "Yfr", - "𝕐": "Yopf", - "ý": "yacute", - "Ý": "Yacute", - "ŷ": "ycirc", - "Ŷ": "Ycirc", - "ÿ": "yuml", - "Ÿ": "Yuml", - "𝓏": "zscr", - "𝔷": "zfr", - "𝕫": "zopf", - "ℨ": "Zfr", - "ℤ": "Zopf", - "𝒵": "Zscr", - "ź": "zacute", - "Ź": "Zacute", - "ž": "zcaron", - "Ž": "Zcaron", - "ż": "zdot", - "Ż": "Zdot", - "Ƶ": "imped", - "þ": "thorn", - "Þ": "THORN", - "ʼn": "napos", - "α": "alpha", - "Α": "Alpha", - "β": "beta", - "Β": "Beta", - "γ": "gamma", - "Γ": "Gamma", - "δ": "delta", - "Δ": "Delta", - "ε": "epsi", - "ϵ": "epsiv", - "Ε": "Epsilon", - "ϝ": "gammad", - "Ϝ": "Gammad", - "ζ": "zeta", - "Ζ": "Zeta", - "η": "eta", - "Η": "Eta", - "θ": "theta", - "ϑ": "thetav", - "Θ": "Theta", - "ι": "iota", - "Ι": "Iota", - "κ": "kappa", - "ϰ": "kappav", - "Κ": "Kappa", - "λ": "lambda", - "Λ": "Lambda", - "μ": "mu", - "µ": "micro", - "Μ": "Mu", - "ν": "nu", - "Ν": "Nu", - "ξ": "xi", - "Ξ": "Xi", - "ο": "omicron", - "Ο": "Omicron", - "π": "pi", - "ϖ": "piv", - "Π": "Pi", - "ρ": "rho", - "ϱ": "rhov", - "Ρ": "Rho", - "σ": "sigma", - "Σ": "Sigma", - "ς": "sigmaf", - "τ": "tau", - "Τ": "Tau", - "υ": "upsi", - "Υ": "Upsilon", - "ϒ": "Upsi", - "φ": "phi", - "ϕ": "phiv", - "Φ": "Phi", - "χ": "chi", - "Χ": "Chi", - "ψ": "psi", - "Ψ": "Psi", - "ω": "omega", - "Ω": "ohm", - "а": "acy", - "А": "Acy", - "б": "bcy", - "Б": "Bcy", - "в": "vcy", - "В": "Vcy", - "г": "gcy", - "Г": "Gcy", - "ѓ": "gjcy", - "Ѓ": "GJcy", - "д": "dcy", - "Д": "Dcy", - "ђ": "djcy", - "Ђ": "DJcy", - "е": "iecy", - "Е": "IEcy", - "ё": "iocy", - "Ё": "IOcy", - "є": "jukcy", - "Є": "Jukcy", - "ж": "zhcy", - "Ж": "ZHcy", - "з": "zcy", - "З": "Zcy", - "ѕ": "dscy", - "Ѕ": "DScy", - "и": "icy", - "И": "Icy", - "і": "iukcy", - "І": "Iukcy", - "ї": "yicy", - "Ї": "YIcy", - "й": "jcy", - "Й": "Jcy", - "ј": "jsercy", - "Ј": "Jsercy", - "к": "kcy", - "К": "Kcy", - "ќ": "kjcy", - "Ќ": "KJcy", - "л": "lcy", - "Л": "Lcy", - "љ": "ljcy", - "Љ": "LJcy", - "м": "mcy", - "М": "Mcy", - "н": "ncy", - "Н": "Ncy", - "њ": "njcy", - "Њ": "NJcy", - "о": "ocy", - "О": "Ocy", - "п": "pcy", - "П": "Pcy", - "р": "rcy", - "Р": "Rcy", - "с": "scy", - "С": "Scy", - "т": "tcy", - "Т": "Tcy", - "ћ": "tshcy", - "Ћ": "TSHcy", - "у": "ucy", - "У": "Ucy", - "ў": "ubrcy", - "Ў": "Ubrcy", - "ф": "fcy", - "Ф": "Fcy", - "х": "khcy", - "Х": "KHcy", - "ц": "tscy", - "Ц": "TScy", - "ч": "chcy", - "Ч": "CHcy", - "џ": "dzcy", - "Џ": "DZcy", - "ш": "shcy", - "Ш": "SHcy", - "щ": "shchcy", - "Щ": "SHCHcy", - "ъ": "hardcy", - "Ъ": "HARDcy", - "ы": "ycy", - "Ы": "Ycy", - "ь": "softcy", - "Ь": "SOFTcy", - "э": "ecy", - "Э": "Ecy", - "ю": "yucy", - "Ю": "YUcy", - "я": "yacy", - "Я": "YAcy", - "ℵ": "aleph", - "ℶ": "beth", - "ℷ": "gimel", - "ℸ": "daleth" - }, i = /["&'<>`]/g, n = {'"': """, "&": "&", "'": "'", "<": "<", ">": ">", "`": "`"}, - p = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/, - d = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/, - g = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g, - m = { - aacute: "á", - Aacute: "Á", - abreve: "ă", - Abreve: "Ă", - ac: "∾", - acd: "∿", - acE: "∾̳", - acirc: "â", - Acirc: "Â", - acute: "´", - acy: "а", - Acy: "А", - aelig: "æ", - AElig: "Æ", - af: "⁡", - afr: "𝔞", - Afr: "𝔄", - agrave: "à", - Agrave: "À", - alefsym: "ℵ", - aleph: "ℵ", - alpha: "α", - Alpha: "Α", - amacr: "ā", - Amacr: "Ā", - amalg: "⨿", - amp: "&", - AMP: "&", - and: "∧", - And: "⩓", - andand: "⩕", - andd: "⩜", - andslope: "⩘", - andv: "⩚", - ang: "∠", - ange: "⦤", - angle: "∠", - angmsd: "∡", - angmsdaa: "⦨", - angmsdab: "⦩", - angmsdac: "⦪", - angmsdad: "⦫", - angmsdae: "⦬", - angmsdaf: "⦭", - angmsdag: "⦮", - angmsdah: "⦯", - angrt: "∟", - angrtvb: "⊾", - angrtvbd: "⦝", - angsph: "∢", - angst: "Å", - angzarr: "⍼", - aogon: "ą", - Aogon: "Ą", - aopf: "𝕒", - Aopf: "𝔸", - ap: "≈", - apacir: "⩯", - ape: "≊", - apE: "⩰", - apid: "≋", - apos: "'", - ApplyFunction: "⁡", - approx: "≈", - approxeq: "≊", - aring: "å", - Aring: "Å", - ascr: "𝒶", - Ascr: "𝒜", - Assign: "≔", - ast: "*", - asymp: "≈", - asympeq: "≍", - atilde: "ã", - Atilde: "Ã", - auml: "ä", - Auml: "Ä", - awconint: "∳", - awint: "⨑", - backcong: "≌", - backepsilon: "϶", - backprime: "‵", - backsim: "∽", - backsimeq: "⋍", - Backslash: "∖", - Barv: "⫧", - barvee: "⊽", - barwed: "⌅", - Barwed: "⌆", - barwedge: "⌅", - bbrk: "⎵", - bbrktbrk: "⎶", - bcong: "≌", - bcy: "б", - Bcy: "Б", - bdquo: "„", - becaus: "∵", - because: "∵", - Because: "∵", - bemptyv: "⦰", - bepsi: "϶", - bernou: "ℬ", - Bernoullis: "ℬ", - beta: "β", - Beta: "Β", - beth: "ℶ", - between: "≬", - bfr: "𝔟", - Bfr: "𝔅", - bigcap: "⋂", - bigcirc: "◯", - bigcup: "⋃", - bigodot: "⨀", - bigoplus: "⨁", - bigotimes: "⨂", - bigsqcup: "⨆", - bigstar: "★", - bigtriangledown: "▽", - bigtriangleup: "△", - biguplus: "⨄", - bigvee: "⋁", - bigwedge: "⋀", - bkarow: "⤍", - blacklozenge: "⧫", - blacksquare: "▪", - blacktriangle: "▴", - blacktriangledown: "▾", - blacktriangleleft: "◂", - blacktriangleright: "▸", - blank: "␣", - blk12: "▒", - blk14: "░", - blk34: "▓", - block: "█", - bne: "=⃥", - bnequiv: "≡⃥", - bnot: "⌐", - bNot: "⫭", - bopf: "𝕓", - Bopf: "𝔹", - bot: "⊥", - bottom: "⊥", - bowtie: "⋈", - boxbox: "⧉", - boxdl: "┐", - boxdL: "╕", - boxDl: "╖", - boxDL: "╗", - boxdr: "┌", - boxdR: "╒", - boxDr: "╓", - boxDR: "╔", - boxh: "─", - boxH: "═", - boxhd: "┬", - boxhD: "╥", - boxHd: "╤", - boxHD: "╦", - boxhu: "┴", - boxhU: "╨", - boxHu: "╧", - boxHU: "╩", - boxminus: "⊟", - boxplus: "⊞", - boxtimes: "⊠", - boxul: "┘", - boxuL: "╛", - boxUl: "╜", - boxUL: "╝", - boxur: "└", - boxuR: "╘", - boxUr: "╙", - boxUR: "╚", - boxv: "│", - boxV: "║", - boxvh: "┼", - boxvH: "╪", - boxVh: "╫", - boxVH: "╬", - boxvl: "┤", - boxvL: "╡", - boxVl: "╢", - boxVL: "╣", - boxvr: "├", - boxvR: "╞", - boxVr: "╟", - boxVR: "╠", - bprime: "‵", - breve: "˘", - Breve: "˘", - brvbar: "¦", - bscr: "𝒷", - Bscr: "ℬ", - bsemi: "⁏", - bsim: "∽", - bsime: "⋍", - bsol: "\\", - bsolb: "⧅", - bsolhsub: "⟈", - bull: "•", - bullet: "•", - bump: "≎", - bumpe: "≏", - bumpE: "⪮", - bumpeq: "≏", - Bumpeq: "≎", - cacute: "ć", - Cacute: "Ć", - cap: "∩", - Cap: "⋒", - capand: "⩄", - capbrcup: "⩉", - capcap: "⩋", - capcup: "⩇", - capdot: "⩀", - CapitalDifferentialD: "ⅅ", - caps: "∩︀", - caret: "⁁", - caron: "ˇ", - Cayleys: "ℭ", - ccaps: "⩍", - ccaron: "č", - Ccaron: "Č", - ccedil: "ç", - Ccedil: "Ç", - ccirc: "ĉ", - Ccirc: "Ĉ", - Cconint: "∰", - ccups: "⩌", - ccupssm: "⩐", - cdot: "ċ", - Cdot: "Ċ", - cedil: "¸", - Cedilla: "¸", - cemptyv: "⦲", - cent: "¢", - centerdot: "·", - CenterDot: "·", - cfr: "𝔠", - Cfr: "ℭ", - chcy: "ч", - CHcy: "Ч", - check: "✓", - checkmark: "✓", - chi: "χ", - Chi: "Χ", - cir: "○", - circ: "ˆ", - circeq: "≗", - circlearrowleft: "↺", - circlearrowright: "↻", - circledast: "⊛", - circledcirc: "⊚", - circleddash: "⊝", - CircleDot: "⊙", - circledR: "®", - circledS: "Ⓢ", - CircleMinus: "⊖", - CirclePlus: "⊕", - CircleTimes: "⊗", - cire: "≗", - cirE: "⧃", - cirfnint: "⨐", - cirmid: "⫯", - cirscir: "⧂", - ClockwiseContourIntegral: "∲", - CloseCurlyDoubleQuote: "”", - CloseCurlyQuote: "’", - clubs: "♣", - clubsuit: "♣", - colon: ":", - Colon: "∷", - colone: "≔", - Colone: "⩴", - coloneq: "≔", - comma: ",", - commat: "@", - comp: "∁", - compfn: "∘", - complement: "∁", - complexes: "ℂ", - cong: "≅", - congdot: "⩭", - Congruent: "≡", - conint: "∮", - Conint: "∯", - ContourIntegral: "∮", - copf: "𝕔", - Copf: "ℂ", - coprod: "∐", - Coproduct: "∐", - copy: "©", - COPY: "©", - copysr: "℗", - CounterClockwiseContourIntegral: "∳", - crarr: "↵", - cross: "✗", - Cross: "⨯", - cscr: "𝒸", - Cscr: "𝒞", - csub: "⫏", - csube: "⫑", - csup: "⫐", - csupe: "⫒", - ctdot: "⋯", - cudarrl: "⤸", - cudarrr: "⤵", - cuepr: "⋞", - cuesc: "⋟", - cularr: "↶", - cularrp: "⤽", - cup: "∪", - Cup: "⋓", - cupbrcap: "⩈", - cupcap: "⩆", - CupCap: "≍", - cupcup: "⩊", - cupdot: "⊍", - cupor: "⩅", - cups: "∪︀", - curarr: "↷", - curarrm: "⤼", - curlyeqprec: "⋞", - curlyeqsucc: "⋟", - curlyvee: "⋎", - curlywedge: "⋏", - curren: "¤", - curvearrowleft: "↶", - curvearrowright: "↷", - cuvee: "⋎", - cuwed: "⋏", - cwconint: "∲", - cwint: "∱", - cylcty: "⌭", - dagger: "†", - Dagger: "‡", - daleth: "ℸ", - darr: "↓", - dArr: "⇓", - Darr: "↡", - dash: "‐", - dashv: "⊣", - Dashv: "⫤", - dbkarow: "⤏", - dblac: "˝", - dcaron: "ď", - Dcaron: "Ď", - dcy: "д", - Dcy: "Д", - dd: "ⅆ", - DD: "ⅅ", - ddagger: "‡", - ddarr: "⇊", - DDotrahd: "⤑", - ddotseq: "⩷", - deg: "°", - Del: "∇", - delta: "δ", - Delta: "Δ", - demptyv: "⦱", - dfisht: "⥿", - dfr: "𝔡", - Dfr: "𝔇", - dHar: "⥥", - dharl: "⇃", - dharr: "⇂", - DiacriticalAcute: "´", - DiacriticalDot: "˙", - DiacriticalDoubleAcute: "˝", - DiacriticalGrave: "`", - DiacriticalTilde: "˜", - diam: "⋄", - diamond: "⋄", - Diamond: "⋄", - diamondsuit: "♦", - diams: "♦", - die: "¨", - DifferentialD: "ⅆ", - digamma: "ϝ", - disin: "⋲", - div: "÷", - divide: "÷", - divideontimes: "⋇", - divonx: "⋇", - djcy: "ђ", - DJcy: "Ђ", - dlcorn: "⌞", - dlcrop: "⌍", - dollar: "$", - dopf: "𝕕", - Dopf: "𝔻", - dot: "˙", - Dot: "¨", - DotDot: "⃜", - doteq: "≐", - doteqdot: "≑", - DotEqual: "≐", - dotminus: "∸", - dotplus: "∔", - dotsquare: "⊡", - doublebarwedge: "⌆", - DoubleContourIntegral: "∯", - DoubleDot: "¨", - DoubleDownArrow: "⇓", - DoubleLeftArrow: "⇐", - DoubleLeftRightArrow: "⇔", - DoubleLeftTee: "⫤", - DoubleLongLeftArrow: "⟸", - DoubleLongLeftRightArrow: "⟺", - DoubleLongRightArrow: "⟹", - DoubleRightArrow: "⇒", - DoubleRightTee: "⊨", - DoubleUpArrow: "⇑", - DoubleUpDownArrow: "⇕", - DoubleVerticalBar: "∥", - downarrow: "↓", - Downarrow: "⇓", - DownArrow: "↓", - DownArrowBar: "⤓", - DownArrowUpArrow: "⇵", - DownBreve: "̑", - downdownarrows: "⇊", - downharpoonleft: "⇃", - downharpoonright: "⇂", - DownLeftRightVector: "⥐", - DownLeftTeeVector: "⥞", - DownLeftVector: "↽", - DownLeftVectorBar: "⥖", - DownRightTeeVector: "⥟", - DownRightVector: "⇁", - DownRightVectorBar: "⥗", - DownTee: "⊤", - DownTeeArrow: "↧", - drbkarow: "⤐", - drcorn: "⌟", - drcrop: "⌌", - dscr: "𝒹", - Dscr: "𝒟", - dscy: "ѕ", - DScy: "Ѕ", - dsol: "⧶", - dstrok: "đ", - Dstrok: "Đ", - dtdot: "⋱", - dtri: "▿", - dtrif: "▾", - duarr: "⇵", - duhar: "⥯", - dwangle: "⦦", - dzcy: "џ", - DZcy: "Џ", - dzigrarr: "⟿", - eacute: "é", - Eacute: "É", - easter: "⩮", - ecaron: "ě", - Ecaron: "Ě", - ecir: "≖", - ecirc: "ê", - Ecirc: "Ê", - ecolon: "≕", - ecy: "э", - Ecy: "Э", - eDDot: "⩷", - edot: "ė", - eDot: "≑", - Edot: "Ė", - ee: "ⅇ", - efDot: "≒", - efr: "𝔢", - Efr: "𝔈", - eg: "⪚", - egrave: "è", - Egrave: "È", - egs: "⪖", - egsdot: "⪘", - el: "⪙", - Element: "∈", - elinters: "⏧", - ell: "ℓ", - els: "⪕", - elsdot: "⪗", - emacr: "ē", - Emacr: "Ē", - empty: "∅", - emptyset: "∅", - EmptySmallSquare: "◻", - emptyv: "∅", - EmptyVerySmallSquare: "▫", - emsp: " ", - emsp13: " ", - emsp14: " ", - eng: "ŋ", - ENG: "Ŋ", - ensp: " ", - eogon: "ę", - Eogon: "Ę", - eopf: "𝕖", - Eopf: "𝔼", - epar: "⋕", - eparsl: "⧣", - eplus: "⩱", - epsi: "ε", - epsilon: "ε", - Epsilon: "Ε", - epsiv: "ϵ", - eqcirc: "≖", - eqcolon: "≕", - eqsim: "≂", - eqslantgtr: "⪖", - eqslantless: "⪕", - Equal: "⩵", - equals: "=", - EqualTilde: "≂", - equest: "≟", - Equilibrium: "⇌", - equiv: "≡", - equivDD: "⩸", - eqvparsl: "⧥", - erarr: "⥱", - erDot: "≓", - escr: "ℯ", - Escr: "ℰ", - esdot: "≐", - esim: "≂", - Esim: "⩳", - eta: "η", - Eta: "Η", - eth: "ð", - ETH: "Ð", - euml: "ë", - Euml: "Ë", - euro: "€", - excl: "!", - exist: "∃", - Exists: "∃", - expectation: "ℰ", - exponentiale: "ⅇ", - ExponentialE: "ⅇ", - fallingdotseq: "≒", - fcy: "ф", - Fcy: "Ф", - female: "♀", - ffilig: "ffi", - fflig: "ff", - ffllig: "ffl", - ffr: "𝔣", - Ffr: "𝔉", - filig: "fi", - FilledSmallSquare: "◼", - FilledVerySmallSquare: "▪", - fjlig: "fj", - flat: "♭", - fllig: "fl", - fltns: "▱", - fnof: "ƒ", - fopf: "𝕗", - Fopf: "𝔽", - forall: "∀", - ForAll: "∀", - fork: "⋔", - forkv: "⫙", - Fouriertrf: "ℱ", - fpartint: "⨍", - frac12: "½", - frac13: "⅓", - frac14: "¼", - frac15: "⅕", - frac16: "⅙", - frac18: "⅛", - frac23: "⅔", - frac25: "⅖", - frac34: "¾", - frac35: "⅗", - frac38: "⅜", - frac45: "⅘", - frac56: "⅚", - frac58: "⅝", - frac78: "⅞", - frasl: "⁄", - frown: "⌢", - fscr: "𝒻", - Fscr: "ℱ", - gacute: "ǵ", - gamma: "γ", - Gamma: "Γ", - gammad: "ϝ", - Gammad: "Ϝ", - gap: "⪆", - gbreve: "ğ", - Gbreve: "Ğ", - Gcedil: "Ģ", - gcirc: "ĝ", - Gcirc: "Ĝ", - gcy: "г", - Gcy: "Г", - gdot: "ġ", - Gdot: "Ġ", - ge: "≥", - gE: "≧", - gel: "⋛", - gEl: "⪌", - geq: "≥", - geqq: "≧", - geqslant: "⩾", - ges: "⩾", - gescc: "⪩", - gesdot: "⪀", - gesdoto: "⪂", - gesdotol: "⪄", - gesl: "⋛︀", - gesles: "⪔", - gfr: "𝔤", - Gfr: "𝔊", - gg: "≫", - Gg: "⋙", - ggg: "⋙", - gimel: "ℷ", - gjcy: "ѓ", - GJcy: "Ѓ", - gl: "≷", - gla: "⪥", - glE: "⪒", - glj: "⪤", - gnap: "⪊", - gnapprox: "⪊", - gne: "⪈", - gnE: "≩", - gneq: "⪈", - gneqq: "≩", - gnsim: "⋧", - gopf: "𝕘", - Gopf: "𝔾", - grave: "`", - GreaterEqual: "≥", - GreaterEqualLess: "⋛", - GreaterFullEqual: "≧", - GreaterGreater: "⪢", - GreaterLess: "≷", - GreaterSlantEqual: "⩾", - GreaterTilde: "≳", - gscr: "ℊ", - Gscr: "𝒢", - gsim: "≳", - gsime: "⪎", - gsiml: "⪐", - gt: ">", - Gt: "≫", - GT: ">", - gtcc: "⪧", - gtcir: "⩺", - gtdot: "⋗", - gtlPar: "⦕", - gtquest: "⩼", - gtrapprox: "⪆", - gtrarr: "⥸", - gtrdot: "⋗", - gtreqless: "⋛", - gtreqqless: "⪌", - gtrless: "≷", - gtrsim: "≳", - gvertneqq: "≩︀", - gvnE: "≩︀", - Hacek: "ˇ", - hairsp: " ", - half: "½", - hamilt: "ℋ", - hardcy: "ъ", - HARDcy: "Ъ", - harr: "↔", - hArr: "⇔", - harrcir: "⥈", - harrw: "↭", - Hat: "^", - hbar: "ℏ", - hcirc: "ĥ", - Hcirc: "Ĥ", - hearts: "♥", - heartsuit: "♥", - hellip: "…", - hercon: "⊹", - hfr: "𝔥", - Hfr: "ℌ", - HilbertSpace: "ℋ", - hksearow: "⤥", - hkswarow: "⤦", - hoarr: "⇿", - homtht: "∻", - hookleftarrow: "↩", - hookrightarrow: "↪", - hopf: "𝕙", - Hopf: "ℍ", - horbar: "―", - HorizontalLine: "─", - hscr: "𝒽", - Hscr: "ℋ", - hslash: "ℏ", - hstrok: "ħ", - Hstrok: "Ħ", - HumpDownHump: "≎", - HumpEqual: "≏", - hybull: "⁃", - hyphen: "‐", - iacute: "í", - Iacute: "Í", - ic: "⁣", - icirc: "î", - Icirc: "Î", - icy: "и", - Icy: "И", - Idot: "İ", - iecy: "е", - IEcy: "Е", - iexcl: "¡", - iff: "⇔", - ifr: "𝔦", - Ifr: "ℑ", - igrave: "ì", - Igrave: "Ì", - ii: "ⅈ", - iiiint: "⨌", - iiint: "∭", - iinfin: "⧜", - iiota: "℩", - ijlig: "ij", - IJlig: "IJ", - Im: "ℑ", - imacr: "ī", - Imacr: "Ī", - image: "ℑ", - ImaginaryI: "ⅈ", - imagline: "ℐ", - imagpart: "ℑ", - imath: "ı", - imof: "⊷", - imped: "Ƶ", - Implies: "⇒", - in: "∈", - incare: "℅", - infin: "∞", - infintie: "⧝", - inodot: "ı", - int: "∫", - Int: "∬", - intcal: "⊺", - integers: "ℤ", - Integral: "∫", - intercal: "⊺", - Intersection: "⋂", - intlarhk: "⨗", - intprod: "⨼", - InvisibleComma: "⁣", - InvisibleTimes: "⁢", - iocy: "ё", - IOcy: "Ё", - iogon: "į", - Iogon: "Į", - iopf: "𝕚", - Iopf: "𝕀", - iota: "ι", - Iota: "Ι", - iprod: "⨼", - iquest: "¿", - iscr: "𝒾", - Iscr: "ℐ", - isin: "∈", - isindot: "⋵", - isinE: "⋹", - isins: "⋴", - isinsv: "⋳", - isinv: "∈", - it: "⁢", - itilde: "ĩ", - Itilde: "Ĩ", - iukcy: "і", - Iukcy: "І", - iuml: "ï", - Iuml: "Ï", - jcirc: "ĵ", - Jcirc: "Ĵ", - jcy: "й", - Jcy: "Й", - jfr: "𝔧", - Jfr: "𝔍", - jmath: "ȷ", - jopf: "𝕛", - Jopf: "𝕁", - jscr: "𝒿", - Jscr: "𝒥", - jsercy: "ј", - Jsercy: "Ј", - jukcy: "є", - Jukcy: "Є", - kappa: "κ", - Kappa: "Κ", - kappav: "ϰ", - kcedil: "ķ", - Kcedil: "Ķ", - kcy: "к", - Kcy: "К", - kfr: "𝔨", - Kfr: "𝔎", - kgreen: "ĸ", - khcy: "х", - KHcy: "Х", - kjcy: "ќ", - KJcy: "Ќ", - kopf: "𝕜", - Kopf: "𝕂", - kscr: "𝓀", - Kscr: "𝒦", - lAarr: "⇚", - lacute: "ĺ", - Lacute: "Ĺ", - laemptyv: "⦴", - lagran: "ℒ", - lambda: "λ", - Lambda: "Λ", - lang: "⟨", - Lang: "⟪", - langd: "⦑", - langle: "⟨", - lap: "⪅", - Laplacetrf: "ℒ", - laquo: "«", - larr: "←", - lArr: "⇐", - Larr: "↞", - larrb: "⇤", - larrbfs: "⤟", - larrfs: "⤝", - larrhk: "↩", - larrlp: "↫", - larrpl: "⤹", - larrsim: "⥳", - larrtl: "↢", - lat: "⪫", - latail: "⤙", - lAtail: "⤛", - late: "⪭", - lates: "⪭︀", - lbarr: "⤌", - lBarr: "⤎", - lbbrk: "❲", - lbrace: "{", - lbrack: "[", - lbrke: "⦋", - lbrksld: "⦏", - lbrkslu: "⦍", - lcaron: "ľ", - Lcaron: "Ľ", - lcedil: "ļ", - Lcedil: "Ļ", - lceil: "⌈", - lcub: "{", - lcy: "л", - Lcy: "Л", - ldca: "⤶", - ldquo: "“", - ldquor: "„", - ldrdhar: "⥧", - ldrushar: "⥋", - ldsh: "↲", - le: "≤", - lE: "≦", - LeftAngleBracket: "⟨", - leftarrow: "←", - Leftarrow: "⇐", - LeftArrow: "←", - LeftArrowBar: "⇤", - LeftArrowRightArrow: "⇆", - leftarrowtail: "↢", - LeftCeiling: "⌈", - LeftDoubleBracket: "⟦", - LeftDownTeeVector: "⥡", - LeftDownVector: "⇃", - LeftDownVectorBar: "⥙", - LeftFloor: "⌊", - leftharpoondown: "↽", - leftharpoonup: "↼", - leftleftarrows: "⇇", - leftrightarrow: "↔", - Leftrightarrow: "⇔", - LeftRightArrow: "↔", - leftrightarrows: "⇆", - leftrightharpoons: "⇋", - leftrightsquigarrow: "↭", - LeftRightVector: "⥎", - LeftTee: "⊣", - LeftTeeArrow: "↤", - LeftTeeVector: "⥚", - leftthreetimes: "⋋", - LeftTriangle: "⊲", - LeftTriangleBar: "⧏", - LeftTriangleEqual: "⊴", - LeftUpDownVector: "⥑", - LeftUpTeeVector: "⥠", - LeftUpVector: "↿", - LeftUpVectorBar: "⥘", - LeftVector: "↼", - LeftVectorBar: "⥒", - leg: "⋚", - lEg: "⪋", - leq: "≤", - leqq: "≦", - leqslant: "⩽", - les: "⩽", - lescc: "⪨", - lesdot: "⩿", - lesdoto: "⪁", - lesdotor: "⪃", - lesg: "⋚︀", - lesges: "⪓", - lessapprox: "⪅", - lessdot: "⋖", - lesseqgtr: "⋚", - lesseqqgtr: "⪋", - LessEqualGreater: "⋚", - LessFullEqual: "≦", - LessGreater: "≶", - lessgtr: "≶", - LessLess: "⪡", - lesssim: "≲", - LessSlantEqual: "⩽", - LessTilde: "≲", - lfisht: "⥼", - lfloor: "⌊", - lfr: "𝔩", - Lfr: "𝔏", - lg: "≶", - lgE: "⪑", - lHar: "⥢", - lhard: "↽", - lharu: "↼", - lharul: "⥪", - lhblk: "▄", - ljcy: "љ", - LJcy: "Љ", - ll: "≪", - Ll: "⋘", - llarr: "⇇", - llcorner: "⌞", - Lleftarrow: "⇚", - llhard: "⥫", - lltri: "◺", - lmidot: "ŀ", - Lmidot: "Ŀ", - lmoust: "⎰", - lmoustache: "⎰", - lnap: "⪉", - lnapprox: "⪉", - lne: "⪇", - lnE: "≨", - lneq: "⪇", - lneqq: "≨", - lnsim: "⋦", - loang: "⟬", - loarr: "⇽", - lobrk: "⟦", - longleftarrow: "⟵", - Longleftarrow: "⟸", - LongLeftArrow: "⟵", - longleftrightarrow: "⟷", - Longleftrightarrow: "⟺", - LongLeftRightArrow: "⟷", - longmapsto: "⟼", - longrightarrow: "⟶", - Longrightarrow: "⟹", - LongRightArrow: "⟶", - looparrowleft: "↫", - looparrowright: "↬", - lopar: "⦅", - lopf: "𝕝", - Lopf: "𝕃", - loplus: "⨭", - lotimes: "⨴", - lowast: "∗", - lowbar: "_", - LowerLeftArrow: "↙", - LowerRightArrow: "↘", - loz: "◊", - lozenge: "◊", - lozf: "⧫", - lpar: "(", - lparlt: "⦓", - lrarr: "⇆", - lrcorner: "⌟", - lrhar: "⇋", - lrhard: "⥭", - lrm: "‎", - lrtri: "⊿", - lsaquo: "‹", - lscr: "𝓁", - Lscr: "ℒ", - lsh: "↰", - Lsh: "↰", - lsim: "≲", - lsime: "⪍", - lsimg: "⪏", - lsqb: "[", - lsquo: "‘", - lsquor: "‚", - lstrok: "ł", - Lstrok: "Ł", - lt: "<", - Lt: "≪", - LT: "<", - ltcc: "⪦", - ltcir: "⩹", - ltdot: "⋖", - lthree: "⋋", - ltimes: "⋉", - ltlarr: "⥶", - ltquest: "⩻", - ltri: "◃", - ltrie: "⊴", - ltrif: "◂", - ltrPar: "⦖", - lurdshar: "⥊", - luruhar: "⥦", - lvertneqq: "≨︀", - lvnE: "≨︀", - macr: "¯", - male: "♂", - malt: "✠", - maltese: "✠", - map: "↦", - Map: "⤅", - mapsto: "↦", - mapstodown: "↧", - mapstoleft: "↤", - mapstoup: "↥", - marker: "▮", - mcomma: "⨩", - mcy: "м", - Mcy: "М", - mdash: "—", - mDDot: "∺", - measuredangle: "∡", - MediumSpace: " ", - Mellintrf: "ℳ", - mfr: "𝔪", - Mfr: "𝔐", - mho: "℧", - micro: "µ", - mid: "∣", - midast: "*", - midcir: "⫰", - middot: "·", - minus: "−", - minusb: "⊟", - minusd: "∸", - minusdu: "⨪", - MinusPlus: "∓", - mlcp: "⫛", - mldr: "…", - mnplus: "∓", - models: "⊧", - mopf: "𝕞", - Mopf: "𝕄", - mp: "∓", - mscr: "𝓂", - Mscr: "ℳ", - mstpos: "∾", - mu: "μ", - Mu: "Μ", - multimap: "⊸", - mumap: "⊸", - nabla: "∇", - nacute: "ń", - Nacute: "Ń", - nang: "∠⃒", - nap: "≉", - napE: "⩰̸", - napid: "≋̸", - napos: "ʼn", - napprox: "≉", - natur: "♮", - natural: "♮", - naturals: "ℕ", - nbsp: " ", - nbump: "≎̸", - nbumpe: "≏̸", - ncap: "⩃", - ncaron: "ň", - Ncaron: "Ň", - ncedil: "ņ", - Ncedil: "Ņ", - ncong: "≇", - ncongdot: "⩭̸", - ncup: "⩂", - ncy: "н", - Ncy: "Н", - ndash: "–", - ne: "≠", - nearhk: "⤤", - nearr: "↗", - neArr: "⇗", - nearrow: "↗", - nedot: "≐̸", - NegativeMediumSpace: "​", - NegativeThickSpace: "​", - NegativeThinSpace: "​", - NegativeVeryThinSpace: "​", - nequiv: "≢", - nesear: "⤨", - nesim: "≂̸", - NestedGreaterGreater: "≫", - NestedLessLess: "≪", - NewLine: "\n", - nexist: "∄", - nexists: "∄", - nfr: "𝔫", - Nfr: "𝔑", - nge: "≱", - ngE: "≧̸", - ngeq: "≱", - ngeqq: "≧̸", - ngeqslant: "⩾̸", - nges: "⩾̸", - nGg: "⋙̸", - ngsim: "≵", - ngt: "≯", - nGt: "≫⃒", - ngtr: "≯", - nGtv: "≫̸", - nharr: "↮", - nhArr: "⇎", - nhpar: "⫲", - ni: "∋", - nis: "⋼", - nisd: "⋺", - niv: "∋", - njcy: "њ", - NJcy: "Њ", - nlarr: "↚", - nlArr: "⇍", - nldr: "‥", - nle: "≰", - nlE: "≦̸", - nleftarrow: "↚", - nLeftarrow: "⇍", - nleftrightarrow: "↮", - nLeftrightarrow: "⇎", - nleq: "≰", - nleqq: "≦̸", - nleqslant: "⩽̸", - nles: "⩽̸", - nless: "≮", - nLl: "⋘̸", - nlsim: "≴", - nlt: "≮", - nLt: "≪⃒", - nltri: "⋪", - nltrie: "⋬", - nLtv: "≪̸", - nmid: "∤", - NoBreak: "⁠", - NonBreakingSpace: " ", - nopf: "𝕟", - Nopf: "ℕ", - not: "¬", - Not: "⫬", - NotCongruent: "≢", - NotCupCap: "≭", - NotDoubleVerticalBar: "∦", - NotElement: "∉", - NotEqual: "≠", - NotEqualTilde: "≂̸", - NotExists: "∄", - NotGreater: "≯", - NotGreaterEqual: "≱", - NotGreaterFullEqual: "≧̸", - NotGreaterGreater: "≫̸", - NotGreaterLess: "≹", - NotGreaterSlantEqual: "⩾̸", - NotGreaterTilde: "≵", - NotHumpDownHump: "≎̸", - NotHumpEqual: "≏̸", - notin: "∉", - notindot: "⋵̸", - notinE: "⋹̸", - notinva: "∉", - notinvb: "⋷", - notinvc: "⋶", - NotLeftTriangle: "⋪", - NotLeftTriangleBar: "⧏̸", - NotLeftTriangleEqual: "⋬", - NotLess: "≮", - NotLessEqual: "≰", - NotLessGreater: "≸", - NotLessLess: "≪̸", - NotLessSlantEqual: "⩽̸", - NotLessTilde: "≴", - NotNestedGreaterGreater: "⪢̸", - NotNestedLessLess: "⪡̸", - notni: "∌", - notniva: "∌", - notnivb: "⋾", - notnivc: "⋽", - NotPrecedes: "⊀", - NotPrecedesEqual: "⪯̸", - NotPrecedesSlantEqual: "⋠", - NotReverseElement: "∌", - NotRightTriangle: "⋫", - NotRightTriangleBar: "⧐̸", - NotRightTriangleEqual: "⋭", - NotSquareSubset: "⊏̸", - NotSquareSubsetEqual: "⋢", - NotSquareSuperset: "⊐̸", - NotSquareSupersetEqual: "⋣", - NotSubset: "⊂⃒", - NotSubsetEqual: "⊈", - NotSucceeds: "⊁", - NotSucceedsEqual: "⪰̸", - NotSucceedsSlantEqual: "⋡", - NotSucceedsTilde: "≿̸", - NotSuperset: "⊃⃒", - NotSupersetEqual: "⊉", - NotTilde: "≁", - NotTildeEqual: "≄", - NotTildeFullEqual: "≇", - NotTildeTilde: "≉", - NotVerticalBar: "∤", - npar: "∦", - nparallel: "∦", - nparsl: "⫽⃥", - npart: "∂̸", - npolint: "⨔", - npr: "⊀", - nprcue: "⋠", - npre: "⪯̸", - nprec: "⊀", - npreceq: "⪯̸", - nrarr: "↛", - nrArr: "⇏", - nrarrc: "⤳̸", - nrarrw: "↝̸", - nrightarrow: "↛", - nRightarrow: "⇏", - nrtri: "⋫", - nrtrie: "⋭", - nsc: "⊁", - nsccue: "⋡", - nsce: "⪰̸", - nscr: "𝓃", - Nscr: "𝒩", - nshortmid: "∤", - nshortparallel: "∦", - nsim: "≁", - nsime: "≄", - nsimeq: "≄", - nsmid: "∤", - nspar: "∦", - nsqsube: "⋢", - nsqsupe: "⋣", - nsub: "⊄", - nsube: "⊈", - nsubE: "⫅̸", - nsubset: "⊂⃒", - nsubseteq: "⊈", - nsubseteqq: "⫅̸", - nsucc: "⊁", - nsucceq: "⪰̸", - nsup: "⊅", - nsupe: "⊉", - nsupE: "⫆̸", - nsupset: "⊃⃒", - nsupseteq: "⊉", - nsupseteqq: "⫆̸", - ntgl: "≹", - ntilde: "ñ", - Ntilde: "Ñ", - ntlg: "≸", - ntriangleleft: "⋪", - ntrianglelefteq: "⋬", - ntriangleright: "⋫", - ntrianglerighteq: "⋭", - nu: "ν", - Nu: "Ν", - num: "#", - numero: "№", - numsp: " ", - nvap: "≍⃒", - nvdash: "⊬", - nvDash: "⊭", - nVdash: "⊮", - nVDash: "⊯", - nvge: "≥⃒", - nvgt: ">⃒", - nvHarr: "⤄", - nvinfin: "⧞", - nvlArr: "⤂", - nvle: "≤⃒", - nvlt: "<⃒", - nvltrie: "⊴⃒", - nvrArr: "⤃", - nvrtrie: "⊵⃒", - nvsim: "∼⃒", - nwarhk: "⤣", - nwarr: "↖", - nwArr: "⇖", - nwarrow: "↖", - nwnear: "⤧", - oacute: "ó", - Oacute: "Ó", - oast: "⊛", - ocir: "⊚", - ocirc: "ô", - Ocirc: "Ô", - ocy: "о", - Ocy: "О", - odash: "⊝", - odblac: "ő", - Odblac: "Ő", - odiv: "⨸", - odot: "⊙", - odsold: "⦼", - oelig: "œ", - OElig: "Œ", - ofcir: "⦿", - ofr: "𝔬", - Ofr: "𝔒", - ogon: "˛", - ograve: "ò", - Ograve: "Ò", - ogt: "⧁", - ohbar: "⦵", - ohm: "Ω", - oint: "∮", - olarr: "↺", - olcir: "⦾", - olcross: "⦻", - oline: "‾", - olt: "⧀", - omacr: "ō", - Omacr: "Ō", - omega: "ω", - Omega: "Ω", - omicron: "ο", - Omicron: "Ο", - omid: "⦶", - ominus: "⊖", - oopf: "𝕠", - Oopf: "𝕆", - opar: "⦷", - OpenCurlyDoubleQuote: "“", - OpenCurlyQuote: "‘", - operp: "⦹", - oplus: "⊕", - or: "∨", - Or: "⩔", - orarr: "↻", - ord: "⩝", - order: "ℴ", - orderof: "ℴ", - ordf: "ª", - ordm: "º", - origof: "⊶", - oror: "⩖", - orslope: "⩗", - orv: "⩛", - oS: "Ⓢ", - oscr: "ℴ", - Oscr: "𝒪", - oslash: "ø", - Oslash: "Ø", - osol: "⊘", - otilde: "õ", - Otilde: "Õ", - otimes: "⊗", - Otimes: "⨷", - otimesas: "⨶", - ouml: "ö", - Ouml: "Ö", - ovbar: "⌽", - OverBar: "‾", - OverBrace: "⏞", - OverBracket: "⎴", - OverParenthesis: "⏜", - par: "∥", - para: "¶", - parallel: "∥", - parsim: "⫳", - parsl: "⫽", - part: "∂", - PartialD: "∂", - pcy: "п", - Pcy: "П", - percnt: "%", - period: ".", - permil: "‰", - perp: "⊥", - pertenk: "‱", - pfr: "𝔭", - Pfr: "𝔓", - phi: "φ", - Phi: "Φ", - phiv: "ϕ", - phmmat: "ℳ", - phone: "☎", - pi: "π", - Pi: "Π", - pitchfork: "⋔", - piv: "ϖ", - planck: "ℏ", - planckh: "ℎ", - plankv: "ℏ", - plus: "+", - plusacir: "⨣", - plusb: "⊞", - pluscir: "⨢", - plusdo: "∔", - plusdu: "⨥", - pluse: "⩲", - PlusMinus: "±", - plusmn: "±", - plussim: "⨦", - plustwo: "⨧", - pm: "±", - Poincareplane: "ℌ", - pointint: "⨕", - popf: "𝕡", - Popf: "ℙ", - pound: "£", - pr: "≺", - Pr: "⪻", - prap: "⪷", - prcue: "≼", - pre: "⪯", - prE: "⪳", - prec: "≺", - precapprox: "⪷", - preccurlyeq: "≼", - Precedes: "≺", - PrecedesEqual: "⪯", - PrecedesSlantEqual: "≼", - PrecedesTilde: "≾", - preceq: "⪯", - precnapprox: "⪹", - precneqq: "⪵", - precnsim: "⋨", - precsim: "≾", - prime: "′", - Prime: "″", - primes: "ℙ", - prnap: "⪹", - prnE: "⪵", - prnsim: "⋨", - prod: "∏", - Product: "∏", - profalar: "⌮", - profline: "⌒", - profsurf: "⌓", - prop: "∝", - Proportion: "∷", - Proportional: "∝", - propto: "∝", - prsim: "≾", - prurel: "⊰", - pscr: "𝓅", - Pscr: "𝒫", - psi: "ψ", - Psi: "Ψ", - puncsp: " ", - qfr: "𝔮", - Qfr: "𝔔", - qint: "⨌", - qopf: "𝕢", - Qopf: "ℚ", - qprime: "⁗", - qscr: "𝓆", - Qscr: "𝒬", - quaternions: "ℍ", - quatint: "⨖", - quest: "?", - questeq: "≟", - quot: '"', - QUOT: '"', - rAarr: "⇛", - race: "∽̱", - racute: "ŕ", - Racute: "Ŕ", - radic: "√", - raemptyv: "⦳", - rang: "⟩", - Rang: "⟫", - rangd: "⦒", - range: "⦥", - rangle: "⟩", - raquo: "»", - rarr: "→", - rArr: "⇒", - Rarr: "↠", - rarrap: "⥵", - rarrb: "⇥", - rarrbfs: "⤠", - rarrc: "⤳", - rarrfs: "⤞", - rarrhk: "↪", - rarrlp: "↬", - rarrpl: "⥅", - rarrsim: "⥴", - rarrtl: "↣", - Rarrtl: "⤖", - rarrw: "↝", - ratail: "⤚", - rAtail: "⤜", - ratio: "∶", - rationals: "ℚ", - rbarr: "⤍", - rBarr: "⤏", - RBarr: "⤐", - rbbrk: "❳", - rbrace: "}", - rbrack: "]", - rbrke: "⦌", - rbrksld: "⦎", - rbrkslu: "⦐", - rcaron: "ř", - Rcaron: "Ř", - rcedil: "ŗ", - Rcedil: "Ŗ", - rceil: "⌉", - rcub: "}", - rcy: "р", - Rcy: "Р", - rdca: "⤷", - rdldhar: "⥩", - rdquo: "”", - rdquor: "”", - rdsh: "↳", - Re: "ℜ", - real: "ℜ", - realine: "ℛ", - realpart: "ℜ", - reals: "ℝ", - rect: "▭", - reg: "®", - REG: "®", - ReverseElement: "∋", - ReverseEquilibrium: "⇋", - ReverseUpEquilibrium: "⥯", - rfisht: "⥽", - rfloor: "⌋", - rfr: "𝔯", - Rfr: "ℜ", - rHar: "⥤", - rhard: "⇁", - rharu: "⇀", - rharul: "⥬", - rho: "ρ", - Rho: "Ρ", - rhov: "ϱ", - RightAngleBracket: "⟩", - rightarrow: "→", - Rightarrow: "⇒", - RightArrow: "→", - RightArrowBar: "⇥", - RightArrowLeftArrow: "⇄", - rightarrowtail: "↣", - RightCeiling: "⌉", - RightDoubleBracket: "⟧", - RightDownTeeVector: "⥝", - RightDownVector: "⇂", - RightDownVectorBar: "⥕", - RightFloor: "⌋", - rightharpoondown: "⇁", - rightharpoonup: "⇀", - rightleftarrows: "⇄", - rightleftharpoons: "⇌", - rightrightarrows: "⇉", - rightsquigarrow: "↝", - RightTee: "⊢", - RightTeeArrow: "↦", - RightTeeVector: "⥛", - rightthreetimes: "⋌", - RightTriangle: "⊳", - RightTriangleBar: "⧐", - RightTriangleEqual: "⊵", - RightUpDownVector: "⥏", - RightUpTeeVector: "⥜", - RightUpVector: "↾", - RightUpVectorBar: "⥔", - RightVector: "⇀", - RightVectorBar: "⥓", - ring: "˚", - risingdotseq: "≓", - rlarr: "⇄", - rlhar: "⇌", - rlm: "‏", - rmoust: "⎱", - rmoustache: "⎱", - rnmid: "⫮", - roang: "⟭", - roarr: "⇾", - robrk: "⟧", - ropar: "⦆", - ropf: "𝕣", - Ropf: "ℝ", - roplus: "⨮", - rotimes: "⨵", - RoundImplies: "⥰", - rpar: ")", - rpargt: "⦔", - rppolint: "⨒", - rrarr: "⇉", - Rrightarrow: "⇛", - rsaquo: "›", - rscr: "𝓇", - Rscr: "ℛ", - rsh: "↱", - Rsh: "↱", - rsqb: "]", - rsquo: "’", - rsquor: "’", - rthree: "⋌", - rtimes: "⋊", - rtri: "▹", - rtrie: "⊵", - rtrif: "▸", - rtriltri: "⧎", - RuleDelayed: "⧴", - ruluhar: "⥨", - rx: "℞", - sacute: "ś", - Sacute: "Ś", - sbquo: "‚", - sc: "≻", - Sc: "⪼", - scap: "⪸", - scaron: "š", - Scaron: "Š", - sccue: "≽", - sce: "⪰", - scE: "⪴", - scedil: "ş", - Scedil: "Ş", - scirc: "ŝ", - Scirc: "Ŝ", - scnap: "⪺", - scnE: "⪶", - scnsim: "⋩", - scpolint: "⨓", - scsim: "≿", - scy: "с", - Scy: "С", - sdot: "⋅", - sdotb: "⊡", - sdote: "⩦", - searhk: "⤥", - searr: "↘", - seArr: "⇘", - searrow: "↘", - sect: "§", - semi: ";", - seswar: "⤩", - setminus: "∖", - setmn: "∖", - sext: "✶", - sfr: "𝔰", - Sfr: "𝔖", - sfrown: "⌢", - sharp: "♯", - shchcy: "щ", - SHCHcy: "Щ", - shcy: "ш", - SHcy: "Ш", - ShortDownArrow: "↓", - ShortLeftArrow: "←", - shortmid: "∣", - shortparallel: "∥", - ShortRightArrow: "→", - ShortUpArrow: "↑", - shy: "­", - sigma: "σ", - Sigma: "Σ", - sigmaf: "ς", - sigmav: "ς", - sim: "∼", - simdot: "⩪", - sime: "≃", - simeq: "≃", - simg: "⪞", - simgE: "⪠", - siml: "⪝", - simlE: "⪟", - simne: "≆", - simplus: "⨤", - simrarr: "⥲", - slarr: "←", - SmallCircle: "∘", - smallsetminus: "∖", - smashp: "⨳", - smeparsl: "⧤", - smid: "∣", - smile: "⌣", - smt: "⪪", - smte: "⪬", - smtes: "⪬︀", - softcy: "ь", - SOFTcy: "Ь", - sol: "/", - solb: "⧄", - solbar: "⌿", - sopf: "𝕤", - Sopf: "𝕊", - spades: "♠", - spadesuit: "♠", - spar: "∥", - sqcap: "⊓", - sqcaps: "⊓︀", - sqcup: "⊔", - sqcups: "⊔︀", - Sqrt: "√", - sqsub: "⊏", - sqsube: "⊑", - sqsubset: "⊏", - sqsubseteq: "⊑", - sqsup: "⊐", - sqsupe: "⊒", - sqsupset: "⊐", - sqsupseteq: "⊒", - squ: "□", - square: "□", - Square: "□", - SquareIntersection: "⊓", - SquareSubset: "⊏", - SquareSubsetEqual: "⊑", - SquareSuperset: "⊐", - SquareSupersetEqual: "⊒", - SquareUnion: "⊔", - squarf: "▪", - squf: "▪", - srarr: "→", - sscr: "𝓈", - Sscr: "𝒮", - ssetmn: "∖", - ssmile: "⌣", - sstarf: "⋆", - star: "☆", - Star: "⋆", - starf: "★", - straightepsilon: "ϵ", - straightphi: "ϕ", - strns: "¯", - sub: "⊂", - Sub: "⋐", - subdot: "⪽", - sube: "⊆", - subE: "⫅", - subedot: "⫃", - submult: "⫁", - subne: "⊊", - subnE: "⫋", - subplus: "⪿", - subrarr: "⥹", - subset: "⊂", - Subset: "⋐", - subseteq: "⊆", - subseteqq: "⫅", - SubsetEqual: "⊆", - subsetneq: "⊊", - subsetneqq: "⫋", - subsim: "⫇", - subsub: "⫕", - subsup: "⫓", - succ: "≻", - succapprox: "⪸", - succcurlyeq: "≽", - Succeeds: "≻", - SucceedsEqual: "⪰", - SucceedsSlantEqual: "≽", - SucceedsTilde: "≿", - succeq: "⪰", - succnapprox: "⪺", - succneqq: "⪶", - succnsim: "⋩", - succsim: "≿", - SuchThat: "∋", - sum: "∑", - Sum: "∑", - sung: "♪", - sup: "⊃", - Sup: "⋑", - sup1: "¹", - sup2: "²", - sup3: "³", - supdot: "⪾", - supdsub: "⫘", - supe: "⊇", - supE: "⫆", - supedot: "⫄", - Superset: "⊃", - SupersetEqual: "⊇", - suphsol: "⟉", - suphsub: "⫗", - suplarr: "⥻", - supmult: "⫂", - supne: "⊋", - supnE: "⫌", - supplus: "⫀", - supset: "⊃", - Supset: "⋑", - supseteq: "⊇", - supseteqq: "⫆", - supsetneq: "⊋", - supsetneqq: "⫌", - supsim: "⫈", - supsub: "⫔", - supsup: "⫖", - swarhk: "⤦", - swarr: "↙", - swArr: "⇙", - swarrow: "↙", - swnwar: "⤪", - szlig: "ß", - Tab: "\t", - target: "⌖", - tau: "τ", - Tau: "Τ", - tbrk: "⎴", - tcaron: "ť", - Tcaron: "Ť", - tcedil: "ţ", - Tcedil: "Ţ", - tcy: "т", - Tcy: "Т", - tdot: "⃛", - telrec: "⌕", - tfr: "𝔱", - Tfr: "𝔗", - there4: "∴", - therefore: "∴", - Therefore: "∴", - theta: "θ", - Theta: "Θ", - thetasym: "ϑ", - thetav: "ϑ", - thickapprox: "≈", - thicksim: "∼", - ThickSpace: "  ", - thinsp: " ", - ThinSpace: " ", - thkap: "≈", - thksim: "∼", - thorn: "þ", - THORN: "Þ", - tilde: "˜", - Tilde: "∼", - TildeEqual: "≃", - TildeFullEqual: "≅", - TildeTilde: "≈", - times: "×", - timesb: "⊠", - timesbar: "⨱", - timesd: "⨰", - tint: "∭", - toea: "⤨", - top: "⊤", - topbot: "⌶", - topcir: "⫱", - topf: "𝕥", - Topf: "𝕋", - topfork: "⫚", - tosa: "⤩", - tprime: "‴", - trade: "™", - TRADE: "™", - triangle: "▵", - triangledown: "▿", - triangleleft: "◃", - trianglelefteq: "⊴", - triangleq: "≜", - triangleright: "▹", - trianglerighteq: "⊵", - tridot: "◬", - trie: "≜", - triminus: "⨺", - TripleDot: "⃛", - triplus: "⨹", - trisb: "⧍", - tritime: "⨻", - trpezium: "⏢", - tscr: "𝓉", - Tscr: "𝒯", - tscy: "ц", - TScy: "Ц", - tshcy: "ћ", - TSHcy: "Ћ", - tstrok: "ŧ", - Tstrok: "Ŧ", - twixt: "≬", - twoheadleftarrow: "↞", - twoheadrightarrow: "↠", - uacute: "ú", - Uacute: "Ú", - uarr: "↑", - uArr: "⇑", - Uarr: "↟", - Uarrocir: "⥉", - ubrcy: "ў", - Ubrcy: "Ў", - ubreve: "ŭ", - Ubreve: "Ŭ", - ucirc: "û", - Ucirc: "Û", - ucy: "у", - Ucy: "У", - udarr: "⇅", - udblac: "ű", - Udblac: "Ű", - udhar: "⥮", - ufisht: "⥾", - ufr: "𝔲", - Ufr: "𝔘", - ugrave: "ù", - Ugrave: "Ù", - uHar: "⥣", - uharl: "↿", - uharr: "↾", - uhblk: "▀", - ulcorn: "⌜", - ulcorner: "⌜", - ulcrop: "⌏", - ultri: "◸", - umacr: "ū", - Umacr: "Ū", - uml: "¨", - UnderBar: "_", - UnderBrace: "⏟", - UnderBracket: "⎵", - UnderParenthesis: "⏝", - Union: "⋃", - UnionPlus: "⊎", - uogon: "ų", - Uogon: "Ų", - uopf: "𝕦", - Uopf: "𝕌", - uparrow: "↑", - Uparrow: "⇑", - UpArrow: "↑", - UpArrowBar: "⤒", - UpArrowDownArrow: "⇅", - updownarrow: "↕", - Updownarrow: "⇕", - UpDownArrow: "↕", - UpEquilibrium: "⥮", - upharpoonleft: "↿", - upharpoonright: "↾", - uplus: "⊎", - UpperLeftArrow: "↖", - UpperRightArrow: "↗", - upsi: "υ", - Upsi: "ϒ", - upsih: "ϒ", - upsilon: "υ", - Upsilon: "Υ", - UpTee: "⊥", - UpTeeArrow: "↥", - upuparrows: "⇈", - urcorn: "⌝", - urcorner: "⌝", - urcrop: "⌎", - uring: "ů", - Uring: "Ů", - urtri: "◹", - uscr: "𝓊", - Uscr: "𝒰", - utdot: "⋰", - utilde: "ũ", - Utilde: "Ũ", - utri: "▵", - utrif: "▴", - uuarr: "⇈", - uuml: "ü", - Uuml: "Ü", - uwangle: "⦧", - vangrt: "⦜", - varepsilon: "ϵ", - varkappa: "ϰ", - varnothing: "∅", - varphi: "ϕ", - varpi: "ϖ", - varpropto: "∝", - varr: "↕", - vArr: "⇕", - varrho: "ϱ", - varsigma: "ς", - varsubsetneq: "⊊︀", - varsubsetneqq: "⫋︀", - varsupsetneq: "⊋︀", - varsupsetneqq: "⫌︀", - vartheta: "ϑ", - vartriangleleft: "⊲", - vartriangleright: "⊳", - vBar: "⫨", - Vbar: "⫫", - vBarv: "⫩", - vcy: "в", - Vcy: "В", - vdash: "⊢", - vDash: "⊨", - Vdash: "⊩", - VDash: "⊫", - Vdashl: "⫦", - vee: "∨", - Vee: "⋁", - veebar: "⊻", - veeeq: "≚", - vellip: "⋮", - verbar: "|", - Verbar: "‖", - vert: "|", - Vert: "‖", - VerticalBar: "∣", - VerticalLine: "|", - VerticalSeparator: "❘", - VerticalTilde: "≀", - VeryThinSpace: " ", - vfr: "𝔳", - Vfr: "𝔙", - vltri: "⊲", - vnsub: "⊂⃒", - vnsup: "⊃⃒", - vopf: "𝕧", - Vopf: "𝕍", - vprop: "∝", - vrtri: "⊳", - vscr: "𝓋", - Vscr: "𝒱", - vsubne: "⊊︀", - vsubnE: "⫋︀", - vsupne: "⊋︀", - vsupnE: "⫌︀", - Vvdash: "⊪", - vzigzag: "⦚", - wcirc: "ŵ", - Wcirc: "Ŵ", - wedbar: "⩟", - wedge: "∧", - Wedge: "⋀", - wedgeq: "≙", - weierp: "℘", - wfr: "𝔴", - Wfr: "𝔚", - wopf: "𝕨", - Wopf: "𝕎", - wp: "℘", - wr: "≀", - wreath: "≀", - wscr: "𝓌", - Wscr: "𝒲", - xcap: "⋂", - xcirc: "◯", - xcup: "⋃", - xdtri: "▽", - xfr: "𝔵", - Xfr: "𝔛", - xharr: "⟷", - xhArr: "⟺", - xi: "ξ", - Xi: "Ξ", - xlarr: "⟵", - xlArr: "⟸", - xmap: "⟼", - xnis: "⋻", - xodot: "⨀", - xopf: "𝕩", - Xopf: "𝕏", - xoplus: "⨁", - xotime: "⨂", - xrarr: "⟶", - xrArr: "⟹", - xscr: "𝓍", - Xscr: "𝒳", - xsqcup: "⨆", - xuplus: "⨄", - xutri: "△", - xvee: "⋁", - xwedge: "⋀", - yacute: "ý", - Yacute: "Ý", - yacy: "я", - YAcy: "Я", - ycirc: "ŷ", - Ycirc: "Ŷ", - ycy: "ы", - Ycy: "Ы", - yen: "¥", - yfr: "𝔶", - Yfr: "𝔜", - yicy: "ї", - YIcy: "Ї", - yopf: "𝕪", - Yopf: "𝕐", - yscr: "𝓎", - Yscr: "𝒴", - yucy: "ю", - YUcy: "Ю", - yuml: "ÿ", - Yuml: "Ÿ", - zacute: "ź", - Zacute: "Ź", - zcaron: "ž", - Zcaron: "Ž", - zcy: "з", - Zcy: "З", - zdot: "ż", - Zdot: "Ż", - zeetrf: "ℨ", - ZeroWidthSpace: "​", - zeta: "ζ", - Zeta: "Ζ", - zfr: "𝔷", - Zfr: "ℨ", - zhcy: "ж", - ZHcy: "Ж", - zigrarr: "⇝", - zopf: "𝕫", - Zopf: "ℤ", - zscr: "𝓏", - Zscr: "𝒵", - zwj: "‍", - zwnj: "‌" - }, f = { - aacute: "á", - Aacute: "Á", - acirc: "â", - Acirc: "Â", - acute: "´", - aelig: "æ", - AElig: "Æ", - agrave: "à", - Agrave: "À", - amp: "&", - AMP: "&", - aring: "å", - Aring: "Å", - atilde: "ã", - Atilde: "Ã", - auml: "ä", - Auml: "Ä", - brvbar: "¦", - ccedil: "ç", - Ccedil: "Ç", - cedil: "¸", - cent: "¢", - copy: "©", - COPY: "©", - curren: "¤", - deg: "°", - divide: "÷", - eacute: "é", - Eacute: "É", - ecirc: "ê", - Ecirc: "Ê", - egrave: "è", - Egrave: "È", - eth: "ð", - ETH: "Ð", - euml: "ë", - Euml: "Ë", - frac12: "½", - frac14: "¼", - frac34: "¾", - gt: ">", - GT: ">", - iacute: "í", - Iacute: "Í", - icirc: "î", - Icirc: "Î", - iexcl: "¡", - igrave: "ì", - Igrave: "Ì", - iquest: "¿", - iuml: "ï", - Iuml: "Ï", - laquo: "«", - lt: "<", - LT: "<", - macr: "¯", - micro: "µ", - middot: "·", - nbsp: " ", - not: "¬", - ntilde: "ñ", - Ntilde: "Ñ", - oacute: "ó", - Oacute: "Ó", - ocirc: "ô", - Ocirc: "Ô", - ograve: "ò", - Ograve: "Ò", - ordf: "ª", - ordm: "º", - oslash: "ø", - Oslash: "Ø", - otilde: "õ", - Otilde: "Õ", - ouml: "ö", - Ouml: "Ö", - para: "¶", - plusmn: "±", - pound: "£", - quot: '"', - QUOT: '"', - raquo: "»", - reg: "®", - REG: "®", - sect: "§", - shy: "­", - sup1: "¹", - sup2: "²", - sup3: "³", - szlig: "ß", - thorn: "þ", - THORN: "Þ", - times: "×", - uacute: "ú", - Uacute: "Ú", - ucirc: "û", - Ucirc: "Û", - ugrave: "ù", - Ugrave: "Ù", - uml: "¨", - uuml: "ü", - Uuml: "Ü", - yacute: "ý", - Yacute: "Ý", - yen: "¥", - yuml: "ÿ" - }, b = { - 0: "�", - 128: "€", - 130: "‚", - 131: "ƒ", - 132: "„", - 133: "…", - 134: "†", - 135: "‡", - 136: "ˆ", - 137: "‰", - 138: "Š", - 139: "‹", - 140: "Œ", - 142: "Ž", - 145: "‘", - 146: "’", - 147: "“", - 148: "”", - 149: "•", - 150: "–", - 151: "—", - 152: "˜", - 153: "™", - 154: "š", - 155: "›", - 156: "œ", - 158: "ž", - 159: "Ÿ" - }, - h = [1, 2, 3, 4, 5, 6, 7, 8, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 64976, 64977, 64978, 64979, 64980, 64981, 64982, 64983, 64984, 64985, 64986, 64987, 64988, 64989, 64990, 64991, 64992, 64993, 64994, 64995, 64996, 64997, 64998, 64999, 65e3, 65001, 65002, 65003, 65004, 65005, 65006, 65007, 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214, 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894, 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574, 1048575, 1114110, 1114111], - q = String.fromCharCode, v = {}, w = v.hasOwnProperty, D = function (r, e) { - return w.call(r, e) - }, y = function (r, e) { - for (var a = -1, t = r.length; ++a < t;) if (r[a] == e) return !0; - return !1 - }, A = function (r, e) { - if (!r) return e; - var a, t = {}; - for (a in e) t[a] = D(r, a) ? r[a] : e[a]; - return t - }, E = function (r, e) { - var a = ""; - return r >= 55296 && r <= 57343 || r > 1114111 ? (e && L("character reference outside the permissible Unicode range"), "�") : D(b, r) ? (e && L("disallowed character reference"), b[r]) : (e && y(h, r) && L("disallowed character reference"), r > 65535 && (r -= 65536, a += q(r >>> 10 & 1023 | 55296), r = 56320 | 1023 & r), a += q(r), a) - }, x = function (r) { - return "&#x" + r.toString(16).toUpperCase() + ";" - }, k = function (r) { - return "&#" + r + ";" - }, L = function (r) { - throw Error("Parse error: " + r) - }, S = function (r, e) { - e = A(e, S.options); - var a = e.strict; - a && d.test(r) && L("forbidden code point"); - var t = e.encodeEverything, n = e.useNamedReferences, p = e.allowUnsafeSymbols, g = e.decimal ? k : x, - m = function (r) { - return g(r.charCodeAt(0)) - }; - return t ? (r = r.replace(s, function (r) { - return n && D(l, r) ? "&" + l[r] + ";" : m(r) - }), n && (r = r.replace(/>\u20D2/g, ">⃒").replace(/<\u20D2/g, "<⃒").replace(/fj/g, "fj")), n && (r = r.replace(c, function (r) { - return "&" + l[r] + ";" - }))) : n ? (p || (r = r.replace(i, function (r) { - return "&" + l[r] + ";" - })), r = r.replace(/>\u20D2/g, ">⃒").replace(/<\u20D2/g, "<⃒"), r = r.replace(c, function (r) { - return "&" + l[r] + ";" - })) : p || (r = r.replace(i, m)), r.replace(o, function (r) { - var e = r.charCodeAt(0), a = r.charCodeAt(1), t = 1024 * (e - 55296) + a - 56320 + 65536; - return g(t) - }).replace(u, m) - }; - S.options = {allowUnsafeSymbols: !1, encodeEverything: !1, strict: !1, useNamedReferences: !1, decimal: !1}; - var C = function (r, e) { - e = A(e, C.options); - var a = e.strict; - return a && p.test(r) && L("malformed character reference"), r.replace(g, function (r, t, o, s, u, c, l, i, n) { - var p, d, g, b, h, q; - return t ? (h = t, m[h]) : o ? (h = o, q = s, q && e.isAttributeValue ? (a && "=" == q && L("`&` did not start a character reference"), r) : (a && L("named character reference was not terminated by a semicolon"), f[h] + (q || ""))) : u ? (g = u, d = c, a && !d && L("character reference was not terminated by a semicolon"), p = parseInt(g, 10), E(p, a)) : l ? (b = l, d = i, a && !d && L("character reference was not terminated by a semicolon"), p = parseInt(b, 16), E(p, a)) : (a && L("named character reference was not terminated by a semicolon"), r) - }) - }; - C.options = {isAttributeValue: !1, strict: !1}; - var B = function (r) { - return r.replace(i, function (r) { - return n[r] - }) - }, T = {version: "1.2.0", encode: S, decode: C, escape: B, unescape: C}; - if ("function" == typeof define && "object" == typeof define.amd && define.amd) define(function () { - return T - }); else if (e && !e.nodeType) if (a) a.exports = T; else for (var R in T) D(T, R) && (e[R] = T[R]); else r.he = T -})(this); +(function(r){var e="object"==typeof exports&&exports,a="object"==typeof module&&module&&module.exports==e&&module,t="object"==typeof global&&global;t.global!==t&&t.window!==t||(r=t);var o=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,s=/[\x01-\x7F]/g,u=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,c=/<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g,l={"­":"shy","‌":"zwnj","‍":"zwj","‎":"lrm","⁣":"ic","⁢":"it","⁡":"af","‏":"rlm","​":"ZeroWidthSpace","⁠":"NoBreak","̑":"DownBreve","⃛":"tdot","⃜":"DotDot","\t":"Tab","\n":"NewLine"," ":"puncsp"," ":"MediumSpace"," ":"thinsp"," ":"hairsp"," ":"emsp13"," ":"ensp"," ":"emsp14"," ":"emsp"," ":"numsp"," ":"nbsp","  ":"ThickSpace","‾":"oline",_:"lowbar","‐":"dash","–":"ndash","—":"mdash","―":"horbar",",":"comma",";":"semi","⁏":"bsemi",":":"colon","⩴":"Colone","!":"excl","¡":"iexcl","?":"quest","¿":"iquest",".":"period","‥":"nldr","…":"mldr","·":"middot","'":"apos","‘":"lsquo","’":"rsquo","‚":"sbquo","‹":"lsaquo","›":"rsaquo",'"':"quot","“":"ldquo","”":"rdquo","„":"bdquo","«":"laquo","»":"raquo","(":"lpar",")":"rpar","[":"lsqb","]":"rsqb","{":"lcub","}":"rcub","⌈":"lceil","⌉":"rceil","⌊":"lfloor","⌋":"rfloor","⦅":"lopar","⦆":"ropar","⦋":"lbrke","⦌":"rbrke","⦍":"lbrkslu","⦎":"rbrksld","⦏":"lbrksld","⦐":"rbrkslu","⦑":"langd","⦒":"rangd","⦓":"lparlt","⦔":"rpargt","⦕":"gtlPar","⦖":"ltrPar","⟦":"lobrk","⟧":"robrk","⟨":"lang","⟩":"rang","⟪":"Lang","⟫":"Rang","⟬":"loang","⟭":"roang","❲":"lbbrk","❳":"rbbrk","‖":"Vert","§":"sect","¶":"para","@":"commat","*":"ast","/":"sol",undefined:null,"&":"amp","#":"num","%":"percnt","‰":"permil","‱":"pertenk","†":"dagger","‡":"Dagger","•":"bull","⁃":"hybull","′":"prime","″":"Prime","‴":"tprime","⁗":"qprime","‵":"bprime","⁁":"caret","`":"grave","´":"acute","˜":"tilde","^":"Hat","¯":"macr","˘":"breve","˙":"dot","¨":"die","˚":"ring","˝":"dblac","¸":"cedil","˛":"ogon","ˆ":"circ","ˇ":"caron","°":"deg","©":"copy","®":"reg","℗":"copysr","℘":"wp","℞":"rx","℧":"mho","℩":"iiota","←":"larr","↚":"nlarr","→":"rarr","↛":"nrarr","↑":"uarr","↓":"darr","↔":"harr","↮":"nharr","↕":"varr","↖":"nwarr","↗":"nearr","↘":"searr","↙":"swarr","↝":"rarrw","↝̸":"nrarrw","↞":"Larr","↟":"Uarr","↠":"Rarr","↡":"Darr","↢":"larrtl","↣":"rarrtl","↤":"mapstoleft","↥":"mapstoup","↦":"map","↧":"mapstodown","↩":"larrhk","↪":"rarrhk","↫":"larrlp","↬":"rarrlp","↭":"harrw","↰":"lsh","↱":"rsh","↲":"ldsh","↳":"rdsh","↵":"crarr","↶":"cularr","↷":"curarr","↺":"olarr","↻":"orarr","↼":"lharu","↽":"lhard","↾":"uharr","↿":"uharl","⇀":"rharu","⇁":"rhard","⇂":"dharr","⇃":"dharl","⇄":"rlarr","⇅":"udarr","⇆":"lrarr","⇇":"llarr","⇈":"uuarr","⇉":"rrarr","⇊":"ddarr","⇋":"lrhar","⇌":"rlhar","⇐":"lArr","⇍":"nlArr","⇑":"uArr","⇒":"rArr","⇏":"nrArr","⇓":"dArr","⇔":"iff","⇎":"nhArr","⇕":"vArr","⇖":"nwArr","⇗":"neArr","⇘":"seArr","⇙":"swArr","⇚":"lAarr","⇛":"rAarr","⇝":"zigrarr","⇤":"larrb","⇥":"rarrb","⇵":"duarr","⇽":"loarr","⇾":"roarr","⇿":"hoarr","∀":"forall","∁":"comp","∂":"part","∂̸":"npart","∃":"exist","∄":"nexist","∅":"empty","∇":"Del","∈":"in","∉":"notin","∋":"ni","∌":"notni","϶":"bepsi","∏":"prod","∐":"coprod","∑":"sum","+":"plus","±":"pm","÷":"div","×":"times","<":"lt","≮":"nlt","<⃒":"nvlt","=":"equals","≠":"ne","=⃥":"bne","⩵":"Equal",">":"gt","≯":"ngt",">⃒":"nvgt","¬":"not","|":"vert","¦":"brvbar","−":"minus","∓":"mp","∔":"plusdo","⁄":"frasl","∖":"setmn","∗":"lowast","∘":"compfn","√":"Sqrt","∝":"prop","∞":"infin","∟":"angrt","∠":"ang","∠⃒":"nang","∡":"angmsd","∢":"angsph","∣":"mid","∤":"nmid","∥":"par","∦":"npar","∧":"and","∨":"or","∩":"cap","∩︀":"caps","∪":"cup","∪︀":"cups","∫":"int","∬":"Int","∭":"tint","⨌":"qint","∮":"oint","∯":"Conint","∰":"Cconint","∱":"cwint","∲":"cwconint","∳":"awconint","∴":"there4","∵":"becaus","∶":"ratio","∷":"Colon","∸":"minusd","∺":"mDDot","∻":"homtht","∼":"sim","≁":"nsim","∼⃒":"nvsim","∽":"bsim","∽̱":"race","∾":"ac","∾̳":"acE","∿":"acd","≀":"wr","≂":"esim","≂̸":"nesim","≃":"sime","≄":"nsime","≅":"cong","≇":"ncong","≆":"simne","≈":"ap","≉":"nap","≊":"ape","≋":"apid","≋̸":"napid","≌":"bcong","≍":"CupCap","≭":"NotCupCap","≍⃒":"nvap","≎":"bump","≎̸":"nbump","≏":"bumpe","≏̸":"nbumpe","≐":"doteq","≐̸":"nedot","≑":"eDot","≒":"efDot","≓":"erDot","≔":"colone","≕":"ecolon","≖":"ecir","≗":"cire","≙":"wedgeq","≚":"veeeq","≜":"trie","≟":"equest","≡":"equiv","≢":"nequiv","≡⃥":"bnequiv","≤":"le","≰":"nle","≤⃒":"nvle","≥":"ge","≱":"nge","≥⃒":"nvge","≦":"lE","≦̸":"nlE","≧":"gE","≧̸":"ngE","≨︀":"lvnE","≨":"lnE","≩":"gnE","≩︀":"gvnE","≪":"ll","≪̸":"nLtv","≪⃒":"nLt","≫":"gg","≫̸":"nGtv","≫⃒":"nGt","≬":"twixt","≲":"lsim","≴":"nlsim","≳":"gsim","≵":"ngsim","≶":"lg","≸":"ntlg","≷":"gl","≹":"ntgl","≺":"pr","⊀":"npr","≻":"sc","⊁":"nsc","≼":"prcue","⋠":"nprcue","≽":"sccue","⋡":"nsccue","≾":"prsim","≿":"scsim","≿̸":"NotSucceedsTilde","⊂":"sub","⊄":"nsub","⊂⃒":"vnsub","⊃":"sup","⊅":"nsup","⊃⃒":"vnsup","⊆":"sube","⊈":"nsube","⊇":"supe","⊉":"nsupe","⊊︀":"vsubne","⊊":"subne","⊋︀":"vsupne","⊋":"supne","⊍":"cupdot","⊎":"uplus","⊏":"sqsub","⊏̸":"NotSquareSubset","⊐":"sqsup","⊐̸":"NotSquareSuperset","⊑":"sqsube","⋢":"nsqsube","⊒":"sqsupe","⋣":"nsqsupe","⊓":"sqcap","⊓︀":"sqcaps","⊔":"sqcup","⊔︀":"sqcups","⊕":"oplus","⊖":"ominus","⊗":"otimes","⊘":"osol","⊙":"odot","⊚":"ocir","⊛":"oast","⊝":"odash","⊞":"plusb","⊟":"minusb","⊠":"timesb","⊡":"sdotb","⊢":"vdash","⊬":"nvdash","⊣":"dashv","⊤":"top","⊥":"bot","⊧":"models","⊨":"vDash","⊭":"nvDash","⊩":"Vdash","⊮":"nVdash","⊪":"Vvdash","⊫":"VDash","⊯":"nVDash","⊰":"prurel","⊲":"vltri","⋪":"nltri","⊳":"vrtri","⋫":"nrtri","⊴":"ltrie","⋬":"nltrie","⊴⃒":"nvltrie","⊵":"rtrie","⋭":"nrtrie","⊵⃒":"nvrtrie","⊶":"origof","⊷":"imof","⊸":"mumap","⊹":"hercon","⊺":"intcal","⊻":"veebar","⊽":"barvee","⊾":"angrtvb","⊿":"lrtri","⋀":"Wedge","⋁":"Vee","⋂":"xcap","⋃":"xcup","⋄":"diam","⋅":"sdot","⋆":"Star","⋇":"divonx","⋈":"bowtie","⋉":"ltimes","⋊":"rtimes","⋋":"lthree","⋌":"rthree","⋍":"bsime","⋎":"cuvee","⋏":"cuwed","⋐":"Sub","⋑":"Sup","⋒":"Cap","⋓":"Cup","⋔":"fork","⋕":"epar","⋖":"ltdot","⋗":"gtdot","⋘":"Ll","⋘̸":"nLl","⋙":"Gg","⋙̸":"nGg","⋚︀":"lesg","⋚":"leg","⋛":"gel","⋛︀":"gesl","⋞":"cuepr","⋟":"cuesc","⋦":"lnsim","⋧":"gnsim","⋨":"prnsim","⋩":"scnsim","⋮":"vellip","⋯":"ctdot","⋰":"utdot","⋱":"dtdot","⋲":"disin","⋳":"isinsv","⋴":"isins","⋵":"isindot","⋵̸":"notindot","⋶":"notinvc","⋷":"notinvb","⋹":"isinE","⋹̸":"notinE","⋺":"nisd","⋻":"xnis","⋼":"nis","⋽":"notnivc","⋾":"notnivb","⌅":"barwed","⌆":"Barwed","⌌":"drcrop","⌍":"dlcrop","⌎":"urcrop","⌏":"ulcrop","⌐":"bnot","⌒":"profline","⌓":"profsurf","⌕":"telrec","⌖":"target","⌜":"ulcorn","⌝":"urcorn","⌞":"dlcorn","⌟":"drcorn","⌢":"frown","⌣":"smile","⌭":"cylcty","⌮":"profalar","⌶":"topbot","⌽":"ovbar","⌿":"solbar","⍼":"angzarr","⎰":"lmoust","⎱":"rmoust","⎴":"tbrk","⎵":"bbrk","⎶":"bbrktbrk","⏜":"OverParenthesis","⏝":"UnderParenthesis","⏞":"OverBrace","⏟":"UnderBrace","⏢":"trpezium","⏧":"elinters","␣":"blank","─":"boxh","│":"boxv","┌":"boxdr","┐":"boxdl","└":"boxur","┘":"boxul","├":"boxvr","┤":"boxvl","┬":"boxhd","┴":"boxhu","┼":"boxvh","═":"boxH","║":"boxV","╒":"boxdR","╓":"boxDr","╔":"boxDR","╕":"boxdL","╖":"boxDl","╗":"boxDL","╘":"boxuR","╙":"boxUr","╚":"boxUR","╛":"boxuL","╜":"boxUl","╝":"boxUL","╞":"boxvR","╟":"boxVr","╠":"boxVR","╡":"boxvL","╢":"boxVl","╣":"boxVL","╤":"boxHd","╥":"boxhD","╦":"boxHD","╧":"boxHu","╨":"boxhU","╩":"boxHU","╪":"boxvH","╫":"boxVh","╬":"boxVH","▀":"uhblk","▄":"lhblk","█":"block","░":"blk14","▒":"blk12","▓":"blk34","□":"squ","▪":"squf","▫":"EmptyVerySmallSquare","▭":"rect","▮":"marker","▱":"fltns","△":"xutri","▴":"utrif","▵":"utri","▸":"rtrif","▹":"rtri","▽":"xdtri","▾":"dtrif","▿":"dtri","◂":"ltrif","◃":"ltri","◊":"loz","○":"cir","◬":"tridot","◯":"xcirc","◸":"ultri","◹":"urtri","◺":"lltri","◻":"EmptySmallSquare","◼":"FilledSmallSquare","★":"starf","☆":"star","☎":"phone","♀":"female","♂":"male","♠":"spades","♣":"clubs","♥":"hearts","♦":"diams","♪":"sung","✓":"check","✗":"cross","✠":"malt","✶":"sext","❘":"VerticalSeparator","⟈":"bsolhsub","⟉":"suphsol","⟵":"xlarr","⟶":"xrarr","⟷":"xharr","⟸":"xlArr","⟹":"xrArr","⟺":"xhArr","⟼":"xmap","⟿":"dzigrarr","⤂":"nvlArr","⤃":"nvrArr","⤄":"nvHarr","⤅":"Map","⤌":"lbarr","⤍":"rbarr","⤎":"lBarr","⤏":"rBarr","⤐":"RBarr","⤑":"DDotrahd","⤒":"UpArrowBar","⤓":"DownArrowBar","⤖":"Rarrtl","⤙":"latail","⤚":"ratail","⤛":"lAtail","⤜":"rAtail","⤝":"larrfs","⤞":"rarrfs","⤟":"larrbfs","⤠":"rarrbfs","⤣":"nwarhk","⤤":"nearhk","⤥":"searhk","⤦":"swarhk","⤧":"nwnear","⤨":"toea","⤩":"tosa","⤪":"swnwar","⤳":"rarrc","⤳̸":"nrarrc","⤵":"cudarrr","⤶":"ldca","⤷":"rdca","⤸":"cudarrl","⤹":"larrpl","⤼":"curarrm","⤽":"cularrp","⥅":"rarrpl","⥈":"harrcir","⥉":"Uarrocir","⥊":"lurdshar","⥋":"ldrushar","⥎":"LeftRightVector","⥏":"RightUpDownVector","⥐":"DownLeftRightVector","⥑":"LeftUpDownVector","⥒":"LeftVectorBar","⥓":"RightVectorBar","⥔":"RightUpVectorBar","⥕":"RightDownVectorBar","⥖":"DownLeftVectorBar","⥗":"DownRightVectorBar","⥘":"LeftUpVectorBar","⥙":"LeftDownVectorBar","⥚":"LeftTeeVector","⥛":"RightTeeVector","⥜":"RightUpTeeVector","⥝":"RightDownTeeVector","⥞":"DownLeftTeeVector","⥟":"DownRightTeeVector","⥠":"LeftUpTeeVector","⥡":"LeftDownTeeVector","⥢":"lHar","⥣":"uHar","⥤":"rHar","⥥":"dHar","⥦":"luruhar","⥧":"ldrdhar","⥨":"ruluhar","⥩":"rdldhar","⥪":"lharul","⥫":"llhard","⥬":"rharul","⥭":"lrhard","⥮":"udhar","⥯":"duhar","⥰":"RoundImplies","⥱":"erarr","⥲":"simrarr","⥳":"larrsim","⥴":"rarrsim","⥵":"rarrap","⥶":"ltlarr","⥸":"gtrarr","⥹":"subrarr","⥻":"suplarr","⥼":"lfisht","⥽":"rfisht","⥾":"ufisht","⥿":"dfisht","⦚":"vzigzag","⦜":"vangrt","⦝":"angrtvbd","⦤":"ange","⦥":"range","⦦":"dwangle","⦧":"uwangle","⦨":"angmsdaa","⦩":"angmsdab","⦪":"angmsdac","⦫":"angmsdad","⦬":"angmsdae","⦭":"angmsdaf","⦮":"angmsdag","⦯":"angmsdah","⦰":"bemptyv","⦱":"demptyv","⦲":"cemptyv","⦳":"raemptyv","⦴":"laemptyv","⦵":"ohbar","⦶":"omid","⦷":"opar","⦹":"operp","⦻":"olcross","⦼":"odsold","⦾":"olcir","⦿":"ofcir","⧀":"olt","⧁":"ogt","⧂":"cirscir","⧃":"cirE","⧄":"solb","⧅":"bsolb","⧉":"boxbox","⧍":"trisb","⧎":"rtriltri","⧏":"LeftTriangleBar","⧏̸":"NotLeftTriangleBar","⧐":"RightTriangleBar","⧐̸":"NotRightTriangleBar","⧜":"iinfin","⧝":"infintie","⧞":"nvinfin","⧣":"eparsl","⧤":"smeparsl","⧥":"eqvparsl","⧫":"lozf","⧴":"RuleDelayed","⧶":"dsol","⨀":"xodot","⨁":"xoplus","⨂":"xotime","⨄":"xuplus","⨆":"xsqcup","⨍":"fpartint","⨐":"cirfnint","⨑":"awint","⨒":"rppolint","⨓":"scpolint","⨔":"npolint","⨕":"pointint","⨖":"quatint","⨗":"intlarhk","⨢":"pluscir","⨣":"plusacir","⨤":"simplus","⨥":"plusdu","⨦":"plussim","⨧":"plustwo","⨩":"mcomma","⨪":"minusdu","⨭":"loplus","⨮":"roplus","⨯":"Cross","⨰":"timesd","⨱":"timesbar","⨳":"smashp","⨴":"lotimes","⨵":"rotimes","⨶":"otimesas","⨷":"Otimes","⨸":"odiv","⨹":"triplus","⨺":"triminus","⨻":"tritime","⨼":"iprod","⨿":"amalg","⩀":"capdot","⩂":"ncup","⩃":"ncap","⩄":"capand","⩅":"cupor","⩆":"cupcap","⩇":"capcup","⩈":"cupbrcap","⩉":"capbrcup","⩊":"cupcup","⩋":"capcap","⩌":"ccups","⩍":"ccaps","⩐":"ccupssm","⩓":"And","⩔":"Or","⩕":"andand","⩖":"oror","⩗":"orslope","⩘":"andslope","⩚":"andv","⩛":"orv","⩜":"andd","⩝":"ord","⩟":"wedbar","⩦":"sdote","⩪":"simdot","⩭":"congdot","⩭̸":"ncongdot","⩮":"easter","⩯":"apacir","⩰":"apE","⩰̸":"napE","⩱":"eplus","⩲":"pluse","⩳":"Esim","⩷":"eDDot","⩸":"equivDD","⩹":"ltcir","⩺":"gtcir","⩻":"ltquest","⩼":"gtquest","⩽":"les","⩽̸":"nles","⩾":"ges","⩾̸":"nges","⩿":"lesdot","⪀":"gesdot","⪁":"lesdoto","⪂":"gesdoto","⪃":"lesdotor","⪄":"gesdotol","⪅":"lap","⪆":"gap","⪇":"lne","⪈":"gne","⪉":"lnap","⪊":"gnap","⪋":"lEg","⪌":"gEl","⪍":"lsime","⪎":"gsime","⪏":"lsimg","⪐":"gsiml","⪑":"lgE","⪒":"glE","⪓":"lesges","⪔":"gesles","⪕":"els","⪖":"egs","⪗":"elsdot","⪘":"egsdot","⪙":"el","⪚":"eg","⪝":"siml","⪞":"simg","⪟":"simlE","⪠":"simgE","⪡":"LessLess","⪡̸":"NotNestedLessLess","⪢":"GreaterGreater","⪢̸":"NotNestedGreaterGreater","⪤":"glj","⪥":"gla","⪦":"ltcc","⪧":"gtcc","⪨":"lescc","⪩":"gescc","⪪":"smt","⪫":"lat","⪬":"smte","⪬︀":"smtes","⪭":"late","⪭︀":"lates","⪮":"bumpE","⪯":"pre","⪯̸":"npre","⪰":"sce","⪰̸":"nsce","⪳":"prE","⪴":"scE","⪵":"prnE","⪶":"scnE","⪷":"prap","⪸":"scap","⪹":"prnap","⪺":"scnap","⪻":"Pr","⪼":"Sc","⪽":"subdot","⪾":"supdot","⪿":"subplus","⫀":"supplus","⫁":"submult","⫂":"supmult","⫃":"subedot","⫄":"supedot","⫅":"subE","⫅̸":"nsubE","⫆":"supE","⫆̸":"nsupE","⫇":"subsim","⫈":"supsim","⫋︀":"vsubnE","⫋":"subnE","⫌︀":"vsupnE","⫌":"supnE","⫏":"csub","⫐":"csup","⫑":"csube","⫒":"csupe","⫓":"subsup","⫔":"supsub","⫕":"subsub","⫖":"supsup","⫗":"suphsub","⫘":"supdsub","⫙":"forkv","⫚":"topfork","⫛":"mlcp","⫤":"Dashv","⫦":"Vdashl","⫧":"Barv","⫨":"vBar","⫩":"vBarv","⫫":"Vbar","⫬":"Not","⫭":"bNot","⫮":"rnmid","⫯":"cirmid","⫰":"midcir","⫱":"topcir","⫲":"nhpar","⫳":"parsim","⫽":"parsl","⫽⃥":"nparsl","♭":"flat","♮":"natur","♯":"sharp","¤":"curren","¢":"cent",$:"dollar","£":"pound","¥":"yen","€":"euro","¹":"sup1","½":"half","⅓":"frac13","¼":"frac14","⅕":"frac15","⅙":"frac16","⅛":"frac18","²":"sup2","⅔":"frac23","⅖":"frac25","³":"sup3","¾":"frac34","⅗":"frac35","⅜":"frac38","⅘":"frac45","⅚":"frac56","⅝":"frac58","⅞":"frac78","𝒶":"ascr","𝕒":"aopf","𝔞":"afr","𝔸":"Aopf","𝔄":"Afr","𝒜":"Ascr","ª":"ordf","á":"aacute","Á":"Aacute","à":"agrave","À":"Agrave","ă":"abreve","Ă":"Abreve","â":"acirc","Â":"Acirc","å":"aring","Å":"angst","ä":"auml","Ä":"Auml","ã":"atilde","Ã":"Atilde","ą":"aogon","Ą":"Aogon","ā":"amacr","Ā":"Amacr","æ":"aelig","Æ":"AElig","𝒷":"bscr","𝕓":"bopf","𝔟":"bfr","𝔹":"Bopf","ℬ":"Bscr","𝔅":"Bfr","𝔠":"cfr","𝒸":"cscr","𝕔":"copf","ℭ":"Cfr","𝒞":"Cscr","ℂ":"Copf","ć":"cacute","Ć":"Cacute","ĉ":"ccirc","Ĉ":"Ccirc","č":"ccaron","Č":"Ccaron","ċ":"cdot","Ċ":"Cdot","ç":"ccedil","Ç":"Ccedil","℅":"incare","𝔡":"dfr","ⅆ":"dd","𝕕":"dopf","𝒹":"dscr","𝒟":"Dscr","𝔇":"Dfr","ⅅ":"DD","𝔻":"Dopf","ď":"dcaron","Ď":"Dcaron","đ":"dstrok","Đ":"Dstrok","ð":"eth","Ð":"ETH","ⅇ":"ee","ℯ":"escr","𝔢":"efr","𝕖":"eopf","ℰ":"Escr","𝔈":"Efr","𝔼":"Eopf","é":"eacute","É":"Eacute","è":"egrave","È":"Egrave","ê":"ecirc","Ê":"Ecirc","ě":"ecaron","Ě":"Ecaron","ë":"euml","Ë":"Euml","ė":"edot","Ė":"Edot","ę":"eogon","Ę":"Eogon","ē":"emacr","Ē":"Emacr","𝔣":"ffr","𝕗":"fopf","𝒻":"fscr","𝔉":"Ffr","𝔽":"Fopf","ℱ":"Fscr","ff":"fflig","ffi":"ffilig","ffl":"ffllig","fi":"filig",fj:"fjlig","fl":"fllig","ƒ":"fnof","ℊ":"gscr","𝕘":"gopf","𝔤":"gfr","𝒢":"Gscr","𝔾":"Gopf","𝔊":"Gfr","ǵ":"gacute","ğ":"gbreve","Ğ":"Gbreve","ĝ":"gcirc","Ĝ":"Gcirc","ġ":"gdot","Ġ":"Gdot","Ģ":"Gcedil","𝔥":"hfr","ℎ":"planckh","𝒽":"hscr","𝕙":"hopf","ℋ":"Hscr","ℌ":"Hfr","ℍ":"Hopf","ĥ":"hcirc","Ĥ":"Hcirc","ℏ":"hbar","ħ":"hstrok","Ħ":"Hstrok","𝕚":"iopf","𝔦":"ifr","𝒾":"iscr","ⅈ":"ii","𝕀":"Iopf","ℐ":"Iscr","ℑ":"Im","í":"iacute","Í":"Iacute","ì":"igrave","Ì":"Igrave","î":"icirc","Î":"Icirc","ï":"iuml","Ï":"Iuml","ĩ":"itilde","Ĩ":"Itilde","İ":"Idot","į":"iogon","Į":"Iogon","ī":"imacr","Ī":"Imacr","ij":"ijlig","IJ":"IJlig","ı":"imath","𝒿":"jscr","𝕛":"jopf","𝔧":"jfr","𝒥":"Jscr","𝔍":"Jfr","𝕁":"Jopf","ĵ":"jcirc","Ĵ":"Jcirc","ȷ":"jmath","𝕜":"kopf","𝓀":"kscr","𝔨":"kfr","𝒦":"Kscr","𝕂":"Kopf","𝔎":"Kfr","ķ":"kcedil","Ķ":"Kcedil","𝔩":"lfr","𝓁":"lscr","ℓ":"ell","𝕝":"lopf","ℒ":"Lscr","𝔏":"Lfr","𝕃":"Lopf","ĺ":"lacute","Ĺ":"Lacute","ľ":"lcaron","Ľ":"Lcaron","ļ":"lcedil","Ļ":"Lcedil","ł":"lstrok","Ł":"Lstrok","ŀ":"lmidot","Ŀ":"Lmidot","𝔪":"mfr","𝕞":"mopf","𝓂":"mscr","𝔐":"Mfr","𝕄":"Mopf","ℳ":"Mscr","𝔫":"nfr","𝕟":"nopf","𝓃":"nscr","ℕ":"Nopf","𝒩":"Nscr","𝔑":"Nfr","ń":"nacute","Ń":"Nacute","ň":"ncaron","Ň":"Ncaron","ñ":"ntilde","Ñ":"Ntilde","ņ":"ncedil","Ņ":"Ncedil","№":"numero","ŋ":"eng","Ŋ":"ENG","𝕠":"oopf","𝔬":"ofr","ℴ":"oscr","𝒪":"Oscr","𝔒":"Ofr","𝕆":"Oopf","º":"ordm","ó":"oacute","Ó":"Oacute","ò":"ograve","Ò":"Ograve","ô":"ocirc","Ô":"Ocirc","ö":"ouml","Ö":"Ouml","ő":"odblac","Ő":"Odblac","õ":"otilde","Õ":"Otilde","ø":"oslash","Ø":"Oslash","ō":"omacr","Ō":"Omacr","œ":"oelig","Œ":"OElig","𝔭":"pfr","𝓅":"pscr","𝕡":"popf","ℙ":"Popf","𝔓":"Pfr","𝒫":"Pscr","𝕢":"qopf","𝔮":"qfr","𝓆":"qscr","𝒬":"Qscr","𝔔":"Qfr","ℚ":"Qopf","ĸ":"kgreen","𝔯":"rfr","𝕣":"ropf","𝓇":"rscr","ℛ":"Rscr","ℜ":"Re","ℝ":"Ropf","ŕ":"racute","Ŕ":"Racute","ř":"rcaron","Ř":"Rcaron","ŗ":"rcedil","Ŗ":"Rcedil","𝕤":"sopf","𝓈":"sscr","𝔰":"sfr","𝕊":"Sopf","𝔖":"Sfr","𝒮":"Sscr","Ⓢ":"oS","ś":"sacute","Ś":"Sacute","ŝ":"scirc","Ŝ":"Scirc","š":"scaron","Š":"Scaron","ş":"scedil","Ş":"Scedil","ß":"szlig","𝔱":"tfr","𝓉":"tscr","𝕥":"topf","𝒯":"Tscr","𝔗":"Tfr","𝕋":"Topf","ť":"tcaron","Ť":"Tcaron","ţ":"tcedil","Ţ":"Tcedil","™":"trade","ŧ":"tstrok","Ŧ":"Tstrok","𝓊":"uscr","𝕦":"uopf","𝔲":"ufr","𝕌":"Uopf","𝔘":"Ufr","𝒰":"Uscr","ú":"uacute","Ú":"Uacute","ù":"ugrave","Ù":"Ugrave","ŭ":"ubreve","Ŭ":"Ubreve","û":"ucirc","Û":"Ucirc","ů":"uring","Ů":"Uring","ü":"uuml","Ü":"Uuml","ű":"udblac","Ű":"Udblac","ũ":"utilde","Ũ":"Utilde","ų":"uogon","Ų":"Uogon","ū":"umacr","Ū":"Umacr","𝔳":"vfr","𝕧":"vopf","𝓋":"vscr","𝔙":"Vfr","𝕍":"Vopf","𝒱":"Vscr","𝕨":"wopf","𝓌":"wscr","𝔴":"wfr","𝒲":"Wscr","𝕎":"Wopf","𝔚":"Wfr","ŵ":"wcirc","Ŵ":"Wcirc","𝔵":"xfr","𝓍":"xscr","𝕩":"xopf","𝕏":"Xopf","𝔛":"Xfr","𝒳":"Xscr","𝔶":"yfr","𝓎":"yscr","𝕪":"yopf","𝒴":"Yscr","𝔜":"Yfr","𝕐":"Yopf","ý":"yacute","Ý":"Yacute","ŷ":"ycirc","Ŷ":"Ycirc","ÿ":"yuml","Ÿ":"Yuml","𝓏":"zscr","𝔷":"zfr","𝕫":"zopf","ℨ":"Zfr","ℤ":"Zopf","𝒵":"Zscr","ź":"zacute","Ź":"Zacute","ž":"zcaron","Ž":"Zcaron","ż":"zdot","Ż":"Zdot","Ƶ":"imped","þ":"thorn","Þ":"THORN","ʼn":"napos","α":"alpha","Α":"Alpha","β":"beta","Β":"Beta","γ":"gamma","Γ":"Gamma","δ":"delta","Δ":"Delta","ε":"epsi","ϵ":"epsiv","Ε":"Epsilon","ϝ":"gammad","Ϝ":"Gammad","ζ":"zeta","Ζ":"Zeta","η":"eta","Η":"Eta","θ":"theta","ϑ":"thetav","Θ":"Theta","ι":"iota","Ι":"Iota","κ":"kappa","ϰ":"kappav","Κ":"Kappa","λ":"lambda","Λ":"Lambda","μ":"mu","µ":"micro","Μ":"Mu","ν":"nu","Ν":"Nu","ξ":"xi","Ξ":"Xi","ο":"omicron","Ο":"Omicron","π":"pi","ϖ":"piv","Π":"Pi","ρ":"rho","ϱ":"rhov","Ρ":"Rho","σ":"sigma","Σ":"Sigma","ς":"sigmaf","τ":"tau","Τ":"Tau","υ":"upsi","Υ":"Upsilon","ϒ":"Upsi","φ":"phi","ϕ":"phiv","Φ":"Phi","χ":"chi","Χ":"Chi","ψ":"psi","Ψ":"Psi","ω":"omega","Ω":"ohm","а":"acy","А":"Acy","б":"bcy","Б":"Bcy","в":"vcy","В":"Vcy","г":"gcy","Г":"Gcy","ѓ":"gjcy","Ѓ":"GJcy","д":"dcy","Д":"Dcy","ђ":"djcy","Ђ":"DJcy","е":"iecy","Е":"IEcy","ё":"iocy","Ё":"IOcy","є":"jukcy","Є":"Jukcy","ж":"zhcy","Ж":"ZHcy","з":"zcy","З":"Zcy","ѕ":"dscy","Ѕ":"DScy","и":"icy","И":"Icy","і":"iukcy","І":"Iukcy","ї":"yicy","Ї":"YIcy","й":"jcy","Й":"Jcy","ј":"jsercy","Ј":"Jsercy","к":"kcy","К":"Kcy","ќ":"kjcy","Ќ":"KJcy","л":"lcy","Л":"Lcy","љ":"ljcy","Љ":"LJcy","м":"mcy","М":"Mcy","н":"ncy","Н":"Ncy","њ":"njcy","Њ":"NJcy","о":"ocy","О":"Ocy","п":"pcy","П":"Pcy","р":"rcy","Р":"Rcy","с":"scy","С":"Scy","т":"tcy","Т":"Tcy","ћ":"tshcy","Ћ":"TSHcy","у":"ucy","У":"Ucy","ў":"ubrcy","Ў":"Ubrcy","ф":"fcy","Ф":"Fcy","х":"khcy","Х":"KHcy","ц":"tscy","Ц":"TScy","ч":"chcy","Ч":"CHcy","џ":"dzcy","Џ":"DZcy","ш":"shcy","Ш":"SHcy","щ":"shchcy","Щ":"SHCHcy","ъ":"hardcy","Ъ":"HARDcy","ы":"ycy","Ы":"Ycy","ь":"softcy","Ь":"SOFTcy","э":"ecy","Э":"Ecy","ю":"yucy","Ю":"YUcy","я":"yacy","Я":"YAcy","ℵ":"aleph","ℶ":"beth","ℷ":"gimel","ℸ":"daleth"},i=/["&'<>`]/g,n={'"':""","&":"&","'":"'","<":"<",">":">","`":"`"},p=/&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/,d=/[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,g=/&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g,m={aacute:"á",Aacute:"Á",abreve:"ă",Abreve:"Ă",ac:"∾",acd:"∿",acE:"∾̳",acirc:"â",Acirc:"Â",acute:"´",acy:"а",Acy:"А",aelig:"æ",AElig:"Æ",af:"⁡",afr:"𝔞",Afr:"𝔄",agrave:"à",Agrave:"À",alefsym:"ℵ",aleph:"ℵ",alpha:"α",Alpha:"Α",amacr:"ā",Amacr:"Ā",amalg:"⨿",amp:"&",AMP:"&",and:"∧",And:"⩓",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",aogon:"ą",Aogon:"Ą",aopf:"𝕒",Aopf:"𝔸",ap:"≈",apacir:"⩯",ape:"≊",apE:"⩰",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",aring:"å",Aring:"Å",ascr:"𝒶",Ascr:"𝒜",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",bcy:"б",Bcy:"Б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",beta:"β",Beta:"Β",beth:"ℶ",between:"≬",bfr:"𝔟",Bfr:"𝔅",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bnot:"⌐",bNot:"⫭",bopf:"𝕓",Bopf:"𝔹",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxhD:"╥",boxHd:"╤",boxHD:"╦",boxhu:"┴",boxhU:"╨",boxHu:"╧",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpe:"≏",bumpE:"⪮",bumpeq:"≏",Bumpeq:"≎",cacute:"ć",Cacute:"Ć",cap:"∩",Cap:"⋒",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",ccaron:"č",Ccaron:"Č",ccedil:"ç",Ccedil:"Ç",ccirc:"ĉ",Ccirc:"Ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",cdot:"ċ",Cdot:"Ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",chcy:"ч",CHcy:"Ч",check:"✓",checkmark:"✓",chi:"χ",Chi:"Χ",cir:"○",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cire:"≗",cirE:"⧃",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",colone:"≔",Colone:"⩴",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",cscr:"𝒸",Cscr:"𝒞",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cup:"∪",Cup:"⋓",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",dArr:"⇓",Darr:"↡",dash:"‐",dashv:"⊣",Dashv:"⫤",dbkarow:"⤏",dblac:"˝",dcaron:"ď",Dcaron:"Ď",dcy:"д",Dcy:"Д",dd:"ⅆ",DD:"ⅅ",ddagger:"‡",ddarr:"⇊",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",delta:"δ",Delta:"Δ",demptyv:"⦱",dfisht:"⥿",dfr:"𝔡",Dfr:"𝔇",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",djcy:"ђ",DJcy:"Ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",dopf:"𝕕",Dopf:"𝔻",dot:"˙",Dot:"¨",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",downarrow:"↓",Downarrow:"⇓",DownArrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",dscr:"𝒹",Dscr:"𝒟",dscy:"ѕ",DScy:"Ѕ",dsol:"⧶",dstrok:"đ",Dstrok:"Đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",dzcy:"џ",DZcy:"Џ",dzigrarr:"⟿",eacute:"é",Eacute:"É",easter:"⩮",ecaron:"ě",Ecaron:"Ě",ecir:"≖",ecirc:"ê",Ecirc:"Ê",ecolon:"≕",ecy:"э",Ecy:"Э",eDDot:"⩷",edot:"ė",eDot:"≑",Edot:"Ė",ee:"ⅇ",efDot:"≒",efr:"𝔢",Efr:"𝔈",eg:"⪚",egrave:"è",Egrave:"È",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",emacr:"ē",Emacr:"Ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp:" ",emsp13:" ",emsp14:" ",eng:"ŋ",ENG:"Ŋ",ensp:" ",eogon:"ę",Eogon:"Ę",eopf:"𝕖",Eopf:"𝔼",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",epsilon:"ε",Epsilon:"Ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",esim:"≂",Esim:"⩳",eta:"η",Eta:"Η",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",fcy:"ф",Fcy:"Ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",ffr:"𝔣",Ffr:"𝔉",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",fopf:"𝕗",Fopf:"𝔽",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",gamma:"γ",Gamma:"Γ",gammad:"ϝ",Gammad:"Ϝ",gap:"⪆",gbreve:"ğ",Gbreve:"Ğ",Gcedil:"Ģ",gcirc:"ĝ",Gcirc:"Ĝ",gcy:"г",Gcy:"Г",gdot:"ġ",Gdot:"Ġ",ge:"≥",gE:"≧",gel:"⋛",gEl:"⪌",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",gfr:"𝔤",Gfr:"𝔊",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",gjcy:"ѓ",GJcy:"Ѓ",gl:"≷",gla:"⪥",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",gopf:"𝕘",Gopf:"𝔾",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",gscr:"ℊ",Gscr:"𝒢",gsim:"≳",gsime:"⪎",gsiml:"⪐",gt:">",Gt:"≫",GT:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",hardcy:"ъ",HARDcy:"Ъ",harr:"↔",hArr:"⇔",harrcir:"⥈",harrw:"↭",Hat:"^",hbar:"ℏ",hcirc:"ĥ",Hcirc:"Ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",hstrok:"ħ",Hstrok:"Ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",iacute:"í",Iacute:"Í",ic:"⁣",icirc:"î",Icirc:"Î",icy:"и",Icy:"И",Idot:"İ",iecy:"е",IEcy:"Е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",igrave:"ì",Igrave:"Ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",ijlig:"ij",IJlig:"IJ",Im:"ℑ",imacr:"ī",Imacr:"Ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",Implies:"⇒",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",int:"∫",Int:"∬",intcal:"⊺",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",iocy:"ё",IOcy:"Ё",iogon:"į",Iogon:"Į",iopf:"𝕚",Iopf:"𝕀",iota:"ι",Iota:"Ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",itilde:"ĩ",Itilde:"Ĩ",iukcy:"і",Iukcy:"І",iuml:"ï",Iuml:"Ï",jcirc:"ĵ",Jcirc:"Ĵ",jcy:"й",Jcy:"Й",jfr:"𝔧",Jfr:"𝔍",jmath:"ȷ",jopf:"𝕛",Jopf:"𝕁",jscr:"𝒿",Jscr:"𝒥",jsercy:"ј",Jsercy:"Ј",jukcy:"є",Jukcy:"Є",kappa:"κ",Kappa:"Κ",kappav:"ϰ",kcedil:"ķ",Kcedil:"Ķ",kcy:"к",Kcy:"К",kfr:"𝔨",Kfr:"𝔎",kgreen:"ĸ",khcy:"х",KHcy:"Х",kjcy:"ќ",KJcy:"Ќ",kopf:"𝕜",Kopf:"𝕂",kscr:"𝓀",Kscr:"𝒦",lAarr:"⇚",lacute:"ĺ",Lacute:"Ĺ",laemptyv:"⦴",lagran:"ℒ",lambda:"λ",Lambda:"Λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larr:"←",lArr:"⇐",Larr:"↞",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",latail:"⤙",lAtail:"⤛",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",lcaron:"ľ",Lcaron:"Ľ",lcedil:"ļ",Lcedil:"Ļ",lceil:"⌈",lcub:"{",lcy:"л",Lcy:"Л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",leftarrow:"←",Leftarrow:"⇐",LeftArrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",Leftrightarrow:"⇔",LeftRightArrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",leg:"⋚",lEg:"⪋",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",lfr:"𝔩",Lfr:"𝔏",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",ljcy:"љ",LJcy:"Љ",ll:"≪",Ll:"⋘",llarr:"⇇",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",lmidot:"ŀ",Lmidot:"Ŀ",lmoust:"⎰",lmoustache:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",Longleftarrow:"⟸",LongLeftArrow:"⟵",longleftrightarrow:"⟷",Longleftrightarrow:"⟺",LongLeftRightArrow:"⟷",longmapsto:"⟼",longrightarrow:"⟶",Longrightarrow:"⟹",LongRightArrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",lopf:"𝕝",Lopf:"𝕃",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",lstrok:"ł",Lstrok:"Ł",lt:"<",Lt:"≪",LT:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",Map:"⤅",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",mcy:"м",Mcy:"М",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",mfr:"𝔪",Mfr:"𝔐",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",mopf:"𝕞",Mopf:"𝕄",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",mu:"μ",Mu:"Μ",multimap:"⊸",mumap:"⊸",nabla:"∇",nacute:"ń",Nacute:"Ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",ncaron:"ň",Ncaron:"Ň",ncedil:"ņ",Ncedil:"Ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",ncy:"н",Ncy:"Н",ndash:"–",ne:"≠",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",nfr:"𝔫",Nfr:"𝔑",nge:"≱",ngE:"≧̸",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",ngt:"≯",nGt:"≫⃒",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",njcy:"њ",NJcy:"Њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nle:"≰",nlE:"≦̸",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nlt:"≮",nLt:"≪⃒",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",not:"¬",Not:"⫬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrarr:"↛",nrArr:"⇏",nrarrc:"⤳̸",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",nscr:"𝓃",Nscr:"𝒩",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsube:"⊈",nsubE:"⫅̸",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupe:"⊉",nsupE:"⫆̸",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",ntilde:"ñ",Ntilde:"Ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",nu:"ν",Nu:"Ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",oacute:"ó",Oacute:"Ó",oast:"⊛",ocir:"⊚",ocirc:"ô",Ocirc:"Ô",ocy:"о",Ocy:"О",odash:"⊝",odblac:"ő",Odblac:"Ő",odiv:"⨸",odot:"⊙",odsold:"⦼",oelig:"œ",OElig:"Œ",ofcir:"⦿",ofr:"𝔬",Ofr:"𝔒",ogon:"˛",ograve:"ò",Ograve:"Ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",omacr:"ō",Omacr:"Ō",omega:"ω",Omega:"Ω",omicron:"ο",Omicron:"Ο",omid:"⦶",ominus:"⊖",oopf:"𝕠",Oopf:"𝕆",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",or:"∨",Or:"⩔",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",oscr:"ℴ",Oscr:"𝒪",oslash:"ø",Oslash:"Ø",osol:"⊘",otilde:"õ",Otilde:"Õ",otimes:"⊗",Otimes:"⨷",otimesas:"⨶",ouml:"ö",Ouml:"Ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",pcy:"п",Pcy:"П",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",pfr:"𝔭",Pfr:"𝔓",phi:"φ",Phi:"Φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",pi:"π",Pi:"Π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",pr:"≺",Pr:"⪻",prap:"⪷",prcue:"≼",pre:"⪯",prE:"⪳",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportion:"∷",Proportional:"∝",propto:"∝",prsim:"≾",prurel:"⊰",pscr:"𝓅",Pscr:"𝒫",psi:"ψ",Psi:"Ψ",puncsp:" ",qfr:"𝔮",Qfr:"𝔔",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",qscr:"𝓆",Qscr:"𝒬",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",racute:"ŕ",Racute:"Ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarr:"→",rArr:"⇒",Rarr:"↠",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",rarrtl:"↣",Rarrtl:"⤖",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",rcaron:"ř",Rcaron:"Ř",rcedil:"ŗ",Rcedil:"Ŗ",rceil:"⌉",rcub:"}",rcy:"р",Rcy:"Р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",Re:"ℜ",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",rho:"ρ",Rho:"Ρ",rhov:"ϱ",RightAngleBracket:"⟩",rightarrow:"→",Rightarrow:"⇒",RightArrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",sacute:"ś",Sacute:"Ś",sbquo:"‚",sc:"≻",Sc:"⪼",scap:"⪸",scaron:"š",Scaron:"Š",sccue:"≽",sce:"⪰",scE:"⪴",scedil:"ş",Scedil:"Ş",scirc:"ŝ",Scirc:"Ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",scy:"с",Scy:"С",sdot:"⋅",sdotb:"⊡",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",sfr:"𝔰",Sfr:"𝔖",sfrown:"⌢",sharp:"♯",shchcy:"щ",SHCHcy:"Щ",shcy:"ш",SHcy:"Ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",sigma:"σ",Sigma:"Σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",softcy:"ь",SOFTcy:"Ь",sol:"/",solb:"⧄",solbar:"⌿",sopf:"𝕤",Sopf:"𝕊",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squf:"▪",srarr:"→",sscr:"𝓈",Sscr:"𝒮",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",star:"☆",Star:"⋆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",sube:"⊆",subE:"⫅",subedot:"⫃",submult:"⫁",subne:"⊊",subnE:"⫋",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup:"⊃",Sup:"⋑",sup1:"¹",sup2:"²",sup3:"³",supdot:"⪾",supdsub:"⫘",supe:"⊇",supE:"⫆",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supne:"⊋",supnE:"⫌",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",tau:"τ",Tau:"Τ",tbrk:"⎴",tcaron:"ť",Tcaron:"Ť",tcedil:"ţ",Tcedil:"Ţ",tcy:"т",Tcy:"Т",tdot:"⃛",telrec:"⌕",tfr:"𝔱",Tfr:"𝔗",there4:"∴",therefore:"∴",Therefore:"∴",theta:"θ",Theta:"Θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",thinsp:" ",ThinSpace:" ",thkap:"≈",thksim:"∼",thorn:"þ",THORN:"Þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",topf:"𝕥",Topf:"𝕋",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",tscr:"𝓉",Tscr:"𝒯",tscy:"ц",TScy:"Ц",tshcy:"ћ",TSHcy:"Ћ",tstrok:"ŧ",Tstrok:"Ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",uacute:"ú",Uacute:"Ú",uarr:"↑",uArr:"⇑",Uarr:"↟",Uarrocir:"⥉",ubrcy:"ў",Ubrcy:"Ў",ubreve:"ŭ",Ubreve:"Ŭ",ucirc:"û",Ucirc:"Û",ucy:"у",Ucy:"У",udarr:"⇅",udblac:"ű",Udblac:"Ű",udhar:"⥮",ufisht:"⥾",ufr:"𝔲",Ufr:"𝔘",ugrave:"ù",Ugrave:"Ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",umacr:"ū",Umacr:"Ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",uogon:"ų",Uogon:"Ų",uopf:"𝕦",Uopf:"𝕌",uparrow:"↑",Uparrow:"⇑",UpArrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",updownarrow:"↕",Updownarrow:"⇕",UpDownArrow:"↕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",upsilon:"υ",Upsilon:"Υ",UpTee:"⊥",UpTeeArrow:"↥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",uring:"ů",Uring:"Ů",urtri:"◹",uscr:"𝓊",Uscr:"𝒰",utdot:"⋰",utilde:"ũ",Utilde:"Ũ",utri:"▵",utrif:"▴",uuarr:"⇈",uuml:"ü",Uuml:"Ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",vcy:"в",Vcy:"В",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",vee:"∨",Vee:"⋁",veebar:"⊻",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",vfr:"𝔳",Vfr:"𝔙",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",vopf:"𝕧",Vopf:"𝕍",vprop:"∝",vrtri:"⊳",vscr:"𝓋",Vscr:"𝒱",vsubne:"⊊︀",vsubnE:"⫋︀",vsupne:"⊋︀",vsupnE:"⫌︀",Vvdash:"⊪",vzigzag:"⦚",wcirc:"ŵ",Wcirc:"Ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",wfr:"𝔴",Wfr:"𝔚",wopf:"𝕨",Wopf:"𝕎",wp:"℘",wr:"≀",wreath:"≀",wscr:"𝓌",Wscr:"𝒲",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",xfr:"𝔵",Xfr:"𝔛",xharr:"⟷",xhArr:"⟺",xi:"ξ",Xi:"Ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",xopf:"𝕩",Xopf:"𝕏",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",xscr:"𝓍",Xscr:"𝒳",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",yacute:"ý",Yacute:"Ý",yacy:"я",YAcy:"Я",ycirc:"ŷ",Ycirc:"Ŷ",ycy:"ы",Ycy:"Ы",yen:"¥",yfr:"𝔶",Yfr:"𝔜",yicy:"ї",YIcy:"Ї",yopf:"𝕪",Yopf:"𝕐",yscr:"𝓎",Yscr:"𝒴",yucy:"ю",YUcy:"Ю",yuml:"ÿ",Yuml:"Ÿ",zacute:"ź",Zacute:"Ź",zcaron:"ž",Zcaron:"Ž",zcy:"з",Zcy:"З",zdot:"ż",Zdot:"Ż",zeetrf:"ℨ",ZeroWidthSpace:"​",zeta:"ζ",Zeta:"Ζ",zfr:"𝔷",Zfr:"ℨ",zhcy:"ж",ZHcy:"Ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",zscr:"𝓏",Zscr:"𝒵",zwj:"‍",zwnj:"‌"},f={aacute:"á",Aacute:"Á",acirc:"â",Acirc:"Â",acute:"´",aelig:"æ",AElig:"Æ",agrave:"à",Agrave:"À",amp:"&",AMP:"&",aring:"å",Aring:"Å",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",brvbar:"¦",ccedil:"ç",Ccedil:"Ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",Eacute:"É",ecirc:"ê",Ecirc:"Ê",egrave:"è",Egrave:"È",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",iacute:"í",Iacute:"Í",icirc:"î",Icirc:"Î",iexcl:"¡",igrave:"ì",Igrave:"Ì",iquest:"¿",iuml:"ï",Iuml:"Ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",Ntilde:"Ñ",oacute:"ó",Oacute:"Ó",ocirc:"ô",Ocirc:"Ô",ograve:"ò",Ograve:"Ò",ordf:"ª",ordm:"º",oslash:"ø",Oslash:"Ø",otilde:"õ",Otilde:"Õ",ouml:"ö",Ouml:"Ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",THORN:"Þ",times:"×",uacute:"ú",Uacute:"Ú",ucirc:"û",Ucirc:"Û",ugrave:"ù",Ugrave:"Ù",uml:"¨",uuml:"ü",Uuml:"Ü",yacute:"ý",Yacute:"Ý",yen:"¥",yuml:"ÿ"},b={0:"�",128:"€",130:"‚",131:"ƒ",132:"„",133:"…",134:"†",135:"‡",136:"ˆ",137:"‰",138:"Š",139:"‹",140:"Œ",142:"Ž",145:"‘",146:"’",147:"“",148:"”",149:"•",150:"–",151:"—",152:"˜",153:"™",154:"š",155:"›",156:"œ",158:"ž",159:"Ÿ"},h=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],q=String.fromCharCode,v={},w=v.hasOwnProperty,D=function(r,e){return w.call(r,e)},y=function(r,e){for(var a=-1,t=r.length;++a=55296&&r<=57343||r>1114111?(e&&L("character reference outside the permissible Unicode range"),"�"):D(b,r)?(e&&L("disallowed character reference"),b[r]):(e&&y(h,r)&&L("disallowed character reference"),r>65535&&(r-=65536,a+=q(r>>>10&1023|55296),r=56320|1023&r),a+=q(r),a)},x=function(r){return"&#x"+r.toString(16).toUpperCase()+";"},k=function(r){return"&#"+r+";"},L=function(r){throw Error("Parse error: "+r)},S=function(r,e){e=A(e,S.options);var a=e.strict;a&&d.test(r)&&L("forbidden code point");var t=e.encodeEverything,n=e.useNamedReferences,p=e.allowUnsafeSymbols,g=e.decimal?k:x,m=function(r){return g(r.charCodeAt(0))};return t?(r=r.replace(s,function(r){return n&&D(l,r)?"&"+l[r]+";":m(r)}),n&&(r=r.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒").replace(/fj/g,"fj")),n&&(r=r.replace(c,function(r){return"&"+l[r]+";"}))):n?(p||(r=r.replace(i,function(r){return"&"+l[r]+";"})),r=r.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒"),r=r.replace(c,function(r){return"&"+l[r]+";"})):p||(r=r.replace(i,m)),r.replace(o,function(r){var e=r.charCodeAt(0),a=r.charCodeAt(1),t=1024*(e-55296)+a-56320+65536;return g(t)}).replace(u,m)};S.options={allowUnsafeSymbols:!1,encodeEverything:!1,strict:!1,useNamedReferences:!1,decimal:!1};var C=function(r,e){e=A(e,C.options);var a=e.strict;return a&&p.test(r)&&L("malformed character reference"),r.replace(g,function(r,t,o,s,u,c,l,i,n){var p,d,g,b,h,q;return t?(h=t,m[h]):o?(h=o,q=s,q&&e.isAttributeValue?(a&&"="==q&&L("`&` did not start a character reference"),r):(a&&L("named character reference was not terminated by a semicolon"),f[h]+(q||""))):u?(g=u,d=c,a&&!d&&L("character reference was not terminated by a semicolon"),p=parseInt(g,10),E(p,a)):l?(b=l,d=i,a&&!d&&L("character reference was not terminated by a semicolon"),p=parseInt(b,16),E(p,a)):(a&&L("named character reference was not terminated by a semicolon"),r)})};C.options={isAttributeValue:!1,strict:!1};var B=function(r){return r.replace(i,function(r){return n[r]})},T={version:"1.2.0",encode:S,decode:C,escape:B,unescape:C};if("function"==typeof define&&"object"==typeof define.amd&&define.amd)define(function(){return T});else if(e&&!e.nodeType)if(a)a.exports=T;else for(var R in T)D(T,R)&&(e[R]=T[R]);else r.he=T})(this); // base64 by https://github.com/dankogai/js-base64 // prettier-ignore -!function (t, n) { - var r, e; - "object" == typeof exports && "undefined" != typeof module ? module.exports = n() : "function" == typeof define && define.amd ? define(n) : (r = t.Base64, (e = n()).noConflict = function () { - return t.Base64 = r, e - }, t.Meteor && (Base64 = e), t.Base64 = e) -}("undefined" != typeof self ? self : "undefined" != typeof window ? window : "undefined" != typeof global ? global : this, (function () { - "use strict"; - var t, n = "3.7.2", r = "function" == typeof atob, e = "function" == typeof btoa, o = "function" == typeof Buffer, - u = "function" == typeof TextDecoder ? new TextDecoder : void 0, - i = "function" == typeof TextEncoder ? new TextEncoder : void 0, - f = Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="), - c = (t = {}, f.forEach((function (n, r) { - return t[n] = r - })), t), a = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/, - d = String.fromCharCode.bind(String), - s = "function" == typeof Uint8Array.from ? Uint8Array.from.bind(Uint8Array) : function (t, n) { - return void 0 === n && (n = function (t) { - return t - }), new Uint8Array(Array.prototype.slice.call(t, 0).map(n)) - }, l = function (t) { - return t.replace(/=/g, "").replace(/[+\/]/g, (function (t) { - return "+" == t ? "-" : "_" - })) - }, h = function (t) { - return t.replace(/[^A-Za-z0-9\+\/]/g, "") - }, p = function (t) { - for (var n, r, e, o, u = "", i = t.length % 3, c = 0; c < t.length;) { - if ((r = t.charCodeAt(c++)) > 255 || (e = t.charCodeAt(c++)) > 255 || (o = t.charCodeAt(c++)) > 255) throw new TypeError("invalid character found"); - u += f[(n = r << 16 | e << 8 | o) >> 18 & 63] + f[n >> 12 & 63] + f[n >> 6 & 63] + f[63 & n] - } - return i ? u.slice(0, i - 3) + "===".substring(i) : u - }, y = e ? function (t) { - return btoa(t) - } : o ? function (t) { - return Buffer.from(t, "binary").toString("base64") - } : p, A = o ? function (t) { - return Buffer.from(t).toString("base64") - } : function (t) { - for (var n = [], r = 0, e = t.length; r < e; r += 4096) n.push(d.apply(null, t.subarray(r, r + 4096))); - return y(n.join("")) - }, b = function (t, n) { - return void 0 === n && (n = !1), n ? l(A(t)) : A(t) - }, g = function (t) { - if (t.length < 2) return (n = t.charCodeAt(0)) < 128 ? t : n < 2048 ? d(192 | n >>> 6) + d(128 | 63 & n) : d(224 | n >>> 12 & 15) + d(128 | n >>> 6 & 63) + d(128 | 63 & n); - var n = 65536 + 1024 * (t.charCodeAt(0) - 55296) + (t.charCodeAt(1) - 56320); - return d(240 | n >>> 18 & 7) + d(128 | n >>> 12 & 63) + d(128 | n >>> 6 & 63) + d(128 | 63 & n) - }, B = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g, x = function (t) { - return t.replace(B, g) - }, C = o ? function (t) { - return Buffer.from(t, "utf8").toString("base64") - } : i ? function (t) { - return A(i.encode(t)) - } : function (t) { - return y(x(t)) - }, m = function (t, n) { - return void 0 === n && (n = !1), n ? l(C(t)) : C(t) - }, v = function (t) { - return m(t, !0) - }, U = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g, F = function (t) { - switch (t.length) { - case 4: - var n = ((7 & t.charCodeAt(0)) << 18 | (63 & t.charCodeAt(1)) << 12 | (63 & t.charCodeAt(2)) << 6 | 63 & t.charCodeAt(3)) - 65536; - return d(55296 + (n >>> 10)) + d(56320 + (1023 & n)); - case 3: - return d((15 & t.charCodeAt(0)) << 12 | (63 & t.charCodeAt(1)) << 6 | 63 & t.charCodeAt(2)); - default: - return d((31 & t.charCodeAt(0)) << 6 | 63 & t.charCodeAt(1)) - } - }, w = function (t) { - return t.replace(U, F) - }, S = function (t) { - if (t = t.replace(/\s+/g, ""), !a.test(t)) throw new TypeError("malformed base64."); - t += "==".slice(2 - (3 & t.length)); - for (var n, r, e, o = "", u = 0; u < t.length;) n = c[t.charAt(u++)] << 18 | c[t.charAt(u++)] << 12 | (r = c[t.charAt(u++)]) << 6 | (e = c[t.charAt(u++)]), o += 64 === r ? d(n >> 16 & 255) : 64 === e ? d(n >> 16 & 255, n >> 8 & 255) : d(n >> 16 & 255, n >> 8 & 255, 255 & n); - return o - }, E = r ? function (t) { - return atob(h(t)) - } : o ? function (t) { - return Buffer.from(t, "base64").toString("binary") - } : S, D = o ? function (t) { - return s(Buffer.from(t, "base64")) - } : function (t) { - return s(E(t), (function (t) { - return t.charCodeAt(0) - })) - }, R = function (t) { - return D(T(t)) - }, z = o ? function (t) { - return Buffer.from(t, "base64").toString("utf8") - } : u ? function (t) { - return u.decode(D(t)) - } : function (t) { - return w(E(t)) - }, T = function (t) { - return h(t.replace(/[-_]/g, (function (t) { - return "-" == t ? "+" : "/" - }))) - }, Z = function (t) { - return z(T(t)) - }, j = function (t) { - return {value: t, enumerable: !1, writable: !0, configurable: !0} - }, I = function () { - var t = function (t, n) { - return Object.defineProperty(String.prototype, t, j(n)) - }; - t("fromBase64", (function () { - return Z(this) - })), t("toBase64", (function (t) { - return m(this, t) - })), t("toBase64URI", (function () { - return m(this, !0) - })), t("toBase64URL", (function () { - return m(this, !0) - })), t("toUint8Array", (function () { - return R(this) - })) - }, O = function () { - var t = function (t, n) { - return Object.defineProperty(Uint8Array.prototype, t, j(n)) - }; - t("toBase64", (function (t) { - return b(this, t) - })), t("toBase64URI", (function () { - return b(this, !0) - })), t("toBase64URL", (function () { - return b(this, !0) - })) - }, P = { - version: n, - VERSION: "3.7.2", - atob: E, - atobPolyfill: S, - btoa: y, - btoaPolyfill: p, - fromBase64: Z, - toBase64: m, - encode: m, - encodeURI: v, - encodeURL: v, - utob: x, - btou: w, - decode: Z, - isValid: function (t) { - if ("string" != typeof t) return !1; - var n = t.replace(/\s+/g, "").replace(/={0,2}$/, ""); - return !/[^\s0-9a-zA-Z\+/]/.test(n) || !/[^\s0-9a-zA-Z\-_]/.test(n) - }, - fromUint8Array: b, - toUint8Array: R, - extendString: I, - extendUint8Array: O, - extendBuiltins: function () { - I(), O() - }, - Base64: {} - }; - return Object.keys(P).forEach((function (t) { - return P.Base64[t] = P[t] - })), P -})); +!function(t,n){var r,e;"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(r=t.Base64,(e=n()).noConflict=function(){return t.Base64=r,e},t.Meteor&&(Base64=e),t.Base64=e)}("undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:this,(function(){"use strict";var t,n="3.7.2",r="function"==typeof atob,e="function"==typeof btoa,o="function"==typeof Buffer,u="function"==typeof TextDecoder?new TextDecoder:void 0,i="function"==typeof TextEncoder?new TextEncoder:void 0,f=Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="),c=(t={},f.forEach((function(n,r){return t[n]=r})),t),a=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,d=String.fromCharCode.bind(String),s="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):function(t,n){return void 0===n&&(n=function(t){return t}),new Uint8Array(Array.prototype.slice.call(t,0).map(n))},l=function(t){return t.replace(/=/g,"").replace(/[+\/]/g,(function(t){return"+"==t?"-":"_"}))},h=function(t){return t.replace(/[^A-Za-z0-9\+\/]/g,"")},p=function(t){for(var n,r,e,o,u="",i=t.length%3,c=0;c255||(e=t.charCodeAt(c++))>255||(o=t.charCodeAt(c++))>255)throw new TypeError("invalid character found");u+=f[(n=r<<16|e<<8|o)>>18&63]+f[n>>12&63]+f[n>>6&63]+f[63&n]}return i?u.slice(0,i-3)+"===".substring(i):u},y=e?function(t){return btoa(t)}:o?function(t){return Buffer.from(t,"binary").toString("base64")}:p,A=o?function(t){return Buffer.from(t).toString("base64")}:function(t){for(var n=[],r=0,e=t.length;r>>6)+d(128|63&n):d(224|n>>>12&15)+d(128|n>>>6&63)+d(128|63&n);var n=65536+1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320);return d(240|n>>>18&7)+d(128|n>>>12&63)+d(128|n>>>6&63)+d(128|63&n)},B=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,x=function(t){return t.replace(B,g)},C=o?function(t){return Buffer.from(t,"utf8").toString("base64")}:i?function(t){return A(i.encode(t))}:function(t){return y(x(t))},m=function(t,n){return void 0===n&&(n=!1),n?l(C(t)):C(t)},v=function(t){return m(t,!0)},U=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,F=function(t){switch(t.length){case 4:var n=((7&t.charCodeAt(0))<<18|(63&t.charCodeAt(1))<<12|(63&t.charCodeAt(2))<<6|63&t.charCodeAt(3))-65536;return d(55296+(n>>>10))+d(56320+(1023&n));case 3:return d((15&t.charCodeAt(0))<<12|(63&t.charCodeAt(1))<<6|63&t.charCodeAt(2));default:return d((31&t.charCodeAt(0))<<6|63&t.charCodeAt(1))}},w=function(t){return t.replace(U,F)},S=function(t){if(t=t.replace(/\s+/g,""),!a.test(t))throw new TypeError("malformed base64.");t+="==".slice(2-(3&t.length));for(var n,r,e,o="",u=0;u>16&255):64===e?d(n>>16&255,n>>8&255):d(n>>16&255,n>>8&255,255&n);return o},E=r?function(t){return atob(h(t))}:o?function(t){return Buffer.from(t,"base64").toString("binary")}:S,D=o?function(t){return s(Buffer.from(t,"base64"))}:function(t){return s(E(t),(function(t){return t.charCodeAt(0)}))},R=function(t){return D(T(t))},z=o?function(t){return Buffer.from(t,"base64").toString("utf8")}:u?function(t){return u.decode(D(t))}:function(t){return w(E(t))},T=function(t){return h(t.replace(/[-_]/g,(function(t){return"-"==t?"+":"/"})))},Z=function(t){return z(T(t))},j=function(t){return{value:t,enumerable:!1,writable:!0,configurable:!0}},I=function(){var t=function(t,n){return Object.defineProperty(String.prototype,t,j(n))};t("fromBase64",(function(){return Z(this)})),t("toBase64",(function(t){return m(this,t)})),t("toBase64URI",(function(){return m(this,!0)})),t("toBase64URL",(function(){return m(this,!0)})),t("toUint8Array",(function(){return R(this)}))},O=function(){var t=function(t,n){return Object.defineProperty(Uint8Array.prototype,t,j(n))};t("toBase64",(function(t){return b(this,t)})),t("toBase64URI",(function(){return b(this,!0)})),t("toBase64URL",(function(){return b(this,!0)}))},P={version:n,VERSION:"3.7.2",atob:E,atobPolyfill:S,btoa:y,btoaPolyfill:p,fromBase64:Z,toBase64:m,encode:m,encodeURI:v,encodeURL:v,utob:x,btou:w,decode:Z,isValid:function(t){if("string"!=typeof t)return!1;var n=t.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(n)||!/[^\s0-9a-zA-Z\-_]/.test(n)},fromUint8Array:b,toUint8Array:R,extendString:I,extendUint8Array:O,extendBuiltins:function(){I(),O()},Base64:{}};return Object.keys(P).forEach((function(t){return P.Base64[t]=P[t]})),P})); if (cgiData.type === "gray" || cgiData.type === "newgray" || cgiData.type === "empty") { - let trueURL = he.decode( - `${cgiData.hasOwnProperty("url") ? cgiData.url : /http(.*)/.exec(cgiData.desc)[0]}` - ); - trueURL = trueURL.indexOf("http") == 0 ? trueURL : "http://" + trueURL; - if (/qr\.alipay/.test(trueURL)) { - notify("", "点击跳转到支付宝打开", trueURL, alipayScheme + encodeURIComponent(trueURL)); - $done({}); - } else { - if (trueURL.includes('https://spotify.link')) { - const pattern = /\$full_url=([^&]+)/; - trueURL = decodeURIComponent(trueURL).match(pattern)[1]; - } - notify("", "点击跳转到浏览器打开", trueURL, trueURL); - if (forceRedirect) { - let redirect = { - status: redirectStatus, - headers: { - Location: trueURL, - }, - }; - if (isQuanX) redirect.body = respBody; - $done(redirect); - } else $done({}); - } -} else if (cgiData.type === "block") { - !(async () => { - let url = cgiData.btns[0].url.replace("newreadtemplate", "redirecthelpcgi"); - if (!/exportkey=(.+)/.test(url)) { - if (wechatExportKey) { - url += wechatExportKey; - } else { + let trueURL = he.decode( + `${cgiData.hasOwnProperty("url") ? cgiData.url : /http(.*)/.exec(cgiData.desc)[0]}` + ); + trueURL = trueURL.indexOf("http") == 0 ? trueURL : "http://" + trueURL; + if (/qr\.alipay/.test(trueURL)) { + notify("", "点击跳转到支付宝打开", trueURL, alipayScheme + encodeURIComponent(trueURL)); $done({}); - } - } - await get(url).then((resp) => { - let obj = JSON.parse(resp.body); - if (obj.hasOwnProperty("btns")) { - let trueURL = decodeURIComponent(/url=(.*)/.exec(obj.btns[0].url)[1]).replace( - /&block_?type(.*)/, - "" - ); - trueURL = trueURL.includes(".") ? trueURL : Base64.decode(trueURL); - trueURL = trueURL.indexOf("http") == 0 ? trueURL : "http://" + trueURL; - if (!trueURL.includes("web.archive.org/web")) { - notify("", "点击跳转到浏览器打开", trueURL, trueURL); - if (useCache) { - let cacheLink = cacheURL + trueURL; + } else { + if (trueURL.includes('https://spotify.link')) { + const pattern = /\$full_url=([^&]+)/; + trueURL = decodeURIComponent(trueURL).match(pattern)[1]; + } + notify("", "点击跳转到浏览器打开", trueURL, trueURL); + if (forceRedirect) { let redirect = { - status: redirectStatus, - headers: { - Location: cacheLink, - }, + status: redirectStatus, + headers: { + Location: trueURL, + }, }; if (isQuanX) redirect.body = respBody; $done(redirect); - } else { - $done({}); - } - } else { - $done({}); + } else $done({}); + } +} else if (cgiData.type === "block") { + !(async () => { + let url = cgiData.btns[0].url.replace("newreadtemplate", "redirecthelpcgi"); + if (!/exportkey=(.+)/.test(url)) { + if (wechatExportKey) { + url += wechatExportKey; + } else { + $done({}); + } } - resolve(trueURL); - } - $done({}); - resolve(); - }); - })(); + await get(url).then((resp) => { + let obj = JSON.parse(resp.body); + if (obj.hasOwnProperty("btns")) { + let trueURL = decodeURIComponent(/url=(.*)/.exec(obj.btns[0].url)[1]).replace( + /&block_?type(.*)/, + "" + ); + trueURL = trueURL.includes(".") ? trueURL : Base64.decode(trueURL); + trueURL = trueURL.indexOf("http") == 0 ? trueURL : "http://" + trueURL; + if (!trueURL.includes("web.archive.org/web")) { + notify("", "点击跳转到浏览器打开", trueURL, trueURL); + if (useCache) { + let cacheLink = cacheURL + trueURL; + let redirect = { + status: redirectStatus, + headers: { + Location: cacheLink, + }, + }; + if (isQuanX) redirect.body = respBody; + $done(redirect); + } else { + $done({}); + } + } else { + $done({}); + } + resolve(trueURL); + } + $done({}); + resolve(); + }); + })(); } else { - $done({}); + $done({}); } function notify(title = "", subtitle = "", content = "", open_url) { - if (isQuanX && /iOS/.test($environment.version)) { - let opts = {}; - if (open_url) opts["open-url"] = open_url; - if (JSON.stringify(opts) == "{}") { - $notify(title, subtitle, content); - } else { - $notify(title, subtitle, content, opts); - } - } else if (isSurgeiOS || isStashiOS || isLanceX) { - let opts = {}; - if (open_url) opts["url"] = open_url; - if (JSON.stringify(opts) == "{}") { - $notification.post(title, subtitle, content); - } else { - $notification.post(title, subtitle, content, opts); - } - } else if (isLooniOS) { - let opts = {}; - if (open_url) opts["openUrl"] = open_url; - if (JSON.stringify(opts) == "{}") { - $notification.post(title, subtitle, content); - } else { - $notification.post(title, subtitle, content, opts); - } - } else if (isShadowrocket) { - if (open_url) { - $notification.post(title, subtitle, content, open_url); - } else { - $notification.post(title, subtitle, content); + if (isQuanX && /iOS/.test($environment.version)) { + let opts = {}; + if (open_url) opts["open-url"] = open_url; + if (JSON.stringify(opts) == "{}") { + $notify(title, subtitle, content); + } else { + $notify(title, subtitle, content, opts); + } + } else if (isSurgeiOS || isStashiOS || isLanceX) { + let opts = {}; + if (open_url) opts["url"] = open_url; + if (JSON.stringify(opts) == "{}") { + $notification.post(title, subtitle, content); + } else { + $notification.post(title, subtitle, content, opts); + } + } else if (isLooniOS) { + let opts = {}; + if (open_url) opts["openUrl"] = open_url; + if (JSON.stringify(opts) == "{}") { + $notification.post(title, subtitle, content); + } else { + $notification.post(title, subtitle, content, opts); + } + } else if (isShadowrocket) { + if (open_url) { + $notification.post(title, subtitle, content, open_url); + } else { + $notification.post(title, subtitle, content); + } } - } } function get(options) { - if (isQuanX) { - if (typeof options == "string") options = {url: options, method: "GET"}; - return $task.fetch(options); - } else { - return new Promise((resolve, reject) => { - $httpClient.get(options, (err, response, body) => { - if (err) reject(err); - else resolve({statusCode: response.status, headers: response.headers, body}); - }); - }); - } + if (isQuanX) { + if (typeof options == "string") options = { url: options, method: "GET" }; + return $task.fetch(options); + } else { + return new Promise((resolve, reject) => { + $httpClient.get(options, (err, response, body) => { + if (err) reject(err); + else resolve({ statusCode: response.status, headers: response.headers, body }); + }); + }); + } } function read(key) { - if (typeof $notify != "undefined") { - return JSON.parse($prefs.valueForKey(key) || "{}"); - } else { - return JSON.parse($persistentStore.read(key) || "{}"); - } + if (typeof $notify != "undefined") { + return JSON.parse($prefs.valueForKey(key) || "{}"); + } else { + return JSON.parse($persistentStore.read(key) || "{}"); + } } \ No newline at end of file diff --git a/Scripts/AdBlock/Wechat/UnlockLink.min.js b/Scripts/AdBlock/Wechat/UnlockLink.min.js index a484837..01749ea 100644 --- a/Scripts/AdBlock/Wechat/UnlockLink.min.js +++ b/Scripts/AdBlock/Wechat/UnlockLink.min.js @@ -1,166 +1 @@ -let persisVal = read("UnblockURLinWeChat"); -let useCache = persisVal.useCache === "true"; //是否在微信中用快照显示被封禁的链接 -let forceRedirect = persisVal.forceRedirect === "true"; //是否在微信中进行强制重定向,允许的情况下可能出现循环重定向 -let wechatExportKey = persisVal.wechatExportKey || ""; //微信的一个 key,暂未研究如何生成,测试中仅 macOS 微信打开链接跳转浏览器时会缺失,导致无法解析原始链接 -if (typeof $argument != "undefined") { - let arg = Object.fromEntries($argument.split("&").map((item) => item.split("="))); - useCache = arg.useCache === "true"; - forceRedirect = arg.forceRedirect === "ture"; -} -const respBody = $response.body; -//const cacheURL = "https://webcache.googleusercontent.com/search?q=cache:"; -const cacheURL = "https://web.archive.org/web/20991231999999/"; -const alipayScheme = "alipays://platformapi/startapp?appId=20000067&url="; - -const isQuanX = typeof $notify != "undefined"; -const isSurgeiOS = - "undefined" !== typeof $environment && - $environment["surge-version"] && - $environment.system == "iOS"; -const isLooniOS = typeof $loon != "undefined" && /iPhone/.test($loon); -const isStashiOS = - "undefined" !== typeof $environment && - $environment["stash-version"] && - $environment.system == "iOS"; -const isShadowrocket = "undefined" !== typeof $rocket; -const isLanceX = "undefined" != typeof $native; - -const redirectStatus = isQuanX ? "HTTP/1.1 302 Temporary Redirect" : 302; -const cgiDataReg = /var cgiData = ([\s\S]*);\s*<\/script>/; -let cgiData = JSON.parse(cgiDataReg.exec(respBody)[1].replace(/\\/g, "")); - -// HTML entities by https://github.com/mathiasbynens/he -// prettier-ignore -(function(r){var e="object"==typeof exports&&exports,a="object"==typeof module&&module&&module.exports==e&&module,t="object"==typeof global&&global;t.global!==t&&t.window!==t||(r=t);var o=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,s=/[\x01-\x7F]/g,u=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,c=/<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g,l={"­":"shy","‌":"zwnj","‍":"zwj","‎":"lrm","⁣":"ic","⁢":"it","⁡":"af","‏":"rlm","​":"ZeroWidthSpace","⁠":"NoBreak","̑":"DownBreve","⃛":"tdot","⃜":"DotDot","\t":"Tab","\n":"NewLine"," ":"puncsp"," ":"MediumSpace"," ":"thinsp"," ":"hairsp"," ":"emsp13"," ":"ensp"," ":"emsp14"," ":"emsp"," ":"numsp"," ":"nbsp","  ":"ThickSpace","‾":"oline",_:"lowbar","‐":"dash","–":"ndash","—":"mdash","―":"horbar",",":"comma",";":"semi","⁏":"bsemi",":":"colon","⩴":"Colone","!":"excl","¡":"iexcl","?":"quest","¿":"iquest",".":"period","‥":"nldr","…":"mldr","·":"middot","'":"apos","‘":"lsquo","’":"rsquo","‚":"sbquo","‹":"lsaquo","›":"rsaquo",'"':"quot","“":"ldquo","”":"rdquo","„":"bdquo","«":"laquo","»":"raquo","(":"lpar",")":"rpar","[":"lsqb","]":"rsqb","{":"lcub","}":"rcub","⌈":"lceil","⌉":"rceil","⌊":"lfloor","⌋":"rfloor","⦅":"lopar","⦆":"ropar","⦋":"lbrke","⦌":"rbrke","⦍":"lbrkslu","⦎":"rbrksld","⦏":"lbrksld","⦐":"rbrkslu","⦑":"langd","⦒":"rangd","⦓":"lparlt","⦔":"rpargt","⦕":"gtlPar","⦖":"ltrPar","⟦":"lobrk","⟧":"robrk","⟨":"lang","⟩":"rang","⟪":"Lang","⟫":"Rang","⟬":"loang","⟭":"roang","❲":"lbbrk","❳":"rbbrk","‖":"Vert","§":"sect","¶":"para","@":"commat","*":"ast","/":"sol",undefined:null,"&":"amp","#":"num","%":"percnt","‰":"permil","‱":"pertenk","†":"dagger","‡":"Dagger","•":"bull","⁃":"hybull","′":"prime","″":"Prime","‴":"tprime","⁗":"qprime","‵":"bprime","⁁":"caret","`":"grave","´":"acute","˜":"tilde","^":"Hat","¯":"macr","˘":"breve","˙":"dot","¨":"die","˚":"ring","˝":"dblac","¸":"cedil","˛":"ogon","ˆ":"circ","ˇ":"caron","°":"deg","©":"copy","®":"reg","℗":"copysr","℘":"wp","℞":"rx","℧":"mho","℩":"iiota","←":"larr","↚":"nlarr","→":"rarr","↛":"nrarr","↑":"uarr","↓":"darr","↔":"harr","↮":"nharr","↕":"varr","↖":"nwarr","↗":"nearr","↘":"searr","↙":"swarr","↝":"rarrw","↝̸":"nrarrw","↞":"Larr","↟":"Uarr","↠":"Rarr","↡":"Darr","↢":"larrtl","↣":"rarrtl","↤":"mapstoleft","↥":"mapstoup","↦":"map","↧":"mapstodown","↩":"larrhk","↪":"rarrhk","↫":"larrlp","↬":"rarrlp","↭":"harrw","↰":"lsh","↱":"rsh","↲":"ldsh","↳":"rdsh","↵":"crarr","↶":"cularr","↷":"curarr","↺":"olarr","↻":"orarr","↼":"lharu","↽":"lhard","↾":"uharr","↿":"uharl","⇀":"rharu","⇁":"rhard","⇂":"dharr","⇃":"dharl","⇄":"rlarr","⇅":"udarr","⇆":"lrarr","⇇":"llarr","⇈":"uuarr","⇉":"rrarr","⇊":"ddarr","⇋":"lrhar","⇌":"rlhar","⇐":"lArr","⇍":"nlArr","⇑":"uArr","⇒":"rArr","⇏":"nrArr","⇓":"dArr","⇔":"iff","⇎":"nhArr","⇕":"vArr","⇖":"nwArr","⇗":"neArr","⇘":"seArr","⇙":"swArr","⇚":"lAarr","⇛":"rAarr","⇝":"zigrarr","⇤":"larrb","⇥":"rarrb","⇵":"duarr","⇽":"loarr","⇾":"roarr","⇿":"hoarr","∀":"forall","∁":"comp","∂":"part","∂̸":"npart","∃":"exist","∄":"nexist","∅":"empty","∇":"Del","∈":"in","∉":"notin","∋":"ni","∌":"notni","϶":"bepsi","∏":"prod","∐":"coprod","∑":"sum","+":"plus","±":"pm","÷":"div","×":"times","<":"lt","≮":"nlt","<⃒":"nvlt","=":"equals","≠":"ne","=⃥":"bne","⩵":"Equal",">":"gt","≯":"ngt",">⃒":"nvgt","¬":"not","|":"vert","¦":"brvbar","−":"minus","∓":"mp","∔":"plusdo","⁄":"frasl","∖":"setmn","∗":"lowast","∘":"compfn","√":"Sqrt","∝":"prop","∞":"infin","∟":"angrt","∠":"ang","∠⃒":"nang","∡":"angmsd","∢":"angsph","∣":"mid","∤":"nmid","∥":"par","∦":"npar","∧":"and","∨":"or","∩":"cap","∩︀":"caps","∪":"cup","∪︀":"cups","∫":"int","∬":"Int","∭":"tint","⨌":"qint","∮":"oint","∯":"Conint","∰":"Cconint","∱":"cwint","∲":"cwconint","∳":"awconint","∴":"there4","∵":"becaus","∶":"ratio","∷":"Colon","∸":"minusd","∺":"mDDot","∻":"homtht","∼":"sim","≁":"nsim","∼⃒":"nvsim","∽":"bsim","∽̱":"race","∾":"ac","∾̳":"acE","∿":"acd","≀":"wr","≂":"esim","≂̸":"nesim","≃":"sime","≄":"nsime","≅":"cong","≇":"ncong","≆":"simne","≈":"ap","≉":"nap","≊":"ape","≋":"apid","≋̸":"napid","≌":"bcong","≍":"CupCap","≭":"NotCupCap","≍⃒":"nvap","≎":"bump","≎̸":"nbump","≏":"bumpe","≏̸":"nbumpe","≐":"doteq","≐̸":"nedot","≑":"eDot","≒":"efDot","≓":"erDot","≔":"colone","≕":"ecolon","≖":"ecir","≗":"cire","≙":"wedgeq","≚":"veeeq","≜":"trie","≟":"equest","≡":"equiv","≢":"nequiv","≡⃥":"bnequiv","≤":"le","≰":"nle","≤⃒":"nvle","≥":"ge","≱":"nge","≥⃒":"nvge","≦":"lE","≦̸":"nlE","≧":"gE","≧̸":"ngE","≨︀":"lvnE","≨":"lnE","≩":"gnE","≩︀":"gvnE","≪":"ll","≪̸":"nLtv","≪⃒":"nLt","≫":"gg","≫̸":"nGtv","≫⃒":"nGt","≬":"twixt","≲":"lsim","≴":"nlsim","≳":"gsim","≵":"ngsim","≶":"lg","≸":"ntlg","≷":"gl","≹":"ntgl","≺":"pr","⊀":"npr","≻":"sc","⊁":"nsc","≼":"prcue","⋠":"nprcue","≽":"sccue","⋡":"nsccue","≾":"prsim","≿":"scsim","≿̸":"NotSucceedsTilde","⊂":"sub","⊄":"nsub","⊂⃒":"vnsub","⊃":"sup","⊅":"nsup","⊃⃒":"vnsup","⊆":"sube","⊈":"nsube","⊇":"supe","⊉":"nsupe","⊊︀":"vsubne","⊊":"subne","⊋︀":"vsupne","⊋":"supne","⊍":"cupdot","⊎":"uplus","⊏":"sqsub","⊏̸":"NotSquareSubset","⊐":"sqsup","⊐̸":"NotSquareSuperset","⊑":"sqsube","⋢":"nsqsube","⊒":"sqsupe","⋣":"nsqsupe","⊓":"sqcap","⊓︀":"sqcaps","⊔":"sqcup","⊔︀":"sqcups","⊕":"oplus","⊖":"ominus","⊗":"otimes","⊘":"osol","⊙":"odot","⊚":"ocir","⊛":"oast","⊝":"odash","⊞":"plusb","⊟":"minusb","⊠":"timesb","⊡":"sdotb","⊢":"vdash","⊬":"nvdash","⊣":"dashv","⊤":"top","⊥":"bot","⊧":"models","⊨":"vDash","⊭":"nvDash","⊩":"Vdash","⊮":"nVdash","⊪":"Vvdash","⊫":"VDash","⊯":"nVDash","⊰":"prurel","⊲":"vltri","⋪":"nltri","⊳":"vrtri","⋫":"nrtri","⊴":"ltrie","⋬":"nltrie","⊴⃒":"nvltrie","⊵":"rtrie","⋭":"nrtrie","⊵⃒":"nvrtrie","⊶":"origof","⊷":"imof","⊸":"mumap","⊹":"hercon","⊺":"intcal","⊻":"veebar","⊽":"barvee","⊾":"angrtvb","⊿":"lrtri","⋀":"Wedge","⋁":"Vee","⋂":"xcap","⋃":"xcup","⋄":"diam","⋅":"sdot","⋆":"Star","⋇":"divonx","⋈":"bowtie","⋉":"ltimes","⋊":"rtimes","⋋":"lthree","⋌":"rthree","⋍":"bsime","⋎":"cuvee","⋏":"cuwed","⋐":"Sub","⋑":"Sup","⋒":"Cap","⋓":"Cup","⋔":"fork","⋕":"epar","⋖":"ltdot","⋗":"gtdot","⋘":"Ll","⋘̸":"nLl","⋙":"Gg","⋙̸":"nGg","⋚︀":"lesg","⋚":"leg","⋛":"gel","⋛︀":"gesl","⋞":"cuepr","⋟":"cuesc","⋦":"lnsim","⋧":"gnsim","⋨":"prnsim","⋩":"scnsim","⋮":"vellip","⋯":"ctdot","⋰":"utdot","⋱":"dtdot","⋲":"disin","⋳":"isinsv","⋴":"isins","⋵":"isindot","⋵̸":"notindot","⋶":"notinvc","⋷":"notinvb","⋹":"isinE","⋹̸":"notinE","⋺":"nisd","⋻":"xnis","⋼":"nis","⋽":"notnivc","⋾":"notnivb","⌅":"barwed","⌆":"Barwed","⌌":"drcrop","⌍":"dlcrop","⌎":"urcrop","⌏":"ulcrop","⌐":"bnot","⌒":"profline","⌓":"profsurf","⌕":"telrec","⌖":"target","⌜":"ulcorn","⌝":"urcorn","⌞":"dlcorn","⌟":"drcorn","⌢":"frown","⌣":"smile","⌭":"cylcty","⌮":"profalar","⌶":"topbot","⌽":"ovbar","⌿":"solbar","⍼":"angzarr","⎰":"lmoust","⎱":"rmoust","⎴":"tbrk","⎵":"bbrk","⎶":"bbrktbrk","⏜":"OverParenthesis","⏝":"UnderParenthesis","⏞":"OverBrace","⏟":"UnderBrace","⏢":"trpezium","⏧":"elinters","␣":"blank","─":"boxh","│":"boxv","┌":"boxdr","┐":"boxdl","└":"boxur","┘":"boxul","├":"boxvr","┤":"boxvl","┬":"boxhd","┴":"boxhu","┼":"boxvh","═":"boxH","║":"boxV","╒":"boxdR","╓":"boxDr","╔":"boxDR","╕":"boxdL","╖":"boxDl","╗":"boxDL","╘":"boxuR","╙":"boxUr","╚":"boxUR","╛":"boxuL","╜":"boxUl","╝":"boxUL","╞":"boxvR","╟":"boxVr","╠":"boxVR","╡":"boxvL","╢":"boxVl","╣":"boxVL","╤":"boxHd","╥":"boxhD","╦":"boxHD","╧":"boxHu","╨":"boxhU","╩":"boxHU","╪":"boxvH","╫":"boxVh","╬":"boxVH","▀":"uhblk","▄":"lhblk","█":"block","░":"blk14","▒":"blk12","▓":"blk34","□":"squ","▪":"squf","▫":"EmptyVerySmallSquare","▭":"rect","▮":"marker","▱":"fltns","△":"xutri","▴":"utrif","▵":"utri","▸":"rtrif","▹":"rtri","▽":"xdtri","▾":"dtrif","▿":"dtri","◂":"ltrif","◃":"ltri","◊":"loz","○":"cir","◬":"tridot","◯":"xcirc","◸":"ultri","◹":"urtri","◺":"lltri","◻":"EmptySmallSquare","◼":"FilledSmallSquare","★":"starf","☆":"star","☎":"phone","♀":"female","♂":"male","♠":"spades","♣":"clubs","♥":"hearts","♦":"diams","♪":"sung","✓":"check","✗":"cross","✠":"malt","✶":"sext","❘":"VerticalSeparator","⟈":"bsolhsub","⟉":"suphsol","⟵":"xlarr","⟶":"xrarr","⟷":"xharr","⟸":"xlArr","⟹":"xrArr","⟺":"xhArr","⟼":"xmap","⟿":"dzigrarr","⤂":"nvlArr","⤃":"nvrArr","⤄":"nvHarr","⤅":"Map","⤌":"lbarr","⤍":"rbarr","⤎":"lBarr","⤏":"rBarr","⤐":"RBarr","⤑":"DDotrahd","⤒":"UpArrowBar","⤓":"DownArrowBar","⤖":"Rarrtl","⤙":"latail","⤚":"ratail","⤛":"lAtail","⤜":"rAtail","⤝":"larrfs","⤞":"rarrfs","⤟":"larrbfs","⤠":"rarrbfs","⤣":"nwarhk","⤤":"nearhk","⤥":"searhk","⤦":"swarhk","⤧":"nwnear","⤨":"toea","⤩":"tosa","⤪":"swnwar","⤳":"rarrc","⤳̸":"nrarrc","⤵":"cudarrr","⤶":"ldca","⤷":"rdca","⤸":"cudarrl","⤹":"larrpl","⤼":"curarrm","⤽":"cularrp","⥅":"rarrpl","⥈":"harrcir","⥉":"Uarrocir","⥊":"lurdshar","⥋":"ldrushar","⥎":"LeftRightVector","⥏":"RightUpDownVector","⥐":"DownLeftRightVector","⥑":"LeftUpDownVector","⥒":"LeftVectorBar","⥓":"RightVectorBar","⥔":"RightUpVectorBar","⥕":"RightDownVectorBar","⥖":"DownLeftVectorBar","⥗":"DownRightVectorBar","⥘":"LeftUpVectorBar","⥙":"LeftDownVectorBar","⥚":"LeftTeeVector","⥛":"RightTeeVector","⥜":"RightUpTeeVector","⥝":"RightDownTeeVector","⥞":"DownLeftTeeVector","⥟":"DownRightTeeVector","⥠":"LeftUpTeeVector","⥡":"LeftDownTeeVector","⥢":"lHar","⥣":"uHar","⥤":"rHar","⥥":"dHar","⥦":"luruhar","⥧":"ldrdhar","⥨":"ruluhar","⥩":"rdldhar","⥪":"lharul","⥫":"llhard","⥬":"rharul","⥭":"lrhard","⥮":"udhar","⥯":"duhar","⥰":"RoundImplies","⥱":"erarr","⥲":"simrarr","⥳":"larrsim","⥴":"rarrsim","⥵":"rarrap","⥶":"ltlarr","⥸":"gtrarr","⥹":"subrarr","⥻":"suplarr","⥼":"lfisht","⥽":"rfisht","⥾":"ufisht","⥿":"dfisht","⦚":"vzigzag","⦜":"vangrt","⦝":"angrtvbd","⦤":"ange","⦥":"range","⦦":"dwangle","⦧":"uwangle","⦨":"angmsdaa","⦩":"angmsdab","⦪":"angmsdac","⦫":"angmsdad","⦬":"angmsdae","⦭":"angmsdaf","⦮":"angmsdag","⦯":"angmsdah","⦰":"bemptyv","⦱":"demptyv","⦲":"cemptyv","⦳":"raemptyv","⦴":"laemptyv","⦵":"ohbar","⦶":"omid","⦷":"opar","⦹":"operp","⦻":"olcross","⦼":"odsold","⦾":"olcir","⦿":"ofcir","⧀":"olt","⧁":"ogt","⧂":"cirscir","⧃":"cirE","⧄":"solb","⧅":"bsolb","⧉":"boxbox","⧍":"trisb","⧎":"rtriltri","⧏":"LeftTriangleBar","⧏̸":"NotLeftTriangleBar","⧐":"RightTriangleBar","⧐̸":"NotRightTriangleBar","⧜":"iinfin","⧝":"infintie","⧞":"nvinfin","⧣":"eparsl","⧤":"smeparsl","⧥":"eqvparsl","⧫":"lozf","⧴":"RuleDelayed","⧶":"dsol","⨀":"xodot","⨁":"xoplus","⨂":"xotime","⨄":"xuplus","⨆":"xsqcup","⨍":"fpartint","⨐":"cirfnint","⨑":"awint","⨒":"rppolint","⨓":"scpolint","⨔":"npolint","⨕":"pointint","⨖":"quatint","⨗":"intlarhk","⨢":"pluscir","⨣":"plusacir","⨤":"simplus","⨥":"plusdu","⨦":"plussim","⨧":"plustwo","⨩":"mcomma","⨪":"minusdu","⨭":"loplus","⨮":"roplus","⨯":"Cross","⨰":"timesd","⨱":"timesbar","⨳":"smashp","⨴":"lotimes","⨵":"rotimes","⨶":"otimesas","⨷":"Otimes","⨸":"odiv","⨹":"triplus","⨺":"triminus","⨻":"tritime","⨼":"iprod","⨿":"amalg","⩀":"capdot","⩂":"ncup","⩃":"ncap","⩄":"capand","⩅":"cupor","⩆":"cupcap","⩇":"capcup","⩈":"cupbrcap","⩉":"capbrcup","⩊":"cupcup","⩋":"capcap","⩌":"ccups","⩍":"ccaps","⩐":"ccupssm","⩓":"And","⩔":"Or","⩕":"andand","⩖":"oror","⩗":"orslope","⩘":"andslope","⩚":"andv","⩛":"orv","⩜":"andd","⩝":"ord","⩟":"wedbar","⩦":"sdote","⩪":"simdot","⩭":"congdot","⩭̸":"ncongdot","⩮":"easter","⩯":"apacir","⩰":"apE","⩰̸":"napE","⩱":"eplus","⩲":"pluse","⩳":"Esim","⩷":"eDDot","⩸":"equivDD","⩹":"ltcir","⩺":"gtcir","⩻":"ltquest","⩼":"gtquest","⩽":"les","⩽̸":"nles","⩾":"ges","⩾̸":"nges","⩿":"lesdot","⪀":"gesdot","⪁":"lesdoto","⪂":"gesdoto","⪃":"lesdotor","⪄":"gesdotol","⪅":"lap","⪆":"gap","⪇":"lne","⪈":"gne","⪉":"lnap","⪊":"gnap","⪋":"lEg","⪌":"gEl","⪍":"lsime","⪎":"gsime","⪏":"lsimg","⪐":"gsiml","⪑":"lgE","⪒":"glE","⪓":"lesges","⪔":"gesles","⪕":"els","⪖":"egs","⪗":"elsdot","⪘":"egsdot","⪙":"el","⪚":"eg","⪝":"siml","⪞":"simg","⪟":"simlE","⪠":"simgE","⪡":"LessLess","⪡̸":"NotNestedLessLess","⪢":"GreaterGreater","⪢̸":"NotNestedGreaterGreater","⪤":"glj","⪥":"gla","⪦":"ltcc","⪧":"gtcc","⪨":"lescc","⪩":"gescc","⪪":"smt","⪫":"lat","⪬":"smte","⪬︀":"smtes","⪭":"late","⪭︀":"lates","⪮":"bumpE","⪯":"pre","⪯̸":"npre","⪰":"sce","⪰̸":"nsce","⪳":"prE","⪴":"scE","⪵":"prnE","⪶":"scnE","⪷":"prap","⪸":"scap","⪹":"prnap","⪺":"scnap","⪻":"Pr","⪼":"Sc","⪽":"subdot","⪾":"supdot","⪿":"subplus","⫀":"supplus","⫁":"submult","⫂":"supmult","⫃":"subedot","⫄":"supedot","⫅":"subE","⫅̸":"nsubE","⫆":"supE","⫆̸":"nsupE","⫇":"subsim","⫈":"supsim","⫋︀":"vsubnE","⫋":"subnE","⫌︀":"vsupnE","⫌":"supnE","⫏":"csub","⫐":"csup","⫑":"csube","⫒":"csupe","⫓":"subsup","⫔":"supsub","⫕":"subsub","⫖":"supsup","⫗":"suphsub","⫘":"supdsub","⫙":"forkv","⫚":"topfork","⫛":"mlcp","⫤":"Dashv","⫦":"Vdashl","⫧":"Barv","⫨":"vBar","⫩":"vBarv","⫫":"Vbar","⫬":"Not","⫭":"bNot","⫮":"rnmid","⫯":"cirmid","⫰":"midcir","⫱":"topcir","⫲":"nhpar","⫳":"parsim","⫽":"parsl","⫽⃥":"nparsl","♭":"flat","♮":"natur","♯":"sharp","¤":"curren","¢":"cent",$:"dollar","£":"pound","¥":"yen","€":"euro","¹":"sup1","½":"half","⅓":"frac13","¼":"frac14","⅕":"frac15","⅙":"frac16","⅛":"frac18","²":"sup2","⅔":"frac23","⅖":"frac25","³":"sup3","¾":"frac34","⅗":"frac35","⅜":"frac38","⅘":"frac45","⅚":"frac56","⅝":"frac58","⅞":"frac78","𝒶":"ascr","𝕒":"aopf","𝔞":"afr","𝔸":"Aopf","𝔄":"Afr","𝒜":"Ascr","ª":"ordf","á":"aacute","Á":"Aacute","à":"agrave","À":"Agrave","ă":"abreve","Ă":"Abreve","â":"acirc","Â":"Acirc","å":"aring","Å":"angst","ä":"auml","Ä":"Auml","ã":"atilde","Ã":"Atilde","ą":"aogon","Ą":"Aogon","ā":"amacr","Ā":"Amacr","æ":"aelig","Æ":"AElig","𝒷":"bscr","𝕓":"bopf","𝔟":"bfr","𝔹":"Bopf","ℬ":"Bscr","𝔅":"Bfr","𝔠":"cfr","𝒸":"cscr","𝕔":"copf","ℭ":"Cfr","𝒞":"Cscr","ℂ":"Copf","ć":"cacute","Ć":"Cacute","ĉ":"ccirc","Ĉ":"Ccirc","č":"ccaron","Č":"Ccaron","ċ":"cdot","Ċ":"Cdot","ç":"ccedil","Ç":"Ccedil","℅":"incare","𝔡":"dfr","ⅆ":"dd","𝕕":"dopf","𝒹":"dscr","𝒟":"Dscr","𝔇":"Dfr","ⅅ":"DD","𝔻":"Dopf","ď":"dcaron","Ď":"Dcaron","đ":"dstrok","Đ":"Dstrok","ð":"eth","Ð":"ETH","ⅇ":"ee","ℯ":"escr","𝔢":"efr","𝕖":"eopf","ℰ":"Escr","𝔈":"Efr","𝔼":"Eopf","é":"eacute","É":"Eacute","è":"egrave","È":"Egrave","ê":"ecirc","Ê":"Ecirc","ě":"ecaron","Ě":"Ecaron","ë":"euml","Ë":"Euml","ė":"edot","Ė":"Edot","ę":"eogon","Ę":"Eogon","ē":"emacr","Ē":"Emacr","𝔣":"ffr","𝕗":"fopf","𝒻":"fscr","𝔉":"Ffr","𝔽":"Fopf","ℱ":"Fscr","ff":"fflig","ffi":"ffilig","ffl":"ffllig","fi":"filig",fj:"fjlig","fl":"fllig","ƒ":"fnof","ℊ":"gscr","𝕘":"gopf","𝔤":"gfr","𝒢":"Gscr","𝔾":"Gopf","𝔊":"Gfr","ǵ":"gacute","ğ":"gbreve","Ğ":"Gbreve","ĝ":"gcirc","Ĝ":"Gcirc","ġ":"gdot","Ġ":"Gdot","Ģ":"Gcedil","𝔥":"hfr","ℎ":"planckh","𝒽":"hscr","𝕙":"hopf","ℋ":"Hscr","ℌ":"Hfr","ℍ":"Hopf","ĥ":"hcirc","Ĥ":"Hcirc","ℏ":"hbar","ħ":"hstrok","Ħ":"Hstrok","𝕚":"iopf","𝔦":"ifr","𝒾":"iscr","ⅈ":"ii","𝕀":"Iopf","ℐ":"Iscr","ℑ":"Im","í":"iacute","Í":"Iacute","ì":"igrave","Ì":"Igrave","î":"icirc","Î":"Icirc","ï":"iuml","Ï":"Iuml","ĩ":"itilde","Ĩ":"Itilde","İ":"Idot","į":"iogon","Į":"Iogon","ī":"imacr","Ī":"Imacr","ij":"ijlig","IJ":"IJlig","ı":"imath","𝒿":"jscr","𝕛":"jopf","𝔧":"jfr","𝒥":"Jscr","𝔍":"Jfr","𝕁":"Jopf","ĵ":"jcirc","Ĵ":"Jcirc","ȷ":"jmath","𝕜":"kopf","𝓀":"kscr","𝔨":"kfr","𝒦":"Kscr","𝕂":"Kopf","𝔎":"Kfr","ķ":"kcedil","Ķ":"Kcedil","𝔩":"lfr","𝓁":"lscr","ℓ":"ell","𝕝":"lopf","ℒ":"Lscr","𝔏":"Lfr","𝕃":"Lopf","ĺ":"lacute","Ĺ":"Lacute","ľ":"lcaron","Ľ":"Lcaron","ļ":"lcedil","Ļ":"Lcedil","ł":"lstrok","Ł":"Lstrok","ŀ":"lmidot","Ŀ":"Lmidot","𝔪":"mfr","𝕞":"mopf","𝓂":"mscr","𝔐":"Mfr","𝕄":"Mopf","ℳ":"Mscr","𝔫":"nfr","𝕟":"nopf","𝓃":"nscr","ℕ":"Nopf","𝒩":"Nscr","𝔑":"Nfr","ń":"nacute","Ń":"Nacute","ň":"ncaron","Ň":"Ncaron","ñ":"ntilde","Ñ":"Ntilde","ņ":"ncedil","Ņ":"Ncedil","№":"numero","ŋ":"eng","Ŋ":"ENG","𝕠":"oopf","𝔬":"ofr","ℴ":"oscr","𝒪":"Oscr","𝔒":"Ofr","𝕆":"Oopf","º":"ordm","ó":"oacute","Ó":"Oacute","ò":"ograve","Ò":"Ograve","ô":"ocirc","Ô":"Ocirc","ö":"ouml","Ö":"Ouml","ő":"odblac","Ő":"Odblac","õ":"otilde","Õ":"Otilde","ø":"oslash","Ø":"Oslash","ō":"omacr","Ō":"Omacr","œ":"oelig","Œ":"OElig","𝔭":"pfr","𝓅":"pscr","𝕡":"popf","ℙ":"Popf","𝔓":"Pfr","𝒫":"Pscr","𝕢":"qopf","𝔮":"qfr","𝓆":"qscr","𝒬":"Qscr","𝔔":"Qfr","ℚ":"Qopf","ĸ":"kgreen","𝔯":"rfr","𝕣":"ropf","𝓇":"rscr","ℛ":"Rscr","ℜ":"Re","ℝ":"Ropf","ŕ":"racute","Ŕ":"Racute","ř":"rcaron","Ř":"Rcaron","ŗ":"rcedil","Ŗ":"Rcedil","𝕤":"sopf","𝓈":"sscr","𝔰":"sfr","𝕊":"Sopf","𝔖":"Sfr","𝒮":"Sscr","Ⓢ":"oS","ś":"sacute","Ś":"Sacute","ŝ":"scirc","Ŝ":"Scirc","š":"scaron","Š":"Scaron","ş":"scedil","Ş":"Scedil","ß":"szlig","𝔱":"tfr","𝓉":"tscr","𝕥":"topf","𝒯":"Tscr","𝔗":"Tfr","𝕋":"Topf","ť":"tcaron","Ť":"Tcaron","ţ":"tcedil","Ţ":"Tcedil","™":"trade","ŧ":"tstrok","Ŧ":"Tstrok","𝓊":"uscr","𝕦":"uopf","𝔲":"ufr","𝕌":"Uopf","𝔘":"Ufr","𝒰":"Uscr","ú":"uacute","Ú":"Uacute","ù":"ugrave","Ù":"Ugrave","ŭ":"ubreve","Ŭ":"Ubreve","û":"ucirc","Û":"Ucirc","ů":"uring","Ů":"Uring","ü":"uuml","Ü":"Uuml","ű":"udblac","Ű":"Udblac","ũ":"utilde","Ũ":"Utilde","ų":"uogon","Ų":"Uogon","ū":"umacr","Ū":"Umacr","𝔳":"vfr","𝕧":"vopf","𝓋":"vscr","𝔙":"Vfr","𝕍":"Vopf","𝒱":"Vscr","𝕨":"wopf","𝓌":"wscr","𝔴":"wfr","𝒲":"Wscr","𝕎":"Wopf","𝔚":"Wfr","ŵ":"wcirc","Ŵ":"Wcirc","𝔵":"xfr","𝓍":"xscr","𝕩":"xopf","𝕏":"Xopf","𝔛":"Xfr","𝒳":"Xscr","𝔶":"yfr","𝓎":"yscr","𝕪":"yopf","𝒴":"Yscr","𝔜":"Yfr","𝕐":"Yopf","ý":"yacute","Ý":"Yacute","ŷ":"ycirc","Ŷ":"Ycirc","ÿ":"yuml","Ÿ":"Yuml","𝓏":"zscr","𝔷":"zfr","𝕫":"zopf","ℨ":"Zfr","ℤ":"Zopf","𝒵":"Zscr","ź":"zacute","Ź":"Zacute","ž":"zcaron","Ž":"Zcaron","ż":"zdot","Ż":"Zdot","Ƶ":"imped","þ":"thorn","Þ":"THORN","ʼn":"napos","α":"alpha","Α":"Alpha","β":"beta","Β":"Beta","γ":"gamma","Γ":"Gamma","δ":"delta","Δ":"Delta","ε":"epsi","ϵ":"epsiv","Ε":"Epsilon","ϝ":"gammad","Ϝ":"Gammad","ζ":"zeta","Ζ":"Zeta","η":"eta","Η":"Eta","θ":"theta","ϑ":"thetav","Θ":"Theta","ι":"iota","Ι":"Iota","κ":"kappa","ϰ":"kappav","Κ":"Kappa","λ":"lambda","Λ":"Lambda","μ":"mu","µ":"micro","Μ":"Mu","ν":"nu","Ν":"Nu","ξ":"xi","Ξ":"Xi","ο":"omicron","Ο":"Omicron","π":"pi","ϖ":"piv","Π":"Pi","ρ":"rho","ϱ":"rhov","Ρ":"Rho","σ":"sigma","Σ":"Sigma","ς":"sigmaf","τ":"tau","Τ":"Tau","υ":"upsi","Υ":"Upsilon","ϒ":"Upsi","φ":"phi","ϕ":"phiv","Φ":"Phi","χ":"chi","Χ":"Chi","ψ":"psi","Ψ":"Psi","ω":"omega","Ω":"ohm","а":"acy","А":"Acy","б":"bcy","Б":"Bcy","в":"vcy","В":"Vcy","г":"gcy","Г":"Gcy","ѓ":"gjcy","Ѓ":"GJcy","д":"dcy","Д":"Dcy","ђ":"djcy","Ђ":"DJcy","е":"iecy","Е":"IEcy","ё":"iocy","Ё":"IOcy","є":"jukcy","Є":"Jukcy","ж":"zhcy","Ж":"ZHcy","з":"zcy","З":"Zcy","ѕ":"dscy","Ѕ":"DScy","и":"icy","И":"Icy","і":"iukcy","І":"Iukcy","ї":"yicy","Ї":"YIcy","й":"jcy","Й":"Jcy","ј":"jsercy","Ј":"Jsercy","к":"kcy","К":"Kcy","ќ":"kjcy","Ќ":"KJcy","л":"lcy","Л":"Lcy","љ":"ljcy","Љ":"LJcy","м":"mcy","М":"Mcy","н":"ncy","Н":"Ncy","њ":"njcy","Њ":"NJcy","о":"ocy","О":"Ocy","п":"pcy","П":"Pcy","р":"rcy","Р":"Rcy","с":"scy","С":"Scy","т":"tcy","Т":"Tcy","ћ":"tshcy","Ћ":"TSHcy","у":"ucy","У":"Ucy","ў":"ubrcy","Ў":"Ubrcy","ф":"fcy","Ф":"Fcy","х":"khcy","Х":"KHcy","ц":"tscy","Ц":"TScy","ч":"chcy","Ч":"CHcy","џ":"dzcy","Џ":"DZcy","ш":"shcy","Ш":"SHcy","щ":"shchcy","Щ":"SHCHcy","ъ":"hardcy","Ъ":"HARDcy","ы":"ycy","Ы":"Ycy","ь":"softcy","Ь":"SOFTcy","э":"ecy","Э":"Ecy","ю":"yucy","Ю":"YUcy","я":"yacy","Я":"YAcy","ℵ":"aleph","ℶ":"beth","ℷ":"gimel","ℸ":"daleth"},i=/["&'<>`]/g,n={'"':""","&":"&","'":"'","<":"<",">":">","`":"`"},p=/&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/,d=/[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,g=/&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g,m={aacute:"á",Aacute:"Á",abreve:"ă",Abreve:"Ă",ac:"∾",acd:"∿",acE:"∾̳",acirc:"â",Acirc:"Â",acute:"´",acy:"а",Acy:"А",aelig:"æ",AElig:"Æ",af:"⁡",afr:"𝔞",Afr:"𝔄",agrave:"à",Agrave:"À",alefsym:"ℵ",aleph:"ℵ",alpha:"α",Alpha:"Α",amacr:"ā",Amacr:"Ā",amalg:"⨿",amp:"&",AMP:"&",and:"∧",And:"⩓",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",aogon:"ą",Aogon:"Ą",aopf:"𝕒",Aopf:"𝔸",ap:"≈",apacir:"⩯",ape:"≊",apE:"⩰",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",aring:"å",Aring:"Å",ascr:"𝒶",Ascr:"𝒜",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",bcy:"б",Bcy:"Б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",beta:"β",Beta:"Β",beth:"ℶ",between:"≬",bfr:"𝔟",Bfr:"𝔅",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bnot:"⌐",bNot:"⫭",bopf:"𝕓",Bopf:"𝔹",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxhD:"╥",boxHd:"╤",boxHD:"╦",boxhu:"┴",boxhU:"╨",boxHu:"╧",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpe:"≏",bumpE:"⪮",bumpeq:"≏",Bumpeq:"≎",cacute:"ć",Cacute:"Ć",cap:"∩",Cap:"⋒",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",ccaron:"č",Ccaron:"Č",ccedil:"ç",Ccedil:"Ç",ccirc:"ĉ",Ccirc:"Ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",cdot:"ċ",Cdot:"Ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",chcy:"ч",CHcy:"Ч",check:"✓",checkmark:"✓",chi:"χ",Chi:"Χ",cir:"○",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cire:"≗",cirE:"⧃",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",colone:"≔",Colone:"⩴",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",cscr:"𝒸",Cscr:"𝒞",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cup:"∪",Cup:"⋓",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",dArr:"⇓",Darr:"↡",dash:"‐",dashv:"⊣",Dashv:"⫤",dbkarow:"⤏",dblac:"˝",dcaron:"ď",Dcaron:"Ď",dcy:"д",Dcy:"Д",dd:"ⅆ",DD:"ⅅ",ddagger:"‡",ddarr:"⇊",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",delta:"δ",Delta:"Δ",demptyv:"⦱",dfisht:"⥿",dfr:"𝔡",Dfr:"𝔇",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",djcy:"ђ",DJcy:"Ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",dopf:"𝕕",Dopf:"𝔻",dot:"˙",Dot:"¨",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",downarrow:"↓",Downarrow:"⇓",DownArrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",dscr:"𝒹",Dscr:"𝒟",dscy:"ѕ",DScy:"Ѕ",dsol:"⧶",dstrok:"đ",Dstrok:"Đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",dzcy:"џ",DZcy:"Џ",dzigrarr:"⟿",eacute:"é",Eacute:"É",easter:"⩮",ecaron:"ě",Ecaron:"Ě",ecir:"≖",ecirc:"ê",Ecirc:"Ê",ecolon:"≕",ecy:"э",Ecy:"Э",eDDot:"⩷",edot:"ė",eDot:"≑",Edot:"Ė",ee:"ⅇ",efDot:"≒",efr:"𝔢",Efr:"𝔈",eg:"⪚",egrave:"è",Egrave:"È",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",emacr:"ē",Emacr:"Ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp:" ",emsp13:" ",emsp14:" ",eng:"ŋ",ENG:"Ŋ",ensp:" ",eogon:"ę",Eogon:"Ę",eopf:"𝕖",Eopf:"𝔼",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",epsilon:"ε",Epsilon:"Ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",esim:"≂",Esim:"⩳",eta:"η",Eta:"Η",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",fcy:"ф",Fcy:"Ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",ffr:"𝔣",Ffr:"𝔉",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",fopf:"𝕗",Fopf:"𝔽",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",gamma:"γ",Gamma:"Γ",gammad:"ϝ",Gammad:"Ϝ",gap:"⪆",gbreve:"ğ",Gbreve:"Ğ",Gcedil:"Ģ",gcirc:"ĝ",Gcirc:"Ĝ",gcy:"г",Gcy:"Г",gdot:"ġ",Gdot:"Ġ",ge:"≥",gE:"≧",gel:"⋛",gEl:"⪌",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",gfr:"𝔤",Gfr:"𝔊",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",gjcy:"ѓ",GJcy:"Ѓ",gl:"≷",gla:"⪥",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",gopf:"𝕘",Gopf:"𝔾",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",gscr:"ℊ",Gscr:"𝒢",gsim:"≳",gsime:"⪎",gsiml:"⪐",gt:">",Gt:"≫",GT:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",hardcy:"ъ",HARDcy:"Ъ",harr:"↔",hArr:"⇔",harrcir:"⥈",harrw:"↭",Hat:"^",hbar:"ℏ",hcirc:"ĥ",Hcirc:"Ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",hstrok:"ħ",Hstrok:"Ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",iacute:"í",Iacute:"Í",ic:"⁣",icirc:"î",Icirc:"Î",icy:"и",Icy:"И",Idot:"İ",iecy:"е",IEcy:"Е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",igrave:"ì",Igrave:"Ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",ijlig:"ij",IJlig:"IJ",Im:"ℑ",imacr:"ī",Imacr:"Ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",Implies:"⇒",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",int:"∫",Int:"∬",intcal:"⊺",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",iocy:"ё",IOcy:"Ё",iogon:"į",Iogon:"Į",iopf:"𝕚",Iopf:"𝕀",iota:"ι",Iota:"Ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",itilde:"ĩ",Itilde:"Ĩ",iukcy:"і",Iukcy:"І",iuml:"ï",Iuml:"Ï",jcirc:"ĵ",Jcirc:"Ĵ",jcy:"й",Jcy:"Й",jfr:"𝔧",Jfr:"𝔍",jmath:"ȷ",jopf:"𝕛",Jopf:"𝕁",jscr:"𝒿",Jscr:"𝒥",jsercy:"ј",Jsercy:"Ј",jukcy:"є",Jukcy:"Є",kappa:"κ",Kappa:"Κ",kappav:"ϰ",kcedil:"ķ",Kcedil:"Ķ",kcy:"к",Kcy:"К",kfr:"𝔨",Kfr:"𝔎",kgreen:"ĸ",khcy:"х",KHcy:"Х",kjcy:"ќ",KJcy:"Ќ",kopf:"𝕜",Kopf:"𝕂",kscr:"𝓀",Kscr:"𝒦",lAarr:"⇚",lacute:"ĺ",Lacute:"Ĺ",laemptyv:"⦴",lagran:"ℒ",lambda:"λ",Lambda:"Λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larr:"←",lArr:"⇐",Larr:"↞",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",latail:"⤙",lAtail:"⤛",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",lcaron:"ľ",Lcaron:"Ľ",lcedil:"ļ",Lcedil:"Ļ",lceil:"⌈",lcub:"{",lcy:"л",Lcy:"Л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",leftarrow:"←",Leftarrow:"⇐",LeftArrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",Leftrightarrow:"⇔",LeftRightArrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",leg:"⋚",lEg:"⪋",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",lfr:"𝔩",Lfr:"𝔏",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",ljcy:"љ",LJcy:"Љ",ll:"≪",Ll:"⋘",llarr:"⇇",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",lmidot:"ŀ",Lmidot:"Ŀ",lmoust:"⎰",lmoustache:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",Longleftarrow:"⟸",LongLeftArrow:"⟵",longleftrightarrow:"⟷",Longleftrightarrow:"⟺",LongLeftRightArrow:"⟷",longmapsto:"⟼",longrightarrow:"⟶",Longrightarrow:"⟹",LongRightArrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",lopf:"𝕝",Lopf:"𝕃",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",lstrok:"ł",Lstrok:"Ł",lt:"<",Lt:"≪",LT:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",Map:"⤅",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",mcy:"м",Mcy:"М",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",mfr:"𝔪",Mfr:"𝔐",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",mopf:"𝕞",Mopf:"𝕄",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",mu:"μ",Mu:"Μ",multimap:"⊸",mumap:"⊸",nabla:"∇",nacute:"ń",Nacute:"Ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",ncaron:"ň",Ncaron:"Ň",ncedil:"ņ",Ncedil:"Ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",ncy:"н",Ncy:"Н",ndash:"–",ne:"≠",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",nfr:"𝔫",Nfr:"𝔑",nge:"≱",ngE:"≧̸",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",ngt:"≯",nGt:"≫⃒",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",njcy:"њ",NJcy:"Њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nle:"≰",nlE:"≦̸",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nlt:"≮",nLt:"≪⃒",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",not:"¬",Not:"⫬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrarr:"↛",nrArr:"⇏",nrarrc:"⤳̸",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",nscr:"𝓃",Nscr:"𝒩",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsube:"⊈",nsubE:"⫅̸",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupe:"⊉",nsupE:"⫆̸",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",ntilde:"ñ",Ntilde:"Ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",nu:"ν",Nu:"Ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",oacute:"ó",Oacute:"Ó",oast:"⊛",ocir:"⊚",ocirc:"ô",Ocirc:"Ô",ocy:"о",Ocy:"О",odash:"⊝",odblac:"ő",Odblac:"Ő",odiv:"⨸",odot:"⊙",odsold:"⦼",oelig:"œ",OElig:"Œ",ofcir:"⦿",ofr:"𝔬",Ofr:"𝔒",ogon:"˛",ograve:"ò",Ograve:"Ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",omacr:"ō",Omacr:"Ō",omega:"ω",Omega:"Ω",omicron:"ο",Omicron:"Ο",omid:"⦶",ominus:"⊖",oopf:"𝕠",Oopf:"𝕆",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",or:"∨",Or:"⩔",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",oscr:"ℴ",Oscr:"𝒪",oslash:"ø",Oslash:"Ø",osol:"⊘",otilde:"õ",Otilde:"Õ",otimes:"⊗",Otimes:"⨷",otimesas:"⨶",ouml:"ö",Ouml:"Ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",pcy:"п",Pcy:"П",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",pfr:"𝔭",Pfr:"𝔓",phi:"φ",Phi:"Φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",pi:"π",Pi:"Π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",pr:"≺",Pr:"⪻",prap:"⪷",prcue:"≼",pre:"⪯",prE:"⪳",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportion:"∷",Proportional:"∝",propto:"∝",prsim:"≾",prurel:"⊰",pscr:"𝓅",Pscr:"𝒫",psi:"ψ",Psi:"Ψ",puncsp:" ",qfr:"𝔮",Qfr:"𝔔",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",qscr:"𝓆",Qscr:"𝒬",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",racute:"ŕ",Racute:"Ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarr:"→",rArr:"⇒",Rarr:"↠",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",rarrtl:"↣",Rarrtl:"⤖",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",rcaron:"ř",Rcaron:"Ř",rcedil:"ŗ",Rcedil:"Ŗ",rceil:"⌉",rcub:"}",rcy:"р",Rcy:"Р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",Re:"ℜ",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",rho:"ρ",Rho:"Ρ",rhov:"ϱ",RightAngleBracket:"⟩",rightarrow:"→",Rightarrow:"⇒",RightArrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",sacute:"ś",Sacute:"Ś",sbquo:"‚",sc:"≻",Sc:"⪼",scap:"⪸",scaron:"š",Scaron:"Š",sccue:"≽",sce:"⪰",scE:"⪴",scedil:"ş",Scedil:"Ş",scirc:"ŝ",Scirc:"Ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",scy:"с",Scy:"С",sdot:"⋅",sdotb:"⊡",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",sfr:"𝔰",Sfr:"𝔖",sfrown:"⌢",sharp:"♯",shchcy:"щ",SHCHcy:"Щ",shcy:"ш",SHcy:"Ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",sigma:"σ",Sigma:"Σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",softcy:"ь",SOFTcy:"Ь",sol:"/",solb:"⧄",solbar:"⌿",sopf:"𝕤",Sopf:"𝕊",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squf:"▪",srarr:"→",sscr:"𝓈",Sscr:"𝒮",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",star:"☆",Star:"⋆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",sube:"⊆",subE:"⫅",subedot:"⫃",submult:"⫁",subne:"⊊",subnE:"⫋",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup:"⊃",Sup:"⋑",sup1:"¹",sup2:"²",sup3:"³",supdot:"⪾",supdsub:"⫘",supe:"⊇",supE:"⫆",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supne:"⊋",supnE:"⫌",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",tau:"τ",Tau:"Τ",tbrk:"⎴",tcaron:"ť",Tcaron:"Ť",tcedil:"ţ",Tcedil:"Ţ",tcy:"т",Tcy:"Т",tdot:"⃛",telrec:"⌕",tfr:"𝔱",Tfr:"𝔗",there4:"∴",therefore:"∴",Therefore:"∴",theta:"θ",Theta:"Θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",thinsp:" ",ThinSpace:" ",thkap:"≈",thksim:"∼",thorn:"þ",THORN:"Þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",topf:"𝕥",Topf:"𝕋",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",tscr:"𝓉",Tscr:"𝒯",tscy:"ц",TScy:"Ц",tshcy:"ћ",TSHcy:"Ћ",tstrok:"ŧ",Tstrok:"Ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",uacute:"ú",Uacute:"Ú",uarr:"↑",uArr:"⇑",Uarr:"↟",Uarrocir:"⥉",ubrcy:"ў",Ubrcy:"Ў",ubreve:"ŭ",Ubreve:"Ŭ",ucirc:"û",Ucirc:"Û",ucy:"у",Ucy:"У",udarr:"⇅",udblac:"ű",Udblac:"Ű",udhar:"⥮",ufisht:"⥾",ufr:"𝔲",Ufr:"𝔘",ugrave:"ù",Ugrave:"Ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",umacr:"ū",Umacr:"Ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",uogon:"ų",Uogon:"Ų",uopf:"𝕦",Uopf:"𝕌",uparrow:"↑",Uparrow:"⇑",UpArrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",updownarrow:"↕",Updownarrow:"⇕",UpDownArrow:"↕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",upsilon:"υ",Upsilon:"Υ",UpTee:"⊥",UpTeeArrow:"↥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",uring:"ů",Uring:"Ů",urtri:"◹",uscr:"𝓊",Uscr:"𝒰",utdot:"⋰",utilde:"ũ",Utilde:"Ũ",utri:"▵",utrif:"▴",uuarr:"⇈",uuml:"ü",Uuml:"Ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",vcy:"в",Vcy:"В",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",vee:"∨",Vee:"⋁",veebar:"⊻",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",vfr:"𝔳",Vfr:"𝔙",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",vopf:"𝕧",Vopf:"𝕍",vprop:"∝",vrtri:"⊳",vscr:"𝓋",Vscr:"𝒱",vsubne:"⊊︀",vsubnE:"⫋︀",vsupne:"⊋︀",vsupnE:"⫌︀",Vvdash:"⊪",vzigzag:"⦚",wcirc:"ŵ",Wcirc:"Ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",wfr:"𝔴",Wfr:"𝔚",wopf:"𝕨",Wopf:"𝕎",wp:"℘",wr:"≀",wreath:"≀",wscr:"𝓌",Wscr:"𝒲",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",xfr:"𝔵",Xfr:"𝔛",xharr:"⟷",xhArr:"⟺",xi:"ξ",Xi:"Ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",xopf:"𝕩",Xopf:"𝕏",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",xscr:"𝓍",Xscr:"𝒳",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",yacute:"ý",Yacute:"Ý",yacy:"я",YAcy:"Я",ycirc:"ŷ",Ycirc:"Ŷ",ycy:"ы",Ycy:"Ы",yen:"¥",yfr:"𝔶",Yfr:"𝔜",yicy:"ї",YIcy:"Ї",yopf:"𝕪",Yopf:"𝕐",yscr:"𝓎",Yscr:"𝒴",yucy:"ю",YUcy:"Ю",yuml:"ÿ",Yuml:"Ÿ",zacute:"ź",Zacute:"Ź",zcaron:"ž",Zcaron:"Ž",zcy:"з",Zcy:"З",zdot:"ż",Zdot:"Ż",zeetrf:"ℨ",ZeroWidthSpace:"​",zeta:"ζ",Zeta:"Ζ",zfr:"𝔷",Zfr:"ℨ",zhcy:"ж",ZHcy:"Ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",zscr:"𝓏",Zscr:"𝒵",zwj:"‍",zwnj:"‌"},f={aacute:"á",Aacute:"Á",acirc:"â",Acirc:"Â",acute:"´",aelig:"æ",AElig:"Æ",agrave:"à",Agrave:"À",amp:"&",AMP:"&",aring:"å",Aring:"Å",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",brvbar:"¦",ccedil:"ç",Ccedil:"Ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",Eacute:"É",ecirc:"ê",Ecirc:"Ê",egrave:"è",Egrave:"È",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",iacute:"í",Iacute:"Í",icirc:"î",Icirc:"Î",iexcl:"¡",igrave:"ì",Igrave:"Ì",iquest:"¿",iuml:"ï",Iuml:"Ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",Ntilde:"Ñ",oacute:"ó",Oacute:"Ó",ocirc:"ô",Ocirc:"Ô",ograve:"ò",Ograve:"Ò",ordf:"ª",ordm:"º",oslash:"ø",Oslash:"Ø",otilde:"õ",Otilde:"Õ",ouml:"ö",Ouml:"Ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",THORN:"Þ",times:"×",uacute:"ú",Uacute:"Ú",ucirc:"û",Ucirc:"Û",ugrave:"ù",Ugrave:"Ù",uml:"¨",uuml:"ü",Uuml:"Ü",yacute:"ý",Yacute:"Ý",yen:"¥",yuml:"ÿ"},b={0:"�",128:"€",130:"‚",131:"ƒ",132:"„",133:"…",134:"†",135:"‡",136:"ˆ",137:"‰",138:"Š",139:"‹",140:"Œ",142:"Ž",145:"‘",146:"’",147:"“",148:"”",149:"•",150:"–",151:"—",152:"˜",153:"™",154:"š",155:"›",156:"œ",158:"ž",159:"Ÿ"},h=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],q=String.fromCharCode,v={},w=v.hasOwnProperty,D=function(r,e){return w.call(r,e)},y=function(r,e){for(var a=-1,t=r.length;++a=55296&&r<=57343||r>1114111?(e&&L("character reference outside the permissible Unicode range"),"�"):D(b,r)?(e&&L("disallowed character reference"),b[r]):(e&&y(h,r)&&L("disallowed character reference"),r>65535&&(r-=65536,a+=q(r>>>10&1023|55296),r=56320|1023&r),a+=q(r),a)},x=function(r){return"&#x"+r.toString(16).toUpperCase()+";"},k=function(r){return"&#"+r+";"},L=function(r){throw Error("Parse error: "+r)},S=function(r,e){e=A(e,S.options);var a=e.strict;a&&d.test(r)&&L("forbidden code point");var t=e.encodeEverything,n=e.useNamedReferences,p=e.allowUnsafeSymbols,g=e.decimal?k:x,m=function(r){return g(r.charCodeAt(0))};return t?(r=r.replace(s,function(r){return n&&D(l,r)?"&"+l[r]+";":m(r)}),n&&(r=r.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒").replace(/fj/g,"fj")),n&&(r=r.replace(c,function(r){return"&"+l[r]+";"}))):n?(p||(r=r.replace(i,function(r){return"&"+l[r]+";"})),r=r.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒"),r=r.replace(c,function(r){return"&"+l[r]+";"})):p||(r=r.replace(i,m)),r.replace(o,function(r){var e=r.charCodeAt(0),a=r.charCodeAt(1),t=1024*(e-55296)+a-56320+65536;return g(t)}).replace(u,m)};S.options={allowUnsafeSymbols:!1,encodeEverything:!1,strict:!1,useNamedReferences:!1,decimal:!1};var C=function(r,e){e=A(e,C.options);var a=e.strict;return a&&p.test(r)&&L("malformed character reference"),r.replace(g,function(r,t,o,s,u,c,l,i,n){var p,d,g,b,h,q;return t?(h=t,m[h]):o?(h=o,q=s,q&&e.isAttributeValue?(a&&"="==q&&L("`&` did not start a character reference"),r):(a&&L("named character reference was not terminated by a semicolon"),f[h]+(q||""))):u?(g=u,d=c,a&&!d&&L("character reference was not terminated by a semicolon"),p=parseInt(g,10),E(p,a)):l?(b=l,d=i,a&&!d&&L("character reference was not terminated by a semicolon"),p=parseInt(b,16),E(p,a)):(a&&L("named character reference was not terminated by a semicolon"),r)})};C.options={isAttributeValue:!1,strict:!1};var B=function(r){return r.replace(i,function(r){return n[r]})},T={version:"1.2.0",encode:S,decode:C,escape:B,unescape:C};if("function"==typeof define&&"object"==typeof define.amd&&define.amd)define(function(){return T});else if(e&&!e.nodeType)if(a)a.exports=T;else for(var R in T)D(T,R)&&(e[R]=T[R]);else r.he=T})(this); - -// base64 by https://github.com/dankogai/js-base64 -// prettier-ignore -!function(t,n){var r,e;"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(r=t.Base64,(e=n()).noConflict=function(){return t.Base64=r,e},t.Meteor&&(Base64=e),t.Base64=e)}("undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:this,(function(){"use strict";var t,n="3.7.2",r="function"==typeof atob,e="function"==typeof btoa,o="function"==typeof Buffer,u="function"==typeof TextDecoder?new TextDecoder:void 0,i="function"==typeof TextEncoder?new TextEncoder:void 0,f=Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="),c=(t={},f.forEach((function(n,r){return t[n]=r})),t),a=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,d=String.fromCharCode.bind(String),s="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):function(t,n){return void 0===n&&(n=function(t){return t}),new Uint8Array(Array.prototype.slice.call(t,0).map(n))},l=function(t){return t.replace(/=/g,"").replace(/[+\/]/g,(function(t){return"+"==t?"-":"_"}))},h=function(t){return t.replace(/[^A-Za-z0-9\+\/]/g,"")},p=function(t){for(var n,r,e,o,u="",i=t.length%3,c=0;c255||(e=t.charCodeAt(c++))>255||(o=t.charCodeAt(c++))>255)throw new TypeError("invalid character found");u+=f[(n=r<<16|e<<8|o)>>18&63]+f[n>>12&63]+f[n>>6&63]+f[63&n]}return i?u.slice(0,i-3)+"===".substring(i):u},y=e?function(t){return btoa(t)}:o?function(t){return Buffer.from(t,"binary").toString("base64")}:p,A=o?function(t){return Buffer.from(t).toString("base64")}:function(t){for(var n=[],r=0,e=t.length;r>>6)+d(128|63&n):d(224|n>>>12&15)+d(128|n>>>6&63)+d(128|63&n);var n=65536+1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320);return d(240|n>>>18&7)+d(128|n>>>12&63)+d(128|n>>>6&63)+d(128|63&n)},B=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,x=function(t){return t.replace(B,g)},C=o?function(t){return Buffer.from(t,"utf8").toString("base64")}:i?function(t){return A(i.encode(t))}:function(t){return y(x(t))},m=function(t,n){return void 0===n&&(n=!1),n?l(C(t)):C(t)},v=function(t){return m(t,!0)},U=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,F=function(t){switch(t.length){case 4:var n=((7&t.charCodeAt(0))<<18|(63&t.charCodeAt(1))<<12|(63&t.charCodeAt(2))<<6|63&t.charCodeAt(3))-65536;return d(55296+(n>>>10))+d(56320+(1023&n));case 3:return d((15&t.charCodeAt(0))<<12|(63&t.charCodeAt(1))<<6|63&t.charCodeAt(2));default:return d((31&t.charCodeAt(0))<<6|63&t.charCodeAt(1))}},w=function(t){return t.replace(U,F)},S=function(t){if(t=t.replace(/\s+/g,""),!a.test(t))throw new TypeError("malformed base64.");t+="==".slice(2-(3&t.length));for(var n,r,e,o="",u=0;u>16&255):64===e?d(n>>16&255,n>>8&255):d(n>>16&255,n>>8&255,255&n);return o},E=r?function(t){return atob(h(t))}:o?function(t){return Buffer.from(t,"base64").toString("binary")}:S,D=o?function(t){return s(Buffer.from(t,"base64"))}:function(t){return s(E(t),(function(t){return t.charCodeAt(0)}))},R=function(t){return D(T(t))},z=o?function(t){return Buffer.from(t,"base64").toString("utf8")}:u?function(t){return u.decode(D(t))}:function(t){return w(E(t))},T=function(t){return h(t.replace(/[-_]/g,(function(t){return"-"==t?"+":"/"})))},Z=function(t){return z(T(t))},j=function(t){return{value:t,enumerable:!1,writable:!0,configurable:!0}},I=function(){var t=function(t,n){return Object.defineProperty(String.prototype,t,j(n))};t("fromBase64",(function(){return Z(this)})),t("toBase64",(function(t){return m(this,t)})),t("toBase64URI",(function(){return m(this,!0)})),t("toBase64URL",(function(){return m(this,!0)})),t("toUint8Array",(function(){return R(this)}))},O=function(){var t=function(t,n){return Object.defineProperty(Uint8Array.prototype,t,j(n))};t("toBase64",(function(t){return b(this,t)})),t("toBase64URI",(function(){return b(this,!0)})),t("toBase64URL",(function(){return b(this,!0)}))},P={version:n,VERSION:"3.7.2",atob:E,atobPolyfill:S,btoa:y,btoaPolyfill:p,fromBase64:Z,toBase64:m,encode:m,encodeURI:v,encodeURL:v,utob:x,btou:w,decode:Z,isValid:function(t){if("string"!=typeof t)return!1;var n=t.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(n)||!/[^\s0-9a-zA-Z\-_]/.test(n)},fromUint8Array:b,toUint8Array:R,extendString:I,extendUint8Array:O,extendBuiltins:function(){I(),O()},Base64:{}};return Object.keys(P).forEach((function(t){return P.Base64[t]=P[t]})),P})); - -if (cgiData.type === "gray" || cgiData.type === "newgray" || cgiData.type === "empty") { - let trueURL = he.decode( - `${cgiData.hasOwnProperty("url") ? cgiData.url : /http(.*)/.exec(cgiData.desc)[0]}` - ); - trueURL = trueURL.indexOf("http") == 0 ? trueURL : "http://" + trueURL; - if (/qr\.alipay/.test(trueURL)) { - notify("", "点击跳转到支付宝打开", trueURL, alipayScheme + encodeURIComponent(trueURL)); - $done({}); - } else { - if (trueURL.includes('https://spotify.link')) { - const pattern = /\$full_url=([^&]+)/; - trueURL = decodeURIComponent(trueURL).match(pattern)[1]; - } - notify("", "点击跳转到浏览器打开", trueURL, trueURL); - if (forceRedirect) { - let redirect = { - status: redirectStatus, - headers: { - Location: trueURL, - }, - }; - if (isQuanX) redirect.body = respBody; - $done(redirect); - } else $done({}); - } -} else if (cgiData.type === "block") { - !(async () => { - let url = cgiData.btns[0].url.replace("newreadtemplate", "redirecthelpcgi"); - if (!/exportkey=(.+)/.test(url)) { - if (wechatExportKey) { - url += wechatExportKey; - } else { - $done({}); - } - } - await get(url).then((resp) => { - let obj = JSON.parse(resp.body); - if (obj.hasOwnProperty("btns")) { - let trueURL = decodeURIComponent(/url=(.*)/.exec(obj.btns[0].url)[1]).replace( - /&block_?type(.*)/, - "" - ); - trueURL = trueURL.includes(".") ? trueURL : Base64.decode(trueURL); - trueURL = trueURL.indexOf("http") == 0 ? trueURL : "http://" + trueURL; - if (!trueURL.includes("web.archive.org/web")) { - notify("", "点击跳转到浏览器打开", trueURL, trueURL); - if (useCache) { - let cacheLink = cacheURL + trueURL; - let redirect = { - status: redirectStatus, - headers: { - Location: cacheLink, - }, - }; - if (isQuanX) redirect.body = respBody; - $done(redirect); - } else { - $done({}); - } - } else { - $done({}); - } - resolve(trueURL); - } - $done({}); - resolve(); - }); - })(); -} else { - $done({}); -} - -function notify(title = "", subtitle = "", content = "", open_url) { - if (isQuanX && /iOS/.test($environment.version)) { - let opts = {}; - if (open_url) opts["open-url"] = open_url; - if (JSON.stringify(opts) == "{}") { - $notify(title, subtitle, content); - } else { - $notify(title, subtitle, content, opts); - } - } else if (isSurgeiOS || isStashiOS || isLanceX) { - let opts = {}; - if (open_url) opts["url"] = open_url; - if (JSON.stringify(opts) == "{}") { - $notification.post(title, subtitle, content); - } else { - $notification.post(title, subtitle, content, opts); - } - } else if (isLooniOS) { - let opts = {}; - if (open_url) opts["openUrl"] = open_url; - if (JSON.stringify(opts) == "{}") { - $notification.post(title, subtitle, content); - } else { - $notification.post(title, subtitle, content, opts); - } - } else if (isShadowrocket) { - if (open_url) { - $notification.post(title, subtitle, content, open_url); - } else { - $notification.post(title, subtitle, content); - } - } -} - -function get(options) { - if (isQuanX) { - if (typeof options == "string") options = { url: options, method: "GET" }; - return $task.fetch(options); - } else { - return new Promise((resolve, reject) => { - $httpClient.get(options, (err, response, body) => { - if (err) reject(err); - else resolve({ statusCode: response.status, headers: response.headers, body }); - }); - }); - } -} - -function read(key) { - if (typeof $notify != "undefined") { - return JSON.parse($prefs.valueForKey(key) || "{}"); - } else { - return JSON.parse($persistentStore.read(key) || "{}"); - } -} \ No newline at end of file +let persisVal=read("UnblockURLinWeChat"),useCache="true"===persisVal.useCache,forceRedirect="true"===persisVal.forceRedirect,wechatExportKey=persisVal.wechatExportKey||"";if("undefined"!=typeof $argument){let r=Object.fromEntries($argument.split("&").map((r=>r.split("="))));useCache="true"===r.useCache,forceRedirect="ture"===r.forceRedirect}const respBody=$response.body,cacheURL="https://web.archive.org/web/20991231999999/",alipayScheme="alipays://platformapi/startapp?appId=20000067&url=",isQuanX="undefined"!=typeof $notify,isSurgeiOS="undefined"!=typeof $environment&&$environment["surge-version"]&&"iOS"==$environment.system,isLooniOS="undefined"!=typeof $loon&&/iPhone/.test($loon),isStashiOS="undefined"!=typeof $environment&&$environment["stash-version"]&&"iOS"==$environment.system,isShadowrocket="undefined"!=typeof $rocket,isLanceX="undefined"!=typeof $native,redirectStatus=isQuanX?"HTTP/1.1 302 Temporary Redirect":302,cgiDataReg=/var cgiData = ([\s\S]*);\s*<\/script>/;let cgiData=JSON.parse(cgiDataReg.exec(respBody)[1].replace(/\\/g,""));if(function(r){var e="object"==typeof exports&&exports,t="object"==typeof module&&module&&module.exports==e&&module,a="object"==typeof global&&global;a.global!==a&&a.window!==a||(r=a);var o=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,s=/[\x01-\x7F]/g,u=/[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g,c=/<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g,i={"­":"shy","‌":"zwnj","‍":"zwj","‎":"lrm","⁣":"ic","⁢":"it","⁡":"af","‏":"rlm","​":"ZeroWidthSpace","⁠":"NoBreak","̑":"DownBreve","⃛":"tdot","⃜":"DotDot","\t":"Tab","\n":"NewLine"," ":"puncsp"," ":"MediumSpace"," ":"thinsp"," ":"hairsp"," ":"emsp13"," ":"ensp"," ":"emsp14"," ":"emsp"," ":"numsp"," ":"nbsp","  ":"ThickSpace","‾":"oline",_:"lowbar","‐":"dash","–":"ndash","—":"mdash","―":"horbar",",":"comma",";":"semi","⁏":"bsemi",":":"colon","⩴":"Colone","!":"excl","¡":"iexcl","?":"quest","¿":"iquest",".":"period","‥":"nldr","…":"mldr","·":"middot","'":"apos","‘":"lsquo","’":"rsquo","‚":"sbquo","‹":"lsaquo","›":"rsaquo",'"':"quot","“":"ldquo","”":"rdquo","„":"bdquo","«":"laquo","»":"raquo","(":"lpar",")":"rpar","[":"lsqb","]":"rsqb","{":"lcub","}":"rcub","⌈":"lceil","⌉":"rceil","⌊":"lfloor","⌋":"rfloor","⦅":"lopar","⦆":"ropar","⦋":"lbrke","⦌":"rbrke","⦍":"lbrkslu","⦎":"rbrksld","⦏":"lbrksld","⦐":"rbrkslu","⦑":"langd","⦒":"rangd","⦓":"lparlt","⦔":"rpargt","⦕":"gtlPar","⦖":"ltrPar","⟦":"lobrk","⟧":"robrk","⟨":"lang","⟩":"rang","⟪":"Lang","⟫":"Rang","⟬":"loang","⟭":"roang","❲":"lbbrk","❳":"rbbrk","‖":"Vert","§":"sect","¶":"para","@":"commat","*":"ast","/":"sol",undefined:null,"&":"amp","#":"num","%":"percnt","‰":"permil","‱":"pertenk","†":"dagger","‡":"Dagger","•":"bull","⁃":"hybull","′":"prime","″":"Prime","‴":"tprime","⁗":"qprime","‵":"bprime","⁁":"caret","`":"grave","´":"acute","˜":"tilde","^":"Hat","¯":"macr","˘":"breve","˙":"dot","¨":"die","˚":"ring","˝":"dblac","¸":"cedil","˛":"ogon","ˆ":"circ","ˇ":"caron","°":"deg","©":"copy","®":"reg","℗":"copysr","℘":"wp","℞":"rx","℧":"mho","℩":"iiota","←":"larr","↚":"nlarr","→":"rarr","↛":"nrarr","↑":"uarr","↓":"darr","↔":"harr","↮":"nharr","↕":"varr","↖":"nwarr","↗":"nearr","↘":"searr","↙":"swarr","↝":"rarrw","↝̸":"nrarrw","↞":"Larr","↟":"Uarr","↠":"Rarr","↡":"Darr","↢":"larrtl","↣":"rarrtl","↤":"mapstoleft","↥":"mapstoup","↦":"map","↧":"mapstodown","↩":"larrhk","↪":"rarrhk","↫":"larrlp","↬":"rarrlp","↭":"harrw","↰":"lsh","↱":"rsh","↲":"ldsh","↳":"rdsh","↵":"crarr","↶":"cularr","↷":"curarr","↺":"olarr","↻":"orarr","↼":"lharu","↽":"lhard","↾":"uharr","↿":"uharl","⇀":"rharu","⇁":"rhard","⇂":"dharr","⇃":"dharl","⇄":"rlarr","⇅":"udarr","⇆":"lrarr","⇇":"llarr","⇈":"uuarr","⇉":"rrarr","⇊":"ddarr","⇋":"lrhar","⇌":"rlhar","⇐":"lArr","⇍":"nlArr","⇑":"uArr","⇒":"rArr","⇏":"nrArr","⇓":"dArr","⇔":"iff","⇎":"nhArr","⇕":"vArr","⇖":"nwArr","⇗":"neArr","⇘":"seArr","⇙":"swArr","⇚":"lAarr","⇛":"rAarr","⇝":"zigrarr","⇤":"larrb","⇥":"rarrb","⇵":"duarr","⇽":"loarr","⇾":"roarr","⇿":"hoarr","∀":"forall","∁":"comp","∂":"part","∂̸":"npart","∃":"exist","∄":"nexist","∅":"empty","∇":"Del","∈":"in","∉":"notin","∋":"ni","∌":"notni","϶":"bepsi","∏":"prod","∐":"coprod","∑":"sum","+":"plus","±":"pm","÷":"div","×":"times","<":"lt","≮":"nlt","<⃒":"nvlt","=":"equals","≠":"ne","=⃥":"bne","⩵":"Equal",">":"gt","≯":"ngt",">⃒":"nvgt","¬":"not","|":"vert","¦":"brvbar","−":"minus","∓":"mp","∔":"plusdo","⁄":"frasl","∖":"setmn","∗":"lowast","∘":"compfn","√":"Sqrt","∝":"prop","∞":"infin","∟":"angrt","∠":"ang","∠⃒":"nang","∡":"angmsd","∢":"angsph","∣":"mid","∤":"nmid","∥":"par","∦":"npar","∧":"and","∨":"or","∩":"cap","∩︀":"caps","∪":"cup","∪︀":"cups","∫":"int","∬":"Int","∭":"tint","⨌":"qint","∮":"oint","∯":"Conint","∰":"Cconint","∱":"cwint","∲":"cwconint","∳":"awconint","∴":"there4","∵":"becaus","∶":"ratio","∷":"Colon","∸":"minusd","∺":"mDDot","∻":"homtht","∼":"sim","≁":"nsim","∼⃒":"nvsim","∽":"bsim","∽̱":"race","∾":"ac","∾̳":"acE","∿":"acd","≀":"wr","≂":"esim","≂̸":"nesim","≃":"sime","≄":"nsime","≅":"cong","≇":"ncong","≆":"simne","≈":"ap","≉":"nap","≊":"ape","≋":"apid","≋̸":"napid","≌":"bcong","≍":"CupCap","≭":"NotCupCap","≍⃒":"nvap","≎":"bump","≎̸":"nbump","≏":"bumpe","≏̸":"nbumpe","≐":"doteq","≐̸":"nedot","≑":"eDot","≒":"efDot","≓":"erDot","≔":"colone","≕":"ecolon","≖":"ecir","≗":"cire","≙":"wedgeq","≚":"veeeq","≜":"trie","≟":"equest","≡":"equiv","≢":"nequiv","≡⃥":"bnequiv","≤":"le","≰":"nle","≤⃒":"nvle","≥":"ge","≱":"nge","≥⃒":"nvge","≦":"lE","≦̸":"nlE","≧":"gE","≧̸":"ngE","≨︀":"lvnE","≨":"lnE","≩":"gnE","≩︀":"gvnE","≪":"ll","≪̸":"nLtv","≪⃒":"nLt","≫":"gg","≫̸":"nGtv","≫⃒":"nGt","≬":"twixt","≲":"lsim","≴":"nlsim","≳":"gsim","≵":"ngsim","≶":"lg","≸":"ntlg","≷":"gl","≹":"ntgl","≺":"pr","⊀":"npr","≻":"sc","⊁":"nsc","≼":"prcue","⋠":"nprcue","≽":"sccue","⋡":"nsccue","≾":"prsim","≿":"scsim","≿̸":"NotSucceedsTilde","⊂":"sub","⊄":"nsub","⊂⃒":"vnsub","⊃":"sup","⊅":"nsup","⊃⃒":"vnsup","⊆":"sube","⊈":"nsube","⊇":"supe","⊉":"nsupe","⊊︀":"vsubne","⊊":"subne","⊋︀":"vsupne","⊋":"supne","⊍":"cupdot","⊎":"uplus","⊏":"sqsub","⊏̸":"NotSquareSubset","⊐":"sqsup","⊐̸":"NotSquareSuperset","⊑":"sqsube","⋢":"nsqsube","⊒":"sqsupe","⋣":"nsqsupe","⊓":"sqcap","⊓︀":"sqcaps","⊔":"sqcup","⊔︀":"sqcups","⊕":"oplus","⊖":"ominus","⊗":"otimes","⊘":"osol","⊙":"odot","⊚":"ocir","⊛":"oast","⊝":"odash","⊞":"plusb","⊟":"minusb","⊠":"timesb","⊡":"sdotb","⊢":"vdash","⊬":"nvdash","⊣":"dashv","⊤":"top","⊥":"bot","⊧":"models","⊨":"vDash","⊭":"nvDash","⊩":"Vdash","⊮":"nVdash","⊪":"Vvdash","⊫":"VDash","⊯":"nVDash","⊰":"prurel","⊲":"vltri","⋪":"nltri","⊳":"vrtri","⋫":"nrtri","⊴":"ltrie","⋬":"nltrie","⊴⃒":"nvltrie","⊵":"rtrie","⋭":"nrtrie","⊵⃒":"nvrtrie","⊶":"origof","⊷":"imof","⊸":"mumap","⊹":"hercon","⊺":"intcal","⊻":"veebar","⊽":"barvee","⊾":"angrtvb","⊿":"lrtri","⋀":"Wedge","⋁":"Vee","⋂":"xcap","⋃":"xcup","⋄":"diam","⋅":"sdot","⋆":"Star","⋇":"divonx","⋈":"bowtie","⋉":"ltimes","⋊":"rtimes","⋋":"lthree","⋌":"rthree","⋍":"bsime","⋎":"cuvee","⋏":"cuwed","⋐":"Sub","⋑":"Sup","⋒":"Cap","⋓":"Cup","⋔":"fork","⋕":"epar","⋖":"ltdot","⋗":"gtdot","⋘":"Ll","⋘̸":"nLl","⋙":"Gg","⋙̸":"nGg","⋚︀":"lesg","⋚":"leg","⋛":"gel","⋛︀":"gesl","⋞":"cuepr","⋟":"cuesc","⋦":"lnsim","⋧":"gnsim","⋨":"prnsim","⋩":"scnsim","⋮":"vellip","⋯":"ctdot","⋰":"utdot","⋱":"dtdot","⋲":"disin","⋳":"isinsv","⋴":"isins","⋵":"isindot","⋵̸":"notindot","⋶":"notinvc","⋷":"notinvb","⋹":"isinE","⋹̸":"notinE","⋺":"nisd","⋻":"xnis","⋼":"nis","⋽":"notnivc","⋾":"notnivb","⌅":"barwed","⌆":"Barwed","⌌":"drcrop","⌍":"dlcrop","⌎":"urcrop","⌏":"ulcrop","⌐":"bnot","⌒":"profline","⌓":"profsurf","⌕":"telrec","⌖":"target","⌜":"ulcorn","⌝":"urcorn","⌞":"dlcorn","⌟":"drcorn","⌢":"frown","⌣":"smile","⌭":"cylcty","⌮":"profalar","⌶":"topbot","⌽":"ovbar","⌿":"solbar","⍼":"angzarr","⎰":"lmoust","⎱":"rmoust","⎴":"tbrk","⎵":"bbrk","⎶":"bbrktbrk","⏜":"OverParenthesis","⏝":"UnderParenthesis","⏞":"OverBrace","⏟":"UnderBrace","⏢":"trpezium","⏧":"elinters","␣":"blank","─":"boxh","│":"boxv","┌":"boxdr","┐":"boxdl","└":"boxur","┘":"boxul","├":"boxvr","┤":"boxvl","┬":"boxhd","┴":"boxhu","┼":"boxvh","═":"boxH","║":"boxV","╒":"boxdR","╓":"boxDr","╔":"boxDR","╕":"boxdL","╖":"boxDl","╗":"boxDL","╘":"boxuR","╙":"boxUr","╚":"boxUR","╛":"boxuL","╜":"boxUl","╝":"boxUL","╞":"boxvR","╟":"boxVr","╠":"boxVR","╡":"boxvL","╢":"boxVl","╣":"boxVL","╤":"boxHd","╥":"boxhD","╦":"boxHD","╧":"boxHu","╨":"boxhU","╩":"boxHU","╪":"boxvH","╫":"boxVh","╬":"boxVH","▀":"uhblk","▄":"lhblk","█":"block","░":"blk14","▒":"blk12","▓":"blk34","□":"squ","▪":"squf","▫":"EmptyVerySmallSquare","▭":"rect","▮":"marker","▱":"fltns","△":"xutri","▴":"utrif","▵":"utri","▸":"rtrif","▹":"rtri","▽":"xdtri","▾":"dtrif","▿":"dtri","◂":"ltrif","◃":"ltri","◊":"loz","○":"cir","◬":"tridot","◯":"xcirc","◸":"ultri","◹":"urtri","◺":"lltri","◻":"EmptySmallSquare","◼":"FilledSmallSquare","★":"starf","☆":"star","☎":"phone","♀":"female","♂":"male","♠":"spades","♣":"clubs","♥":"hearts","♦":"diams","♪":"sung","✓":"check","✗":"cross","✠":"malt","✶":"sext","❘":"VerticalSeparator","⟈":"bsolhsub","⟉":"suphsol","⟵":"xlarr","⟶":"xrarr","⟷":"xharr","⟸":"xlArr","⟹":"xrArr","⟺":"xhArr","⟼":"xmap","⟿":"dzigrarr","⤂":"nvlArr","⤃":"nvrArr","⤄":"nvHarr","⤅":"Map","⤌":"lbarr","⤍":"rbarr","⤎":"lBarr","⤏":"rBarr","⤐":"RBarr","⤑":"DDotrahd","⤒":"UpArrowBar","⤓":"DownArrowBar","⤖":"Rarrtl","⤙":"latail","⤚":"ratail","⤛":"lAtail","⤜":"rAtail","⤝":"larrfs","⤞":"rarrfs","⤟":"larrbfs","⤠":"rarrbfs","⤣":"nwarhk","⤤":"nearhk","⤥":"searhk","⤦":"swarhk","⤧":"nwnear","⤨":"toea","⤩":"tosa","⤪":"swnwar","⤳":"rarrc","⤳̸":"nrarrc","⤵":"cudarrr","⤶":"ldca","⤷":"rdca","⤸":"cudarrl","⤹":"larrpl","⤼":"curarrm","⤽":"cularrp","⥅":"rarrpl","⥈":"harrcir","⥉":"Uarrocir","⥊":"lurdshar","⥋":"ldrushar","⥎":"LeftRightVector","⥏":"RightUpDownVector","⥐":"DownLeftRightVector","⥑":"LeftUpDownVector","⥒":"LeftVectorBar","⥓":"RightVectorBar","⥔":"RightUpVectorBar","⥕":"RightDownVectorBar","⥖":"DownLeftVectorBar","⥗":"DownRightVectorBar","⥘":"LeftUpVectorBar","⥙":"LeftDownVectorBar","⥚":"LeftTeeVector","⥛":"RightTeeVector","⥜":"RightUpTeeVector","⥝":"RightDownTeeVector","⥞":"DownLeftTeeVector","⥟":"DownRightTeeVector","⥠":"LeftUpTeeVector","⥡":"LeftDownTeeVector","⥢":"lHar","⥣":"uHar","⥤":"rHar","⥥":"dHar","⥦":"luruhar","⥧":"ldrdhar","⥨":"ruluhar","⥩":"rdldhar","⥪":"lharul","⥫":"llhard","⥬":"rharul","⥭":"lrhard","⥮":"udhar","⥯":"duhar","⥰":"RoundImplies","⥱":"erarr","⥲":"simrarr","⥳":"larrsim","⥴":"rarrsim","⥵":"rarrap","⥶":"ltlarr","⥸":"gtrarr","⥹":"subrarr","⥻":"suplarr","⥼":"lfisht","⥽":"rfisht","⥾":"ufisht","⥿":"dfisht","⦚":"vzigzag","⦜":"vangrt","⦝":"angrtvbd","⦤":"ange","⦥":"range","⦦":"dwangle","⦧":"uwangle","⦨":"angmsdaa","⦩":"angmsdab","⦪":"angmsdac","⦫":"angmsdad","⦬":"angmsdae","⦭":"angmsdaf","⦮":"angmsdag","⦯":"angmsdah","⦰":"bemptyv","⦱":"demptyv","⦲":"cemptyv","⦳":"raemptyv","⦴":"laemptyv","⦵":"ohbar","⦶":"omid","⦷":"opar","⦹":"operp","⦻":"olcross","⦼":"odsold","⦾":"olcir","⦿":"ofcir","⧀":"olt","⧁":"ogt","⧂":"cirscir","⧃":"cirE","⧄":"solb","⧅":"bsolb","⧉":"boxbox","⧍":"trisb","⧎":"rtriltri","⧏":"LeftTriangleBar","⧏̸":"NotLeftTriangleBar","⧐":"RightTriangleBar","⧐̸":"NotRightTriangleBar","⧜":"iinfin","⧝":"infintie","⧞":"nvinfin","⧣":"eparsl","⧤":"smeparsl","⧥":"eqvparsl","⧫":"lozf","⧴":"RuleDelayed","⧶":"dsol","⨀":"xodot","⨁":"xoplus","⨂":"xotime","⨄":"xuplus","⨆":"xsqcup","⨍":"fpartint","⨐":"cirfnint","⨑":"awint","⨒":"rppolint","⨓":"scpolint","⨔":"npolint","⨕":"pointint","⨖":"quatint","⨗":"intlarhk","⨢":"pluscir","⨣":"plusacir","⨤":"simplus","⨥":"plusdu","⨦":"plussim","⨧":"plustwo","⨩":"mcomma","⨪":"minusdu","⨭":"loplus","⨮":"roplus","⨯":"Cross","⨰":"timesd","⨱":"timesbar","⨳":"smashp","⨴":"lotimes","⨵":"rotimes","⨶":"otimesas","⨷":"Otimes","⨸":"odiv","⨹":"triplus","⨺":"triminus","⨻":"tritime","⨼":"iprod","⨿":"amalg","⩀":"capdot","⩂":"ncup","⩃":"ncap","⩄":"capand","⩅":"cupor","⩆":"cupcap","⩇":"capcup","⩈":"cupbrcap","⩉":"capbrcup","⩊":"cupcup","⩋":"capcap","⩌":"ccups","⩍":"ccaps","⩐":"ccupssm","⩓":"And","⩔":"Or","⩕":"andand","⩖":"oror","⩗":"orslope","⩘":"andslope","⩚":"andv","⩛":"orv","⩜":"andd","⩝":"ord","⩟":"wedbar","⩦":"sdote","⩪":"simdot","⩭":"congdot","⩭̸":"ncongdot","⩮":"easter","⩯":"apacir","⩰":"apE","⩰̸":"napE","⩱":"eplus","⩲":"pluse","⩳":"Esim","⩷":"eDDot","⩸":"equivDD","⩹":"ltcir","⩺":"gtcir","⩻":"ltquest","⩼":"gtquest","⩽":"les","⩽̸":"nles","⩾":"ges","⩾̸":"nges","⩿":"lesdot","⪀":"gesdot","⪁":"lesdoto","⪂":"gesdoto","⪃":"lesdotor","⪄":"gesdotol","⪅":"lap","⪆":"gap","⪇":"lne","⪈":"gne","⪉":"lnap","⪊":"gnap","⪋":"lEg","⪌":"gEl","⪍":"lsime","⪎":"gsime","⪏":"lsimg","⪐":"gsiml","⪑":"lgE","⪒":"glE","⪓":"lesges","⪔":"gesles","⪕":"els","⪖":"egs","⪗":"elsdot","⪘":"egsdot","⪙":"el","⪚":"eg","⪝":"siml","⪞":"simg","⪟":"simlE","⪠":"simgE","⪡":"LessLess","⪡̸":"NotNestedLessLess","⪢":"GreaterGreater","⪢̸":"NotNestedGreaterGreater","⪤":"glj","⪥":"gla","⪦":"ltcc","⪧":"gtcc","⪨":"lescc","⪩":"gescc","⪪":"smt","⪫":"lat","⪬":"smte","⪬︀":"smtes","⪭":"late","⪭︀":"lates","⪮":"bumpE","⪯":"pre","⪯̸":"npre","⪰":"sce","⪰̸":"nsce","⪳":"prE","⪴":"scE","⪵":"prnE","⪶":"scnE","⪷":"prap","⪸":"scap","⪹":"prnap","⪺":"scnap","⪻":"Pr","⪼":"Sc","⪽":"subdot","⪾":"supdot","⪿":"subplus","⫀":"supplus","⫁":"submult","⫂":"supmult","⫃":"subedot","⫄":"supedot","⫅":"subE","⫅̸":"nsubE","⫆":"supE","⫆̸":"nsupE","⫇":"subsim","⫈":"supsim","⫋︀":"vsubnE","⫋":"subnE","⫌︀":"vsupnE","⫌":"supnE","⫏":"csub","⫐":"csup","⫑":"csube","⫒":"csupe","⫓":"subsup","⫔":"supsub","⫕":"subsub","⫖":"supsup","⫗":"suphsub","⫘":"supdsub","⫙":"forkv","⫚":"topfork","⫛":"mlcp","⫤":"Dashv","⫦":"Vdashl","⫧":"Barv","⫨":"vBar","⫩":"vBarv","⫫":"Vbar","⫬":"Not","⫭":"bNot","⫮":"rnmid","⫯":"cirmid","⫰":"midcir","⫱":"topcir","⫲":"nhpar","⫳":"parsim","⫽":"parsl","⫽⃥":"nparsl","♭":"flat","♮":"natur","♯":"sharp","¤":"curren","¢":"cent",$:"dollar","£":"pound","¥":"yen","€":"euro","¹":"sup1","½":"half","⅓":"frac13","¼":"frac14","⅕":"frac15","⅙":"frac16","⅛":"frac18","²":"sup2","⅔":"frac23","⅖":"frac25","³":"sup3","¾":"frac34","⅗":"frac35","⅜":"frac38","⅘":"frac45","⅚":"frac56","⅝":"frac58","⅞":"frac78","𝒶":"ascr","𝕒":"aopf","𝔞":"afr","𝔸":"Aopf","𝔄":"Afr","𝒜":"Ascr","ª":"ordf","á":"aacute","Á":"Aacute","à":"agrave","À":"Agrave","ă":"abreve","Ă":"Abreve","â":"acirc","Â":"Acirc","å":"aring","Å":"angst","ä":"auml","Ä":"Auml","ã":"atilde","Ã":"Atilde","ą":"aogon","Ą":"Aogon","ā":"amacr","Ā":"Amacr","æ":"aelig","Æ":"AElig","𝒷":"bscr","𝕓":"bopf","𝔟":"bfr","𝔹":"Bopf","ℬ":"Bscr","𝔅":"Bfr","𝔠":"cfr","𝒸":"cscr","𝕔":"copf","ℭ":"Cfr","𝒞":"Cscr","ℂ":"Copf","ć":"cacute","Ć":"Cacute","ĉ":"ccirc","Ĉ":"Ccirc","č":"ccaron","Č":"Ccaron","ċ":"cdot","Ċ":"Cdot","ç":"ccedil","Ç":"Ccedil","℅":"incare","𝔡":"dfr","ⅆ":"dd","𝕕":"dopf","𝒹":"dscr","𝒟":"Dscr","𝔇":"Dfr","ⅅ":"DD","𝔻":"Dopf","ď":"dcaron","Ď":"Dcaron","đ":"dstrok","Đ":"Dstrok","ð":"eth","Ð":"ETH","ⅇ":"ee","ℯ":"escr","𝔢":"efr","𝕖":"eopf","ℰ":"Escr","𝔈":"Efr","𝔼":"Eopf","é":"eacute","É":"Eacute","è":"egrave","È":"Egrave","ê":"ecirc","Ê":"Ecirc","ě":"ecaron","Ě":"Ecaron","ë":"euml","Ë":"Euml","ė":"edot","Ė":"Edot","ę":"eogon","Ę":"Eogon","ē":"emacr","Ē":"Emacr","𝔣":"ffr","𝕗":"fopf","𝒻":"fscr","𝔉":"Ffr","𝔽":"Fopf","ℱ":"Fscr","ff":"fflig","ffi":"ffilig","ffl":"ffllig","fi":"filig",fj:"fjlig","fl":"fllig","ƒ":"fnof","ℊ":"gscr","𝕘":"gopf","𝔤":"gfr","𝒢":"Gscr","𝔾":"Gopf","𝔊":"Gfr","ǵ":"gacute","ğ":"gbreve","Ğ":"Gbreve","ĝ":"gcirc","Ĝ":"Gcirc","ġ":"gdot","Ġ":"Gdot","Ģ":"Gcedil","𝔥":"hfr","ℎ":"planckh","𝒽":"hscr","𝕙":"hopf","ℋ":"Hscr","ℌ":"Hfr","ℍ":"Hopf","ĥ":"hcirc","Ĥ":"Hcirc","ℏ":"hbar","ħ":"hstrok","Ħ":"Hstrok","𝕚":"iopf","𝔦":"ifr","𝒾":"iscr","ⅈ":"ii","𝕀":"Iopf","ℐ":"Iscr","ℑ":"Im","í":"iacute","Í":"Iacute","ì":"igrave","Ì":"Igrave","î":"icirc","Î":"Icirc","ï":"iuml","Ï":"Iuml","ĩ":"itilde","Ĩ":"Itilde","İ":"Idot","į":"iogon","Į":"Iogon","ī":"imacr","Ī":"Imacr","ij":"ijlig","IJ":"IJlig","ı":"imath","𝒿":"jscr","𝕛":"jopf","𝔧":"jfr","𝒥":"Jscr","𝔍":"Jfr","𝕁":"Jopf","ĵ":"jcirc","Ĵ":"Jcirc","ȷ":"jmath","𝕜":"kopf","𝓀":"kscr","𝔨":"kfr","𝒦":"Kscr","𝕂":"Kopf","𝔎":"Kfr","ķ":"kcedil","Ķ":"Kcedil","𝔩":"lfr","𝓁":"lscr","ℓ":"ell","𝕝":"lopf","ℒ":"Lscr","𝔏":"Lfr","𝕃":"Lopf","ĺ":"lacute","Ĺ":"Lacute","ľ":"lcaron","Ľ":"Lcaron","ļ":"lcedil","Ļ":"Lcedil","ł":"lstrok","Ł":"Lstrok","ŀ":"lmidot","Ŀ":"Lmidot","𝔪":"mfr","𝕞":"mopf","𝓂":"mscr","𝔐":"Mfr","𝕄":"Mopf","ℳ":"Mscr","𝔫":"nfr","𝕟":"nopf","𝓃":"nscr","ℕ":"Nopf","𝒩":"Nscr","𝔑":"Nfr","ń":"nacute","Ń":"Nacute","ň":"ncaron","Ň":"Ncaron","ñ":"ntilde","Ñ":"Ntilde","ņ":"ncedil","Ņ":"Ncedil","№":"numero","ŋ":"eng","Ŋ":"ENG","𝕠":"oopf","𝔬":"ofr","ℴ":"oscr","𝒪":"Oscr","𝔒":"Ofr","𝕆":"Oopf","º":"ordm","ó":"oacute","Ó":"Oacute","ò":"ograve","Ò":"Ograve","ô":"ocirc","Ô":"Ocirc","ö":"ouml","Ö":"Ouml","ő":"odblac","Ő":"Odblac","õ":"otilde","Õ":"Otilde","ø":"oslash","Ø":"Oslash","ō":"omacr","Ō":"Omacr","œ":"oelig","Œ":"OElig","𝔭":"pfr","𝓅":"pscr","𝕡":"popf","ℙ":"Popf","𝔓":"Pfr","𝒫":"Pscr","𝕢":"qopf","𝔮":"qfr","𝓆":"qscr","𝒬":"Qscr","𝔔":"Qfr","ℚ":"Qopf","ĸ":"kgreen","𝔯":"rfr","𝕣":"ropf","𝓇":"rscr","ℛ":"Rscr","ℜ":"Re","ℝ":"Ropf","ŕ":"racute","Ŕ":"Racute","ř":"rcaron","Ř":"Rcaron","ŗ":"rcedil","Ŗ":"Rcedil","𝕤":"sopf","𝓈":"sscr","𝔰":"sfr","𝕊":"Sopf","𝔖":"Sfr","𝒮":"Sscr","Ⓢ":"oS","ś":"sacute","Ś":"Sacute","ŝ":"scirc","Ŝ":"Scirc","š":"scaron","Š":"Scaron","ş":"scedil","Ş":"Scedil","ß":"szlig","𝔱":"tfr","𝓉":"tscr","𝕥":"topf","𝒯":"Tscr","𝔗":"Tfr","𝕋":"Topf","ť":"tcaron","Ť":"Tcaron","ţ":"tcedil","Ţ":"Tcedil","™":"trade","ŧ":"tstrok","Ŧ":"Tstrok","𝓊":"uscr","𝕦":"uopf","𝔲":"ufr","𝕌":"Uopf","𝔘":"Ufr","𝒰":"Uscr","ú":"uacute","Ú":"Uacute","ù":"ugrave","Ù":"Ugrave","ŭ":"ubreve","Ŭ":"Ubreve","û":"ucirc","Û":"Ucirc","ů":"uring","Ů":"Uring","ü":"uuml","Ü":"Uuml","ű":"udblac","Ű":"Udblac","ũ":"utilde","Ũ":"Utilde","ų":"uogon","Ų":"Uogon","ū":"umacr","Ū":"Umacr","𝔳":"vfr","𝕧":"vopf","𝓋":"vscr","𝔙":"Vfr","𝕍":"Vopf","𝒱":"Vscr","𝕨":"wopf","𝓌":"wscr","𝔴":"wfr","𝒲":"Wscr","𝕎":"Wopf","𝔚":"Wfr","ŵ":"wcirc","Ŵ":"Wcirc","𝔵":"xfr","𝓍":"xscr","𝕩":"xopf","𝕏":"Xopf","𝔛":"Xfr","𝒳":"Xscr","𝔶":"yfr","𝓎":"yscr","𝕪":"yopf","𝒴":"Yscr","𝔜":"Yfr","𝕐":"Yopf","ý":"yacute","Ý":"Yacute","ŷ":"ycirc","Ŷ":"Ycirc","ÿ":"yuml","Ÿ":"Yuml","𝓏":"zscr","𝔷":"zfr","𝕫":"zopf","ℨ":"Zfr","ℤ":"Zopf","𝒵":"Zscr","ź":"zacute","Ź":"Zacute","ž":"zcaron","Ž":"Zcaron","ż":"zdot","Ż":"Zdot","Ƶ":"imped","þ":"thorn","Þ":"THORN","ʼn":"napos","α":"alpha","Α":"Alpha","β":"beta","Β":"Beta","γ":"gamma","Γ":"Gamma","δ":"delta","Δ":"Delta","ε":"epsi","ϵ":"epsiv","Ε":"Epsilon","ϝ":"gammad","Ϝ":"Gammad","ζ":"zeta","Ζ":"Zeta","η":"eta","Η":"Eta","θ":"theta","ϑ":"thetav","Θ":"Theta","ι":"iota","Ι":"Iota","κ":"kappa","ϰ":"kappav","Κ":"Kappa","λ":"lambda","Λ":"Lambda","μ":"mu","µ":"micro","Μ":"Mu","ν":"nu","Ν":"Nu","ξ":"xi","Ξ":"Xi","ο":"omicron","Ο":"Omicron","π":"pi","ϖ":"piv","Π":"Pi","ρ":"rho","ϱ":"rhov","Ρ":"Rho","σ":"sigma","Σ":"Sigma","ς":"sigmaf","τ":"tau","Τ":"Tau","υ":"upsi","Υ":"Upsilon","ϒ":"Upsi","φ":"phi","ϕ":"phiv","Φ":"Phi","χ":"chi","Χ":"Chi","ψ":"psi","Ψ":"Psi","ω":"omega","Ω":"ohm","а":"acy","А":"Acy","б":"bcy","Б":"Bcy","в":"vcy","В":"Vcy","г":"gcy","Г":"Gcy","ѓ":"gjcy","Ѓ":"GJcy","д":"dcy","Д":"Dcy","ђ":"djcy","Ђ":"DJcy","е":"iecy","Е":"IEcy","ё":"iocy","Ё":"IOcy","є":"jukcy","Є":"Jukcy","ж":"zhcy","Ж":"ZHcy","з":"zcy","З":"Zcy","ѕ":"dscy","Ѕ":"DScy","и":"icy","И":"Icy","і":"iukcy","І":"Iukcy","ї":"yicy","Ї":"YIcy","й":"jcy","Й":"Jcy","ј":"jsercy","Ј":"Jsercy","к":"kcy","К":"Kcy","ќ":"kjcy","Ќ":"KJcy","л":"lcy","Л":"Lcy","љ":"ljcy","Љ":"LJcy","м":"mcy","М":"Mcy","н":"ncy","Н":"Ncy","њ":"njcy","Њ":"NJcy","о":"ocy","О":"Ocy","п":"pcy","П":"Pcy","р":"rcy","Р":"Rcy","с":"scy","С":"Scy","т":"tcy","Т":"Tcy","ћ":"tshcy","Ћ":"TSHcy","у":"ucy","У":"Ucy","ў":"ubrcy","Ў":"Ubrcy","ф":"fcy","Ф":"Fcy","х":"khcy","Х":"KHcy","ц":"tscy","Ц":"TScy","ч":"chcy","Ч":"CHcy","џ":"dzcy","Џ":"DZcy","ш":"shcy","Ш":"SHcy","щ":"shchcy","Щ":"SHCHcy","ъ":"hardcy","Ъ":"HARDcy","ы":"ycy","Ы":"Ycy","ь":"softcy","Ь":"SOFTcy","э":"ecy","Э":"Ecy","ю":"yucy","Ю":"YUcy","я":"yacy","Я":"YAcy","ℵ":"aleph","ℶ":"beth","ℷ":"gimel","ℸ":"daleth"},n=/["&'<>`]/g,l={'"':""","&":"&","'":"'","<":"<",">":">","`":"`"},p=/&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/,d=/[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,g=/&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g,f={aacute:"á",Aacute:"Á",abreve:"ă",Abreve:"Ă",ac:"∾",acd:"∿",acE:"∾̳",acirc:"â",Acirc:"Â",acute:"´",acy:"а",Acy:"А",aelig:"æ",AElig:"Æ",af:"⁡",afr:"𝔞",Afr:"𝔄",agrave:"à",Agrave:"À",alefsym:"ℵ",aleph:"ℵ",alpha:"α",Alpha:"Α",amacr:"ā",Amacr:"Ā",amalg:"⨿",amp:"&",AMP:"&",and:"∧",And:"⩓",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",aogon:"ą",Aogon:"Ą",aopf:"𝕒",Aopf:"𝔸",ap:"≈",apacir:"⩯",ape:"≊",apE:"⩰",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",aring:"å",Aring:"Å",ascr:"𝒶",Ascr:"𝒜",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",bcy:"б",Bcy:"Б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",beta:"β",Beta:"Β",beth:"ℶ",between:"≬",bfr:"𝔟",Bfr:"𝔅",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bnot:"⌐",bNot:"⫭",bopf:"𝕓",Bopf:"𝔹",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxhD:"╥",boxHd:"╤",boxHD:"╦",boxhu:"┴",boxhU:"╨",boxHu:"╧",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpe:"≏",bumpE:"⪮",bumpeq:"≏",Bumpeq:"≎",cacute:"ć",Cacute:"Ć",cap:"∩",Cap:"⋒",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",ccaron:"č",Ccaron:"Č",ccedil:"ç",Ccedil:"Ç",ccirc:"ĉ",Ccirc:"Ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",cdot:"ċ",Cdot:"Ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",chcy:"ч",CHcy:"Ч",check:"✓",checkmark:"✓",chi:"χ",Chi:"Χ",cir:"○",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cire:"≗",cirE:"⧃",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",colone:"≔",Colone:"⩴",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",cscr:"𝒸",Cscr:"𝒞",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cup:"∪",Cup:"⋓",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",dArr:"⇓",Darr:"↡",dash:"‐",dashv:"⊣",Dashv:"⫤",dbkarow:"⤏",dblac:"˝",dcaron:"ď",Dcaron:"Ď",dcy:"д",Dcy:"Д",dd:"ⅆ",DD:"ⅅ",ddagger:"‡",ddarr:"⇊",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",delta:"δ",Delta:"Δ",demptyv:"⦱",dfisht:"⥿",dfr:"𝔡",Dfr:"𝔇",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",djcy:"ђ",DJcy:"Ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",dopf:"𝕕",Dopf:"𝔻",dot:"˙",Dot:"¨",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",downarrow:"↓",Downarrow:"⇓",DownArrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",dscr:"𝒹",Dscr:"𝒟",dscy:"ѕ",DScy:"Ѕ",dsol:"⧶",dstrok:"đ",Dstrok:"Đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",dzcy:"џ",DZcy:"Џ",dzigrarr:"⟿",eacute:"é",Eacute:"É",easter:"⩮",ecaron:"ě",Ecaron:"Ě",ecir:"≖",ecirc:"ê",Ecirc:"Ê",ecolon:"≕",ecy:"э",Ecy:"Э",eDDot:"⩷",edot:"ė",eDot:"≑",Edot:"Ė",ee:"ⅇ",efDot:"≒",efr:"𝔢",Efr:"𝔈",eg:"⪚",egrave:"è",Egrave:"È",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",emacr:"ē",Emacr:"Ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp:" ",emsp13:" ",emsp14:" ",eng:"ŋ",ENG:"Ŋ",ensp:" ",eogon:"ę",Eogon:"Ę",eopf:"𝕖",Eopf:"𝔼",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",epsilon:"ε",Epsilon:"Ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",esim:"≂",Esim:"⩳",eta:"η",Eta:"Η",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",fcy:"ф",Fcy:"Ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",ffr:"𝔣",Ffr:"𝔉",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",fopf:"𝕗",Fopf:"𝔽",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",gamma:"γ",Gamma:"Γ",gammad:"ϝ",Gammad:"Ϝ",gap:"⪆",gbreve:"ğ",Gbreve:"Ğ",Gcedil:"Ģ",gcirc:"ĝ",Gcirc:"Ĝ",gcy:"г",Gcy:"Г",gdot:"ġ",Gdot:"Ġ",ge:"≥",gE:"≧",gel:"⋛",gEl:"⪌",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",gfr:"𝔤",Gfr:"𝔊",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",gjcy:"ѓ",GJcy:"Ѓ",gl:"≷",gla:"⪥",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",gopf:"𝕘",Gopf:"𝔾",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",gscr:"ℊ",Gscr:"𝒢",gsim:"≳",gsime:"⪎",gsiml:"⪐",gt:">",Gt:"≫",GT:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",hardcy:"ъ",HARDcy:"Ъ",harr:"↔",hArr:"⇔",harrcir:"⥈",harrw:"↭",Hat:"^",hbar:"ℏ",hcirc:"ĥ",Hcirc:"Ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",hstrok:"ħ",Hstrok:"Ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",iacute:"í",Iacute:"Í",ic:"⁣",icirc:"î",Icirc:"Î",icy:"и",Icy:"И",Idot:"İ",iecy:"е",IEcy:"Е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",igrave:"ì",Igrave:"Ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",ijlig:"ij",IJlig:"IJ",Im:"ℑ",imacr:"ī",Imacr:"Ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",Implies:"⇒",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",int:"∫",Int:"∬",intcal:"⊺",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",iocy:"ё",IOcy:"Ё",iogon:"į",Iogon:"Į",iopf:"𝕚",Iopf:"𝕀",iota:"ι",Iota:"Ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",itilde:"ĩ",Itilde:"Ĩ",iukcy:"і",Iukcy:"І",iuml:"ï",Iuml:"Ï",jcirc:"ĵ",Jcirc:"Ĵ",jcy:"й",Jcy:"Й",jfr:"𝔧",Jfr:"𝔍",jmath:"ȷ",jopf:"𝕛",Jopf:"𝕁",jscr:"𝒿",Jscr:"𝒥",jsercy:"ј",Jsercy:"Ј",jukcy:"є",Jukcy:"Є",kappa:"κ",Kappa:"Κ",kappav:"ϰ",kcedil:"ķ",Kcedil:"Ķ",kcy:"к",Kcy:"К",kfr:"𝔨",Kfr:"𝔎",kgreen:"ĸ",khcy:"х",KHcy:"Х",kjcy:"ќ",KJcy:"Ќ",kopf:"𝕜",Kopf:"𝕂",kscr:"𝓀",Kscr:"𝒦",lAarr:"⇚",lacute:"ĺ",Lacute:"Ĺ",laemptyv:"⦴",lagran:"ℒ",lambda:"λ",Lambda:"Λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larr:"←",lArr:"⇐",Larr:"↞",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",latail:"⤙",lAtail:"⤛",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",lcaron:"ľ",Lcaron:"Ľ",lcedil:"ļ",Lcedil:"Ļ",lceil:"⌈",lcub:"{",lcy:"л",Lcy:"Л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",leftarrow:"←",Leftarrow:"⇐",LeftArrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",Leftrightarrow:"⇔",LeftRightArrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",leg:"⋚",lEg:"⪋",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",lfr:"𝔩",Lfr:"𝔏",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",ljcy:"љ",LJcy:"Љ",ll:"≪",Ll:"⋘",llarr:"⇇",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",lmidot:"ŀ",Lmidot:"Ŀ",lmoust:"⎰",lmoustache:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",Longleftarrow:"⟸",LongLeftArrow:"⟵",longleftrightarrow:"⟷",Longleftrightarrow:"⟺",LongLeftRightArrow:"⟷",longmapsto:"⟼",longrightarrow:"⟶",Longrightarrow:"⟹",LongRightArrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",lopf:"𝕝",Lopf:"𝕃",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",lstrok:"ł",Lstrok:"Ł",lt:"<",Lt:"≪",LT:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",Map:"⤅",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",mcy:"м",Mcy:"М",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",mfr:"𝔪",Mfr:"𝔐",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",mopf:"𝕞",Mopf:"𝕄",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",mu:"μ",Mu:"Μ",multimap:"⊸",mumap:"⊸",nabla:"∇",nacute:"ń",Nacute:"Ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",ncaron:"ň",Ncaron:"Ň",ncedil:"ņ",Ncedil:"Ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",ncy:"н",Ncy:"Н",ndash:"–",ne:"≠",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",nfr:"𝔫",Nfr:"𝔑",nge:"≱",ngE:"≧̸",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",ngt:"≯",nGt:"≫⃒",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",njcy:"њ",NJcy:"Њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nle:"≰",nlE:"≦̸",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nlt:"≮",nLt:"≪⃒",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",not:"¬",Not:"⫬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrarr:"↛",nrArr:"⇏",nrarrc:"⤳̸",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",nscr:"𝓃",Nscr:"𝒩",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsube:"⊈",nsubE:"⫅̸",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupe:"⊉",nsupE:"⫆̸",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",ntilde:"ñ",Ntilde:"Ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",nu:"ν",Nu:"Ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",oacute:"ó",Oacute:"Ó",oast:"⊛",ocir:"⊚",ocirc:"ô",Ocirc:"Ô",ocy:"о",Ocy:"О",odash:"⊝",odblac:"ő",Odblac:"Ő",odiv:"⨸",odot:"⊙",odsold:"⦼",oelig:"œ",OElig:"Œ",ofcir:"⦿",ofr:"𝔬",Ofr:"𝔒",ogon:"˛",ograve:"ò",Ograve:"Ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",omacr:"ō",Omacr:"Ō",omega:"ω",Omega:"Ω",omicron:"ο",Omicron:"Ο",omid:"⦶",ominus:"⊖",oopf:"𝕠",Oopf:"𝕆",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",or:"∨",Or:"⩔",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",oscr:"ℴ",Oscr:"𝒪",oslash:"ø",Oslash:"Ø",osol:"⊘",otilde:"õ",Otilde:"Õ",otimes:"⊗",Otimes:"⨷",otimesas:"⨶",ouml:"ö",Ouml:"Ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",pcy:"п",Pcy:"П",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",pfr:"𝔭",Pfr:"𝔓",phi:"φ",Phi:"Φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",pi:"π",Pi:"Π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",pr:"≺",Pr:"⪻",prap:"⪷",prcue:"≼",pre:"⪯",prE:"⪳",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportion:"∷",Proportional:"∝",propto:"∝",prsim:"≾",prurel:"⊰",pscr:"𝓅",Pscr:"𝒫",psi:"ψ",Psi:"Ψ",puncsp:" ",qfr:"𝔮",Qfr:"𝔔",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",qscr:"𝓆",Qscr:"𝒬",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",racute:"ŕ",Racute:"Ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarr:"→",rArr:"⇒",Rarr:"↠",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",rarrtl:"↣",Rarrtl:"⤖",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",rcaron:"ř",Rcaron:"Ř",rcedil:"ŗ",Rcedil:"Ŗ",rceil:"⌉",rcub:"}",rcy:"р",Rcy:"Р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",Re:"ℜ",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",rho:"ρ",Rho:"Ρ",rhov:"ϱ",RightAngleBracket:"⟩",rightarrow:"→",Rightarrow:"⇒",RightArrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",sacute:"ś",Sacute:"Ś",sbquo:"‚",sc:"≻",Sc:"⪼",scap:"⪸",scaron:"š",Scaron:"Š",sccue:"≽",sce:"⪰",scE:"⪴",scedil:"ş",Scedil:"Ş",scirc:"ŝ",Scirc:"Ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",scy:"с",Scy:"С",sdot:"⋅",sdotb:"⊡",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",sfr:"𝔰",Sfr:"𝔖",sfrown:"⌢",sharp:"♯",shchcy:"щ",SHCHcy:"Щ",shcy:"ш",SHcy:"Ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",sigma:"σ",Sigma:"Σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",softcy:"ь",SOFTcy:"Ь",sol:"/",solb:"⧄",solbar:"⌿",sopf:"𝕤",Sopf:"𝕊",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squf:"▪",srarr:"→",sscr:"𝓈",Sscr:"𝒮",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",star:"☆",Star:"⋆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",sube:"⊆",subE:"⫅",subedot:"⫃",submult:"⫁",subne:"⊊",subnE:"⫋",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup:"⊃",Sup:"⋑",sup1:"¹",sup2:"²",sup3:"³",supdot:"⪾",supdsub:"⫘",supe:"⊇",supE:"⫆",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supne:"⊋",supnE:"⫌",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",tau:"τ",Tau:"Τ",tbrk:"⎴",tcaron:"ť",Tcaron:"Ť",tcedil:"ţ",Tcedil:"Ţ",tcy:"т",Tcy:"Т",tdot:"⃛",telrec:"⌕",tfr:"𝔱",Tfr:"𝔗",there4:"∴",therefore:"∴",Therefore:"∴",theta:"θ",Theta:"Θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",thinsp:" ",ThinSpace:" ",thkap:"≈",thksim:"∼",thorn:"þ",THORN:"Þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",topf:"𝕥",Topf:"𝕋",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",tscr:"𝓉",Tscr:"𝒯",tscy:"ц",TScy:"Ц",tshcy:"ћ",TSHcy:"Ћ",tstrok:"ŧ",Tstrok:"Ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",uacute:"ú",Uacute:"Ú",uarr:"↑",uArr:"⇑",Uarr:"↟",Uarrocir:"⥉",ubrcy:"ў",Ubrcy:"Ў",ubreve:"ŭ",Ubreve:"Ŭ",ucirc:"û",Ucirc:"Û",ucy:"у",Ucy:"У",udarr:"⇅",udblac:"ű",Udblac:"Ű",udhar:"⥮",ufisht:"⥾",ufr:"𝔲",Ufr:"𝔘",ugrave:"ù",Ugrave:"Ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",umacr:"ū",Umacr:"Ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",uogon:"ų",Uogon:"Ų",uopf:"𝕦",Uopf:"𝕌",uparrow:"↑",Uparrow:"⇑",UpArrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",updownarrow:"↕",Updownarrow:"⇕",UpDownArrow:"↕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",upsilon:"υ",Upsilon:"Υ",UpTee:"⊥",UpTeeArrow:"↥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",uring:"ů",Uring:"Ů",urtri:"◹",uscr:"𝓊",Uscr:"𝒰",utdot:"⋰",utilde:"ũ",Utilde:"Ũ",utri:"▵",utrif:"▴",uuarr:"⇈",uuml:"ü",Uuml:"Ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",vcy:"в",Vcy:"В",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",vee:"∨",Vee:"⋁",veebar:"⊻",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",vfr:"𝔳",Vfr:"𝔙",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",vopf:"𝕧",Vopf:"𝕍",vprop:"∝",vrtri:"⊳",vscr:"𝓋",Vscr:"𝒱",vsubne:"⊊︀",vsubnE:"⫋︀",vsupne:"⊋︀",vsupnE:"⫌︀",Vvdash:"⊪",vzigzag:"⦚",wcirc:"ŵ",Wcirc:"Ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",wfr:"𝔴",Wfr:"𝔚",wopf:"𝕨",Wopf:"𝕎",wp:"℘",wr:"≀",wreath:"≀",wscr:"𝓌",Wscr:"𝒲",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",xfr:"𝔵",Xfr:"𝔛",xharr:"⟷",xhArr:"⟺",xi:"ξ",Xi:"Ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",xopf:"𝕩",Xopf:"𝕏",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",xscr:"𝓍",Xscr:"𝒳",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",yacute:"ý",Yacute:"Ý",yacy:"я",YAcy:"Я",ycirc:"ŷ",Ycirc:"Ŷ",ycy:"ы",Ycy:"Ы",yen:"¥",yfr:"𝔶",Yfr:"𝔜",yicy:"ї",YIcy:"Ї",yopf:"𝕪",Yopf:"𝕐",yscr:"𝓎",Yscr:"𝒴",yucy:"ю",YUcy:"Ю",yuml:"ÿ",Yuml:"Ÿ",zacute:"ź",Zacute:"Ź",zcaron:"ž",Zcaron:"Ž",zcy:"з",Zcy:"З",zdot:"ż",Zdot:"Ż",zeetrf:"ℨ",ZeroWidthSpace:"​",zeta:"ζ",Zeta:"Ζ",zfr:"𝔷",Zfr:"ℨ",zhcy:"ж",ZHcy:"Ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",zscr:"𝓏",Zscr:"𝒵",zwj:"‍",zwnj:"‌"},m={aacute:"á",Aacute:"Á",acirc:"â",Acirc:"Â",acute:"´",aelig:"æ",AElig:"Æ",agrave:"à",Agrave:"À",amp:"&",AMP:"&",aring:"å",Aring:"Å",atilde:"ã",Atilde:"Ã",auml:"ä",Auml:"Ä",brvbar:"¦",ccedil:"ç",Ccedil:"Ç",cedil:"¸",cent:"¢",copy:"©",COPY:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",Eacute:"É",ecirc:"ê",Ecirc:"Ê",egrave:"è",Egrave:"È",eth:"ð",ETH:"Ð",euml:"ë",Euml:"Ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",GT:">",iacute:"í",Iacute:"Í",icirc:"î",Icirc:"Î",iexcl:"¡",igrave:"ì",Igrave:"Ì",iquest:"¿",iuml:"ï",Iuml:"Ï",laquo:"«",lt:"<",LT:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",Ntilde:"Ñ",oacute:"ó",Oacute:"Ó",ocirc:"ô",Ocirc:"Ô",ograve:"ò",Ograve:"Ò",ordf:"ª",ordm:"º",oslash:"ø",Oslash:"Ø",otilde:"õ",Otilde:"Õ",ouml:"ö",Ouml:"Ö",para:"¶",plusmn:"±",pound:"£",quot:'"',QUOT:'"',raquo:"»",reg:"®",REG:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",THORN:"Þ",times:"×",uacute:"ú",Uacute:"Ú",ucirc:"û",Ucirc:"Û",ugrave:"ù",Ugrave:"Ù",uml:"¨",uuml:"ü",Uuml:"Ü",yacute:"ý",Yacute:"Ý",yen:"¥",yuml:"ÿ"},h={0:"�",128:"€",130:"‚",131:"ƒ",132:"„",133:"…",134:"†",135:"‡",136:"ˆ",137:"‰",138:"Š",139:"‹",140:"Œ",142:"Ž",145:"‘",146:"’",147:"“",148:"”",149:"•",150:"–",151:"—",152:"˜",153:"™",154:"š",155:"›",156:"œ",158:"ž",159:"Ÿ"},b=[1,2,3,4,5,6,7,8,11,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,64976,64977,64978,64979,64980,64981,64982,64983,64984,64985,64986,64987,64988,64989,64990,64991,64992,64993,64994,64995,64996,64997,64998,64999,65e3,65001,65002,65003,65004,65005,65006,65007,65534,65535,131070,131071,196606,196607,262142,262143,327678,327679,393214,393215,458750,458751,524286,524287,589822,589823,655358,655359,720894,720895,786430,786431,851966,851967,917502,917503,983038,983039,1048574,1048575,1114110,1114111],y=String.fromCharCode,q={}.hasOwnProperty,v=function(r,e){return q.call(r,e)},w=function(r,e){if(!r)return e;var t,a={};for(t in e)a[t]=v(r,t)?r[t]:e[t];return a},D=function(r,e){var t="";return r>=55296&&r<=57343||r>1114111?(e&&x("character reference outside the permissible Unicode range"),"�"):v(h,r)?(e&&x("disallowed character reference"),h[r]):(e&&function(r,e){for(var t=-1,a=r.length;++t65535&&(t+=y((r-=65536)>>>10&1023|55296),r=56320|1023&r),t+=y(r))},A=function(r){return"&#x"+r.toString(16).toUpperCase()+";"},E=function(r){return"&#"+r+";"},x=function(r){throw Error("Parse error: "+r)},L=function(r,e){(e=w(e,L.options)).strict&&d.test(r)&&x("forbidden code point");var t=e.encodeEverything,a=e.useNamedReferences,l=e.allowUnsafeSymbols,p=e.decimal?E:A,g=function(r){return p(r.charCodeAt(0))};return t?(r=r.replace(s,(function(r){return a&&v(i,r)?"&"+i[r]+";":g(r)})),a&&(r=r.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒").replace(/fj/g,"fj")),a&&(r=r.replace(c,(function(r){return"&"+i[r]+";"})))):a?(l||(r=r.replace(n,(function(r){return"&"+i[r]+";"}))),r=(r=r.replace(/>\u20D2/g,">⃒").replace(/<\u20D2/g,"<⃒")).replace(c,(function(r){return"&"+i[r]+";"}))):l||(r=r.replace(n,g)),r.replace(o,(function(r){var e=r.charCodeAt(0),t=r.charCodeAt(1);return p(1024*(e-55296)+t-56320+65536)})).replace(u,g)};L.options={allowUnsafeSymbols:!1,encodeEverything:!1,strict:!1,useNamedReferences:!1,decimal:!1};var k=function(r,e){var t=(e=w(e,k.options)).strict;return t&&p.test(r)&&x("malformed character reference"),r.replace(g,(function(r,a,o,s,u,c,i,n,l){var p,d,g,h,b,y;return a?f[b=a]:o?(b=o,(y=s)&&e.isAttributeValue?(t&&"="==y&&x("`&` did not start a character reference"),r):(t&&x("named character reference was not terminated by a semicolon"),m[b]+(y||""))):u?(g=u,d=c,t&&!d&&x("character reference was not terminated by a semicolon"),p=parseInt(g,10),D(p,t)):i?(h=i,d=n,t&&!d&&x("character reference was not terminated by a semicolon"),p=parseInt(h,16),D(p,t)):(t&&x("named character reference was not terminated by a semicolon"),r)}))};k.options={isAttributeValue:!1,strict:!1};var S={version:"1.2.0",encode:L,decode:k,escape:function(r){return r.replace(n,(function(r){return l[r]}))},unescape:k};if("function"==typeof define&&"object"==typeof define.amd&&define.amd)define((function(){return S}));else if(e&&!e.nodeType)if(t)t.exports=S;else for(var C in S)v(S,C)&&(e[C]=S[C]);else r.he=S}(this),function(r,e){var t,a;"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=r.Base64,(a=e()).noConflict=function(){return r.Base64=t,a},r.Meteor&&(Base64=a),r.Base64=a)}("undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:this,(function(){"use strict";var r,e="function"==typeof atob,t="function"==typeof btoa,a="function"==typeof Buffer,o="function"==typeof TextDecoder?new TextDecoder:void 0,s="function"==typeof TextEncoder?new TextEncoder:void 0,u=Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="),c=(r={},u.forEach((function(e,t){return r[e]=t})),r),i=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,n=String.fromCharCode.bind(String),l="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):function(r,e){return void 0===e&&(e=function(r){return r}),new Uint8Array(Array.prototype.slice.call(r,0).map(e))},p=function(r){return r.replace(/=/g,"").replace(/[+\/]/g,(function(r){return"+"==r?"-":"_"}))},d=function(r){return r.replace(/[^A-Za-z0-9\+\/]/g,"")},g=function(r){for(var e,t,a,o,s="",c=r.length%3,i=0;i255||(a=r.charCodeAt(i++))>255||(o=r.charCodeAt(i++))>255)throw new TypeError("invalid character found");s+=u[(e=t<<16|a<<8|o)>>18&63]+u[e>>12&63]+u[e>>6&63]+u[63&e]}return c?s.slice(0,c-3)+"===".substring(c):s},f=t?function(r){return btoa(r)}:a?function(r){return Buffer.from(r,"binary").toString("base64")}:g,m=a?function(r){return Buffer.from(r).toString("base64")}:function(r){for(var e=[],t=0,a=r.length;t>>6)+n(128|63&e):n(224|e>>>12&15)+n(128|e>>>6&63)+n(128|63&e);var e=65536+1024*(r.charCodeAt(0)-55296)+(r.charCodeAt(1)-56320);return n(240|e>>>18&7)+n(128|e>>>12&63)+n(128|e>>>6&63)+n(128|63&e)},y=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,q=function(r){return r.replace(y,b)},v=a?function(r){return Buffer.from(r,"utf8").toString("base64")}:s?function(r){return m(s.encode(r))}:function(r){return f(q(r))},w=function(r,e){return void 0===e&&(e=!1),e?p(v(r)):v(r)},D=function(r){return w(r,!0)},A=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,E=function(r){switch(r.length){case 4:var e=((7&r.charCodeAt(0))<<18|(63&r.charCodeAt(1))<<12|(63&r.charCodeAt(2))<<6|63&r.charCodeAt(3))-65536;return n(55296+(e>>>10))+n(56320+(1023&e));case 3:return n((15&r.charCodeAt(0))<<12|(63&r.charCodeAt(1))<<6|63&r.charCodeAt(2));default:return n((31&r.charCodeAt(0))<<6|63&r.charCodeAt(1))}},x=function(r){return r.replace(A,E)},L=function(r){if(r=r.replace(/\s+/g,""),!i.test(r))throw new TypeError("malformed base64.");r+="==".slice(2-(3&r.length));for(var e,t,a,o="",s=0;s>16&255):64===a?n(e>>16&255,e>>8&255):n(e>>16&255,e>>8&255,255&e);return o},k=e?function(r){return atob(d(r))}:a?function(r){return Buffer.from(r,"base64").toString("binary")}:L,S=a?function(r){return l(Buffer.from(r,"base64"))}:function(r){return l(k(r),(function(r){return r.charCodeAt(0)}))},C=function(r){return S(R(r))},B=a?function(r){return Buffer.from(r,"base64").toString("utf8")}:o?function(r){return o.decode(S(r))}:function(r){return x(k(r))},R=function(r){return d(r.replace(/[-_]/g,(function(r){return"-"==r?"+":"/"})))},T=function(r){return B(R(r))},N=function(r){return{value:r,enumerable:!1,writable:!0,configurable:!0}},U=function(){var r=function(r,e){return Object.defineProperty(String.prototype,r,N(e))};r("fromBase64",(function(){return T(this)})),r("toBase64",(function(r){return w(this,r)})),r("toBase64URI",(function(){return w(this,!0)})),r("toBase64URL",(function(){return w(this,!0)})),r("toUint8Array",(function(){return C(this)}))},F=function(){var r=function(r,e){return Object.defineProperty(Uint8Array.prototype,r,N(e))};r("toBase64",(function(r){return h(this,r)})),r("toBase64URI",(function(){return h(this,!0)})),r("toBase64URL",(function(){return h(this,!0)}))},V={version:"3.7.2",VERSION:"3.7.2",atob:k,atobPolyfill:L,btoa:f,btoaPolyfill:g,fromBase64:T,toBase64:w,encode:w,encodeURI:D,encodeURL:D,utob:q,btou:x,decode:T,isValid:function(r){if("string"!=typeof r)return!1;var e=r.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(e)||!/[^\s0-9a-zA-Z\-_]/.test(e)},fromUint8Array:h,toUint8Array:C,extendString:U,extendUint8Array:F,extendBuiltins:function(){U(),F()},Base64:{}};return Object.keys(V).forEach((function(r){return V.Base64[r]=V[r]})),V})),"gray"===cgiData.type||"newgray"===cgiData.type||"empty"===cgiData.type){let r=he.decode(`${cgiData.hasOwnProperty("url")?cgiData.url:/http(.*)/.exec(cgiData.desc)[0]}`);if(r=0==r.indexOf("http")?r:"http://"+r,/qr\.alipay/.test(r))notify("","点击跳转到支付宝打开",r,alipayScheme+encodeURIComponent(r)),$done({});else{if(r.includes("https://spotify.link")){const e=/\$full_url=([^&]+)/;r=decodeURIComponent(r).match(e)[1]}if(notify("","点击跳转到浏览器打开",r,r),forceRedirect){let e={status:redirectStatus,headers:{Location:r}};isQuanX&&(e.body=respBody),$done(e)}else $done({})}}else"block"===cgiData.type?(async()=>{let r=cgiData.btns[0].url.replace("newreadtemplate","redirecthelpcgi");/exportkey=(.+)/.test(r)||(wechatExportKey?r+=wechatExportKey:$done({})),await get(r).then((r=>{let e=JSON.parse(r.body);if(e.hasOwnProperty("btns")){let r=decodeURIComponent(/url=(.*)/.exec(e.btns[0].url)[1]).replace(/&block_?type(.*)/,"");if(r=r.includes(".")?r:Base64.decode(r),r=0==r.indexOf("http")?r:"http://"+r,r.includes("web.archive.org/web"))$done({});else if(notify("","点击跳转到浏览器打开",r,r),useCache){let e={status:redirectStatus,headers:{Location:cacheURL+r}};isQuanX&&(e.body=respBody),$done(e)}else $done({});resolve(r)}$done({}),resolve()}))})():$done({});function notify(r="",e="",t="",a){if(isQuanX&&/iOS/.test($environment.version)){let o={};a&&(o["open-url"]=a),"{}"==JSON.stringify(o)?$notify(r,e,t):$notify(r,e,t,o)}else if(isSurgeiOS||isStashiOS||isLanceX){let o={};a&&(o.url=a),"{}"==JSON.stringify(o)?$notification.post(r,e,t):$notification.post(r,e,t,o)}else if(isLooniOS){let o={};a&&(o.openUrl=a),"{}"==JSON.stringify(o)?$notification.post(r,e,t):$notification.post(r,e,t,o)}else isShadowrocket&&(a?$notification.post(r,e,t,a):$notification.post(r,e,t))}function get(r){return isQuanX?("string"==typeof r&&(r={url:r,method:"GET"}),$task.fetch(r)):new Promise(((e,t)=>{$httpClient.get(r,((r,a,o)=>{r?t(r):e({statusCode:a.status,headers:a.headers,body:o})}))}))}function read(r){return"undefined"!=typeof $notify?JSON.parse($prefs.valueForKey(r)||"{}"):JSON.parse($persistentStore.read(r)||"{}")} \ No newline at end of file diff --git a/Scripts/Unlock/WechatUrlUnlock.js b/Scripts/Unlock/WechatUrlUnlock.js index 6b2aa99..4b4ca2b 100644 --- a/Scripts/Unlock/WechatUrlUnlock.js +++ b/Scripts/Unlock/WechatUrlUnlock.js @@ -1,22 +1,35 @@ -let persisVal = read("UnblockURLinWeChat"); -let useCache = persisVal.useCache === "true"; //是否在微信中用快照显示被封禁的链接 -let forceRedirect = persisVal.forceRedirect === "true"; //是否在微信中进行强制重定向,允许的情况下可能出现循环重定向 -let wechatExportKey = persisVal.wechatExportKey || ""; //微信的一个 key,暂未研究如何生成,测试中仅 macOS 微信打开链接跳转浏览器时会缺失,导致无法解析原始链接 -if (typeof $argument != "undefined") { - let arg = Object.fromEntries($argument.split("&").map((item) => item.split("="))); - useCache = arg.useCache === "true"; - forceRedirect = arg.forceRedirect === "ture"; +let persisVal = read('UnblockURLinWeChat'); +let useCache = persisVal.useCache === 'true'; //是否在微信中用快照显示被封禁的链接 +let forceRedirect = persisVal.forceRedirect === 'true'; //是否在微信中进行强制重定向,允许的情况下可能出现循环重定向 +let wechatExportKey = persisVal.wechatExportKey || ''; //微信的一个 key,暂未研究如何生成,测试中仅 macOS 微信打开链接跳转浏览器时会缺失,导致无法解析原始链接 +if (typeof $argument != 'undefined') { + let arg = Object.fromEntries( + $argument.split('&').map((item) => item.split('=')) + ); + useCache = arg.useCache === 'true'; + forceRedirect = arg.forceRedirect === 'ture'; } const respBody = $response.body; //const cacheURL = "https://webcache.googleusercontent.com/search?q=cache:"; -const cacheURL = "https://web.archive.org/web/20991231999999/"; -const alipayScheme = "alipays://platformapi/startapp?appId=20000067&url="; -const isQuanX = typeof $notify != "undefined"; -const isSurgeiOS = typeof $utils != "undefined" && $environment.system == "iOS"; -const isLooniOS = typeof $loon != "undefined" && /iPhone/.test($loon); -const redirectStatus = isQuanX ? "HTTP/1.1 302 Temporary Redirect" : 302; +const cacheURL = 'https://web.archive.org/web/20991231999999/'; +const alipayScheme = 'alipays://platformapi/startapp?appId=20000067&url='; + +const isQuanX = typeof $notify != 'undefined'; +const isSurgeiOS = + 'undefined' !== typeof $environment && + $environment['surge-version'] && + $environment.system == 'iOS'; +const isLooniOS = typeof $loon != 'undefined' && /iPhone/.test($loon); +const isStashiOS = + 'undefined' !== typeof $environment && + $environment['stash-version'] && + $environment.system == 'iOS'; +const isShadowrocket = 'undefined' !== typeof $rocket; +const isLanceX = 'undefined' != typeof $native; + +const redirectStatus = isQuanX ? 'HTTP/1.1 302 Temporary Redirect' : 302; const cgiDataReg = /var cgiData = ([\s\S]*);\s*<\/script>/; -let cgiData = JSON.parse(cgiDataReg.exec(respBody)[1].replace(/\\/g, "")); +let cgiData = JSON.parse(cgiDataReg.exec(respBody)[1].replace(/\\/g, '')); // HTML entities by https://github.com/mathiasbynens/he // prettier-ignore @@ -26,120 +39,147 @@ let cgiData = JSON.parse(cgiDataReg.exec(respBody)[1].replace(/\\/g, "")); // prettier-ignore !function(t,n){var r,e;"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(r=t.Base64,(e=n()).noConflict=function(){return t.Base64=r,e},t.Meteor&&(Base64=e),t.Base64=e)}("undefined"!=typeof self?self:"undefined"!=typeof window?window:"undefined"!=typeof global?global:this,(function(){"use strict";var t,n="3.7.2",r="function"==typeof atob,e="function"==typeof btoa,o="function"==typeof Buffer,u="function"==typeof TextDecoder?new TextDecoder:void 0,i="function"==typeof TextEncoder?new TextEncoder:void 0,f=Array.prototype.slice.call("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="),c=(t={},f.forEach((function(n,r){return t[n]=r})),t),a=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,d=String.fromCharCode.bind(String),s="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):function(t,n){return void 0===n&&(n=function(t){return t}),new Uint8Array(Array.prototype.slice.call(t,0).map(n))},l=function(t){return t.replace(/=/g,"").replace(/[+\/]/g,(function(t){return"+"==t?"-":"_"}))},h=function(t){return t.replace(/[^A-Za-z0-9\+\/]/g,"")},p=function(t){for(var n,r,e,o,u="",i=t.length%3,c=0;c255||(e=t.charCodeAt(c++))>255||(o=t.charCodeAt(c++))>255)throw new TypeError("invalid character found");u+=f[(n=r<<16|e<<8|o)>>18&63]+f[n>>12&63]+f[n>>6&63]+f[63&n]}return i?u.slice(0,i-3)+"===".substring(i):u},y=e?function(t){return btoa(t)}:o?function(t){return Buffer.from(t,"binary").toString("base64")}:p,A=o?function(t){return Buffer.from(t).toString("base64")}:function(t){for(var n=[],r=0,e=t.length;r>>6)+d(128|63&n):d(224|n>>>12&15)+d(128|n>>>6&63)+d(128|63&n);var n=65536+1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320);return d(240|n>>>18&7)+d(128|n>>>12&63)+d(128|n>>>6&63)+d(128|63&n)},B=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,x=function(t){return t.replace(B,g)},C=o?function(t){return Buffer.from(t,"utf8").toString("base64")}:i?function(t){return A(i.encode(t))}:function(t){return y(x(t))},m=function(t,n){return void 0===n&&(n=!1),n?l(C(t)):C(t)},v=function(t){return m(t,!0)},U=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,F=function(t){switch(t.length){case 4:var n=((7&t.charCodeAt(0))<<18|(63&t.charCodeAt(1))<<12|(63&t.charCodeAt(2))<<6|63&t.charCodeAt(3))-65536;return d(55296+(n>>>10))+d(56320+(1023&n));case 3:return d((15&t.charCodeAt(0))<<12|(63&t.charCodeAt(1))<<6|63&t.charCodeAt(2));default:return d((31&t.charCodeAt(0))<<6|63&t.charCodeAt(1))}},w=function(t){return t.replace(U,F)},S=function(t){if(t=t.replace(/\s+/g,""),!a.test(t))throw new TypeError("malformed base64.");t+="==".slice(2-(3&t.length));for(var n,r,e,o="",u=0;u>16&255):64===e?d(n>>16&255,n>>8&255):d(n>>16&255,n>>8&255,255&n);return o},E=r?function(t){return atob(h(t))}:o?function(t){return Buffer.from(t,"base64").toString("binary")}:S,D=o?function(t){return s(Buffer.from(t,"base64"))}:function(t){return s(E(t),(function(t){return t.charCodeAt(0)}))},R=function(t){return D(T(t))},z=o?function(t){return Buffer.from(t,"base64").toString("utf8")}:u?function(t){return u.decode(D(t))}:function(t){return w(E(t))},T=function(t){return h(t.replace(/[-_]/g,(function(t){return"-"==t?"+":"/"})))},Z=function(t){return z(T(t))},j=function(t){return{value:t,enumerable:!1,writable:!0,configurable:!0}},I=function(){var t=function(t,n){return Object.defineProperty(String.prototype,t,j(n))};t("fromBase64",(function(){return Z(this)})),t("toBase64",(function(t){return m(this,t)})),t("toBase64URI",(function(){return m(this,!0)})),t("toBase64URL",(function(){return m(this,!0)})),t("toUint8Array",(function(){return R(this)}))},O=function(){var t=function(t,n){return Object.defineProperty(Uint8Array.prototype,t,j(n))};t("toBase64",(function(t){return b(this,t)})),t("toBase64URI",(function(){return b(this,!0)})),t("toBase64URL",(function(){return b(this,!0)}))},P={version:n,VERSION:"3.7.2",atob:E,atobPolyfill:S,btoa:y,btoaPolyfill:p,fromBase64:Z,toBase64:m,encode:m,encodeURI:v,encodeURL:v,utob:x,btou:w,decode:Z,isValid:function(t){if("string"!=typeof t)return!1;var n=t.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(n)||!/[^\s0-9a-zA-Z\-_]/.test(n)},fromUint8Array:b,toUint8Array:R,extendString:I,extendUint8Array:O,extendBuiltins:function(){I(),O()},Base64:{}};return Object.keys(P).forEach((function(t){return P.Base64[t]=P[t]})),P})); -if (cgiData.type === "gray" || cgiData.type === "newgray" || cgiData.type === "empty") { - let trueURL = he.decode( - `${cgiData.hasOwnProperty("url") ? cgiData.url : /http(.*)/.exec(cgiData.desc)[0]}` +if ( + cgiData.type === 'gray' || + cgiData.type === 'newgray' || + cgiData.type === 'empty' +) { + let trueURL = he.decode( + `${ + cgiData.hasOwnProperty('url') + ? cgiData.url + : /http(.*)/.exec(cgiData.desc)[0] + }` + ); + trueURL = trueURL.indexOf('http') == 0 ? trueURL : 'http://' + trueURL; + if (/qr\.alipay/.test(trueURL)) { + notify( + '', + '点击跳转到支付宝打开', + trueURL, + alipayScheme + encodeURIComponent(trueURL) ); - trueURL = trueURL.indexOf("http") == 0 ? trueURL : "http://" + trueURL; - if (/qr\.alipay/.test(trueURL)) { - notify("", "点击跳转到支付宝打开", trueURL, alipayScheme + encodeURIComponent(trueURL)); + $done({}); + } else { + if (trueURL.includes('https://spotify.link')) { + const pattern = /\$full_url=([^&]+)/; + trueURL = decodeURIComponent(trueURL).match(pattern)[1]; + } + notify('', '点击跳转到浏览器打开', trueURL, trueURL); + if (forceRedirect) { + let redirect = { + status: redirectStatus, + headers: { + Location: trueURL, + }, + }; + if (isQuanX) redirect.body = respBody; + $done(redirect); + } else $done({}); + } +} else if (cgiData.type === 'block') { + !(async () => { + let url = cgiData.btns[0].url.replace('newreadtemplate', 'redirecthelpcgi'); + if (!/exportkey=(.+)/.test(url)) { + if (wechatExportKey) { + url += wechatExportKey; + } else { $done({}); - } else { - notify("", "点击跳转到浏览器打开", trueURL, trueURL); - if (forceRedirect) { + } + } + await get(url).then((resp) => { + let obj = JSON.parse(resp.body); + if (obj.hasOwnProperty('btns')) { + let trueURL = decodeURIComponent( + /url=(.*)/.exec(obj.btns[0].url)[1] + ).replace(/&block_?type(.*)/, ''); + trueURL = trueURL.includes('.') ? trueURL : Base64.decode(trueURL); + trueURL = trueURL.indexOf('http') == 0 ? trueURL : 'http://' + trueURL; + if (!trueURL.includes('web.archive.org/web')) { + notify('', '点击跳转到浏览器打开', trueURL, trueURL); + if (useCache) { + let cacheLink = cacheURL + trueURL; let redirect = { - status: redirectStatus, - headers: { - Location: trueURL, - }, + status: redirectStatus, + headers: { + Location: cacheLink, + }, }; if (isQuanX) redirect.body = respBody; $done(redirect); - } else $done({}); - } -} else if (cgiData.type === "block") { - !(async () => { - let url = cgiData.btns[0].url.replace("newreadtemplate", "redirecthelpcgi"); - if (!/exportkey=(.+)/.test(url)) { - if (wechatExportKey) { - url += wechatExportKey; - } else { - $done({}); - } - } - await get(url).then((resp) => { - let obj = JSON.parse(resp.body); - if (obj.hasOwnProperty("btns")) { - let trueURL = decodeURIComponent(/url=(.*)/.exec(obj.btns[0].url)[1]).replace( - /&block_?type(.*)/, - "" - ); - trueURL = trueURL.includes(".") ? trueURL : Base64.decode(trueURL); - trueURL = trueURL.indexOf("http") == 0 ? trueURL : "http://" + trueURL; - if (!trueURL.includes("web.archive.org/web")) { - notify("", "点击跳转到浏览器打开", trueURL, trueURL); - if (useCache) { - let cacheLink = cacheURL + trueURL; - let redirect = { - status: redirectStatus, - headers: { - Location: cacheLink, - }, - }; - if (isQuanX) redirect.body = respBody; - $done(redirect); - } else { - $done({}); - } - } else { - $done({}); - } - resolve(trueURL); - } + } else { $done({}); - resolve(); - }); - })(); + } + } else { + $done({}); + } + resolve(trueURL); + } + $done({}); + resolve(); + }); + })(); } else { - $done({}); + $done({}); } -function notify(title = "", subtitle = "", content = "", open_url) { - if (isQuanX && /iOS/.test($environment.version)) { - let opts = {}; - if (open_url) opts["open-url"] = open_url; - if (JSON.stringify(opts) == "{}") { - $notify(title, subtitle, content); - } else { - $notify(title, subtitle, content, opts); - } - } else if (isSurgeiOS) { - let opts = {}; - if (open_url) opts["url"] = open_url; - if (JSON.stringify(opts) == "{}") { - $notification.post(title, subtitle, content); - } else { - $notification.post(title, subtitle, content, opts); - } - } else if (isLooniOS) { - let opts = {}; - if (open_url) opts["openUrl"] = open_url; - if (JSON.stringify(opts) == "{}") { - $notification.post(title, subtitle, content); - } else { - $notification.post(title, subtitle, content, opts); - } +function notify(title = '', subtitle = '', content = '', open_url) { + if (isQuanX && /iOS/.test($environment.version)) { + let opts = {}; + if (open_url) opts['open-url'] = open_url; + if (JSON.stringify(opts) == '{}') { + $notify(title, subtitle, content); + } else { + $notify(title, subtitle, content, opts); + } + } else if (isSurgeiOS || isStashiOS || isLanceX) { + let opts = {}; + if (open_url) opts['url'] = open_url; + if (JSON.stringify(opts) == '{}') { + $notification.post(title, subtitle, content); + } else { + $notification.post(title, subtitle, content, opts); + } + } else if (isLooniOS) { + let opts = {}; + if (open_url) opts['openUrl'] = open_url; + if (JSON.stringify(opts) == '{}') { + $notification.post(title, subtitle, content); + } else { + $notification.post(title, subtitle, content, opts); } + } else if (isShadowrocket) { + if (open_url) { + $notification.post(title, subtitle, content, open_url); + } else { + $notification.post(title, subtitle, content); + } + } } function get(options) { - if (isQuanX) { - if (typeof options == "string") options = { url: options, method: "GET" }; - return $task.fetch(options); - } else { - return new Promise((resolve, reject) => { - $httpClient.get(options, (err, response, body) => { - if (err) reject(err); - else resolve({ statusCode: response.status, headers: response.headers, body }); - }); - }); - } + if (isQuanX) { + if (typeof options == 'string') options = { url: options, method: 'GET' }; + return $task.fetch(options); + } else { + return new Promise((resolve, reject) => { + $httpClient.get(options, (err, response, body) => { + if (err) reject(err); + else + resolve({ + statusCode: response.status, + headers: response.headers, + body, + }); + }); + }); + } } function read(key) { - if (typeof $notify != "undefined") { - return JSON.parse($prefs.valueForKey(key) || "{}"); - } else { - return JSON.parse($persistentStore.read(key) || "{}"); - } -} \ No newline at end of file + if (typeof $notify != 'undefined') { + return JSON.parse($prefs.valueForKey(key) || '{}'); + } else { + return JSON.parse($persistentStore.read(key) || '{}'); + } +}