Embed URL

A user script that adds a corresponding embed such as an image or video to a URL.

  1. // ==UserScript==
  2. // @name Embed URL
  3. // @name:ja 埋め込みを追加する
  4. // @description A user script that adds a corresponding embed such as an image or video to a URL.
  5. // @description:ja URLに画像や動画などの対応する埋め込みを追加するユーザースクリプトです。
  6. // @version 1.4.0
  7. // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAACw1JREFUeF7FW32sFNUV/53ZFxuUFktT/uojpdG2CjsL/eLtLhIFImpqa+DNCgJtsUkpTaEoJrVi67PV0iaCFkwRk0pbQHBnIRYrFCMfUXb20a/HzoK21WoD/cumFK1iat6b08zMzu7M7HzcmV1w/nlvds49H7977rn3nnsu4QI+BIABDKgj10rc1w8Yk4monwn9MDAZ5l/zYZyBhNPEOMPMZwDptEGjZ4aVGUfD1HN4i6gfRWt+az1twiTsO1WYXT4xZRR0A4jmAzQX4PFBUgSUfxvAITAf7AN+90Ip97pAm0QkHgCCwQhEqOPHfPnURCJjFWDMA2hWIi1iiNvdwccA6XlmaXOtNO2s5V8dfZWsGwMBCOt/9+/u/wtqYxXAqwFc0UvDm8PDNtL7vArQJk3Jbu5Gnsk21ANEGBdVfQmAVQzMFKHvNQ0BxwFsriryzrS8UwFQrDQ+ZzD/kIAbY4dNWs2cdmYUdbR0/+/iawAHMkQ/qA5m/5hUXGIA8hX9FgK2gXF5UmEXlJ5wjgnLawvlp5PI8QEQHf0L6olVgLQpSkAHh5BeS6KkMK0ly1itKdOFY0MbgJiZL18+sY9IullYmZ4SJpuWmfmZWin3JREVWgBEiSiouont+/IkMt3nbZoixw7xWIKCqv8ZwIwLaX0iI5MpMqIp8mfaTTolRQJQUPVfALi9U2bYisBLSSCwtRi+eE8AmE9oivz1MA1Cg2CxrH+bCcLBJBqk3gKQ1GOIsapakh8N0iLQAwaeGilKUuY5AJf2VvUk3JKa6eftaX/eMMauH751RjWIqkOrvKrv9y9ykqiejlbA4DRTarMNAwdqinyTf+/Q4QHm8paBHemM6LKVx0ABQCLEBbUmYKl/2RwEwDCDZto7eYEnTa8IsE1F4tLFD0DT0ONVRR5w8yY3YXNXF7nS61axVO1TNHJvH3xz02r3LrLlAfZ+fszcXV0R4j6iPpFCXcvfWtkfYpwD4RabUbqhENHqVebMzFpp6lmHuyWmoDbuA3golfY9aDRGfZ88Pnj1KyarYrn+KSbpL/HDUAScwO4c0pTs/V4Ayo3DIL4uDPE2GxGhcYh4eTBwvOYam/mKfjcx1sdxSf2d6YhWys4xtbCGwOxdjf7RPj6djGF7nRcICfNBEIYBui+WL9G92mD2QYeuUNZ/D8Lnm+9DYM7b+cVmljV2Ae9wCu+svlGa/MLi7BmLVeGpxlJIvD1WUUECAq+vKrl7Cmp9yANAyIwhjWWmH1s0tW6yn7mn/rGMQWfaoshy12JZX8/A3R05rBCesX5q0DLt1uwOG4BKYzuYl3YTdJrj6XUD+G5NkVU7rvgA8ANoK9/QFFl2PvmX4AQaqjbHa17VFQn4KQNTBPsinIxohzaYXWYDoDbeBPhDndT+7Uw4rgzey6PG2uHFM/7RcuW4wGoBQD/WlOy6tvvXD4PoOr8HOO8Du0Y+Tpm+DUS8oDsQ6K2akp1A1qEFMke6Y4bva4r8gJtHYW99EsaklXEzC0l9+erCq4fNts2p+N9eXWgIGWOLtiD3hvV7sw8Kqn4vgB91o7eBseuoUG4sA/GvkzKy9eBTkkRrji2Un/cYr9bnAPRQXB6BgddrivyJdu/rXwNhW4AuI2C+SyvlDru/zdqjzzMMPAJgalL9LXqmr1ChXF8HogcCp7+wZa75u0Tbx3/QWPnc/Nw7XuOtMwKh1SSDH6kpuTvaQ0b/DYCIVBZ5VnFmu+sP1i97+7/SFjAvSwwC871UVPXHGFgh3phHwdJqrZTd4m5zbfnU+PeksQ1gfCOKlyeKMM91ejVf1sYRjT9vLTejpjnC45cYmbVHS1PNY7PWOrFQbqwEGZsA6hO1hYCtVKjoz4Jxk9Mocvpgc14fW6mVZpxwCynurg9wHz0BxlWu4NWctEPV+ZemyJMcC8wIT0BZSHnCyzTKt1cX5azY0R5CI9OBzBYQvBueAE0sOwn7qVDWGyBMixPMwMM1Rb7TT1eoNFaC+edx7Tu+Ex7XBuUVDuD5ir6TGLcl4kP0LW3Q64lm+7yqbySgNbRCeTJOUkHVzwGYEETk9gYzYprH1a3fmKVCRd8J0KJESjeJGcbNNWX6b522RVU/z8C4wCEQOCwcTXi3NigvAZHh8Eows70ZCYDbMAuA0oyjzpYwr9bXEOjhxMbbxryrKXIr3TagnviixNIzztiPXcX5hDL4jmEl94iTwUgGgOgQIOm22uC0XW7Zs8r6Zw2yxm1rKgsDxG0UE56smb3WfAoVfWtQ8IyJRyaQr0mM0rGS/Cd37MlXGouJjScFOuckFSv6s+wKglGNguLAjftf+cC5d97dSsBXBQRaJAyUnOWy+V5QdXOR89Hg9sHJdQZ+dfll41YcuOnK/3mMV+sbCXRH/Fba8sT9aabBF42MtGJ4QfZlt8LFSuObzOyZGh1r/dMa89uX1kqFdy3jy/U5IDokCp6pNRFWVgezj7nbDOxtXCWNGVsBuqaTl9eXnDd7GmwthNw4xuL3JiRapS3MenaQRbV+DVuHpzw9wqB9miJ/2fmeV+sPE2iN8x49/ukEwVhdVXIvuvkX9jSWwWDzDGNCogySuRBKuxS2FbCqNL7jiQs79Q8bl2ADgOWBIDCWayX5l20A9NdIbHe3TXqP1h5bkv2Px3i18bNmdUqMEwVAay6F2xEzLvYSwM2aHJcoBh0F8+paSW54FKvod4ItIDwPc+YjTj6uuOelATZGa7HuT1irDcob3XT5sp4FYRMB14a3j7bJ2gzZQShsOxyrmkNwFhLWagudnrUFd+QZmY9opdwc23msRMyDIL4nWoqdEPGAW7Y2TSa4E4U17Eiv0luauR22APAkRPws4zyjTe+fJdoA2DzaZ3QOQLpOQDb6BMILgPAqz2eGJdG9oPIkRHqbEjskZaS1xxZMq/s9YEzi/uMLc/80dZu1+2TOyBitPUVEquV+TckNzdp7MseG8RAz5gn3esTGigxaVnVSYp1JUfFeD1HmDUh0FwxzgdRMtTP+oJXkL7TcX22sA7MniRIsle8H899BkplfmCRsfAyhJylqDYNWWjyNiGDVCXSUrSDF5s7re7VB+Seu6D9MAuV1Ng8OCXQpO6qZFm+GIlulC30wQsyfrpZyfzVlzay8dGWGR/+WBmrxNhHgMA1pJd/ByED51ESpeTTmCBHGNy6JYTJkPM2Ey811MBMguaYvMTliVAIANY/G7FJbT+4l2eFozxQS0DkFSWintNNqpgUeAEwxRVUf7ih9FenhFDoGNbmQsJqltR3H434lelYg0cNihx5ha/Z2fIGEKayrEpmL6C1OFBcp5WiVyPiO2zuGgMk0XZFUnPPGfe9VPwfy8RRJuTWxAOhUjcwz+i7L5HpsUBeelaxMzoVGeKFk+5j6fe1XZ1kZXbsiWCgZYsnFKJXt3ldClGeMaCV3qWynpMAY4B8TF69Yurf+1FWxtF+VfLm+j4i6LJcXN1CcsrNXPeXyTheHTBXBHhDikyIXJqLdOZlZHmrhIGhfmHDahkl0f080BM0rMxKwjXt1ZcYxTNjAEHXNKzPA8tpgV1dmgoOE33vCLk0Fq5as14V6wweWuciRurk0lVbFJNfm0sqIAsR7bS6dhEQxoKWMT1bHxclu3dnePkfVCVgXJ2tKdrO9oRVZDIf7Z6KzhDB5F/LqbFt199VZu9Q1rFOEhlK3N0c9FxpdEmeX61NGgRsAmk+EuQy4Lk+LqmbRJb48ndQfvEOg2TopkziT7OvzmX6AJ4Oo37o2H3F9niCdHou5Ph8nU/T7/wHQS43IlPw4IwAAAABJRU5ErkJggg==
  8. // @match *://*/*
  9. // @connect imgur.com
  10. // @connect i.imgur.com
  11. // @connect publish.twitter.com
  12. // @connect www.instagram.com
  13. // @connect pinterest.com
  14. // @connect *
  15. // @namespace https://github.com/sqrtox/userscript-embed-url
  16. // @author sqrtox
  17. // @license MIT
  18. // @grant GM.xmlHttpRequest
  19. // ==/UserScript==
  20. "use strict";
  21. (() => {
  22. var __defProp = Object.defineProperty;
  23. var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  24. var __publicField = (obj, key, value) => {
  25. __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
  26. return value;
  27. };
  28. var __accessCheck = (obj, member, msg) => {
  29. if (!member.has(obj))
  30. throw TypeError("Cannot " + msg);
  31. };
  32. var __privateGet = (obj, member, getter) => {
  33. __accessCheck(obj, member, "read from private field");
  34. return getter ? getter.call(obj) : member.get(obj);
  35. };
  36. var __privateAdd = (obj, member, value) => {
  37. if (member.has(obj))
  38. throw TypeError("Cannot add the same private member more than once");
  39. member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
  40. };
  41. var __privateSet = (obj, member, value, setter) => {
  42. __accessCheck(obj, member, "write to private field");
  43. setter ? setter.call(obj, value) : member.set(obj, value);
  44. return value;
  45. };
  46. var __privateMethod = (obj, member, method) => {
  47. __accessCheck(obj, member, "access private method");
  48. return method;
  49. };
  50.  
  51. // src/utils/objectKeys.ts
  52. var objectKeys = (obj) => Object.keys(obj);
  53.  
  54. // src/utils/findElement.ts
  55. var findElement = function* (tagName, context = document) {
  56. if (!(context instanceof Document) && context instanceof document.createElement(tagName).constructor) {
  57. yield context;
  58. }
  59. yield* context.getElementsByTagName(tagName);
  60. };
  61.  
  62. // src/utils/observeAnchor.ts
  63. var ObserveAnchorRecordTypes = {
  64. Found: "found",
  65. Added: "added",
  66. Removed: "removed",
  67. Appeared: "appeared",
  68. Disappeared: "disappeared",
  69. Changed: "changed"
  70. };
  71. var observeAnchor = (callback, {
  72. filter,
  73. signal
  74. } = {}) => {
  75. signal?.addEventListener("abort", () => {
  76. intersectionObserver?.disconnect();
  77. intersectionObserver = void 0;
  78. mutationObserver?.disconnect();
  79. mutationObserver = void 0;
  80. }, { once: true });
  81. const filterSet = filter && new Set(filter);
  82. const flush = (creator) => {
  83. const records = [];
  84. for (const record of creator()) {
  85. if (!record.targets.length) {
  86. continue;
  87. }
  88. if (filterSet && !filterSet.has(record.type)) {
  89. continue;
  90. }
  91. records.push(record);
  92. }
  93. if (!records.length) {
  94. return;
  95. }
  96. callback(records);
  97. };
  98. let intersectionObserver = new IntersectionObserver((records) => {
  99. flush(function* () {
  100. const appearedTargets = [];
  101. const disappearedTargets = [];
  102. for (const { isIntersecting, target } of records) {
  103. if (!(target instanceof HTMLAnchorElement)) {
  104. continue;
  105. }
  106. if (isIntersecting) {
  107. appearedTargets.push(target);
  108. } else {
  109. disappearedTargets.push(target);
  110. }
  111. }
  112. yield {
  113. type: ObserveAnchorRecordTypes.Appeared,
  114. targets: appearedTargets
  115. };
  116. yield {
  117. type: ObserveAnchorRecordTypes.Disappeared,
  118. targets: disappearedTargets
  119. };
  120. });
  121. });
  122. let mutationObserver = new MutationObserver((records) => {
  123. flush(function* () {
  124. const changedTargets = [];
  125. const addedTargets = [];
  126. const removedTargets = [];
  127. for (const {
  128. type,
  129. target,
  130. addedNodes,
  131. removedNodes,
  132. attributeName,
  133. oldValue
  134. } of records) {
  135. switch (type) {
  136. case "attributes": {
  137. if (!(target instanceof HTMLAnchorElement)) {
  138. break;
  139. }
  140. if (attributeName !== "href") {
  141. break;
  142. }
  143. if (target.href === oldValue) {
  144. break;
  145. }
  146. changedTargets.push(target);
  147. break;
  148. }
  149. case "childList": {
  150. for (const n of addedNodes) {
  151. if (!(n instanceof Element)) {
  152. continue;
  153. }
  154. for (const e of findElement("a", n)) {
  155. addedTargets.push(e);
  156. intersectionObserver?.observe(e);
  157. }
  158. }
  159. for (const n of removedNodes) {
  160. if (!(n instanceof Element)) {
  161. continue;
  162. }
  163. for (const e of findElement("a", n)) {
  164. removedTargets.push(e);
  165. intersectionObserver?.unobserve(e);
  166. }
  167. }
  168. break;
  169. }
  170. }
  171. }
  172. yield {
  173. type: ObserveAnchorRecordTypes.Changed,
  174. targets: changedTargets
  175. };
  176. yield {
  177. type: ObserveAnchorRecordTypes.Added,
  178. targets: addedTargets
  179. };
  180. yield {
  181. type: ObserveAnchorRecordTypes.Removed,
  182. targets: removedTargets
  183. };
  184. });
  185. });
  186. mutationObserver.observe(document, {
  187. childList: true,
  188. subtree: true,
  189. attributes: true,
  190. attributeOldValue: true,
  191. attributeFilter: ["href"]
  192. });
  193. flush(function* () {
  194. const targets = [];
  195. for (const e of findElement("a")) {
  196. targets.push(e);
  197. intersectionObserver?.observe(e);
  198. }
  199. yield {
  200. type: ObserveAnchorRecordTypes.Found,
  201. targets
  202. };
  203. });
  204. };
  205.  
  206. // node_modules/.pnpm/parse-domain@8.0.1/node_modules/parse-domain/serialized-tries/icann.js
  207. var icann_default = "ac>com,edu,gov,net,mil,org<ad>nom<ae>co,net,org,sch,ac,gov,mil<aero>accident-investigation,accident-prevention,aerobatic,aeroclub,aerodrome,agents,aircraft,airline,airport,air-surveillance,airtraffic,air-traffic-control,ambulance,amusement,association,author,ballooning,broker,caa,cargo,catering,certification,championship,charter,civilaviation,club,conference,consultant,consulting,control,council,crew,design,dgca,educator,emergency,engine,engineer,entertainment,equipment,exchange,express,federation,flight,fuel,gliding,government,groundhandling,group,hanggliding,homebuilt,insurance,journal,journalist,leasing,logistics,magazine,maintenance,media,microlight,modelling,navigation,parachuting,paragliding,passenger-association,pilot,press,production,recreation,repbody,res,research,rotorcraft,safety,scientist,services,show,skydiving,software,student,trader,trading,trainer,union,workinggroup,works<af>gov,com,org,net,edu<ag>com,org,net,co,nom<ai>off,com,net,org<al>com,edu,gov,mil,net,org<am>co,com,commune,net,org<ao>ed,gv,og,co,pb,it<aq,ar>bet,com,coop,edu,gob,gov,int,mil,musica,mutual,net,org,senasa,tur<arpa>e164,in-addr,ip6,iris,uri,urn<as>gov<asia,at>ac>sth<co,gv,or<au>com,net,org,edu>act,catholic,nsw>schools<nt,qld,sa,tas,vic,wa<gov>qld,sa,tas,vic,wa<asn,id,info,conf,oz,act,nsw,nt,qld,sa,tas,vic,wa<aw>com<ax,az>com,net,int,gov,org,edu,info,pp,mil,name,pro,biz<ba>com,edu,gov,mil,net,org<bb>biz,co,com,edu,gov,info,net,org,store,tv<bd>*<be>ac<bf>gov<bg>a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,0,1,2,3,4,5,6,7,8,9<bh>com,edu,net,org,gov<bi>co,com,edu,or,org<biz,bj>africa,agro,architectes,assur,avocats,co,com,eco,econo,edu,info,loisirs,money,net,org,ote,resto,restaurant,tourism,univ<bm>com,edu,gov,net,org<bn>com,edu,gov,net,org<bo>com,edu,gob,int,org,net,mil,tv,web,academia,agro,arte,blog,bolivia,ciencia,cooperativa,democracia,deporte,ecologia,economia,empresa,indigena,industria,info,medicina,movimiento,musica,natural,nombre,noticias,patria,politica,profesional,plurinacional,pueblo,revista,salud,tecnologia,tksat,transporte,wiki<br>9guacu,abc,adm,adv,agr,aju,am,anani,aparecida,app,arq,art,ato,b,barueri,belem,bhz,bib,bio,blog,bmd,boavista,bsb,campinagrande,campinas,caxias,cim,cng,cnt,com,contagem,coop,coz,cri,cuiaba,curitiba,def,des,det,dev,ecn,eco,edu,emp,enf,eng,esp,etc,eti,far,feira,flog,floripa,fm,fnd,fortal,fot,foz,fst,g12,geo,ggf,goiania,gov>ac,al,am,ap,ba,ce,df,es,go,ma,mg,ms,mt,pa,pb,pe,pi,pr,rj,rn,ro,rr,rs,sc,se,sp,to<gru,imb,ind,inf,jab,jampa,jdf,joinville,jor,jus,leg,lel,log,londrina,macapa,maceio,manaus,maringa,mat,med,mil,morena,mp,mus,natal,net,niteroi,nom>*<not,ntr,odo,ong,org,osasco,palmas,poa,ppg,pro,psc,psi,pvh,qsl,radio,rec,recife,rep,ribeirao,rio,riobranco,riopreto,salvador,sampa,santamaria,santoandre,saobernardo,saogonca,seg,sjc,slg,slz,sorocaba,srv,taxi,tc,tec,teo,the,tmp,trd,tur,tv,udi,vet,vix,vlog,wiki,zlg<bs>com,net,org,edu,gov<bt>com,edu,gov,net,org<bv,bw>co,org<by>gov,mil,com,of<bz>com,net,org,edu,gov<ca>ab,bc,mb,nb,nf,nl,ns,nt,nu,on,pe,qc,sk,yk,gc<cat,cc,cd>gov<cf,cg,ch,ci>org,or,com,co,edu,ed,ac,net,go,asso,xn--aroport-bya,int,presse,md,gouv<ck>*,!www<cl>co,gob,gov,mil<cm>co,com,gov,net<cn>ac,com,edu,gov,net,org,mil,xn--55qx5d,xn--io0a7i,xn--od0alg,ah,bj,cq,fj,gd,gs,gz,gx,ha,hb,he,hi,hl,hn,jl,js,jx,ln,nm,nx,qh,sc,sd,sh,sn,sx,tj,xj,xz,yn,zj,hk,mo,tw<co>arts,com,edu,firm,gov,info,int,mil,net,nom,org,rec,web<com,coop,cr>ac,co,ed,fi,go,or,sa<cu>com,edu,org,net,gov,inf<cv>com,edu,int,nome,org<cw>com,edu,net,org<cx>gov<cy>ac,biz,com,ekloges,gov,ltd,mil,net,org,press,pro,tm<cz,de,dj,dk,dm>com,net,org,edu,gov<do>art,com,edu,gob,gov,mil,net,org,sld,web<dz>art,asso,com,edu,gov,org,net,pol,soc,tm<ec>com,info,net,fin,k12,med,pro,org,edu,gov,gob,mil<edu,ee>edu,gov,riik,lib,med,com,pri,aip,org,fie<eg>com,edu,eun,gov,mil,name,net,org,sci<er>*<es>com,nom,org,gob,edu<et>com,gov,org,edu,biz,name,info,net<eu,fi>aland<fj>ac,biz,com,gov,info,mil,name,net,org,pro<fk>*<fm>com,edu,net,org<fo,fr>asso,com,gouv,nom,prd,tm,avoues,cci,greta,huissier-justice<ga,gb,gd>edu,gov<ge>com,edu,gov,org,mil,net,pvt<gf,gg>co,net,org<gh>com,edu,gov,org,mil<gi>com,ltd,gov,mod,edu,org<gl>co,com,edu,net,org<gm,gn>ac,com,edu,gov,org,net<gov,gp>com,net,mobi,edu,org,asso<gq,gr>com,edu,net,org,gov<gs,gt>com,edu,gob,ind,mil,net,org<gu>com,edu,gov,guam,info,net,org,web<gw,gy>co,com,edu,gov,net,org<hk>com,edu,gov,idv,net,org,xn--55qx5d,xn--wcvs22d,xn--lcvr32d,xn--mxtq1m,xn--gmqw5a,xn--ciqpn,xn--gmq050i,xn--zf0avx,xn--io0a7i,xn--mk0axi,xn--od0alg,xn--od0aq3b,xn--tn0ag,xn--uc0atv,xn--uc0ay4a<hm,hn>com,edu,org,net,mil,gob<hr>iz,from,name,com<ht>com,shop,firm,info,adult,net,pro,org,med,art,coop,pol,asso,edu,rel,gouv,perso<hu>co,info,org,priv,sport,tm,2000,agrar,bolt,casino,city,erotica,erotika,film,forum,games,hotel,ingatlan,jogasz,konyvelo,lakas,media,news,reklam,sex,shop,suli,szex,tozsde,utazas,video<id>ac,biz,co,desa,go,mil,my,net,or,ponpes,sch,web<ie>gov<il>ac,co,gov,idf,k12,muni,net,org<xn--4dbrk0ce>xn--4dbgdty6c,xn--5dbhl8d,xn--8dbq2a,xn--hebda8b<im>ac,co>ltd,plc<com,net,org,tt,tv<in>5g,6g,ac,ai,am,bihar,biz,business,ca,cn,co,com,coop,cs,delhi,dr,edu,er,firm,gen,gov,gujarat,ind,info,int,internet,io,me,mil,net,nic,org,pg,post,pro,res,travel,tv,uk,up,us<info,int>eu<io>com<iq>gov,edu,mil,com,org,net<ir>ac,co,gov,id,net,org,sch,xn--mgba3a4f16a,xn--mgba3a4fra<is>net,com,edu,gov,org,int<it>gov,edu,abr,abruzzo,aosta-valley,aostavalley,bas,basilicata,cal,calabria,cam,campania,emilia-romagna,emiliaromagna,emr,friuli-v-giulia,friuli-ve-giulia,friuli-vegiulia,friuli-venezia-giulia,friuli-veneziagiulia,friuli-vgiulia,friuliv-giulia,friulive-giulia,friulivegiulia,friulivenezia-giulia,friuliveneziagiulia,friulivgiulia,fvg,laz,lazio,lig,liguria,lom,lombardia,lombardy,lucania,mar,marche,mol,molise,piedmont,piemonte,pmn,pug,puglia,sar,sardegna,sardinia,sic,sicilia,sicily,taa,tos,toscana,trentin-sud-tirol,xn--trentin-sd-tirol-rzb,trentin-sudtirol,xn--trentin-sdtirol-7vb,trentin-sued-tirol,trentin-suedtirol,trentino-a-adige,trentino-aadige,trentino-alto-adige,trentino-altoadige,trentino-s-tirol,trentino-stirol,trentino-sud-tirol,xn--trentino-sd-tirol-c3b,trentino-sudtirol,xn--trentino-sdtirol-szb,trentino-sued-tirol,trentino-suedtirol,trentino,trentinoa-adige,trentinoaadige,trentinoalto-adige,trentinoaltoadige,trentinos-tirol,trentinostirol,trentinosud-tirol,xn--trentinosd-tirol-rzb,trentinosudtirol,xn--trentinosdtirol-7vb,trentinosued-tirol,trentinosuedtirol,trentinsud-tirol,xn--trentinsd-tirol-6vb,trentinsudtirol,xn--trentinsdtirol-nsb,trentinsued-tirol,trentinsuedtirol,tuscany,umb,umbria,val-d-aosta,val-daosta,vald-aosta,valdaosta,valle-aosta,valle-d-aosta,valle-daosta,valleaosta,valled-aosta,valledaosta,vallee-aoste,xn--valle-aoste-ebb,vallee-d-aoste,xn--valle-d-aoste-ehb,valleeaoste,xn--valleaoste-e7a,valleedaoste,xn--valledaoste-ebb,vao,vda,ven,veneto,ag,agrigento,al,alessandria,alto-adige,altoadige,an,ancona,andria-barletta-trani,andria-trani-barletta,andriabarlettatrani,andriatranibarletta,ao,aosta,aoste,ap,aq,aquila,ar,arezzo,ascoli-piceno,ascolipiceno,asti,at,av,avellino,ba,balsan-sudtirol,xn--balsan-sdtirol-nsb,balsan-suedtirol,balsan,bari,barletta-trani-andria,barlettatraniandria,belluno,benevento,bergamo,bg,bi,biella,bl,bn,bo,bologna,bolzano-altoadige,bolzano,bozen-sudtirol,xn--bozen-sdtirol-2ob,bozen-suedtirol,bozen,br,brescia,brindisi,bs,bt,bulsan-sudtirol,xn--bulsan-sdtirol-nsb,bulsan-suedtirol,bulsan,bz,ca,cagliari,caltanissetta,campidano-medio,campidanomedio,campobasso,carbonia-iglesias,carboniaiglesias,carrara-massa,carraramassa,caserta,catania,catanzaro,cb,ce,cesena-forli,xn--cesena-forl-mcb,cesenaforli,xn--cesenaforl-i8a,ch,chieti,ci,cl,cn,co,como,cosenza,cr,cremona,crotone,cs,ct,cuneo,cz,dell-ogliastra,dellogliastra,en,enna,fc,fe,fermo,ferrara,fg,fi,firenze,florence,fm,foggia,forli-cesena,xn--forl-cesena-fcb,forlicesena,xn--forlcesena-c8a,fr,frosinone,ge,genoa,genova,go,gorizia,gr,grosseto,iglesias-carbonia,iglesiascarbonia,im,imperia,is,isernia,kr,la-spezia,laquila,laspezia,latina,lc,le,lecce,lecco,li,livorno,lo,lodi,lt,lu,lucca,macerata,mantova,massa-carrara,massacarrara,matera,mb,mc,me,medio-campidano,mediocampidano,messina,mi,milan,milano,mn,mo,modena,monza-brianza,monza-e-della-brianza,monza,monzabrianza,monzaebrianza,monzaedellabrianza,ms,mt,na,naples,napoli,no,novara,nu,nuoro,og,ogliastra,olbia-tempio,olbiatempio,or,oristano,ot,pa,padova,padua,palermo,parma,pavia,pc,pd,pe,perugia,pesaro-urbino,pesarourbino,pescara,pg,pi,piacenza,pisa,pistoia,pn,po,pordenone,potenza,pr,prato,pt,pu,pv,pz,ra,ragusa,ravenna,rc,re,reggio-calabria,reggio-emilia,reggiocalabria,reggioemilia,rg,ri,rieti,rimini,rm,rn,ro,roma,rome,rovigo,sa,salerno,sassari,savona,si,siena,siracusa,so,sondrio,sp,sr,ss,suedtirol,xn--sdtirol-n2a,sv,ta,taranto,te,tempio-olbia,tempioolbia,teramo,terni,tn,to,torino,tp,tr,trani-andria-barletta,trani-barletta-andria,traniandriabarletta,tranibarlettaandria,trapani,trento,treviso,trieste,ts,turin,tv,ud,udine,urbino-pesaro,urbinopesaro,va,varese,vb,vc,ve,venezia,venice,verbania,vercelli,verona,vi,vibo-valentia,vibovalentia,vicenza,viterbo,vr,vs,vt,vv<je>co,net,org<jm>*<jo>com,org,net,edu,sch,gov,mil,name<jobs,jp>ac,ad,co,ed,go,gr,lg,ne,or,aichi>aisai,ama,anjo,asuke,chiryu,chita,fuso,gamagori,handa,hazu,hekinan,higashiura,ichinomiya,inazawa,inuyama,isshiki,iwakura,kanie,kariya,kasugai,kira,kiyosu,komaki,konan,kota,mihama,miyoshi,nishio,nisshin,obu,oguchi,oharu,okazaki,owariasahi,seto,shikatsu,shinshiro,shitara,tahara,takahama,tobishima,toei,togo,tokai,tokoname,toyoake,toyohashi,toyokawa,toyone,toyota,tsushima,yatomi<akita>akita,daisen,fujisato,gojome,hachirogata,happou,higashinaruse,honjo,honjyo,ikawa,kamikoani,kamioka,katagami,kazuno,kitaakita,kosaka,kyowa,misato,mitane,moriyoshi,nikaho,noshiro,odate,oga,ogata,semboku,yokote,yurihonjo<aomori>aomori,gonohe,hachinohe,hashikami,hiranai,hirosaki,itayanagi,kuroishi,misawa,mutsu,nakadomari,noheji,oirase,owani,rokunohe,sannohe,shichinohe,shingo,takko,towada,tsugaru,tsuruta<chiba>abiko,asahi,chonan,chosei,choshi,chuo,funabashi,futtsu,hanamigawa,ichihara,ichikawa,ichinomiya,inzai,isumi,kamagaya,kamogawa,kashiwa,katori,katsuura,kimitsu,kisarazu,kozaki,kujukuri,kyonan,matsudo,midori,mihama,minamiboso,mobara,mutsuzawa,nagara,nagareyama,narashino,narita,noda,oamishirasato,omigawa,onjuku,otaki,sakae,sakura,shimofusa,shirako,shiroi,shisui,sodegaura,sosa,tako,tateyama,togane,tohnosho,tomisato,urayasu,yachimata,yachiyo,yokaichiba,yokoshibahikari,yotsukaido<ehime>ainan,honai,ikata,imabari,iyo,kamijima,kihoku,kumakogen,masaki,matsuno,matsuyama,namikata,niihama,ozu,saijo,seiyo,shikokuchuo,tobe,toon,uchiko,uwajima,yawatahama<fukui>echizen,eiheiji,fukui,ikeda,katsuyama,mihama,minamiechizen,obama,ohi,ono,sabae,sakai,takahama,tsuruga,wakasa<fukuoka>ashiya,buzen,chikugo,chikuho,chikujo,chikushino,chikuzen,chuo,dazaifu,fukuchi,hakata,higashi,hirokawa,hisayama,iizuka,inatsuki,kaho,kasuga,kasuya,kawara,keisen,koga,kurate,kurogi,kurume,minami,miyako,miyama,miyawaka,mizumaki,munakata,nakagawa,nakama,nishi,nogata,ogori,okagaki,okawa,oki,omuta,onga,onojo,oto,saigawa,sasaguri,shingu,shinyoshitomi,shonai,soeda,sue,tachiarai,tagawa,takata,toho,toyotsu,tsuiki,ukiha,umi,usui,yamada,yame,yanagawa,yukuhashi<fukushima>aizubange,aizumisato,aizuwakamatsu,asakawa,bandai,date,fukushima,furudono,futaba,hanawa,higashi,hirata,hirono,iitate,inawashiro,ishikawa,iwaki,izumizaki,kagamiishi,kaneyama,kawamata,kitakata,kitashiobara,koori,koriyama,kunimi,miharu,mishima,namie,nango,nishiaizu,nishigo,okuma,omotego,ono,otama,samegawa,shimogo,shirakawa,showa,soma,sukagawa,taishin,tamakawa,tanagura,tenei,yabuki,yamato,yamatsuri,yanaizu,yugawa<gifu>anpachi,ena,gifu,ginan,godo,gujo,hashima,hichiso,hida,higashishirakawa,ibigawa,ikeda,kakamigahara,kani,kasahara,kasamatsu,kawaue,kitagata,mino,minokamo,mitake,mizunami,motosu,nakatsugawa,ogaki,sakahogi,seki,sekigahara,shirakawa,tajimi,takayama,tarui,toki,tomika,wanouchi,yamagata,yaotsu,yoro<gunma>annaka,chiyoda,fujioka,higashiagatsuma,isesaki,itakura,kanna,kanra,katashina,kawaba,kiryu,kusatsu,maebashi,meiwa,midori,minakami,naganohara,nakanojo,nanmoku,numata,oizumi,ora,ota,shibukawa,shimonita,shinto,showa,takasaki,takayama,tamamura,tatebayashi,tomioka,tsukiyono,tsumagoi,ueno,yoshioka<hiroshima>asaminami,daiwa,etajima,fuchu,fukuyama,hatsukaichi,higashihiroshima,hongo,jinsekikogen,kaita,kui,kumano,kure,mihara,miyoshi,naka,onomichi,osakikamijima,otake,saka,sera,seranishi,shinichi,shobara,takehara<hokkaido>abashiri,abira,aibetsu,akabira,akkeshi,asahikawa,ashibetsu,ashoro,assabu,atsuma,bibai,biei,bifuka,bihoro,biratori,chippubetsu,chitose,date,ebetsu,embetsu,eniwa,erimo,esan,esashi,fukagawa,fukushima,furano,furubira,haboro,hakodate,hamatonbetsu,hidaka,higashikagura,higashikawa,hiroo,hokuryu,hokuto,honbetsu,horokanai,horonobe,ikeda,imakane,ishikari,iwamizawa,iwanai,kamifurano,kamikawa,kamishihoro,kamisunagawa,kamoenai,kayabe,kembuchi,kikonai,kimobetsu,kitahiroshima,kitami,kiyosato,koshimizu,kunneppu,kuriyama,kuromatsunai,kushiro,kutchan,kyowa,mashike,matsumae,mikasa,minamifurano,mombetsu,moseushi,mukawa,muroran,naie,nakagawa,nakasatsunai,nakatombetsu,nanae,nanporo,nayoro,nemuro,niikappu,niki,nishiokoppe,noboribetsu,numata,obihiro,obira,oketo,okoppe,otaru,otobe,otofuke,otoineppu,oumu,ozora,pippu,rankoshi,rebun,rikubetsu,rishiri,rishirifuji,saroma,sarufutsu,shakotan,shari,shibecha,shibetsu,shikabe,shikaoi,shimamaki,shimizu,shimokawa,shinshinotsu,shintoku,shiranuka,shiraoi,shiriuchi,sobetsu,sunagawa,taiki,takasu,takikawa,takinoue,teshikaga,tobetsu,tohma,tomakomai,tomari,toya,toyako,toyotomi,toyoura,tsubetsu,tsukigata,urakawa,urausu,uryu,utashinai,wakkanai,wassamu,yakumo,yoichi<hyogo>aioi,akashi,ako,amagasaki,aogaki,asago,ashiya,awaji,fukusaki,goshiki,harima,himeji,ichikawa,inagawa,itami,kakogawa,kamigori,kamikawa,kasai,kasuga,kawanishi,miki,minamiawaji,nishinomiya,nishiwaki,ono,sanda,sannan,sasayama,sayo,shingu,shinonsen,shiso,sumoto,taishi,taka,takarazuka,takasago,takino,tamba,tatsuno,toyooka,yabu,yashiro,yoka,yokawa<ibaraki>ami,asahi,bando,chikusei,daigo,fujishiro,hitachi,hitachinaka,hitachiomiya,hitachiota,ibaraki,ina,inashiki,itako,iwama,joso,kamisu,kasama,kashima,kasumigaura,koga,miho,mito,moriya,naka,namegata,oarai,ogawa,omitama,ryugasaki,sakai,sakuragawa,shimodate,shimotsuma,shirosato,sowa,suifu,takahagi,tamatsukuri,tokai,tomobe,tone,toride,tsuchiura,tsukuba,uchihara,ushiku,yachiyo,yamagata,yawara,yuki<ishikawa>anamizu,hakui,hakusan,kaga,kahoku,kanazawa,kawakita,komatsu,nakanoto,nanao,nomi,nonoichi,noto,shika,suzu,tsubata,tsurugi,uchinada,wajima<iwate>fudai,fujisawa,hanamaki,hiraizumi,hirono,ichinohe,ichinoseki,iwaizumi,iwate,joboji,kamaishi,kanegasaki,karumai,kawai,kitakami,kuji,kunohe,kuzumaki,miyako,mizusawa,morioka,ninohe,noda,ofunato,oshu,otsuchi,rikuzentakata,shiwa,shizukuishi,sumita,tanohata,tono,yahaba,yamada<kagawa>ayagawa,higashikagawa,kanonji,kotohira,manno,marugame,mitoyo,naoshima,sanuki,tadotsu,takamatsu,tonosho,uchinomi,utazu,zentsuji<kagoshima>akune,amami,hioki,isa,isen,izumi,kagoshima,kanoya,kawanabe,kinko,kouyama,makurazaki,matsumoto,minamitane,nakatane,nishinoomote,satsumasendai,soo,tarumizu,yusui<kanagawa>aikawa,atsugi,ayase,chigasaki,ebina,fujisawa,hadano,hakone,hiratsuka,isehara,kaisei,kamakura,kiyokawa,matsuda,minamiashigara,miura,nakai,ninomiya,odawara,oi,oiso,sagamihara,samukawa,tsukui,yamakita,yamato,yokosuka,yugawara,zama,zushi<kochi>aki,geisei,hidaka,higashitsuno,ino,kagami,kami,kitagawa,kochi,mihara,motoyama,muroto,nahari,nakamura,nankoku,nishitosa,niyodogawa,ochi,okawa,otoyo,otsuki,sakawa,sukumo,susaki,tosa,tosashimizu,toyo,tsuno,umaji,yasuda,yusuhara<kumamoto>amakusa,arao,aso,choyo,gyokuto,kamiamakusa,kikuchi,kumamoto,mashiki,mifune,minamata,minamioguni,nagasu,nishihara,oguni,ozu,sumoto,takamori,uki,uto,yamaga,yamato,yatsushiro<kyoto>ayabe,fukuchiyama,higashiyama,ide,ine,joyo,kameoka,kamo,kita,kizu,kumiyama,kyotamba,kyotanabe,kyotango,maizuru,minami,minamiyamashiro,miyazu,muko,nagaokakyo,nakagyo,nantan,oyamazaki,sakyo,seika,tanabe,uji,ujitawara,wazuka,yamashina,yawata<mie>asahi,inabe,ise,kameyama,kawagoe,kiho,kisosaki,kiwa,komono,kumano,kuwana,matsusaka,meiwa,mihama,minamiise,misugi,miyama,nabari,shima,suzuka,tado,taiki,taki,tamaki,toba,tsu,udono,ureshino,watarai,yokkaichi<miyagi>furukawa,higashimatsushima,ishinomaki,iwanuma,kakuda,kami,kawasaki,marumori,matsushima,minamisanriku,misato,murata,natori,ogawara,ohira,onagawa,osaki,rifu,semine,shibata,shichikashuku,shikama,shiogama,shiroishi,tagajo,taiwa,tome,tomiya,wakuya,watari,yamamoto,zao<miyazaki>aya,ebino,gokase,hyuga,kadogawa,kawaminami,kijo,kitagawa,kitakata,kitaura,kobayashi,kunitomi,kushima,mimata,miyakonojo,miyazaki,morotsuka,nichinan,nishimera,nobeoka,saito,shiiba,shintomi,takaharu,takanabe,takazaki,tsuno<nagano>achi,agematsu,anan,aoki,asahi,azumino,chikuhoku,chikuma,chino,fujimi,hakuba,hara,hiraya,iida,iijima,iiyama,iizuna,ikeda,ikusaka,ina,karuizawa,kawakami,kiso,kisofukushima,kitaaiki,komagane,komoro,matsukawa,matsumoto,miasa,minamiaiki,minamimaki,minamiminowa,minowa,miyada,miyota,mochizuki,nagano,nagawa,nagiso,nakagawa,nakano,nozawaonsen,obuse,ogawa,okaya,omachi,omi,ookuwa,ooshika,otaki,otari,sakae,sakaki,saku,sakuho,shimosuwa,shinanomachi,shiojiri,suwa,suzaka,takagi,takamori,takayama,tateshina,tatsuno,togakushi,togura,tomi,ueda,wada,yamagata,yamanouchi,yasaka,yasuoka<nagasaki>chijiwa,futsu,goto,hasami,hirado,iki,isahaya,kawatana,kuchinotsu,matsuura,nagasaki,obama,omura,oseto,saikai,sasebo,seihi,shimabara,shinkamigoto,togitsu,tsushima,unzen<nara>ando,gose,heguri,higashiyoshino,ikaruga,ikoma,kamikitayama,kanmaki,kashiba,kashihara,katsuragi,kawai,kawakami,kawanishi,koryo,kurotaki,mitsue,miyake,nara,nosegawa,oji,ouda,oyodo,sakurai,sango,shimoichi,shimokitayama,shinjo,soni,takatori,tawaramoto,tenkawa,tenri,uda,yamatokoriyama,yamatotakada,yamazoe,yoshino<niigata>aga,agano,gosen,itoigawa,izumozaki,joetsu,kamo,kariwa,kashiwazaki,minamiuonuma,mitsuke,muika,murakami,myoko,nagaoka,niigata,ojiya,omi,sado,sanjo,seiro,seirou,sekikawa,shibata,tagami,tainai,tochio,tokamachi,tsubame,tsunan,uonuma,yahiko,yoita,yuzawa<oita>beppu,bungoono,bungotakada,hasama,hiji,himeshima,hita,kamitsue,kokonoe,kuju,kunisaki,kusu,oita,saiki,taketa,tsukumi,usa,usuki,yufu<okayama>akaiwa,asakuchi,bizen,hayashima,ibara,kagamino,kasaoka,kibichuo,kumenan,kurashiki,maniwa,misaki,nagi,niimi,nishiawakura,okayama,satosho,setouchi,shinjo,shoo,soja,takahashi,tamano,tsuyama,wake,yakage<okinawa>aguni,ginowan,ginoza,gushikami,haebaru,higashi,hirara,iheya,ishigaki,ishikawa,itoman,izena,kadena,kin,kitadaito,kitanakagusuku,kumejima,kunigami,minamidaito,motobu,nago,naha,nakagusuku,nakijin,nanjo,nishihara,ogimi,okinawa,onna,shimoji,taketomi,tarama,tokashiki,tomigusuku,tonaki,urasoe,uruma,yaese,yomitan,yonabaru,yonaguni,zamami<osaka>abeno,chihayaakasaka,chuo,daito,fujiidera,habikino,hannan,higashiosaka,higashisumiyoshi,higashiyodogawa,hirakata,ibaraki,ikeda,izumi,izumiotsu,izumisano,kadoma,kaizuka,kanan,kashiwara,katano,kawachinagano,kishiwada,kita,kumatori,matsubara,minato,minoh,misaki,moriguchi,neyagawa,nishi,nose,osakasayama,sakai,sayama,sennan,settsu,shijonawate,shimamoto,suita,tadaoka,taishi,tajiri,takaishi,takatsuki,tondabayashi,toyonaka,toyono,yao<saga>ariake,arita,fukudomi,genkai,hamatama,hizen,imari,kamimine,kanzaki,karatsu,kashima,kitagata,kitahata,kiyama,kouhoku,kyuragi,nishiarita,ogi,omachi,ouchi,saga,shiroishi,taku,tara,tosu,yoshinogari<saitama>arakawa,asaka,chichibu,fujimi,fujimino,fukaya,hanno,hanyu,hasuda,hatogaya,hatoyama,hidaka,higashichichibu,higashimatsuyama,honjo,ina,iruma,iwatsuki,kamiizumi,kamikawa,kamisato,kasukabe,kawagoe,kawaguchi,kawajima,kazo,kitamoto,koshigaya,kounosu,kuki,kumagaya,matsubushi,minano,misato,miyashiro,miyoshi,moroyama,nagatoro,namegawa,niiza,ogano,ogawa,ogose,okegawa,omiya,otaki,ranzan,ryokami,saitama,sakado,satte,sayama,shiki,shiraoka,soka,sugito,toda,tokigawa,tokorozawa,tsurugashima,urawa,warabi,yashio,yokoze,yono,yorii,yoshida,yoshikawa,yoshimi<shiga>aisho,gamo,higashiomi,hikone,koka,konan,kosei,koto,kusatsu,maibara,moriyama,nagahama,nishiazai,notogawa,omihachiman,otsu,ritto,ryuoh,takashima,takatsuki,torahime,toyosato,yasu<shimane>akagi,ama,gotsu,hamada,higashiizumo,hikawa,hikimi,izumo,kakinoki,masuda,matsue,misato,nishinoshima,ohda,okinoshima,okuizumo,shimane,tamayu,tsuwano,unnan,yakumo,yasugi,yatsuka<shizuoka>arai,atami,fuji,fujieda,fujikawa,fujinomiya,fukuroi,gotemba,haibara,hamamatsu,higashiizu,ito,iwata,izu,izunokuni,kakegawa,kannami,kawanehon,kawazu,kikugawa,kosai,makinohara,matsuzaki,minamiizu,mishima,morimachi,nishiizu,numazu,omaezaki,shimada,shimizu,shimoda,shizuoka,susono,yaizu,yoshida<tochigi>ashikaga,bato,haga,ichikai,iwafune,kaminokawa,kanuma,karasuyama,kuroiso,mashiko,mibu,moka,motegi,nasu,nasushiobara,nikko,nishikata,nogi,ohira,ohtawara,oyama,sakura,sano,shimotsuke,shioya,takanezawa,tochigi,tsuga,ujiie,utsunomiya,yaita<tokushima>aizumi,anan,ichiba,itano,kainan,komatsushima,matsushige,mima,minami,miyoshi,mugi,nakagawa,naruto,sanagochi,shishikui,tokushima,wajiki<tokyo>adachi,akiruno,akishima,aogashima,arakawa,bunkyo,chiyoda,chofu,chuo,edogawa,fuchu,fussa,hachijo,hachioji,hamura,higashikurume,higashimurayama,higashiyamato,hino,hinode,hinohara,inagi,itabashi,katsushika,kita,kiyose,kodaira,koganei,kokubunji,komae,koto,kouzushima,kunitachi,machida,meguro,minato,mitaka,mizuho,musashimurayama,musashino,nakano,nerima,ogasawara,okutama,ome,oshima,ota,setagaya,shibuya,shinagawa,shinjuku,suginami,sumida,tachikawa,taito,tama,toshima<tottori>chizu,hino,kawahara,koge,kotoura,misasa,nanbu,nichinan,sakaiminato,tottori,wakasa,yazu,yonago<toyama>asahi,fuchu,fukumitsu,funahashi,himi,imizu,inami,johana,kamiichi,kurobe,nakaniikawa,namerikawa,nanto,nyuzen,oyabe,taira,takaoka,tateyama,toga,tonami,toyama,unazuki,uozu,yamada<wakayama>arida,aridagawa,gobo,hashimoto,hidaka,hirogawa,inami,iwade,kainan,kamitonda,katsuragi,kimino,kinokawa,kitayama,koya,koza,kozagawa,kudoyama,kushimoto,mihama,misato,nachikatsuura,shingu,shirahama,taiji,tanabe,wakayama,yuasa,yura<yamagata>asahi,funagata,higashine,iide,kahoku,kaminoyama,kaneyama,kawanishi,mamurogawa,mikawa,murayama,nagai,nakayama,nanyo,nishikawa,obanazawa,oe,oguni,ohkura,oishida,sagae,sakata,sakegawa,shinjo,shirataka,shonai,takahata,tendo,tozawa,tsuruoka,yamagata,yamanobe,yonezawa,yuza<yamaguchi>abu,hagi,hikari,hofu,iwakuni,kudamatsu,mitou,nagato,oshima,shimonoseki,shunan,tabuse,tokuyama,toyota,ube,yuu<yamanashi>chuo,doshi,fuefuki,fujikawa,fujikawaguchiko,fujiyoshida,hayakawa,hokuto,ichikawamisato,kai,kofu,koshu,kosuge,minami-alps,minobu,nakamichi,nanbu,narusawa,nirasaki,nishikatsura,oshino,otsuki,showa,tabayama,tsuru,uenohara,yamanakako,yamanashi<xn--4pvxs,xn--vgu402c,xn--c3s14m,xn--f6qx53a,xn--8pvr4u,xn--uist22h,xn--djrs72d6uy,xn--mkru45i,xn--0trq7p7nn,xn--8ltr62k,xn--2m4a15e,xn--efvn9s,xn--32vp30h,xn--4it797k,xn--1lqs71d,xn--5rtp49c,xn--5js045d,xn--ehqz56n,xn--1lqs03n,xn--qqqt11m,xn--kbrq7o,xn--pssu33l,xn--ntsq17g,xn--uisz3g,xn--6btw5a,xn--1ctwo,xn--6orx2r,xn--rht61e,xn--rht27z,xn--djty4k,xn--nit225k,xn--rht3d,xn--klty5x,xn--kltx9a,xn--kltp7d,xn--uuwu58a,xn--zbx025d,xn--ntso0iqx3a,xn--elqq16h,xn--4it168d,xn--klt787d,xn--rny31h,xn--7t0a264c,xn--5rtq34k,xn--k7yn95e,xn--tor131o,xn--d5qv7z876c,kawasaki>*,!city<kitakyushu>*,!city<kobe>*,!city<nagoya>*,!city<sapporo>*,!city<sendai>*,!city<yokohama>*,!city<<ke>ac,co,go,info,me,mobi,ne,or,sc<kg>org,net,com,edu,gov,mil<kh>*<ki>edu,biz,net,org,gov,info,com<km>org,nom,gov,prd,tm,edu,mil,ass,com,coop,asso,presse,medecin,notaires,pharmaciens,veterinaire,gouv<kn>net,org,edu,gov<kp>com,edu,gov,org,rep,tra<kr>ac,co,es,go,hs,kg,mil,ms,ne,or,pe,re,sc,busan,chungbuk,chungnam,daegu,daejeon,gangwon,gwangju,gyeongbuk,gyeonggi,gyeongnam,incheon,jeju,jeonbuk,jeonnam,seoul,ulsan<kw>com,edu,emb,gov,ind,net,org<ky>com,edu,net,org<kz>org,edu,net,gov,mil,com<la>int,net,info,edu,gov,per,com,org<lb>com,edu,gov,net,org<lc>com,net,co,org,edu,gov<li,lk>gov,sch,net,int,com,org,edu,ngo,soc,web,ltd,assn,grp,hotel,ac<lr>com,edu,gov,org,net<ls>ac,biz,co,edu,gov,info,net,org,sc<lt>gov<lu,lv>com,edu,gov,org,mil,id,net,asn,conf<ly>com,net,gov,plc,edu,sch,med,org,id<ma>co,net,gov,org,ac,press<mc>tm,asso<md,me>co,net,org,edu,ac,gov,its,priv<mg>org,nom,gov,prd,tm,edu,mil,com,co<mh,mil,mk>com,org,net,edu,gov,inf,name<ml>com,edu,gouv,gov,net,org,presse<mm>*<mn>gov,edu,org<mo>com,net,org,edu,gov<mobi,mp,mq,mr>gov<ms>com,edu,gov,net,org<mt>com,edu,net,org<mu>com,net,org,gov,ac,co,or<museum,mv>aero,biz,com,coop,edu,gov,info,int,mil,museum,name,net,org,pro<mw>ac,biz,co,com,coop,edu,gov,int,museum,net,org<mx>com,org,gob,edu,net<my>biz,com,edu,gov,mil,name,net,org<mz>ac,adv,co,edu,gov,mil,net,org<na>info,pro,name,school,or,dr,us,mx,ca,in,cc,tv,ws,mobi,co,com,org<name,nc>asso,nom<ne,net,nf>com,net,per,rec,web,arts,firm,info,other,store<ng>com,edu,gov,i,mil,mobi,name,net,org,sch<ni>ac,biz,co,com,edu,gob,in,info,int,mil,net,nom,org,web<nl,no>fhs,vgs,fylkesbibl,folkebibl,museum,idrett,priv,mil,stat,dep,kommune,herad,aa>gs<ah>gs<bu>gs<fm>gs<hl>gs<hm>gs<jan-mayen>gs<mr>gs<nl>gs<nt>gs<of>gs<ol>gs<oslo>gs<rl>gs<sf>gs<st>gs<svalbard>gs<tm>gs<tr>gs<va>gs<vf>gs<akrehamn,xn--krehamn-dxa,algard,xn--lgrd-poac,arna,brumunddal,bryne,bronnoysund,xn--brnnysund-m8ac,drobak,xn--drbak-wua,egersund,fetsund,floro,xn--flor-jra,fredrikstad,hokksund,honefoss,xn--hnefoss-q1a,jessheim,jorpeland,xn--jrpeland-54a,kirkenes,kopervik,krokstadelva,langevag,xn--langevg-jxa,leirvik,mjondalen,xn--mjndalen-64a,mo-i-rana,mosjoen,xn--mosjen-eya,nesoddtangen,orkanger,osoyro,xn--osyro-wua,raholt,xn--rholt-mra,sandnessjoen,xn--sandnessjen-ogb,skedsmokorset,slattum,spjelkavik,stathelle,stavern,stjordalshalsen,xn--stjrdalshalsen-sqb,tananger,tranby,vossevangen,afjord,xn--fjord-lra,agdenes,al,xn--l-1fa,alesund,xn--lesund-hua,alstahaug,alta,xn--lt-liac,alaheadju,xn--laheadju-7ya,alvdal,amli,xn--mli-tla,amot,xn--mot-tla,andebu,andoy,xn--andy-ira,andasuolo,ardal,xn--rdal-poa,aremark,arendal,xn--s-1fa,aseral,xn--seral-lra,asker,askim,askvoll,askoy,xn--asky-ira,asnes,xn--snes-poa,audnedaln,aukra,aure,aurland,aurskog-holand,xn--aurskog-hland-jnb,austevoll,austrheim,averoy,xn--avery-yua,balestrand,ballangen,balat,xn--blt-elab,balsfjord,bahccavuotna,xn--bhccavuotna-k7a,bamble,bardu,beardu,beiarn,bajddar,xn--bjddar-pta,baidar,xn--bidr-5nac,berg,bergen,berlevag,xn--berlevg-jxa,bearalvahki,xn--bearalvhki-y4a,bindal,birkenes,bjarkoy,xn--bjarky-fya,bjerkreim,bjugn,bodo,xn--bod-2na,badaddja,xn--bdddj-mrabd,budejju,bokn,bremanger,bronnoy,xn--brnny-wuac,bygland,bykle,barum,xn--brum-voa,telemark>bo,xn--b-5ga<nordland>bo,xn--b-5ga,heroy,xn--hery-ira<bievat,xn--bievt-0qa,bomlo,xn--bmlo-gra,batsfjord,xn--btsfjord-9za,bahcavuotna,xn--bhcavuotna-s4a,dovre,drammen,drangedal,dyroy,xn--dyry-ira,donna,xn--dnna-gra,eid,eidfjord,eidsberg,eidskog,eidsvoll,eigersund,elverum,enebakk,engerdal,etne,etnedal,evenes,evenassi,xn--eveni-0qa01ga,evje-og-hornnes,farsund,fauske,fuossko,fuoisku,fedje,fet,finnoy,xn--finny-yua,fitjar,fjaler,fjell,flakstad,flatanger,flekkefjord,flesberg,flora,fla,xn--fl-zia,folldal,forsand,fosnes,frei,frogn,froland,frosta,frana,xn--frna-woa,froya,xn--frya-hra,fusa,fyresdal,forde,xn--frde-gra,gamvik,gangaviika,xn--ggaviika-8ya47h,gaular,gausdal,gildeskal,xn--gildeskl-g0a,giske,gjemnes,gjerdrum,gjerstad,gjesdal,gjovik,xn--gjvik-wua,gloppen,gol,gran,grane,granvin,gratangen,grimstad,grong,kraanghke,xn--kranghke-b0a,grue,gulen,hadsel,halden,halsa,hamar,hamaroy,habmer,xn--hbmer-xqa,hapmir,xn--hpmir-xqa,hammerfest,hammarfeasta,xn--hmmrfeasta-s4ac,haram,hareid,harstad,hasvik,aknoluokta,xn--koluokta-7ya57h,hattfjelldal,aarborte,haugesund,hemne,hemnes,hemsedal,more-og-romsdal>heroy,sande<xn--mre-og-romsdal-qqb>xn--hery-ira,sande<hitra,hjartdal,hjelmeland,hobol,xn--hobl-ira,hof,hol,hole,holmestrand,holtalen,xn--holtlen-hxa,hornindal,horten,hurdal,hurum,hvaler,hyllestad,hagebostad,xn--hgebostad-g3a,hoyanger,xn--hyanger-q1a,hoylandet,xn--hylandet-54a,ha,xn--h-2fa,ibestad,inderoy,xn--indery-fya,iveland,jevnaker,jondal,jolster,xn--jlster-bya,karasjok,karasjohka,xn--krjohka-hwab49j,karlsoy,galsa,xn--gls-elac,karmoy,xn--karmy-yua,kautokeino,guovdageaidnu,klepp,klabu,xn--klbu-woa,kongsberg,kongsvinger,kragero,xn--krager-gya,kristiansand,kristiansund,krodsherad,xn--krdsherad-m8a,kvalsund,rahkkeravju,xn--rhkkervju-01af,kvam,kvinesdal,kvinnherad,kviteseid,kvitsoy,xn--kvitsy-fya,kvafjord,xn--kvfjord-nxa,giehtavuoatna,kvanangen,xn--kvnangen-k0a,navuotna,xn--nvuotna-hwa,kafjord,xn--kfjord-iua,gaivuotna,xn--givuotna-8ya,larvik,lavangen,lavagis,loabat,xn--loabt-0qa,lebesby,davvesiida,leikanger,leirfjord,leka,leksvik,lenvik,leangaviika,xn--leagaviika-52b,lesja,levanger,lier,lierne,lillehammer,lillesand,lindesnes,lindas,xn--linds-pra,lom,loppa,lahppi,xn--lhppi-xqa,lund,lunner,luroy,xn--lury-ira,luster,lyngdal,lyngen,ivgu,lardal,lerdal,xn--lrdal-sra,lodingen,xn--ldingen-q1a,lorenskog,xn--lrenskog-54a,loten,xn--lten-gra,malvik,masoy,xn--msy-ula0h,muosat,xn--muost-0qa,mandal,marker,marnardal,masfjorden,meland,meldal,melhus,meloy,xn--mely-ira,meraker,xn--merker-kua,moareke,xn--moreke-jua,midsund,midtre-gauldal,modalen,modum,molde,moskenes,moss,mosvik,malselv,xn--mlselv-iua,malatvuopmi,xn--mlatvuopmi-s4a,namdalseid,aejrie,namsos,namsskogan,naamesjevuemie,xn--nmesjevuemie-tcba,laakesvuemie,nannestad,narvik,narviika,naustdal,nedre-eiker,akershus>nes<buskerud>nes<nesna,nesodden,nesseby,unjarga,xn--unjrga-rta,nesset,nissedal,nittedal,nord-aurdal,nord-fron,nord-odal,norddal,nordkapp,davvenjarga,xn--davvenjrga-y4a,nordre-land,nordreisa,raisa,xn--risa-5na,nore-og-uvdal,notodden,naroy,xn--nry-yla5g,notteroy,xn--nttery-byae,odda,oksnes,xn--ksnes-uua,oppdal,oppegard,xn--oppegrd-ixa,orkdal,orland,xn--rland-uua,orskog,xn--rskog-uua,orsta,xn--rsta-fra,hedmark>os,valer,xn--vler-qoa<hordaland>os<osen,osteroy,xn--ostery-fya,ostre-toten,xn--stre-toten-zcb,overhalla,ovre-eiker,xn--vre-eiker-k8a,oyer,xn--yer-zna,oygarden,xn--ygarden-p1a,oystre-slidre,xn--ystre-slidre-ujb,porsanger,porsangu,xn--porsgu-sta26f,porsgrunn,radoy,xn--rady-ira,rakkestad,rana,ruovat,randaberg,rauma,rendalen,rennebu,rennesoy,xn--rennesy-v1a,rindal,ringebu,ringerike,ringsaker,rissa,risor,xn--risr-ira,roan,rollag,rygge,ralingen,xn--rlingen-mxa,rodoy,xn--rdy-0nab,romskog,xn--rmskog-bya,roros,xn--rros-gra,rost,xn--rst-0na,royken,xn--ryken-vua,royrvik,xn--ryrvik-bya,rade,xn--rde-ula,salangen,siellak,saltdal,salat,xn--slt-elab,xn--slat-5na,samnanger,vestfold>sande<sandefjord,sandnes,sandoy,xn--sandy-yua,sarpsborg,sauda,sauherad,sel,selbu,selje,seljord,sigdal,siljan,sirdal,skaun,skedsmo,ski,skien,skiptvet,skjervoy,xn--skjervy-v1a,skierva,xn--skierv-uta,skjak,xn--skjk-soa,skodje,skanland,xn--sknland-fxa,skanit,xn--sknit-yqa,smola,xn--smla-hra,snillfjord,snasa,xn--snsa-roa,snoasa,snaase,xn--snase-nra,sogndal,sokndal,sola,solund,songdalen,sortland,spydeberg,stange,stavanger,steigen,steinkjer,stjordal,xn--stjrdal-s1a,stokke,stor-elvdal,stord,stordal,storfjord,omasvuotna,strand,stranda,stryn,sula,suldal,sund,sunndal,surnadal,sveio,svelvik,sykkylven,sogne,xn--sgne-gra,somna,xn--smna-gra,sondre-land,xn--sndre-land-0cb,sor-aurdal,xn--sr-aurdal-l8a,sor-fron,xn--sr-fron-q1a,sor-odal,xn--sr-odal-q1a,sor-varanger,xn--sr-varanger-ggb,matta-varjjat,xn--mtta-vrjjat-k7af,sorfold,xn--srfold-bya,sorreisa,xn--srreisa-q1a,sorum,xn--srum-gra,tana,deatnu,time,tingvoll,tinn,tjeldsund,dielddanuorri,tjome,xn--tjme-hra,tokke,tolga,torsken,tranoy,xn--trany-yua,tromso,xn--troms-zua,tromsa,romsa,trondheim,troandin,trysil,trana,xn--trna-woa,trogstad,xn--trgstad-r1a,tvedestrand,tydal,tynset,tysfjord,divtasvuodna,divttasvuotna,tysnes,tysvar,xn--tysvr-vra,tonsberg,xn--tnsberg-q1a,ullensaker,ullensvang,ulvik,utsira,vadso,xn--vads-jra,cahcesuolo,xn--hcesuolo-7ya35b,vaksdal,valle,vang,vanylven,vardo,xn--vard-jra,varggat,xn--vrggt-xqad,vefsn,vaapste,vega,vegarshei,xn--vegrshei-c0a,vennesla,verdal,verran,vestby,vestnes,vestre-slidre,vestre-toten,vestvagoy,xn--vestvgy-ixa6o,vevelstad,vik,vikna,vindafjord,volda,voss,varoy,xn--vry-yla5g,vagan,xn--vgan-qoa,voagat,vagsoy,xn--vgsy-qoa0j,vaga,xn--vg-yiab,ostfold>valer<xn--stfold-9xa>xn--vler-qoa<<np>*<nr>biz,info,gov,edu,org,net,com<nu,nz>ac,co,cri,geek,gen,govt,health,iwi,kiwi,maori,mil,xn--mori-qsa,net,org,parliament,school<om>co,com,edu,gov,med,museum,net,org,pro<onion,org,pa>ac,gob,com,org,sld,edu,net,ing,abo,med,nom<pe>edu,gob,nom,mil,org,com,net<pf>com,org,edu<pg>*<ph>com,net,org,gov,edu,ngo,mil,i<pk>com,net,edu,org,fam,biz,web,gov,gob,gok,gon,gop,gos,info<pl>com,net,org,aid,agro,atm,auto,biz,edu,gmina,gsm,info,mail,miasta,media,mil,nieruchomosci,nom,pc,powiat,priv,realestate,rel,sex,shop,sklep,sos,szkola,targi,tm,tourism,travel,turystyka,gov>ap,griw,ic,is,kmpsp,konsulat,kppsp,kwp,kwpsp,mup,mw,oia,oirm,oke,oow,oschr,oum,pa,pinb,piw,po,pr,psp,psse,pup,rzgw,sa,sdn,sko,so,sr,starostwo,ug,ugim,um,umig,upow,uppo,us,uw,uzs,wif,wiih,winb,wios,witd,wiw,wkz,wsa,wskr,wsse,wuoz,wzmiuw,zp,zpisdn<augustow,babia-gora,bedzin,beskidy,bialowieza,bialystok,bielawa,bieszczady,boleslawiec,bydgoszcz,bytom,cieszyn,czeladz,czest,dlugoleka,elblag,elk,glogow,gniezno,gorlice,grajewo,ilawa,jaworzno,jelenia-gora,jgora,kalisz,kazimierz-dolny,karpacz,kartuzy,kaszuby,katowice,kepno,ketrzyn,klodzko,kobierzyce,kolobrzeg,konin,konskowola,kutno,lapy,lebork,legnica,lezajsk,limanowa,lomza,lowicz,lubin,lukow,malbork,malopolska,mazowsze,mazury,mielec,mielno,mragowo,naklo,nowaruda,nysa,olawa,olecko,olkusz,olsztyn,opoczno,opole,ostroda,ostroleka,ostrowiec,ostrowwlkp,pila,pisz,podhale,podlasie,polkowice,pomorze,pomorskie,prochowice,pruszkow,przeworsk,pulawy,radom,rawa-maz,rybnik,rzeszow,sanok,sejny,slask,slupsk,sosnowiec,stalowa-wola,skoczow,starachowice,stargard,suwalki,swidnica,swiebodzin,swinoujscie,szczecin,szczytno,tarnobrzeg,tgory,turek,tychy,ustka,walbrzych,warmia,warszawa,waw,wegrow,wielun,wlocl,wloclawek,wodzislaw,wolomin,wroclaw,zachpomor,zagan,zarow,zgora,zgorzelec<pm,pn>gov,co,org,edu,net<post,pr>com,net,org,gov,edu,isla,pro,biz,info,name,est,prof,ac<pro>aaa,aca,acct,avocat,bar,cpa,eng,jur,law,med,recht<ps>edu,gov,sec,plo,com,org,net<pt>net,gov,org,edu,int,publ,com,nome<pw>co,ne,or,ed,go,belau<py>com,coop,edu,gov,mil,net,org<qa>com,edu,gov,mil,name,net,org,sch<re>asso,com,nom<ro>arts,com,firm,info,nom,nt,org,rec,store,tm,www<rs>ac,co,edu,gov,in,org<ru,rw>ac,co,coop,gov,mil,net,org<sa>com,net,org,gov,med,pub,edu,sch<sb>com,edu,gov,net,org<sc>com,gov,net,org,edu<sd>com,net,org,edu,med,tv,gov,info<se>a,ac,b,bd,brand,c,d,e,f,fh,fhsk,fhv,g,h,i,k,komforb,kommunalforbund,komvux,l,lanbib,m,n,naturbruksgymn,o,org,p,parti,pp,press,r,s,t,tm,u,w,x,y,z<sg>com,net,org,gov,edu,per<sh>com,net,gov,org,mil<si,sj,sk,sl>com,net,edu,gov,org<sm,sn>art,com,edu,gouv,org,perso,univ<so>com,edu,gov,me,net,org<sr,ss>biz,com,edu,gov,me,net,org,sch<st>co,com,consulado,edu,embaixada,mil,net,org,principe,saotome,store<su,sv>com,edu,gob,org,red<sx>gov<sy>edu,gov,net,mil,com,org<sz>co,ac,org<tc,td,tel,tf,tg,th>ac,co,go,in,mi,net,or<tj>ac,biz,co,com,edu,go,gov,int,mil,name,net,nic,org,test,web<tk,tl>gov<tm>com,co,org,net,nom,gov,mil,edu<tn>com,ens,fin,gov,ind,info,intl,mincom,nat,net,org,perso,tourism<to>com,gov,net,org,edu,mil<tr>av,bbs,bel,biz,com,dr,edu,gen,gov,info,mil,k12,kep,name,net,org,pol,tel,tsk,tv,web,nc>gov<<tt>co,com,org,net,biz,info,pro,int,coop,jobs,mobi,travel,museum,aero,name,gov,edu<tv,tw>edu,gov,mil,com,net,org,idv,game,ebiz,club,xn--zf0ao64a,xn--uc0atv,xn--czrw28b<tz>ac,co,go,hotel,info,me,mil,mobi,ne,or,sc,tv<ua>com,edu,gov,in,net,org,cherkassy,cherkasy,chernigov,chernihiv,chernivtsi,chernovtsy,ck,cn,cr,crimea,cv,dn,dnepropetrovsk,dnipropetrovsk,donetsk,dp,if,ivano-frankivsk,kh,kharkiv,kharkov,kherson,khmelnitskiy,khmelnytskyi,kiev,kirovograd,km,kr,kropyvnytskyi,krym,ks,kv,kyiv,lg,lt,lugansk,luhansk,lutsk,lv,lviv,mk,mykolaiv,nikolaev,od,odesa,odessa,pl,poltava,rivne,rovno,rv,sb,sebastopol,sevastopol,sm,sumy,te,ternopil,uz,uzhgorod,uzhhorod,vinnica,vinnytsia,vn,volyn,yalta,zakarpattia,zaporizhzhe,zaporizhzhia,zhitomir,zhytomyr,zp,zt<ug>co,or,ac,sc,go,ne,com,org<uk>ac,co,gov,ltd,me,net,nhs,org,plc,police,sch>*<<us>dni,fed,isa,kids,nsn,ak>k12,cc,lib<al>k12,cc,lib<ar>k12,cc,lib<as>k12,cc,lib<az>k12,cc,lib<ca>k12,cc,lib<co>k12,cc,lib<ct>k12,cc,lib<dc>k12,cc,lib<de>cc<fl>k12,cc,lib<ga>k12,cc,lib<gu>k12,cc,lib<hi>cc,lib<ia>k12,cc,lib<id>k12,cc,lib<il>k12,cc,lib<in>k12,cc,lib<ks>k12,cc,lib<ky>k12,cc,lib<la>k12,cc,lib<ma>k12>pvt,chtr,paroch<cc,lib<md>k12,cc,lib<me>k12,cc,lib<mi>k12,cc,lib,ann-arbor,cog,dst,eaton,gen,mus,tec,washtenaw<mn>k12,cc,lib<mo>k12,cc,lib<ms>k12,cc,lib<mt>k12,cc,lib<nc>k12,cc,lib<nd>cc,lib<ne>k12,cc,lib<nh>k12,cc,lib<nj>k12,cc,lib<nm>k12,cc,lib<nv>k12,cc,lib<ny>k12,cc,lib<oh>k12,cc,lib<ok>k12,cc,lib<or>k12,cc,lib<pa>k12,cc,lib<pr>k12,cc,lib<ri>cc,lib<sc>k12,cc,lib<sd>cc,lib<tn>k12,cc,lib<tx>k12,cc,lib<ut>k12,cc,lib<vi>k12,cc,lib<vt>k12,cc,lib<va>k12,cc,lib<wa>k12,cc,lib<wi>k12,cc,lib<wv>cc<wy>k12,cc,lib<<uy>com,edu,gub,mil,net,org<uz>co,com,net,org<va,vc>com,net,org,gov,mil,edu<ve>arts,bib,co,com,e12,edu,firm,gob,gov,info,int,mil,net,nom,org,rar,rec,store,tec,web<vg,vi>co,com,k12,net,org<vn>ac,ai,biz,com,edu,gov,health,id,info,int,io,name,net,org,pro,angiang,bacgiang,backan,baclieu,bacninh,baria-vungtau,bentre,binhdinh,binhduong,binhphuoc,binhthuan,camau,cantho,caobang,daklak,daknong,danang,dienbien,dongnai,dongthap,gialai,hagiang,haiduong,haiphong,hanam,hanoi,hatinh,haugiang,hoabinh,hungyen,khanhhoa,kiengiang,kontum,laichau,lamdong,langson,laocai,longan,namdinh,nghean,ninhbinh,ninhthuan,phutho,phuyen,quangbinh,quangnam,quangngai,quangninh,quangtri,soctrang,sonla,tayninh,thaibinh,thainguyen,thanhhoa,thanhphohochiminh,thuathienhue,tiengiang,travinh,tuyenquang,vinhlong,vinhphuc,yenbai<vu>com,edu,net,org<wf,ws>com,net,org,gov,edu<yt,xn--mgbaam7a8h,xn--y9a3aq,xn--54b7fta0cc,xn--90ae,xn--mgbcpq6gpa1a,xn--90ais,xn--fiqs8s,xn--fiqz9s,xn--lgbbat1ad8j,xn--wgbh1c,xn--e1a4c,xn--qxa6a,xn--mgbah1a3hjkrd,xn--node,xn--qxam,xn--j6w193g>xn--55qx5d,xn--wcvs22d,xn--mxtq1m,xn--gmqw5a,xn--od0alg,xn--uc0atv<xn--2scrj9c,xn--3hcrj9c,xn--45br5cyl,xn--h2breg3eve,xn--h2brj9c8c,xn--mgbgu82a,xn--rvc1e0am3e,xn--h2brj9c,xn--mgbbh1a,xn--mgbbh1a71e,xn--fpcrj9c3d,xn--gecrj9c,xn--s9brj9c,xn--45brj9c,xn--xkc2dl3a5ee0h,xn--mgba3a4f16a,xn--mgba3a4fra,xn--mgbtx2b,xn--mgbayh7gpa,xn--3e0b707e,xn--80ao21a,xn--q7ce6a,xn--fzc2c9e2c,xn--xkc2al3hye2a,xn--mgbc0a9azcg,xn--d1alf,xn--l1acc,xn--mix891f,xn--mix082f,xn--mgbx4cd0ab,xn--mgb9awbf,xn--mgbai9azgqp6j,xn--mgbai9a5eva00b,xn--ygbi2ammx,xn--90a3ac>xn--o1ac,xn--c1avg,xn--90azh,xn--d1at,xn--o1ach,xn--80au<xn--p1ai,xn--wgbl6a,xn--mgberp4a5d4ar,xn--mgberp4a5d4a87g,xn--mgbqly7c0a67fbc,xn--mgbqly7cvafr,xn--mgbpl2fh,xn--yfro4i67o,xn--clchc0ea0b2g2a9gcd,xn--ogbpf8fl,xn--mgbtf8fl,xn--o3cw4h>xn--12c1fe0br,xn--12co0c3b4eva,xn--h3cuzk1di,xn--o3cyx2a,xn--m3ch0j3a,xn--12cfi8ixb8l<xn--pgbs0dh,xn--kpry57d,xn--kprw13d,xn--nnx388a,xn--j1amh,xn--mgb2ddes,xxx,ye>com,edu,gov,net,mil,org<za>ac,agric,alt,co,edu,gov,grondar,law,mil,net,ngo,nic,nis,nom,org,school,tm,web<zm>ac,biz,co,com,edu,gov,info,mil,net,org,sch<zw>ac,co,gov,mil,org<aaa,aarp,abb,abbott,abbvie,abc,able,abogado,abudhabi,academy,accenture,accountant,accountants,aco,actor,ads,adult,aeg,aetna,afl,africa,agakhan,agency,aig,airbus,airforce,airtel,akdn,alibaba,alipay,allfinanz,allstate,ally,alsace,alstom,amazon,americanexpress,americanfamily,amex,amfam,amica,amsterdam,analytics,android,anquan,anz,aol,apartments,app,apple,aquarelle,arab,aramco,archi,army,art,arte,asda,associates,athleta,attorney,auction,audi,audible,audio,auspost,author,auto,autos,avianca,aws,axa,azure,baby,baidu,banamex,bananarepublic,band,bank,bar,barcelona,barclaycard,barclays,barefoot,bargains,baseball,basketball,bauhaus,bayern,bbc,bbt,bbva,bcg,bcn,beats,beauty,beer,bentley,berlin,best,bestbuy,bet,bharti,bible,bid,bike,bing,bingo,bio,black,blackfriday,blockbuster,blog,bloomberg,blue,bms,bmw,bnpparibas,boats,boehringer,bofa,bom,bond,boo,book,booking,bosch,bostik,boston,bot,boutique,box,bradesco,bridgestone,broadway,broker,brother,brussels,build,builders,business,buy,buzz,bzh,cab,cafe,cal,call,calvinklein,cam,camera,camp,canon,capetown,capital,capitalone,car,caravan,cards,care,career,careers,cars,casa,case,cash,casino,catering,catholic,cba,cbn,cbre,center,ceo,cern,cfa,cfd,chanel,channel,charity,chase,chat,cheap,chintai,christmas,chrome,church,cipriani,circle,cisco,citadel,citi,citic,city,claims,cleaning,click,clinic,clinique,clothing,cloud,club,clubmed,coach,codes,coffee,college,cologne,comcast,commbank,community,company,compare,computer,comsec,condos,construction,consulting,contact,contractors,cooking,cool,corsica,country,coupon,coupons,courses,cpa,credit,creditcard,creditunion,cricket,crown,crs,cruise,cruises,cuisinella,cymru,cyou,dabur,dad,dance,data,date,dating,datsun,day,dclk,dds,deal,dealer,deals,degree,delivery,dell,deloitte,delta,democrat,dental,dentist,desi,design,dev,dhl,diamonds,diet,digital,direct,directory,discount,discover,dish,diy,dnp,docs,doctor,dog,domains,dot,download,drive,dtv,dubai,dunlop,dupont,durban,dvag,dvr,earth,eat,eco,edeka,education,email,emerck,energy,engineer,engineering,enterprises,epson,equipment,ericsson,erni,esq,estate,etisalat,eurovision,eus,events,exchange,expert,exposed,express,extraspace,fage,fail,fairwinds,faith,family,fan,fans,farm,farmers,fashion,fast,fedex,feedback,ferrari,ferrero,fidelity,fido,film,final,finance,financial,fire,firestone,firmdale,fish,fishing,fit,fitness,flickr,flights,flir,florist,flowers,fly,foo,food,football,ford,forex,forsale,forum,foundation,fox,free,fresenius,frl,frogans,frontier,ftr,fujitsu,fun,fund,furniture,futbol,fyi,gal,gallery,gallo,gallup,game,games,gap,garden,gay,gbiz,gdn,gea,gent,genting,george,ggee,gift,gifts,gives,giving,glass,gle,global,globo,gmail,gmbh,gmo,gmx,godaddy,gold,goldpoint,golf,goo,goodyear,goog,google,gop,got,grainger,graphics,gratis,green,gripe,grocery,group,guardian,gucci,guge,guide,guitars,guru,hair,hamburg,hangout,haus,hbo,hdfc,hdfcbank,health,healthcare,help,helsinki,here,hermes,hiphop,hisamitsu,hitachi,hiv,hkt,hockey,holdings,holiday,homedepot,homegoods,homes,homesense,honda,horse,hospital,host,hosting,hot,hotels,hotmail,house,how,hsbc,hughes,hyatt,hyundai,ibm,icbc,ice,icu,ieee,ifm,ikano,imamat,imdb,immo,immobilien,inc,industries,infiniti,ing,ink,institute,insurance,insure,international,intuit,investments,ipiranga,irish,ismaili,ist,istanbul,itau,itv,jaguar,java,jcb,jeep,jetzt,jewelry,jio,jll,jmp,jnj,joburg,jot,joy,jpmorgan,jprs,juegos,juniper,kaufen,kddi,kerryhotels,kerrylogistics,kerryproperties,kfh,kia,kids,kim,kinder,kindle,kitchen,kiwi,koeln,komatsu,kosher,kpmg,kpn,krd,kred,kuokgroup,kyoto,lacaixa,lamborghini,lamer,lancaster,land,landrover,lanxess,lasalle,lat,latino,latrobe,law,lawyer,lds,lease,leclerc,lefrak,legal,lego,lexus,lgbt,lidl,life,lifeinsurance,lifestyle,lighting,like,lilly,limited,limo,lincoln,link,lipsy,live,living,llc,llp,loan,loans,locker,locus,lol,london,lotte,lotto,love,lpl,lplfinancial,ltd,ltda,lundbeck,luxe,luxury,madrid,maif,maison,makeup,man,management,mango,map,market,marketing,markets,marriott,marshalls,mattel,mba,mckinsey,med,media,meet,melbourne,meme,memorial,men,menu,merckmsd,miami,microsoft,mini,mint,mit,mitsubishi,mlb,mls,mma,mobile,moda,moe,moi,mom,monash,money,monster,mormon,mortgage,moscow,moto,motorcycles,mov,movie,msd,mtn,mtr,music,nab,nagoya,natura,navy,nba,nec,netbank,netflix,network,neustar,new,news,next,nextdirect,nexus,nfl,ngo,nhk,nico,nike,nikon,ninja,nissan,nissay,nokia,norton,now,nowruz,nowtv,nra,nrw,ntt,nyc,obi,observer,office,okinawa,olayan,olayangroup,oldnavy,ollo,omega,one,ong,onl,online,ooo,open,oracle,orange,organic,origins,osaka,otsuka,ott,ovh,page,panasonic,paris,pars,partners,parts,party,pay,pccw,pet,pfizer,pharmacy,phd,philips,phone,photo,photography,photos,physio,pics,pictet,pictures,pid,pin,ping,pink,pioneer,pizza,place,play,playstation,plumbing,plus,pnc,pohl,poker,politie,porn,pramerica,praxi,press,prime,prod,productions,prof,progressive,promo,properties,property,protection,pru,prudential,pub,pwc,qpon,quebec,quest,racing,radio,read,realestate,realtor,realty,recipes,red,redstone,redumbrella,rehab,reise,reisen,reit,reliance,ren,rent,rentals,repair,report,republican,rest,restaurant,review,reviews,rexroth,rich,richardli,ricoh,ril,rio,rip,rocher,rocks,rodeo,rogers,room,rsvp,rugby,ruhr,run,rwe,ryukyu,saarland,safe,safety,sakura,sale,salon,samsclub,samsung,sandvik,sandvikcoromant,sanofi,sap,sarl,sas,save,saxo,sbi,sbs,sca,scb,schaeffler,schmidt,scholarships,school,schule,schwarz,science,scot,search,seat,secure,security,seek,select,sener,services,seven,sew,sex,sexy,sfr,shangrila,sharp,shaw,shell,shia,shiksha,shoes,shop,shopping,shouji,show,silk,sina,singles,site,ski,skin,sky,skype,sling,smart,smile,sncf,soccer,social,softbank,software,sohu,solar,solutions,song,sony,soy,spa,space,sport,spot,srl,stada,staples,star,statebank,statefarm,stc,stcgroup,stockholm,storage,store,stream,studio,study,style,sucks,supplies,supply,support,surf,surgery,suzuki,swatch,swiss,sydney,systems,tab,taipei,talk,taobao,target,tatamotors,tatar,tattoo,tax,taxi,tci,tdk,team,tech,technology,temasek,tennis,teva,thd,theater,theatre,tiaa,tickets,tienda,tips,tires,tirol,tjmaxx,tjx,tkmaxx,tmall,today,tokyo,tools,top,toray,toshiba,total,tours,town,toyota,toys,trade,trading,training,travel,travelers,travelersinsurance,trust,trv,tube,tui,tunes,tushu,tvs,ubank,ubs,unicom,university,uno,uol,ups,vacations,vana,vanguard,vegas,ventures,verisign,versicherung,vet,viajes,video,vig,viking,villas,vin,vip,virgin,visa,vision,viva,vivo,vlaanderen,vodka,volkswagen,volvo,vote,voting,voto,voyage,wales,walmart,walter,wang,wanggou,watch,watches,weather,weatherchannel,webcam,weber,website,wedding,weibo,weir,whoswho,wien,wiki,williamhill,win,windows,wine,winners,wme,wolterskluwer,woodside,work,works,world,wow,wtc,wtf,xbox,xerox,xfinity,xihuan,xin,xn--11b4c3d,xn--1ck2e1b,xn--1qqw23a,xn--30rr7y,xn--3bst00m,xn--3ds443g,xn--3pxu8k,xn--42c2d9a,xn--45q11c,xn--4gbrim,xn--55qw42g,xn--55qx5d,xn--5su34j936bgsg,xn--5tzm5g,xn--6frz82g,xn--6qq986b3xl,xn--80adxhks,xn--80aqecdr1a,xn--80asehdb,xn--80aswg,xn--8y0a063a,xn--9dbq2a,xn--9et52u,xn--9krt00a,xn--b4w605ferd,xn--bck1b9a5dre4c,xn--c1avg,xn--c2br7g,xn--cck2b3b,xn--cckwcxetd,xn--cg4bki,xn--czr694b,xn--czrs0t,xn--czru2d,xn--d1acj3b,xn--eckvdtc9d,xn--efvy88h,xn--fct429k,xn--fhbei,xn--fiq228c5hs,xn--fiq64b,xn--fjq720a,xn--flw351e,xn--fzys8d69uvgm,xn--g2xx48c,xn--gckr3f0f,xn--gk3at1e,xn--hxt814e,xn--i1b6b1a6a2e,xn--imr513n,xn--io0a7i,xn--j1aef,xn--jlq480n2rg,xn--jvr189m,xn--kcrx77d1x4a,xn--kput3i,xn--mgba3a3ejt,xn--mgba7c0bbn0a,xn--mgbaakc7dvf,xn--mgbab2bd,xn--mgbca7dzdo,xn--mgbi4ecexp,xn--mgbt3dhd,xn--mk1bu44c,xn--mxtq1m,xn--ngbc5azd,xn--ngbe9e0a,xn--ngbrx,xn--nqv7f,xn--nqv7fs00ema,xn--nyqy26a,xn--otu796d,xn--p1acf,xn--pssy2u,xn--q9jyb4c,xn--qcka1pmc,xn--rhqv96g,xn--rovu88b,xn--ses554g,xn--t60b56a,xn--tckwe,xn--tiq49xqyj,xn--unup4y,xn--vermgensberater-ctb,xn--vermgensberatung-pwb,xn--vhquv,xn--vuq861b,xn--w4r85el8fhu5dnra,xn--w4rs40l,xn--xhq521b,xn--zfr164b,xyz,yachts,yahoo,yamaxun,yandex,yodobashi,yoga,yokohama,you,youtube,yun,zappos,zara,zero,zip,zone,zuerich";
  208.  
  209. // node_modules/.pnpm/parse-domain@8.0.1/node_modules/parse-domain/serialized-tries/private.js
  210. var private_default = "ua>cc,inf,ltd,cx,ie,biz,co,pp,v<to>611,oya,rdv,x0,vpnplus,quickconnect>direct<nyan<us>graphox,cloudns,drud,is-by,land-4-sale,stuff-4-sale,enscaled>phx<mircloud,freeddns,golffan,noip,pointto,platterp,de>lib<<com>devcdnaccesso>*<adobeaemcloud>dev>*<<airkitapps,airkitapps-au,aivencloud,kasserver,amazonaws>af-south-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-east-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-northeast-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-northeast-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-northeast-3>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-south-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-south-2>execute-api,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<ap-southeast-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-southeast-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<ap-southeast-3>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<ap-southeast-4>execute-api,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<ca-central-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-website<s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<eu-central-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<eu-central-2>execute-api,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<eu-north-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<eu-south-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<eu-south-2>execute-api,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<eu-west-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-deprecated,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<eu-west-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<eu-west-3>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<il-central-1>execute-api,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<me-central-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<me-south-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<sa-east-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<us-east-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-website<s3,s3-accesspoint,s3-accesspoint-fips,s3-deprecated,s3-fips,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<us-east-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips<s3,s3-accesspoint,s3-accesspoint-fips,s3-deprecated,s3-fips,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<us-gov-east-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips<s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-object-lambda,s3-website<us-gov-west-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips<s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-object-lambda,s3-website<us-west-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-website<s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-object-lambda,s3-website,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<us-west-2>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-accesspoint-fips,s3-fips,s3-website<s3,s3-accesspoint,s3-accesspoint-fips,s3-deprecated,s3-fips,s3-object-lambda,s3-website,analytics-gateway,aws-cloud9>webview-assets<cloud9>vfs,webview-assets<<compute>*<compute-1>*<airflow>ap-northeast-1>*<ap-northeast-2>*<ap-south-1>*<ap-southeast-1>*<ap-southeast-2>*<ca-central-1>*<eu-central-1>*<eu-north-1>*<eu-west-1>*<eu-west-2>*<eu-west-3>*<sa-east-1>*<us-east-1>*<us-east-2>*<us-west-2>*<<s3,s3-1,s3-ap-east-1,s3-ap-northeast-1,s3-ap-northeast-2,s3-ap-northeast-3,s3-ap-south-1,s3-ap-southeast-1,s3-ap-southeast-2,s3-ca-central-1,s3-eu-central-1,s3-eu-north-1,s3-eu-west-1,s3-eu-west-2,s3-eu-west-3,s3-external-1,s3-fips-us-gov-east-1,s3-fips-us-gov-west-1,s3-global>accesspoint>mrap<<s3-me-south-1,s3-sa-east-1,s3-us-east-2,s3-us-gov-east-1,s3-us-gov-west-1,s3-us-west-1,s3-us-west-2,s3-website-ap-northeast-1,s3-website-ap-southeast-1,s3-website-ap-southeast-2,s3-website-eu-west-1,s3-website-sa-east-1,s3-website-us-east-1,s3-website-us-gov-west-1,s3-website-us-west-1,s3-website-us-west-2,elb>*<<amazoncognito>af-south-1>auth<ap-northeast-1>auth<ap-northeast-2>auth<ap-northeast-3>auth<ap-south-1>auth<ap-southeast-1>auth<ap-southeast-2>auth<ap-southeast-3>auth<ca-central-1>auth<eu-central-1>auth<eu-north-1>auth<eu-south-1>auth<eu-west-1>auth<eu-west-2>auth<eu-west-3>auth<il-central-1>auth<me-south-1>auth<sa-east-1>auth<us-east-1>auth,auth-fips<us-east-2>auth,auth-fips<us-gov-west-1>auth-fips<us-west-1>auth,auth-fips<us-west-2>auth,auth-fips<<amplifyapp>*<awsapprunner>*<elasticbeanstalk>af-south-1,ap-east-1,ap-northeast-1,ap-northeast-2,ap-northeast-3,ap-south-1,ap-southeast-1,ap-southeast-2,ap-southeast-3,ca-central-1,eu-central-1,eu-north-1,eu-south-1,eu-west-1,eu-west-2,eu-west-3,il-central-1,me-south-1,sa-east-1,us-east-1,us-east-2,us-gov-east-1,us-gov-west-1,us-west-1,us-west-2<awsglobalaccelerator,siiites,appspacehosted,appspaceusercontent,on-aptible,myasustor,balena-devices,betainabox,boutir,bplaced,cafjs,canva-apps,br,cn,de,eu,jpn,mex,ru,sa,uk,us,za,ar,hu,kr,no,qc,uy,africa,gr,co,jdevcloud,wpdevcloud,cloudcontrolled,cloudcontrolapp,cf-ipfs,cloudflare-ipfs,trycloudflare,customer-oci>*,oci>*<ocp>*<ocs>*<<dattolocal,dattorelay,dattoweb,mydatto,builtwithdark,datadetect>demo,instance<ddns5,discordsays,discordsez,drayddns,dreamhosters,mydrobo,dyndns-at-home,dyndns-at-work,dyndns-blog,dyndns-free,dyndns-home,dyndns-ip,dyndns-mail,dyndns-office,dyndns-pics,dyndns-remote,dyndns-server,dyndns-web,dyndns-wiki,dyndns-work,blogdns,cechire,dnsalias,dnsdojo,doesntexist,dontexist,doomdns,dyn-o-saur,dynalias,est-a-la-maison,est-a-la-masion,est-le-patron,est-mon-blogueur,from-ak,from-al,from-ar,from-ca,from-ct,from-dc,from-de,from-fl,from-ga,from-hi,from-ia,from-id,from-il,from-in,from-ks,from-ky,from-ma,from-md,from-mi,from-mn,from-mo,from-ms,from-mt,from-nc,from-nd,from-ne,from-nh,from-nj,from-nm,from-nv,from-oh,from-ok,from-or,from-pa,from-pr,from-ri,from-sc,from-sd,from-tn,from-tx,from-ut,from-va,from-vt,from-wa,from-wi,from-wv,from-wy,getmyip,gotdns,hobby-site,homelinux,homeunix,iamallama,is-a-anarchist,is-a-blogger,is-a-bookkeeper,is-a-bulls-fan,is-a-caterer,is-a-chef,is-a-conservative,is-a-cpa,is-a-cubicle-slave,is-a-democrat,is-a-designer,is-a-doctor,is-a-financialadvisor,is-a-geek,is-a-green,is-a-guru,is-a-hard-worker,is-a-hunter,is-a-landscaper,is-a-lawyer,is-a-liberal,is-a-libertarian,is-a-llama,is-a-musician,is-a-nascarfan,is-a-nurse,is-a-painter,is-a-personaltrainer,is-a-photographer,is-a-player,is-a-republican,is-a-rockstar,is-a-socialist,is-a-student,is-a-teacher,is-a-techie,is-a-therapist,is-an-accountant,is-an-actor,is-an-actress,is-an-anarchist,is-an-artist,is-an-engineer,is-an-entertainer,is-certified,is-gone,is-into-anime,is-into-cars,is-into-cartoons,is-into-games,is-leet,is-not-certified,is-slick,is-uberleet,is-with-theband,isa-geek,isa-hockeynut,issmarterthanyou,likes-pie,likescandy,neat-url,saves-the-whales,selfip,sells-for-less,sells-for-u,servebbs,simple-url,space-to-rent,teaches-yoga,writesthisblog,digitaloceanspaces>*<ddnsfree,ddnsgeek,giize,gleeze,kozow,loseyourip,ooguy,theworkpc,mytuleap,tuleap-partners,encoreapi,evennode>eu-1,eu-2,eu-3,eu-4,us-1,us-2,us-3,us-4<onfabrica,fbsbx>apps<fastly-edge,fastly-terrarium,fastvps-server,mydobiss,firebaseapp,fldrv,forgeblocks,framercanvas,freebox-os,freeboxos,freemyip,gentapps,gentlentapis,githubusercontent,0emm>*<appspot>r>*<<codespot,googleapis,googlecode,pagespeedmobilizer,publishproxy,withgoogle,withyoutube,blogspot,awsmppl,herokuapp,herokussl,impertrixcdn,impertrix,smushcdn,wphostedmail,wpmucdn,pixolino,amscompute,dopaas,hosted-by-previder>paas<hosteur>rag-cloud,rag-cloud-ch<ik-server>jcloud,jcloud-ver-jpc<jelastic>demo<kilatiron,massivegrid>paas<wafaicloud>jed,lon,ryd<joyent>cns>*<<ktistory,lpusercontent,lmpm>app<linode>members,nodebalancer>*<<linodeobjects>*<linodeusercontent>ip<barsycenter,barsyonline,mazeplay,miniserver,meteorapp>eu<hostedpi,mythic-beasts>customer,caracal,fentiger,lynx,ocelot,oncilla,onza,sphinx,vs,x,yali<nospamproxy>cloud<4u,nfshost,001www,ddnslive,myiphost,blogsyte,ciscofreak,damnserver,ditchyourip,dnsiskinky,dynns,geekgalaxy,health-carereform,homesecuritymac,homesecuritypc,myactivedirectory,mysecuritycamera,net-freaks,onthewifi,point2this,quicksytes,securitytactics,serveexchange,servehumour,servep2p,servesarcasm,stufftoread,unusualperson,workisboring,3utilities,ddnsking,myvnc,servebeer,servecounterstrike,serveftp,servegame,servehalflife,servehttp,serveirc,servemp3,servepics,servequake,observableusercontent>static<simplesite,orsites,operaunite,authgear-staging,authgearapps,skygearapp,outsystemscloud,ownprovider,pgfog,pagefrontapp,pagexl,paywhirl>*<gotpantheon,platter-app,pleskns,postman-echo,prgmr>xen<pythonanywhere>eu<qualifioapp,ladesk,qbuser,qa2,dev-myqnapcloud,alpha-myqnapcloud,myqnapcloud,quipelements>*<rackmaze,rhcloud,render>app<onrender,180r,dojin,sakuratan,sakuraweb,x0,code>builder>*<dev-builder>*<stg-builder>*<<logoip,scrysec,firewall-gateway,myshopblocks,myshopify,shopitsite,1kapp,appchizi,applinzi,sinaapp,vipsinaapp,bounty-full>alpha,beta<streamlitapp,try-snowplow,stackhero-network,playstation-cloud,myspreadshop,stdlib>api<temp-dns,dsmynas,familyds,mytabit,tb-hosting>site<reservd,thingdustdata,bloxcms,townnews-staging,typeform>pro<hk,it,vultrobjects>*<wafflecell,reserve-online,hotelwithflight,remotewd,wiardweb>pages<messwithdns,woltlab-demo,wpenginepowered>js<wixsite,xnbay>u2,u2-local<yolasite<io>on-acorn>*<apigee,b-data,backplaneapp,banzaicloud>app,backyards>*<<beagleboard,bitbucket,bluebite,boxfuse,browsersafetymark,bigv>uk0<cleverapps,dappnode>dyndns<dedyn,drud,definima,fh-muenster,shw,forgerock>id<ghost,github,gitlab,lolipop,hasura-app,hostyhosting,moonscale>*<beebyte>paas<beebyteapp>sekd1<jele,unispace>cloud-fr1<webthings,loginline,barsy,azurecontainer>*<ngrok>ap,au,eu,in,jp,sa,us<nodeart>stage<nid,pantheonsite,dyn53,pstmn>mock<protonet,qoto,qcx>sys>*<<vaporcloud,vbrplsbx>g<on-k3s>*<on-rio>*<readthedocs,resindevice,resinstaging>devices<hzc,sandcats,shiftcrypto,shiftedit,mo-siemens,musician,lair>apps<stolos>*<spacekit,utwente,s5y>*<edugit,telebit,thingdust>dev>cust,reservd<disrec>cust,reservd<prod>cust<testing>cust,reservd<<tickets,upli,2038,wedeploy,editorx,wixstudio,basicserver,virtualserver<biz>activetrail,cloudns,jozi,dyndns,for-better,for-more,for-some,for-the,selfip,webhop,orx,mmafan,myftp,no-ip,dscloud<live>hlx<net>adobeaemcloud,adobeio-static,adobeioruntime,akadns,akamai,akamai-staging,akamaiedge,akamaiedge-staging,akamaihd,akamaihd-staging,akamaiorigin,akamaiorigin-staging,akamaized,akamaized-staging,edgekey,edgekey-staging,edgesuite,edgesuite-staging,alwaysdata,myamaze,cloudfront,t3l3p0rt,appudo,atlassian-dev>prod>cdn<<myfritz,onavstack,shopselect,blackbaudcdn,boomla,bplaced,square7,gb,hu,jp,se,uk,in,clickrising,cloudaccess,cdn77-ssl,cdn77>r<feste-ip,knx-server,static-access,cryptonomic>*<dattolocal,mydatto,debian,bitbridge,at-band-camp,blogdns,broke-it,buyshouses,dnsalias,dnsdojo,does-it,dontexist,dynalias,dynathome,endofinternet,from-az,from-co,from-la,from-ny,gets-it,ham-radio-op,homeftp,homeip,homelinux,homeunix,in-the-band,is-a-chef,is-a-geek,isa-geek,kicks-ass,office-on-the,podzone,scrapper-site,selfip,sells-it,servebbs,serveftp,thruhere,webhop,definima,casacam,dynu,dynv6,twmail,ru,channelsdvr>u<fastlylb>map<fastly>freetls,map,prod>a,global<ssl>a,b,global<<edgeapp,flynnhosting,cdn-edges,heteml,cloudfunctions,moonscale,in-dsl,in-vpn,ipifony,iobb,cloudjiffy>fra1-de,west1-us<elastx>jls-sto1,jls-sto2,jls-sto3<faststacks,massivegrid>paas>fr-1,lon-1,lon-2,ny-1,ny-2,sg-1<<saveincloud>jelastic,nordeste-idc<scaleforce>j<tsukaeru>jelastic<kinghost,uni5,krellian,barsy,memset,azurewebsites,azure-mobile,cloudapp,azurestaticapps>1,2,3,4,5,6,7,centralus,eastasia,eastus2,westeurope,westus2<dnsup,hicam,now-dns,ownip,vpndns,eating-organic,mydissent,myeffect,mymediapc,mypsx,mysecuritycamera,nhlfan,no-ip,pgafan,privatizehealthinsurance,bounceme,ddns,redirectme,serveblog,serveminecraft,sytes,cloudycluster,ovh>webpaas>*<hosting>*<<bar0,bar1,bar2,rackmaze,squares,schokokeks,firewall-gateway,seidat,senseering,siteleaf,vps-host>jelastic>atl,njs,ric<<myspreadshop,srcf>soc,user<supabase,dsmynas,familyds,tailscale>beta<ts,torproject>pages<reserve-online,community-pro,meinforum,yandexcloud>storage,website<za<page>hlx,hlx3,translated,codeberg,pdns,plesk,prvcy,rocky,magnet<pl>beep,ecommerce-shop,shoparena,homesklep,sdscloud,unicloud,krasnik,leczna,lubartow,lublin,poniatowa,swidnik,co,simplesite,art,gliwice,krakow,poznan,wroc,zakopane,myspreadshop,gda,gdansk,gdynia,med,sopot<eu>airkitapps,mycd,cloudns,dogado>jelastic<barsy,wellbeingzone,spdns,transurl>*<diskstation<ca>barsy,awdev>*<co,blogspot,no-ip,myspreadshop<estate>compute>*<<network>alces>*<co,arvo,azimuth,tlon<org>altervista,amune>tele<pimienta,poivron,potager,sweetpepper,ae,us,certmgr,cdn77>c,rsc<cdn77-secure>origin>ssl<<cloudns,duckdns,tunk,dyndns>go,home<blogdns,blogsite,boldlygoingnowhere,dnsalias,dnsdojo,doesntexist,dontexist,doomdns,dvrdns,dynalias,endofinternet,endoftheinternet,from-me,game-host,gotdns,hobby-site,homedns,homeftp,homelinux,homeunix,is-a-bruinsfan,is-a-candidate,is-a-celticsfan,is-a-chef,is-a-geek,is-a-knight,is-a-linux-user,is-a-patsfan,is-a-soxfan,is-found,is-lost,is-saved,is-very-bad,is-very-evil,is-very-good,is-very-nice,is-very-sweet,isa-geek,kicks-ass,misconfused,podzone,readmyblog,selfip,sellsyourhome,servebbs,serveftp,servegame,stuff-4-sale,webhop,ddnss,accesscam,camdvr,freeddns,mywire,webredirect,eu>al,asso,at,au,be,bg,ca,cd,ch,cn,cy,cz,de,dk,edu,ee,es,fi,fr,gr,hr,hu,ie,il,in,int,is,it,jp,kr,lt,lu,lv,mc,me,mk,mt,my,net,ng,nl,no,nz,paris,pl,pt,q-a,ro,ru,se,si,sk,tr,uk,us<twmail,fedorainfracloud,fedorapeople,fedoraproject>cloud,os>app<stg>os>app<<<freedesktop,hepforge,in-dsl,in-vpn,js,barsy,mayfirst,mozilla-iot,bmoattachments,dynserv,now-dns,cable-modem,collegefan,couchpotatofries,mlbfan,mysecuritycamera,nflfan,read-books,ufcfan,hopto,myftp,no-ip,zapto,httpbin,pubtls,jpn,my-firewall,myfirewall,spdns,small-web,dsmynas,familyds,teckids>s3<tuxfamily,diskstation,hk,wmflabs,toolforge,wmcloud,za<cn>com>amazonaws>cn-north-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint,s3-website<s3,s3-accesspoint,s3-deprecated,s3-object-lambda,s3-website<cn-northwest-1>execute-api,emrappui-prod,emrnotebooks-prod,emrstudio-prod,dualstack>s3,s3-accesspoint<s3,s3-accesspoint,s3-object-lambda,s3-website<compute>*<airflow>cn-north-1>*<cn-northwest-1>*<<eb>cn-north-1,cn-northwest-1<elb>*<<sagemaker>cn-north-1>notebook,studio<cn-northwest-1>notebook,studio<<<canva-apps,instantcloud,quickconnect>direct<<aws>sagemaker>af-south-1>notebook,studio<ap-east-1>notebook,studio<ap-northeast-1>notebook,studio<ap-northeast-2>notebook,studio<ap-northeast-3>notebook,studio<ap-south-1>notebook,studio<ap-south-2>notebook<ap-southeast-1>notebook,studio<ap-southeast-2>notebook,studio<ap-southeast-3>notebook,studio<ap-southeast-4>notebook<ca-central-1>notebook,studio<eu-central-1>notebook,studio<eu-central-2>notebook<eu-north-1>notebook,studio<eu-south-1>notebook,studio<eu-south-2>notebook<eu-west-1>notebook,studio<eu-west-2>notebook,studio<eu-west-3>notebook,studio<il-central-1>notebook,studio<me-central-1>notebook,studio<me-south-1>notebook,studio<sa-east-1>notebook,studio<us-east-1>notebook,notebook-fips,studio<us-east-2>notebook,notebook-fips,studio<us-gov-east-1>notebook,notebook-fips,studio,studio-fips<us-gov-west-1>notebook,notebook-fips,studio,studio-fips<us-west-1>notebook,studio<us-west-2>notebook,notebook-fips,studio<<<online>eero,eero-stage,barsy<jp>ne>aseinet>user<gehirn,ivory,mail-box,mints,mokuren,opal,sakura,sumomo,topaz<buyshop,fashionstore,handcrafted,kawaiishop,supersale,theshop,usercontent,angry,babyblue,babymilk,backdrop,bambina,bitter,blush,boo,boy,boyfriend,but,candypop,capoo,catfood,cheap,chicappa,chillout,chips,chowder,chu,ciao,cocotte,coolblog,cranky,cutegirl,daa,deca,deci,digick,egoism,fakefur,fem,flier,floppy,fool,frenchkiss,girlfriend,girly,gloomy,gonna,greater,hacca,heavy,her,hiho,hippy,holy,hungry,icurus,itigo,jellybean,kikirara,kill,kilo,kuron,littlestar,lolipopmc,lolitapunk,lomo,lovepop,lovesick,main,mods,mond,mongolian,moo,namaste,nikita,nobushi,noor,oops,parallel,parasite,pecori,peewee,penne,pepper,perma,pigboat,pinoko,punyu,pupu,pussycat,pya,raindrop,readymade,sadist,schoolbus,secret,staba,stripper,sub,sunnyday,thick,tonkotsu,under,upper,velvet,verse,versus,vivian,watson,weblike,whitesnow,zombie,blogspot,2-d,bona,crap,daynight,eek,flop,halfmoon,jeez,matrix,mimoza,netgamers,nyanta,o0o0,rdy,rgr,rulez,sakurastorage>isk01>s3<isk02>s3<<saloon,sblo,skr,tank,uh-oh,undo,webaccel>rs,user<websozai,xii<vc>gv>d<0e<eus>party>user<<dev>autocode,lcl>*<lclstage>*<stg>*<stgstage>*<pages,r2,workers,curv,deno,deno-staging,deta,fly,githubpreview,gateway>*<iserv,localcert>user>*<<loginline,mediatech,ngrok,ngrok-free,platter-app,shiftcrypto,vercel,webhare>*<<ws>advisor>*<cloud66,dyndns,mypets<ba>rs,blogspot<cloud>banzai>*<elementor,encoway>eu<statics>*<ravendb,axarnet>es-1<diadem,jelastic>vip<jele,jenv-aruba>aruba>eur>it1<<it1<keliweb>cs<oxa>tn,uk<primetel>uk<reclaim>ca,uk,us<trendhosting>ch,de<jotelulu,kuleuven,linkyard,magentosite>*<perspecta,vapor,on-rancher>*<scw>baremetal>fr-par-1,fr-par-2,nl-ams-1<fr-par>fnc>functions<k8s>nodes<s3,s3-website,whm<instances>priv,pub<k8s,nl-ams>k8s>nodes<s3,s3-website,whm<pl-waw>k8s>nodes<s3,s3-website<scalebook,smartlabeling<sensiosite>*<trafficplex,urown,voorloper<ec>base,official<shop>base,hoplix,barsy<app>beget>*<clerk,clerkstage,wnext,platform0,deta,ondigitalocean,easypanel,encr,edgecompute,fireweb,onflashdrive,framer,run>a<web,hasura,loginline,messerli,netlify,ngrok,ngrok-free,developer>*<noop,northflank>*<snowflake>privatelink<streamlit,storipress,telebit,typedream,vercel,bookonline<la>bnr,c<je>of<ch>square7,blogspot,flow>ae>alp1<appengine<linkyard-cloud,dnsking,gotdns,123website,myspreadshop,firenet>*,svc>*<<12hp,2ix,4lima,lima-city<de>bplaced,square7,com,cosidns>dyn<dynamisches-dns,dnsupdater,internet-dns,l-o-g-i-n,dnshome,fuettertdasnetz,isteingeek,istmein,lebtimnetz,leitungsen,traeumtgerade,ddnss>dyn,dyndns<dyndns1,dyn-ip24,home-webserver>dyn<myhome-server,frusky>*<goip,blogspot,xn--gnstigbestellen-zvb,xn--gnstigliefern-wob,hs-heilbronn>it>pages<<dyn-berlin,in-berlin,in-brb,in-butter,in-dsl,in-vpn,iservschule,mein-iserv,schulplattform,schulserver,test-iserv,keymachine,git-repos,lcube-server,svn-repos,barsy,123webseite,logoip,firewall-gateway,my-gateway,my-router,spdns,speedpartner>customer<myspreadshop,taifun-dns,12hp,2ix,4lima,lima-city,dd-dns,dray-dns,draydns,dyn-vpn,dynvpn,mein-vigor,my-vigor,my-wan,syno-ds,synology-diskstation,synology-ds,uberspace>*<virtualuser,virtual-user,community-pro,diskussionsbereich<rs>brendly>shop<blogspot,ua,ox<uk>co>bytemark>dh,vm<blogspot,layershift>j<barsy,barsyonline,retrosnub>cust<nh-serv,no-ip,wellbeingzone,adimo,myspreadshop<conn,copro,hosp,independent-commission,independent-inquest,independent-inquiry,independent-panel,independent-review,public-inquiry,royal-commission,gov>campaign,service,api,homeoffice<pymnt,org>glug,lug,lugs,affinitylottery,raffleentry,weeklylottery<barsy<ac>drr<ai>uwu<co>carrd,crd,otap>*<com>blogspot<leadpages,lpages,mypi,n4t,firewalledreplit>id<repl>id<supabase<mp>ju<se>com,blogspot,conf,iopsys,123minsida,itcouldbewor,myspreadshop,paba>su<<bz>za,gsj<in>web,cloudns,blogspot,barsy,supabase<basketball>aus,nz<am>radio,blogspot,neko,nyaa<fm>radio,user>*<<group>discourse<team>discourse,jelastic<me>c66,daplie>localhost<edgestack,filegear,filegear-au,filegear-de,filegear-gb,filegear-ie,filegear-jp,filegear-sg,glitch,ravendb,lohmus,barsy,mcpe,mcdir,soundcast,tcp4,brasilia,ddns,dnsfor,hopto,loginto,noip,webhop,vp4,diskstation,dscloud,i234,myds,synology,transip>site<wedeploy,yombo,nohost<zone>cloud66,hs,triton>*<lima<host>cloudaccess,freesite,easypanel,fastvps,myfast,tempurl,wpmudev,jele,mircloud,pcloud,half<site>cloudera>*<cyon,fnwk,folionetwork,fastvps,jele,lelux,loginline,barsy,mintere,omniwe,opensocial,platformsh>*<tst>*<byen,srht,novecore<cz>co,realm,e4,blogspot,metacentrum>cloud>*<custom<muni>cloud>flt,usr<<<asia>cloudns<club>cloudns,jele,barsy<cc>cloudns,ftpaccess,game-server,myphotos,scrapping,twmail,csx,fantasyleague,spawn>instances<<info>cloudns,dynamic-dns,dyndns,barrel-of-knowledge,barrell-of-knowledge,for-our,groks-the,groks-this,here-for-more,knowsitall,selfip,webhop,barsy,mayfirst,forumz,nsupdate,dvrcam,ilovecollege,no-ip,dnsupdate,v-info<pro>cloudns,dnstrace>bci<barsy<pw>cloudns,x443<gdn>cnpy<nl>co,hosting-cluster,blogspot,gov,khplay,123website,myspreadshop,transurl>*<cistron,demon<no>co,blogspot,123hjemmeside,myspreadshop<be>webhosting,blogspot,interhostsolutions>cloud<kuleuven>ezproxy<123website,myspreadshop,transurl>*<<ru>ac,edu,gov,int,mil,test,eurodir,adygeya,bashkiria,bir,cbg,com,dagestan,grozny,kalmykia,kustanai,marine,mordovia,msk,mytis,nalchik,nov,pyatigorsk,spb,vladikavkaz,vladimir,blogspot,na4u,mircloud,regruhosting>jelastic<myjino>hosting>*<landing>*<spectrum>*<vps>*<<cldmail>hb<mcdir>vps<mcpre,net,org,pp,123sait,lk3,ras<is>cupcake,blogspot<link>cyon,mypep,dweb>*<<dk>biz,co,firm,reg,store,blogspot,123hjemmeside,myspreadshop<earth>dapps>*,bzz>*<<<id>my>rss>*<<flap,co>blogspot<forte<solutions>diher>*<<th>online,shop<sh>bip,hashbang,platform>bc,ent,eu,us<now,vxl,wedeploy<fi>dy,blogspot,xn--hkkinen-5wa,iki,cloudplatform>fi<datacenter>demo,paas<kapsi,123kotisivu,myspreadshop<tv>dyndns,better-than,on-the-web,worse-than,from,sakura<cx>ath,info<name>her>forgot<his>forgot<<nu>merseine,mine,shacknet,enterprisecloud<rocks>myddns,lima-city,webspace<xyz>blogsite,localzone,crafting,zapto,telebit>*<<cool>elementor,de<fr>en-root,fbx-os,fbxos,freebox-os,freeboxos,blogspot,goupile,123siteweb,on-web,chirurgiens-dentistes-en-france,dedibox,aeroport,avocat,chambagri,chirurgiens-dentistes,experts-comptables,medecin,notaires,pharmacien,port,veterinaire,myspreadshop,ynh<one>onred>staging<service,homelink<tw>com>mymailer<url,blogspot<su>abkhazia,adygeya,aktyubinsk,arkhangelsk,armenia,ashgabad,azerbaijan,balashov,bashkiria,bryansk,bukhara,chimkent,dagestan,east-kazakhstan,exnet,georgia,grozny,ivanovo,jambyl,kalmykia,kaluga,karacol,karaganda,karelia,khakassia,krasnodar,kurgan,kustanai,lenug,mangyshlak,mordovia,msk,murmansk,nalchik,navoi,north-kazakhstan,nov,obninsk,penza,pokrovsk,sochi,spb,tashkent,termez,togliatti,troitsk,tselinograd,tula,tuva,vladikavkaz,vladimir,vologda<space>myfast,uber,xs4all<media>framer<photos>framer<website>framer<wiki>framer<il>co>ravpage,blogspot,tabitorder,mytabit<<at>funkfeuer>wien<futurecms>*,ex>*<in>*<<futurehosting,futuremailing,ortsinfo>ex>*<kunden>*<<co>blogspot<biz,info,123webseite,priv,myspreadshop,12hp,2ix,4lima,lima-city<ms>lab,minisite<si>gitapp,gitpage,blogspot<community>nog,ravendb,myforum<ro>co,shop,blogspot,barsy<digital>cloudapps>london<<im>ro<goog>cloud,translate,usercontent>*<<ae>blogspot<al>blogspot<bg>blogspot,barsy<bj>blogspot<cf>blogspot<cl>blogspot<ke>co>blogspot<<nz>co>blogspot<<za>co>blogspot<<ar>com>blogspot<<au>com>blogspot,cloudlets>mel<myspreadshop<<br>com>blogspot,simplesite<leg>ac,al,am,ap,ba,ce,df,es,go,ma,mg,ms,mt,pa,pb,pe,pi,pr,rj,rn,ro,rr,rs,sc,se,sp,to<<by>com>blogspot<mycloud,mediatech<cy>com>blogspot,scaleforce>j<<<ee>com>blogspot<<eg>com>blogspot<<es>com>blogspot<123miweb,myspreadshop<mt>com>blogspot<<ng>com>blogspot<col,firm,gen,ltd,ngo<tr>com>blogspot<<uy>com>blogspot<<cv>blogspot<gr>blogspot,simplesite<hk>blogspot,secaas,ltd,inc<hr>blogspot,free<hu>blogspot<ie>blogspot,myspreadshop<it>blogspot,ibxos,iliadboxos,neen>jc<tim>open>jelastic>cloud<<<16-b,32-b,64-b,123homepage,myspreadshop,syncloud<kr>blogspot<li>blogspot,caa<lt>blogspot<lu>blogspot,123website<md>blogspot,at,de,jp,to<mk>blogspot<mr>blogspot<mx>blogspot<my>blogspot<pe>blogspot<pt>blogspot,123paginaweb<qa>blogspot<re>blogspot<sg>blogspot,enscaled<sk>blogspot<sn>blogspot<td>blogspot<ug>blogspot<vn>blogspot<ci>fin,nl<run>hs,development,ravendb,servers,build>*<code>*<database>*<migration>*<onporter,repl,wix<gl>biz,xx<scot>edu,gov>service<<so>sch<kz>jcloud,kazteleport>upaas<<tn>orangecloud<gg>kaas,cya,panel>daemon<<systems>knightpoint<events>koobin,co<krd>co,edu<business>co<education>co<financial>co<place>co<technology>co<bs>we<services>loginline<menu>barsy<mobi>barsy,dscloud<pub>barsy<support>barsy<vu>cn,blog,dev,me<health>hra<casa>nabu>ui<<pizza>ngrok<news>noticeable<top>now-dns,ntdll<ovh>nerdpol<mn>nyc<lol>omg<hosting>opencraft<orange>tech<pm>own,name<codes>owo>*<<lc>oy<bn>co<today>prequalifyme<builders>cloudsite<edu>rit>git-pages<<xn--p1acf>xn--90amc,xn--j1aef,xn--j1ael8b,xn--h1ahn,xn--j1adp,xn--c1avg,xn--80aaa0cvac,xn--h1aliz,xn--90a1af,xn--41a<st>kirara,noho<store>sellfy,shopware,storebase<land>static>dev,sites<<farm>storj<pictures>1337<rip>clan<tf>sch<wf>biz,sch<yt>org<management>router<ax>be,cat,es,eu,gg,mc,us,xy<gp>app<gt>blog,de,to<gy>be<hn>cc<kg>blog,io,jp,tv,uk,us<ls>de<porn>indie<tc>ch,me,we<vg>at<academy>official<faith>ybo<party>ybo<review>ybo<science>ybo<trade>ybo<design>bss";
  211.  
  212. // node_modules/.pnpm/parse-domain@8.0.1/node_modules/parse-domain/build/trie/characters.js
  213. var UP = "<";
  214. var SAME = ",";
  215. var DOWN = ">";
  216. var RESET = "|";
  217. var WILDCARD = "*";
  218. var EXCEPTION = "!";
  219.  
  220. // node_modules/.pnpm/parse-domain@8.0.1/node_modules/parse-domain/build/trie/look-up.js
  221. var lookUpTldsInTrie = (labels, trie) => {
  222. const labelsToCheck = labels.slice();
  223. const tlds = [];
  224. let node = trie;
  225. while (labelsToCheck.length !== 0) {
  226. const label = labelsToCheck.pop();
  227. const labelLowerCase = label.toLowerCase();
  228. if (node.children.has(WILDCARD)) {
  229. if (node.children.has(EXCEPTION + labelLowerCase)) {
  230. break;
  231. }
  232. node = node.children.get(WILDCARD);
  233. } else {
  234. if (node.children.has(labelLowerCase) === false) {
  235. break;
  236. }
  237. node = node.children.get(labelLowerCase);
  238. }
  239. tlds.unshift(label);
  240. }
  241. return tlds;
  242. };
  243.  
  244. // node_modules/.pnpm/ip-regex@5.0.0/node_modules/ip-regex/index.js
  245. var word = "[a-fA-F\\d:]";
  246. var boundry = (options2) => options2 && options2.includeBoundaries ? `(?:(?<=\\s|^)(?=${word})|(?<=${word})(?=\\s|$))` : "";
  247. var v4 = "(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}";
  248. var v6segment = "[a-fA-F\\d]{1,4}";
  249. var v6 = `
  250. (?:
  251. (?:${v6segment}:){7}(?:${v6segment}|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
  252. (?:${v6segment}:){6}(?:${v4}|:${v6segment}|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4
  253. (?:${v6segment}:){5}(?::${v4}|(?::${v6segment}){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4
  254. (?:${v6segment}:){4}(?:(?::${v6segment}){0,1}:${v4}|(?::${v6segment}){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4
  255. (?:${v6segment}:){3}(?:(?::${v6segment}){0,2}:${v4}|(?::${v6segment}){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4
  256. (?:${v6segment}:){2}(?:(?::${v6segment}){0,3}:${v4}|(?::${v6segment}){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4
  257. (?:${v6segment}:){1}(?:(?::${v6segment}){0,4}:${v4}|(?::${v6segment}){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4
  258. (?::(?:(?::${v6segment}){0,5}:${v4}|(?::${v6segment}){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4
  259. )(?:%[0-9a-zA-Z]{1,})? // %eth0 %1
  260. `.replace(/\s*\/\/.*$/gm, "").replace(/\n/g, "").trim();
  261. var v46Exact = new RegExp(`(?:^${v4}$)|(?:^${v6}$)`);
  262. var v4exact = new RegExp(`^${v4}$`);
  263. var v6exact = new RegExp(`^${v6}$`);
  264. var ipRegex = (options2) => options2 && options2.exact ? v46Exact : new RegExp(`(?:${boundry(options2)}${v4}${boundry(options2)})|(?:${boundry(options2)}${v6}${boundry(options2)})`, "g");
  265. ipRegex.v4 = (options2) => options2 && options2.exact ? v4exact : new RegExp(`${boundry(options2)}${v4}${boundry(options2)}`, "g");
  266. ipRegex.v6 = (options2) => options2 && options2.exact ? v6exact : new RegExp(`${boundry(options2)}${v6}${boundry(options2)}`, "g");
  267. var ip_regex_default = ipRegex;
  268.  
  269. // node_modules/.pnpm/function-timeout@0.1.1/node_modules/function-timeout/browser.js
  270. function functionTimeout(function_) {
  271. const wrappedFunction = (...arguments_) => function_(...arguments_);
  272. Object.defineProperty(wrappedFunction, "name", {
  273. value: `functionTimeout(${function_.name || "<anonymous>"})`,
  274. configurable: true
  275. });
  276. return wrappedFunction;
  277. }
  278. function isTimeoutError() {
  279. return false;
  280. }
  281.  
  282. // node_modules/.pnpm/is-regexp@3.1.0/node_modules/is-regexp/index.js
  283. var { toString } = Object.prototype;
  284. function isRegexp(value) {
  285. return toString.call(value) === "[object RegExp]";
  286. }
  287.  
  288. // node_modules/.pnpm/clone-regexp@3.0.0/node_modules/clone-regexp/index.js
  289. var flagMap = {
  290. global: "g",
  291. ignoreCase: "i",
  292. multiline: "m",
  293. dotAll: "s",
  294. sticky: "y",
  295. unicode: "u"
  296. };
  297. function clonedRegexp(regexp, options2 = {}) {
  298. if (!isRegexp(regexp)) {
  299. throw new TypeError("Expected a RegExp instance");
  300. }
  301. const flags = Object.keys(flagMap).map((flag) => (typeof options2[flag] === "boolean" ? options2[flag] : regexp[flag]) ? flagMap[flag] : "").join("");
  302. const clonedRegexp2 = new RegExp(options2.source || regexp.source, flags);
  303. clonedRegexp2.lastIndex = typeof options2.lastIndex === "number" ? options2.lastIndex : regexp.lastIndex;
  304. return clonedRegexp2;
  305. }
  306.  
  307. // node_modules/.pnpm/super-regex@0.2.0/node_modules/super-regex/index.js
  308. function isMatch(regex, string, { timeout } = {}) {
  309. try {
  310. return functionTimeout(() => clonedRegexp(regex).test(string), { timeout })();
  311. } catch (error) {
  312. if (isTimeoutError(error)) {
  313. return false;
  314. }
  315. throw error;
  316. }
  317. }
  318.  
  319. // node_modules/.pnpm/is-ip@5.0.1/node_modules/is-ip/index.js
  320. var maxIPv4Length = 15;
  321. var maxIPv6Length = 45;
  322. var options = {
  323. timeout: 400
  324. };
  325. function isIPv6(string) {
  326. if (string.length > maxIPv6Length) {
  327. return false;
  328. }
  329. return isMatch(ip_regex_default.v6({ exact: true }), string, options);
  330. }
  331. function isIPv4(string) {
  332. if (string.length > maxIPv4Length) {
  333. return false;
  334. }
  335. return isMatch(ip_regex_default.v4({ exact: true }), string, options);
  336. }
  337. function ipVersion(string) {
  338. if (isIPv6(string)) {
  339. return 6;
  340. }
  341. if (isIPv4(string)) {
  342. return 4;
  343. }
  344. }
  345.  
  346. // node_modules/.pnpm/parse-domain@8.0.1/node_modules/parse-domain/build/sanitize.js
  347. var LABEL_SEPARATOR = ".";
  348. var LABEL_LENGTH_MIN = 1;
  349. var LABEL_LENGTH_MAX = 63;
  350. var DOMAIN_LENGTH_MAX = 253;
  351. var textEncoder = new TextEncoder();
  352. var Validation;
  353. (function(Validation2) {
  354. Validation2["Lax"] = "LAX";
  355. Validation2["Strict"] = "STRICT";
  356. })(Validation || (Validation = {}));
  357. var ValidationErrorType;
  358. (function(ValidationErrorType2) {
  359. ValidationErrorType2["NoHostname"] = "NO_HOSTNAME";
  360. ValidationErrorType2["DomainMaxLength"] = "DOMAIN_MAX_LENGTH";
  361. ValidationErrorType2["LabelMinLength"] = "LABEL_MIN_LENGTH";
  362. ValidationErrorType2["LabelMaxLength"] = "LABEL_MAX_LENGTH";
  363. ValidationErrorType2["LabelInvalidCharacter"] = "LABEL_INVALID_CHARACTER";
  364. ValidationErrorType2["LastLabelInvalid"] = "LAST_LABEL_INVALID";
  365. })(ValidationErrorType || (ValidationErrorType = {}));
  366. var SanitizationResultType;
  367. (function(SanitizationResultType2) {
  368. SanitizationResultType2["ValidIp"] = "VALID_IP";
  369. SanitizationResultType2["ValidDomain"] = "VALID_DOMAIN";
  370. SanitizationResultType2["Error"] = "ERROR";
  371. })(SanitizationResultType || (SanitizationResultType = {}));
  372. var createNoHostnameError = (input) => {
  373. return {
  374. type: ValidationErrorType.NoHostname,
  375. message: `The given input ${String(input)} does not look like a hostname.`,
  376. column: 1
  377. };
  378. };
  379. var createDomainMaxLengthError = (domain, length) => {
  380. return {
  381. type: ValidationErrorType.DomainMaxLength,
  382. message: `Domain "${domain}" is too long. Domain is ${length} octets long but should not be longer than ${DOMAIN_LENGTH_MAX}.`,
  383. column: length
  384. };
  385. };
  386. var createLabelMinLengthError = (label, column) => {
  387. const length = label.length;
  388. return {
  389. type: ValidationErrorType.LabelMinLength,
  390. message: `Label "${label}" is too short. Label is ${length} octets long but should be at least ${LABEL_LENGTH_MIN}.`,
  391. column
  392. };
  393. };
  394. var createLabelMaxLengthError = (label, column) => {
  395. const length = label.length;
  396. return {
  397. type: ValidationErrorType.LabelMaxLength,
  398. message: `Label "${label}" is too long. Label is ${length} octets long but should not be longer than ${LABEL_LENGTH_MAX}.`,
  399. column
  400. };
  401. };
  402. var createLabelInvalidCharacterError = (label, invalidCharacter, column) => {
  403. return {
  404. type: ValidationErrorType.LabelInvalidCharacter,
  405. message: `Label "${label}" contains invalid character "${invalidCharacter}" at column ${column}.`,
  406. column
  407. };
  408. };
  409. var createLastLabelInvalidError = (label, column) => {
  410. return {
  411. type: ValidationErrorType.LabelInvalidCharacter,
  412. message: `Last label "${label}" must not be all-numeric.`,
  413. column
  414. };
  415. };
  416. var sanitize = (input, options2 = {}) => {
  417. if (typeof input !== "string") {
  418. return {
  419. type: SanitizationResultType.Error,
  420. errors: [createNoHostnameError(input)]
  421. };
  422. }
  423. if (input === "") {
  424. return {
  425. type: SanitizationResultType.ValidDomain,
  426. domain: input,
  427. labels: []
  428. };
  429. }
  430. const inputTrimmedAsIp = input.replace(/^\[|]$/g, "");
  431. const ipVersionOfInput = ipVersion(inputTrimmedAsIp);
  432. if (ipVersionOfInput !== void 0) {
  433. return {
  434. type: SanitizationResultType.ValidIp,
  435. ip: inputTrimmedAsIp,
  436. ipVersion: ipVersionOfInput
  437. };
  438. }
  439. const lastChar = input.charAt(input.length - 1);
  440. const canonicalInput = lastChar === LABEL_SEPARATOR ? input.slice(0, -1) : input;
  441. const octets = new TextEncoder().encode(canonicalInput);
  442. if (octets.length > DOMAIN_LENGTH_MAX) {
  443. return {
  444. type: SanitizationResultType.Error,
  445. errors: [createDomainMaxLengthError(input, octets.length)]
  446. };
  447. }
  448. const labels = canonicalInput.split(LABEL_SEPARATOR);
  449. const { validation = Validation.Strict } = options2;
  450. const labelValidationErrors = validateLabels[validation](labels);
  451. if (labelValidationErrors.length > 0) {
  452. return {
  453. type: SanitizationResultType.Error,
  454. errors: labelValidationErrors
  455. };
  456. }
  457. return {
  458. type: SanitizationResultType.ValidDomain,
  459. domain: input,
  460. labels
  461. };
  462. };
  463. var validateLabels = {
  464. [Validation.Lax]: (labels) => {
  465. const labelValidationErrors = [];
  466. let column = 1;
  467. for (const label of labels) {
  468. const octets = textEncoder.encode(label);
  469. if (octets.length < LABEL_LENGTH_MIN) {
  470. labelValidationErrors.push(createLabelMinLengthError(label, column));
  471. } else if (octets.length > LABEL_LENGTH_MAX) {
  472. labelValidationErrors.push(createLabelMaxLengthError(label, column));
  473. }
  474. column += label.length + LABEL_SEPARATOR.length;
  475. }
  476. return labelValidationErrors;
  477. },
  478. [Validation.Strict]: (labels) => {
  479. const labelValidationErrors = [];
  480. let column = 1;
  481. let lastLabel;
  482. for (const label of labels) {
  483. const invalidCharacter = /[^\da-z-]/i.exec(label);
  484. if (invalidCharacter) {
  485. labelValidationErrors.push(createLabelInvalidCharacterError(label, invalidCharacter[0], invalidCharacter.index + 1));
  486. }
  487. if (label.startsWith("-")) {
  488. labelValidationErrors.push(createLabelInvalidCharacterError(label, "-", column));
  489. } else if (label.endsWith("-")) {
  490. labelValidationErrors.push(createLabelInvalidCharacterError(label, "-", column + label.length - 1));
  491. }
  492. if (
  493. // We can use .length here to check for the octet size because
  494. // label can only contain ASCII LDH characters at this point.
  495. label.length < LABEL_LENGTH_MIN
  496. ) {
  497. labelValidationErrors.push(createLabelMinLengthError(label, column));
  498. } else if (label.length > LABEL_LENGTH_MAX) {
  499. labelValidationErrors.push(createLabelMaxLengthError(label, column));
  500. }
  501. column += label.length + LABEL_SEPARATOR.length;
  502. lastLabel = label;
  503. }
  504. if (lastLabel !== void 0 && /[a-z-]/iu.test(lastLabel) === false) {
  505. labelValidationErrors.push(createLastLabelInvalidError(lastLabel, column - lastLabel.length - LABEL_SEPARATOR.length));
  506. }
  507. return labelValidationErrors;
  508. }
  509. };
  510.  
  511. // node_modules/.pnpm/parse-domain@8.0.1/node_modules/parse-domain/build/trie/nodes.js
  512. var NODE_TYPE_ROOT = Symbol("ROOT");
  513. var NODE_TYPE_CHILD = Symbol("CHILD");
  514. var createRootNode = () => {
  515. return {
  516. type: NODE_TYPE_ROOT,
  517. children: /* @__PURE__ */ new Map()
  518. };
  519. };
  520. var createOrGetChild = (parent, label) => {
  521. let child = parent.children.get(label);
  522. if (child === void 0) {
  523. child = {
  524. type: NODE_TYPE_CHILD,
  525. label,
  526. children: /* @__PURE__ */ new Map(),
  527. parent
  528. };
  529. parent.children.set(label, child);
  530. }
  531. return child;
  532. };
  533.  
  534. // node_modules/.pnpm/parse-domain@8.0.1/node_modules/parse-domain/build/trie/parse-trie.js
  535. var parseTrie = (serializedTrie) => {
  536. const rootNode = createRootNode();
  537. let domain = "";
  538. let parentNode = rootNode;
  539. let node = rootNode;
  540. const addDomain = () => {
  541. node = createOrGetChild(parentNode, domain);
  542. domain = "";
  543. };
  544. for (let i = 0; i < serializedTrie.length; i++) {
  545. const char = serializedTrie.charAt(i);
  546. switch (char) {
  547. case SAME: {
  548. addDomain();
  549. continue;
  550. }
  551. case DOWN: {
  552. addDomain();
  553. parentNode = node;
  554. continue;
  555. }
  556. case RESET: {
  557. addDomain();
  558. parentNode = rootNode;
  559. continue;
  560. }
  561. case UP: {
  562. if (parentNode.type === NODE_TYPE_ROOT) {
  563. throw new Error(`Error in serialized trie at position ${i}: Cannot go up, current parent node is already root`);
  564. }
  565. addDomain();
  566. parentNode = parentNode.parent;
  567. continue;
  568. }
  569. }
  570. domain += char;
  571. }
  572. if (domain !== "") {
  573. addDomain();
  574. }
  575. return rootNode;
  576. };
  577.  
  578. // node_modules/.pnpm/parse-domain@8.0.1/node_modules/parse-domain/build/parse-domain.js
  579. var RESERVED_TOP_LEVEL_DOMAINS = [
  580. "localhost",
  581. "local",
  582. "example",
  583. "invalid",
  584. "test"
  585. ];
  586. var ParseResultType;
  587. (function(ParseResultType2) {
  588. ParseResultType2["Invalid"] = "INVALID";
  589. ParseResultType2["Ip"] = "IP";
  590. ParseResultType2["Reserved"] = "RESERVED";
  591. ParseResultType2["NotListed"] = "NOT_LISTED";
  592. ParseResultType2["Listed"] = "LISTED";
  593. })(ParseResultType || (ParseResultType = {}));
  594. var getAtIndex = (array, index) => {
  595. return index >= 0 && index < array.length ? array[index] : void 0;
  596. };
  597. var splitLabelsIntoDomains = (labels, index) => {
  598. return {
  599. subDomains: labels.slice(0, Math.max(0, index)),
  600. domain: getAtIndex(labels, index),
  601. topLevelDomains: labels.slice(index + 1)
  602. };
  603. };
  604. var parsedIcannTrie;
  605. var parsedPrivateTrie;
  606. var parseDomain = (hostname, options2) => {
  607. const sanitizationResult = sanitize(hostname, options2);
  608. if (sanitizationResult.type === SanitizationResultType.Error) {
  609. return {
  610. type: ParseResultType.Invalid,
  611. hostname,
  612. errors: sanitizationResult.errors
  613. };
  614. }
  615. if (sanitizationResult.type === SanitizationResultType.ValidIp) {
  616. return {
  617. type: ParseResultType.Ip,
  618. hostname: sanitizationResult.ip,
  619. ipVersion: sanitizationResult.ipVersion
  620. };
  621. }
  622. const { labels, domain } = sanitizationResult;
  623. if (hostname === "" || RESERVED_TOP_LEVEL_DOMAINS.includes(labels[labels.length - 1])) {
  624. return {
  625. type: ParseResultType.Reserved,
  626. hostname: domain,
  627. labels
  628. };
  629. }
  630. parsedIcannTrie = parsedIcannTrie !== null && parsedIcannTrie !== void 0 ? parsedIcannTrie : parseTrie(icann_default);
  631. parsedPrivateTrie = parsedPrivateTrie !== null && parsedPrivateTrie !== void 0 ? parsedPrivateTrie : parseTrie(private_default);
  632. const icannTlds = lookUpTldsInTrie(labels, parsedIcannTrie);
  633. const privateTlds = lookUpTldsInTrie(labels, parsedPrivateTrie);
  634. if (icannTlds.length === 0 && privateTlds.length === 0) {
  635. return {
  636. type: ParseResultType.NotListed,
  637. hostname: domain,
  638. labels
  639. };
  640. }
  641. const indexOfPublicSuffixDomain = labels.length - Math.max(privateTlds.length, icannTlds.length) - 1;
  642. const indexOfIcannDomain = labels.length - icannTlds.length - 1;
  643. return Object.assign({ type: ParseResultType.Listed, hostname: domain, labels, icann: splitLabelsIntoDomains(labels, indexOfIcannDomain) }, splitLabelsIntoDomains(labels, indexOfPublicSuffixDomain));
  644. };
  645.  
  646. // src/utils/isSameSite.ts
  647. var patchNocookie = (url) => {
  648. if (url.hostname !== "www.youtube-nocookie.com") {
  649. return url;
  650. }
  651. const cloned = url;
  652. cloned.hostname = "www.youtube.com";
  653. return cloned;
  654. };
  655. var isSameSite = (a, b) => {
  656. a = patchNocookie(a);
  657. b = patchNocookie(b);
  658. const aParsed = parseDomain(a.hostname);
  659. const bParsed = parseDomain(b.hostname);
  660. if ("domain" in aParsed && "domain" in bParsed) {
  661. return `${aParsed.domain}.${aParsed.topLevelDomains.join(".")}` === `${bParsed.domain}.${bParsed.topLevelDomains.join(".")}`;
  662. } else {
  663. return true;
  664. }
  665. };
  666.  
  667. // src/utils/AnchorEmbed.ts
  668. var MAX_REOLVE_TIMES = 10;
  669. var _rules, _resolvers, _excludes, _abortControllersMap, _createAbortController, createAbortController_fn, _resolve, resolve_fn, _appliedRulesMap, _isAppliedRule, isAppliedRule_fn, _observeAnchorController, _testFilter, testFilter_fn;
  670. var _AnchorEmbed = class {
  671. constructor({
  672. rules,
  673. resolvers = []
  674. }) {
  675. __privateAdd(this, _createAbortController);
  676. __privateAdd(this, _resolve);
  677. __privateAdd(this, _isAppliedRule);
  678. __publicField(this, "constructor", _AnchorEmbed);
  679. __privateAdd(this, _rules, void 0);
  680. __privateAdd(this, _resolvers, void 0);
  681. __privateAdd(this, _excludes, /* @__PURE__ */ new WeakSet());
  682. __privateAdd(this, _abortControllersMap, /* @__PURE__ */ new WeakMap());
  683. __privateAdd(this, _appliedRulesMap, /* @__PURE__ */ new WeakMap());
  684. __privateAdd(this, _observeAnchorController, void 0);
  685. __privateSet(this, _rules, rules);
  686. __privateSet(this, _resolvers, resolvers);
  687. }
  688. exclude(target) {
  689. __privateGet(this, _excludes).add(target);
  690. }
  691. include(target) {
  692. __privateGet(this, _excludes).delete(target);
  693. }
  694. applyRule(target, asHref = target.href) {
  695. var _a;
  696. if (__privateGet(this, _excludes).has(target)) {
  697. return;
  698. }
  699. if (!asHref) {
  700. return;
  701. }
  702. const url = __privateMethod(this, _resolve, resolve_fn).call(this, new URL(asHref));
  703. if (isSameSite(url, new URL(location.href))) {
  704. return;
  705. }
  706. const appliedRulesMap = __privateGet(this, _appliedRulesMap);
  707. for (const rule of __privateGet(this, _rules)) {
  708. if (!__privateMethod(_a = this.constructor, _testFilter, testFilter_fn).call(_a, url, rule)) {
  709. continue;
  710. }
  711. if (__privateMethod(this, _isAppliedRule, isAppliedRule_fn).call(this, target, rule)) {
  712. continue;
  713. }
  714. rule.effect({
  715. anchorEmbed: this,
  716. rule,
  717. url,
  718. target,
  719. onAbort: (listener) => {
  720. const { signal } = __privateMethod(this, _createAbortController, createAbortController_fn).call(this, target);
  721. signal.addEventListener("abort", () => listener());
  722. }
  723. });
  724. const appliedRules = appliedRulesMap.get(target) ?? /* @__PURE__ */ new Set();
  725. if (!appliedRulesMap.has(target)) {
  726. appliedRulesMap.set(target, appliedRules);
  727. }
  728. appliedRules.add(rule);
  729. }
  730. }
  731. destroyRule(target) {
  732. const abortControllersMap = __privateGet(this, _abortControllersMap);
  733. const controllers = abortControllersMap.get(target);
  734. if (controllers) {
  735. for (const controller of controllers) {
  736. controller.abort();
  737. controllers.delete(controller);
  738. }
  739. if (!controllers.size) {
  740. abortControllersMap.delete(target);
  741. }
  742. }
  743. __privateGet(this, _appliedRulesMap).delete(target);
  744. }
  745. apply() {
  746. const observeAnchorController = __privateSet(this, _observeAnchorController, new AbortController());
  747. observeAnchor((records) => {
  748. for (const { type, targets } of records) {
  749. for (const target of targets) {
  750. switch (type) {
  751. case ObserveAnchorRecordTypes.Appeared: {
  752. this.applyRule(target);
  753. break;
  754. }
  755. case ObserveAnchorRecordTypes.Changed: {
  756. this.destroyRule(target);
  757. this.applyRule(target);
  758. break;
  759. }
  760. case ObserveAnchorRecordTypes.Removed: {
  761. this.destroyRule(target);
  762. break;
  763. }
  764. }
  765. }
  766. }
  767. }, {
  768. signal: observeAnchorController.signal,
  769. filter: [
  770. ObserveAnchorRecordTypes.Appeared,
  771. ObserveAnchorRecordTypes.Changed,
  772. ObserveAnchorRecordTypes.Removed
  773. ]
  774. });
  775. }
  776. destroy() {
  777. for (const e of findElement("a")) {
  778. this.destroyRule(e);
  779. }
  780. __privateGet(this, _observeAnchorController)?.abort();
  781. __privateSet(this, _observeAnchorController, void 0);
  782. }
  783. };
  784. var AnchorEmbed = _AnchorEmbed;
  785. _rules = new WeakMap();
  786. _resolvers = new WeakMap();
  787. _excludes = new WeakMap();
  788. _abortControllersMap = new WeakMap();
  789. _createAbortController = new WeakSet();
  790. createAbortController_fn = function(target) {
  791. const controller = new AbortController();
  792. const controllersMap = __privateGet(this, _abortControllersMap);
  793. const controllers = controllersMap.get(target) ?? /* @__PURE__ */ new Set();
  794. if (!controllersMap.has(target)) {
  795. controllersMap.set(target, controllers);
  796. }
  797. controllers.add(controller);
  798. return controller;
  799. };
  800. _resolve = new WeakSet();
  801. resolve_fn = function(url) {
  802. let resolveTimes = 0;
  803. let resolvers;
  804. let current = url;
  805. do {
  806. resolvers = __privateGet(this, _resolvers).filter((v) => {
  807. var _a;
  808. return __privateMethod(_a = this.constructor, _testFilter, testFilter_fn).call(_a, current, v);
  809. });
  810. if (resolvers.length > 0 && resolveTimes >= MAX_REOLVE_TIMES) {
  811. console.warn("[WARN] Stopped resolve with ", resolvers);
  812. break;
  813. }
  814. for (const resolver of resolvers) {
  815. const resolved = resolver.effect(current);
  816. if (resolved) {
  817. current = resolved;
  818. }
  819. }
  820. resolveTimes++;
  821. } while (resolvers?.length > 0);
  822. return current;
  823. };
  824. _appliedRulesMap = new WeakMap();
  825. _isAppliedRule = new WeakSet();
  826. isAppliedRule_fn = function(target, rule) {
  827. const appliedRules = __privateGet(this, _appliedRulesMap).get(target);
  828. if (!appliedRules) {
  829. return false;
  830. }
  831. return appliedRules.has(rule);
  832. };
  833. _observeAnchorController = new WeakMap();
  834. _testFilter = new WeakSet();
  835. testFilter_fn = function(url, filter) {
  836. const { test } = filter;
  837. if (test instanceof RegExp) {
  838. return test.test(url.href);
  839. }
  840. if (test instanceof Array) {
  841. return test.length ? test.some((v) => v.test(url.href)) : false;
  842. }
  843. const testMethod = "testMethod" in filter && filter.testMethod || "every";
  844. const keys = objectKeys(test);
  845. if (!keys.length) {
  846. return false;
  847. }
  848. return keys[testMethod]((k) => {
  849. const r = test[k];
  850. if (!r) {
  851. return false;
  852. }
  853. if (r instanceof RegExp) {
  854. return r.test(url[k]);
  855. }
  856. return r.length ? r.some((v) => v.test(url[k])) : false;
  857. });
  858. };
  859. __privateAdd(AnchorEmbed, _testFilter);
  860.  
  861. // node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.js
  862. var __assign = function() {
  863. __assign = Object.assign || function __assign2(t) {
  864. for (var s2, i = 1, n = arguments.length; i < n; i++) {
  865. s2 = arguments[i];
  866. for (var p in s2)
  867. if (Object.prototype.hasOwnProperty.call(s2, p))
  868. t[p] = s2[p];
  869. }
  870. return t;
  871. };
  872. return __assign.apply(this, arguments);
  873. };
  874.  
  875. // node_modules/.pnpm/lower-case@2.0.2/node_modules/lower-case/dist.es2015/index.js
  876. function lowerCase(str) {
  877. return str.toLowerCase();
  878. }
  879.  
  880. // node_modules/.pnpm/no-case@3.0.4/node_modules/no-case/dist.es2015/index.js
  881. var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];
  882. var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;
  883. function noCase(input, options2) {
  884. if (options2 === void 0) {
  885. options2 = {};
  886. }
  887. var _a = options2.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options2.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options2.transform, transform = _c === void 0 ? lowerCase : _c, _d = options2.delimiter, delimiter = _d === void 0 ? " " : _d;
  888. var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0");
  889. var start = 0;
  890. var end = result.length;
  891. while (result.charAt(start) === "\0")
  892. start++;
  893. while (result.charAt(end - 1) === "\0")
  894. end--;
  895. return result.slice(start, end).split("\0").map(transform).join(delimiter);
  896. }
  897. function replace(input, re, value) {
  898. if (re instanceof RegExp)
  899. return input.replace(re, value);
  900. return re.reduce(function(input2, re2) {
  901. return input2.replace(re2, value);
  902. }, input);
  903. }
  904.  
  905. // node_modules/.pnpm/dot-case@3.0.4/node_modules/dot-case/dist.es2015/index.js
  906. function dotCase(input, options2) {
  907. if (options2 === void 0) {
  908. options2 = {};
  909. }
  910. return noCase(input, __assign({ delimiter: "." }, options2));
  911. }
  912.  
  913. // node_modules/.pnpm/param-case@3.0.4/node_modules/param-case/dist.es2015/index.js
  914. function paramCase(input, options2) {
  915. if (options2 === void 0) {
  916. options2 = {};
  917. }
  918. return dotCase(input, __assign({ delimiter: "-" }, options2));
  919. }
  920.  
  921. // src/utils/createStyles.ts
  922. var s = document.createElement("style");
  923. document.head.append(s);
  924. var randomClassName = () => `css-${Math.random().toString(36).slice(2)}`;
  925. var createStyles = (stylesList) => {
  926. const classNames8 = {};
  927. let css = "";
  928. for (const k of objectKeys(stylesList)) {
  929. const className = classNames8[k] = randomClassName();
  930. const styles = stylesList[k];
  931. for (const k2 in styles) {
  932. css += `.${className}${k2}{`;
  933. const style = styles[k2];
  934. for (const k3 in style) {
  935. css += `${paramCase(k3)}:${style[k3]};`;
  936. }
  937. css += "}";
  938. }
  939. }
  940. s.innerHTML += css;
  941. return classNames8;
  942. };
  943.  
  944. // src/utils/createElement.ts
  945. var createElement = (tagName, {
  946. attributes = {}
  947. } = {}, ...children) => {
  948. const e = document.createElement(tagName);
  949. for (const k in attributes) {
  950. const v = attributes[k];
  951. if (!v) {
  952. continue;
  953. }
  954. e[k] = v;
  955. }
  956. for (const child of children) {
  957. e.append(child);
  958. }
  959. return e;
  960. };
  961.  
  962. // src/utils/createThumbnail.ts
  963. var classNames = createStyles({
  964. cover: {
  965. "": {
  966. display: "flex",
  967. justifyContent: "center",
  968. alignItems: "center",
  969. position: "fixed",
  970. top: "0px",
  971. left: "0px",
  972. width: "100vw",
  973. height: "100vh",
  974. zIndex: "999999",
  975. backgroundColor: "rgba(0, 0, 0, 0.75)"
  976. }
  977. },
  978. coverHidden: {
  979. "": {
  980. display: "none"
  981. }
  982. },
  983. noScroll: {
  984. "": {
  985. overflow: "hidden !important"
  986. }
  987. },
  988. coverImg: {
  989. "": {
  990. maxWidth: "50vw"
  991. }
  992. }
  993. });
  994. var cover = createElement("div", {
  995. attributes: {
  996. className: `${classNames.cover} ${classNames.coverHidden}`
  997. }
  998. });
  999. cover.addEventListener("click", () => {
  1000. document.documentElement.classList.remove(classNames.noScroll);
  1001. cover.classList.add(classNames.coverHidden);
  1002. });
  1003. document.body.append(cover);
  1004. var createThumbnail = (src) => {
  1005. const img = createElement("img", {
  1006. attributes: {
  1007. src
  1008. }
  1009. });
  1010. img.addEventListener("click", (ev) => {
  1011. ev.stopPropagation();
  1012. document.documentElement.classList.add(classNames.noScroll);
  1013. cover.classList.remove(classNames.coverHidden);
  1014. while (cover.firstChild) {
  1015. cover.firstChild.remove();
  1016. }
  1017. const coverImg = createElement("img", {
  1018. attributes: {
  1019. src: img.src,
  1020. className: classNames.coverImg
  1021. }
  1022. });
  1023. cover.append(coverImg);
  1024. });
  1025. return img;
  1026. };
  1027.  
  1028. // src/utils/exoticFetch.ts
  1029. var exoticFetch = (url, {
  1030. method = "GET",
  1031. responseType = "blob"
  1032. } = {}) => new Promise((resolve, reject) => {
  1033. GM.xmlHttpRequest({
  1034. method,
  1035. url,
  1036. responseType,
  1037. onload: (res) => {
  1038. resolve({
  1039. response: res.response,
  1040. finalUrl: res.finalUrl
  1041. });
  1042. },
  1043. onerror: (err) => reject(err)
  1044. });
  1045. });
  1046.  
  1047. // src/utils/insertAfter.ts
  1048. var insertAfter = (target, element) => {
  1049. const { parentNode, nextSibling } = target;
  1050. if (!parentNode) {
  1051. throw new Error("No parent node");
  1052. }
  1053. if (nextSibling) {
  1054. parentNode.insertBefore(element, nextSibling);
  1055. } else {
  1056. parentNode.append(element);
  1057. }
  1058. };
  1059.  
  1060. // src/utils/createSpoiler.ts
  1061. var classNames2 = createStyles({
  1062. hiddenSpoilerButton: {
  1063. "": {
  1064. display: "none"
  1065. }
  1066. },
  1067. spoilerButton: {
  1068. "": {
  1069. backgroundColor: "#000",
  1070. color: "#fff",
  1071. padding: "0.5rem",
  1072. cursor: "pointer"
  1073. }
  1074. }
  1075. });
  1076. var createSpoiler = ({
  1077. target,
  1078. onAbort,
  1079. rule
  1080. }, factory) => {
  1081. const spoiler = createElement("div");
  1082. const openSpoilerButton = createElement(
  1083. "div",
  1084. {
  1085. attributes: {
  1086. className: classNames2.spoilerButton
  1087. }
  1088. },
  1089. `「${rule.name}」を表示する`
  1090. );
  1091. const closeSpoilerButton = createElement(
  1092. "div",
  1093. {
  1094. attributes: {
  1095. className: `${classNames2.spoilerButton} ${classNames2.hiddenSpoilerButton}`
  1096. }
  1097. },
  1098. `「${rule.name}」を非表示にする`
  1099. );
  1100. const container = document.createElement("div");
  1101. spoiler.append(openSpoilerButton);
  1102. spoiler.append(closeSpoilerButton);
  1103. spoiler.append(container);
  1104. let controller;
  1105. openSpoilerButton.addEventListener("click", (ev) => {
  1106. ev.stopPropagation();
  1107. openSpoilerButton.classList.add(classNames2.hiddenSpoilerButton);
  1108. closeSpoilerButton.classList.remove(classNames2.hiddenSpoilerButton);
  1109. factory({
  1110. container,
  1111. onAbort: (listener) => {
  1112. controller = new AbortController();
  1113. controller.signal.addEventListener("abort", () => listener());
  1114. }
  1115. });
  1116. });
  1117. closeSpoilerButton.addEventListener("click", (ev) => {
  1118. ev.stopPropagation();
  1119. closeSpoilerButton.classList.add(classNames2.hiddenSpoilerButton);
  1120. openSpoilerButton.classList.remove(classNames2.hiddenSpoilerButton);
  1121. controller?.abort();
  1122. controller = void 0;
  1123. });
  1124. onAbort(() => {
  1125. spoiler.remove();
  1126. });
  1127. insertAfter(target, spoiler);
  1128. };
  1129.  
  1130. // src/rules/imgur.ts
  1131. var classNames3 = createStyles({
  1132. img: {
  1133. "": {
  1134. maxWidth: "90%"
  1135. }
  1136. },
  1137. video: {
  1138. "": {
  1139. maxWidth: "100%"
  1140. }
  1141. }
  1142. });
  1143. var imgur_default = () => ({
  1144. name: "Imgur",
  1145. test: {
  1146. hostname: /^i\.imgur\.com$/
  1147. },
  1148. effect: async (ctx) => {
  1149. const { target, onAbort, url, anchorEmbed: anchorEmbed2 } = ctx;
  1150. const { response } = await exoticFetch(url.href);
  1151. const container = document.createElement("div");
  1152. switch (response.type.replace(/\/.+$/, "")) {
  1153. case "image": {
  1154. const img = createThumbnail(url.href);
  1155. img.classList.add(classNames3.img);
  1156. container.append(img);
  1157. break;
  1158. }
  1159. case "video": {
  1160. createSpoiler(ctx, ({ onAbort: onAbort2, container: container2 }) => {
  1161. const video = createElement("video", {
  1162. attributes: {
  1163. src: url.href,
  1164. controls: true,
  1165. className: classNames3.video
  1166. }
  1167. });
  1168. container2.append(video);
  1169. onAbort2(() => video.remove());
  1170. });
  1171. break;
  1172. }
  1173. default: {
  1174. if (response.type !== "text/html") {
  1175. break;
  1176. }
  1177. const text = await response.text();
  1178. const m = text.match(/<meta\s+property="og:image"\s+data-react-helmet="true"\s+content="(.+?)">/);
  1179. if (!m) {
  1180. break;
  1181. }
  1182. const url2 = new URL(m[1]);
  1183. url2.search = "";
  1184. anchorEmbed2.destroyRule(target);
  1185. anchorEmbed2.applyRule(target, url2.href);
  1186. break;
  1187. }
  1188. }
  1189. if (container.children.length) {
  1190. insertAfter(target, container);
  1191. onAbort(() => container.remove());
  1192. }
  1193. }
  1194. });
  1195.  
  1196. // src/resolvers/feeder-jump-page.ts
  1197. var feeder_jump_page_default = () => ({
  1198. name: "Feeder jump page",
  1199. test: {
  1200. hostname: /^www[12]\.x-feeder\.info$/,
  1201. pathname: /^\/jump\.php$/
  1202. },
  1203. effect: ({ searchParams }) => {
  1204. const href = searchParams.get("url");
  1205. if (typeof href !== "string") {
  1206. return;
  1207. }
  1208. return new URL(href);
  1209. }
  1210. });
  1211.  
  1212. // src/resolvers/net5ch-feeder-jump-page.ts
  1213. var net5ch_feeder_jump_page_default = () => ({
  1214. name: "5ch jump page",
  1215. test: {
  1216. hostname: /^jump\.5ch\.net$/
  1217. },
  1218. effect: ({ search }) => {
  1219. const href = search.slice(1);
  1220. if (typeof href !== "string" || !href) {
  1221. return;
  1222. }
  1223. return new URL(href);
  1224. }
  1225. });
  1226.  
  1227. // src/utils/option.ts
  1228. var option = (func) => {
  1229. try {
  1230. return func();
  1231. } catch {
  1232. return;
  1233. }
  1234. };
  1235.  
  1236. // src/utils/resolveYoutubeId.ts
  1237. var resolveYoutubeId = ({
  1238. hostname,
  1239. searchParams,
  1240. pathname
  1241. }) => {
  1242. switch (hostname) {
  1243. case "m.youtube.com":
  1244. case "www.youtube.com": {
  1245. if (pathname !== "/watch") {
  1246. throw new Error("Unsupported pathname");
  1247. }
  1248. const id = searchParams.get("v");
  1249. if (typeof id !== "string") {
  1250. throw new Error("Could not retrieve id");
  1251. }
  1252. return id;
  1253. }
  1254. case "youtu.be": {
  1255. return pathname;
  1256. }
  1257. default: {
  1258. throw new Error("Unsupported hostname");
  1259. }
  1260. }
  1261. };
  1262.  
  1263. // src/rules/youtube.ts
  1264. var classNames4 = createStyles({
  1265. iframe: {
  1266. "": {
  1267. border: "none",
  1268. maxWidth: "100%"
  1269. }
  1270. },
  1271. container: {
  1272. "": {
  1273. display: "flex",
  1274. justifyContent: "center",
  1275. backgroundColor: "#000"
  1276. }
  1277. }
  1278. });
  1279. var youtube_default = () => ({
  1280. name: "YouTube",
  1281. test: {
  1282. hostname: /^(?:www|m)\.youtube\.com|youtu\.be$/
  1283. },
  1284. effect: (ctx) => {
  1285. const { url } = ctx;
  1286. const id = option(() => resolveYoutubeId(url));
  1287. if (!id) {
  1288. return;
  1289. }
  1290. const src = `https://www.youtube-nocookie.com/embed/${id}`;
  1291. createSpoiler(ctx, ({ onAbort, container }) => {
  1292. container.classList.add(classNames4.container);
  1293. const ifr = createElement("iframe", {
  1294. attributes: {
  1295. src,
  1296. title: "YouTube video player",
  1297. allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
  1298. allowFullscreen: true,
  1299. className: classNames4.iframe,
  1300. width: "560",
  1301. height: "315"
  1302. }
  1303. });
  1304. container.append(ifr);
  1305. onAbort(() => ifr.remove());
  1306. });
  1307. }
  1308. });
  1309.  
  1310. // src/rules/nicovideo.ts
  1311. var classNames5 = createStyles({
  1312. iframe: {
  1313. "": {
  1314. border: "none",
  1315. maxWidth: "100%"
  1316. }
  1317. },
  1318. container: {
  1319. "": {
  1320. display: "flex",
  1321. justifyContent: "center",
  1322. backgroundColor: "#000"
  1323. }
  1324. }
  1325. });
  1326. var nicovideo_default = () => ({
  1327. name: "ニコニコ動画",
  1328. test: {
  1329. hostname: /^(?:www|sp)\.nicovideo\.jp$/,
  1330. pathname: /^\/watch\/sm\d+$/
  1331. },
  1332. effect: (ctx) => {
  1333. const src = `https://embed.nicovideo.jp${ctx.url.pathname}`;
  1334. createSpoiler(ctx, ({ onAbort, container }) => {
  1335. container.classList.add(classNames5.container);
  1336. const ifr = createElement("iframe", {
  1337. attributes: {
  1338. src,
  1339. allowFullscreen: true,
  1340. className: classNames5.iframe
  1341. }
  1342. });
  1343. container.append(ifr);
  1344. onAbort(() => ifr.remove());
  1345. });
  1346. }
  1347. });
  1348.  
  1349. // src/utils/wakeScriptTag.ts
  1350. var wakeScriptTag = (root) => {
  1351. for (const e of findElement("script", root)) {
  1352. const s2 = createElement("script", {
  1353. attributes: {
  1354. src: e.src,
  1355. charset: e.charset,
  1356. async: e.async,
  1357. defer: e.defer,
  1358. type: e.type
  1359. }
  1360. });
  1361. e.parentNode?.insertBefore(s2, e);
  1362. e.remove();
  1363. }
  1364. };
  1365.  
  1366. // src/rules/twitter.ts
  1367. var twitter_default = () => ({
  1368. name: "Twitter",
  1369. test: {
  1370. hostname: /^twitter\.com$/,
  1371. pathname: /^\/[^/]+\/status\/\d+/
  1372. },
  1373. effect: async (ctx) => {
  1374. const { url, anchorEmbed: anchorEmbed2 } = ctx;
  1375. createSpoiler(ctx, async ({ onAbort, container }) => {
  1376. const wrapper = createElement("div");
  1377. onAbort(() => wrapper.remove());
  1378. const { response } = await exoticFetch(
  1379. `https://publish.twitter.com/oembed?url=${url.href}`,
  1380. {
  1381. responseType: "json"
  1382. }
  1383. );
  1384. wrapper.innerHTML = response.html;
  1385. for (const e of findElement("a", wrapper)) {
  1386. anchorEmbed2.exclude(e);
  1387. }
  1388. container.append(wrapper);
  1389. wakeScriptTag(wrapper);
  1390. });
  1391. }
  1392. });
  1393.  
  1394. // src/resolvers/x-to-twitter.ts
  1395. var x_to_twitter_default = () => ({
  1396. name: "X to Twitter",
  1397. test: {
  1398. hostname: /^x\.com$/
  1399. },
  1400. effect: (url) => {
  1401. const cloned = new URL(url);
  1402. cloned.hostname = "twitter.com";
  1403. return cloned;
  1404. }
  1405. });
  1406.  
  1407. // src/rules/facebook.ts
  1408. var classNames6 = createStyles({
  1409. container: {
  1410. "": {
  1411. display: "flex",
  1412. justifyContent: "center",
  1413. backgroundColor: "#fff"
  1414. }
  1415. }
  1416. });
  1417. var initSdk = (() => {
  1418. const initialized = false;
  1419. return () => {
  1420. if (initialized) {
  1421. return;
  1422. }
  1423. const root = createElement("div", {
  1424. attributes: { id: "fb-root" }
  1425. });
  1426. const script = createElement("script", {
  1427. attributes: {
  1428. async: true,
  1429. defer: true,
  1430. crossOrigin: "anonymous",
  1431. src: "https://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v18.0"
  1432. }
  1433. });
  1434. document.body.append(root, script);
  1435. };
  1436. })();
  1437. var facebook_default = () => ({
  1438. name: "Facebook",
  1439. test: {
  1440. hostname: /^(?:www|m)\.facebook\.com$/,
  1441. pathname: [
  1442. // https://www.facebook.com/watch/?v=nnnnn
  1443. /^\/?watch\/?$/,
  1444. // https://www.facebook.com/xxxxx/videos/nnnnn/
  1445. // https://www.facebook.com/xxxxx/posts/xxxxx
  1446. /^\/?[^/]+\/(?:posts|videos)(?:\/[^/]+)?\/[^/]+\/?$/,
  1447. // https://www.facebook.com/photo/?fbid=nnnnn&set=xxxxx&idorvanity=nnnnn
  1448. /^\/?photo\/?$/
  1449. ]
  1450. },
  1451. effect: (ctx) => {
  1452. initSdk();
  1453. createSpoiler(ctx, ({ onAbort, container }) => {
  1454. container.classList.add(classNames6.container);
  1455. const post = createElement("div");
  1456. post.classList.add("fb-post");
  1457. post.dataset.href = ctx.url.href;
  1458. post.dataset.width = "500";
  1459. post.dataset.showText = "true";
  1460. container.append(post);
  1461. FB.XFBML.parse();
  1462. onAbort(() => post.remove());
  1463. });
  1464. }
  1465. });
  1466.  
  1467. // src/rules/instagram.ts
  1468. var classNames7 = createStyles({
  1469. container: {
  1470. "": {
  1471. display: "flex",
  1472. justifyContent: "center",
  1473. backgroundColor: "#000"
  1474. }
  1475. },
  1476. wrapper: {
  1477. "": {
  1478. width: "100%"
  1479. }
  1480. }
  1481. });
  1482. var initScript = (() => {
  1483. const initialized = false;
  1484. return () => {
  1485. if (initialized) {
  1486. return;
  1487. }
  1488. const script = createElement("script", {
  1489. attributes: {
  1490. async: true,
  1491. src: "https://www.instagram.com/embed.js"
  1492. }
  1493. });
  1494. document.body.append(script);
  1495. };
  1496. })();
  1497. var instagram_default = () => ({
  1498. name: "Instagram",
  1499. test: {
  1500. hostname: /^(?:www|m)\.instagram\.com$/,
  1501. pathname: /^\/?p\/[^/]+\/?$/
  1502. },
  1503. effect: (ctx) => {
  1504. initScript();
  1505. createSpoiler(ctx, async ({ onAbort, container }) => {
  1506. container.classList.add(classNames7.container);
  1507. const wrapper = createElement("div", {
  1508. attributes: {
  1509. className: classNames7.wrapper
  1510. }
  1511. });
  1512. onAbort(() => wrapper.remove());
  1513. const url = new URL("https://www.instagram.com/api/v1/oembed/");
  1514. url.searchParams.append("hidecaption", "0");
  1515. url.searchParams.append("maxwidth", "540");
  1516. url.searchParams.append("url", ctx.url.href);
  1517. const { response } = await exoticFetch(url.href, {
  1518. responseType: "json"
  1519. });
  1520. wrapper.innerHTML = response.html;
  1521. container.append(wrapper);
  1522. instgrm.Embeds.process();
  1523. });
  1524. }
  1525. });
  1526.  
  1527. // src/rules/pinterest.ts
  1528. var initPinterestScript = (() => {
  1529. let initialized = false;
  1530. const methodName = `__parsePin${Math.random().toString(36).slice(2)}`;
  1531. return () => {
  1532. if (!initialized) {
  1533. const script = document.createElement("script");
  1534. script.type = "text/javascript";
  1535. script.async = true;
  1536. script.src = "//assets.pinterest.com/js/pinit.js";
  1537. script.dataset.pinBuild = methodName;
  1538. document.body.append(script);
  1539. initialized = true;
  1540. }
  1541. return methodName;
  1542. };
  1543. })();
  1544. var pinterest_default = () => ({
  1545. name: "Pinterest",
  1546. test: {
  1547. hostname: [
  1548. // www.pinterest.com
  1549. // jp.pinterest.com
  1550. /^(?:www|[a-z]{2})\.pinterest\.com$/,
  1551. // www.pinterest.jp
  1552. /^www\.pinterest\.[a-z]{2}$/
  1553. ],
  1554. pathname: [
  1555. // https://www.pinterest.jp/pin/nnnnn/
  1556. /^\/?pin\/\d+\/?$/,
  1557. // https://www.pinterest.jp/xxxxx/
  1558. /^\/?[^/]+\/?$/,
  1559. // https://www.pinterest.jp/xxxxx/xxxxx/
  1560. /^\/?[^/]+\/[^/]+\/?$/
  1561. ]
  1562. },
  1563. effect: async (ctx) => {
  1564. const methodName = initPinterestScript();
  1565. const a = document.createElement("a");
  1566. const { target, url } = ctx;
  1567. const paths = url.pathname.split("/").filter((v) => v);
  1568. a.href = url.href;
  1569. const reject = (() => {
  1570. if ("pinDo" in target.dataset) {
  1571. return true;
  1572. }
  1573. if (paths.length === 1) {
  1574. a.dataset.pinDo = "embedUser";
  1575. a.dataset.pinBoardWidth = "400";
  1576. a.dataset.pinScaleHeight = "320";
  1577. a.dataset.pinScaleWidth = "80";
  1578. return false;
  1579. }
  1580. if (paths.length !== 2) {
  1581. return true;
  1582. }
  1583. if (paths[0] === "pin") {
  1584. a.dataset.pinDo = "embedPin";
  1585. return false;
  1586. } else {
  1587. a.dataset.pinDo = "embedBoard";
  1588. a.dataset.pinBoardWidth = "400";
  1589. a.dataset.pinScaleHeight = "240";
  1590. a.dataset.pinScaleWidth = "80";
  1591. return false;
  1592. }
  1593. })();
  1594. if (reject) {
  1595. return;
  1596. }
  1597. createSpoiler(ctx, async ({ container, onAbort }) => {
  1598. container.append(a);
  1599. unsafeWindow[methodName](container);
  1600. onAbort(() => container.replaceChildren());
  1601. });
  1602. }
  1603. });
  1604.  
  1605. // src/index.ts
  1606. var anchorEmbed = new AnchorEmbed({
  1607. rules: [
  1608. imgur_default(),
  1609. youtube_default(),
  1610. nicovideo_default(),
  1611. twitter_default(),
  1612. facebook_default(),
  1613. instagram_default(),
  1614. pinterest_default()
  1615. ],
  1616. resolvers: [
  1617. feeder_jump_page_default(),
  1618. net5ch_feeder_jump_page_default(),
  1619. x_to_twitter_default()
  1620. ]
  1621. });
  1622. anchorEmbed.apply();
  1623. })();