!function(){function e(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function t(t){for(var n=1;n1?"s":"")+" required, but only "+t.length+" present")}function r(e){n(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"==typeof e&&"[object Date]"===t?new Date(e.getTime()):"number"==typeof e||"[object Number]"===t?new Date(e):("string"!=typeof e&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule"),console.warn((new Error).stack)),new Date(NaN))}function a(e){var t=new Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate(),e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()));return t.setUTCFullYear(e.getFullYear()),e.getTime()-t.getTime()}function i(e){n(1,arguments);var t=r(e);return t.setHours(0,0,0,0),t}var o=864e5;function s(e,t){n(2,arguments);var r=i(e),s=i(t),l=r.getTime()-a(r),d=s.getTime()-a(s);return Math.round((l-d)/o)}function l(e,t){var n=e.getFullYear()-t.getFullYear()||e.getMonth()-t.getMonth()||e.getDate()-t.getDate()||e.getHours()-t.getHours()||e.getMinutes()-t.getMinutes()||e.getSeconds()-t.getSeconds()||e.getMilliseconds()-t.getMilliseconds();return n<0?-1:n>0?1:n}const d={pl_PL:{date:"Data",createdAt:"Data założenia",dominance:"Dominacja",bestRank:"Najlepszy ranking",mostPoints:"Najwięcej punktów",mostVillages:"Najwięcej wiosek",player:"Gracz",points:"Punkty",villages:"Wioski",opponentsDefeated:"Pokonani przeciwnicy",opponentsDefeatedAsAttacker:"Pokonani przeciwnicy jako agresor",opponentsDefeatedAsDefender:"Pokonani przeciwnicy jako obrońca",opponentsDefeatedAsSupporter:"Pokonani przeciwnicy jako wspierający",change:"Zmień",left:"Opuścił",joined:"Dołączył",tribeChanges:"Zmiany plemion",membersGrowth:"Rozwój graczy",act:"Akcja",total:"Razem",oda:"RA",odd:"RO",ods:"RW",od:"Pokonani ogólnie",dailyGrowth:"Dzienny przyrost",playerLinks:"Linki",action:{linkToTWHelp:"Akta plemienia (TWHelp)",showTribeChanges:"Pokaż zmiany plemion",showEnnoblements:"Pokaż przejęcia",showMembersGrowth:"Pokaż rozwój graczy",showHistory:"Pokaż historię",generateMailingList:"Wygeneruj listę mailingową",exportVillages:"Wyeksportuj wioski"}},en_DK:{date:"Date",createdAt:"Created at",dominance:"Dominance",bestRank:"Best rank",mostPoints:"Most points",mostVillages:"Most villages",player:"Player",points:"Points",villages:"Villages",opponentsDefeated:"Opponents defeated",opponentsDefeatedAsAttacker:"Opponents defeated as attacker",opponentsDefeatedAsDefender:"Opponents defeated as defender",opponentsDefeatedAsSupporter:"Opponents defeated as supporter",change:"Change",membersGrowth:"Members growth",tribeChanges:"Tribe changes",left:"Left",joined:"Joined",act:"Action",total:"Total",oda:"ODA",odd:"ODD",ods:"ODS",od:"OD",dailyGrowth:"Daily growth",playerLinks:"Player links",action:{linkToTWHelp:"Tribal file (TWHelp)",showTribeChanges:"Show tribe changes",showEnnoblements:"Show ennoblements",showMembersGrowth:"Show members growth",showHistory:"Show history",generateMailingList:"Generate mailing list",exportVillages:"Export villages"}},de_DE:{date:"Datum",createdAt:"Erstellt am",dominance:"Dominanz",bestRank:"Bester Rang",mostPoints:"Meiste Punkte",mostVillages:"Meiste Dörfer",player:"Spieler",points:"Punkte",villages:"Dörfer",opponentsDefeated:"Besiegte Gegner",opponentsDefeatedAsAttacker:"Besiegte Gegner als Angreifer",opponentsDefeatedAsDefender:"Besiegte Gegner als Verteidiger",opponentsDefeatedAsSupporter:"Besiegte Gegner als Unterstützer",change:"Änderungen",membersGrowth:"Mitglieder Wachstum",tribeChanges:"Stammeswechsel",left:"Verlassen",joined:"Beigetreten",act:"Aktion",total:"Total",oda:"BGA",odd:"BGV",ods:"BGS",od:"BP",dailyGrowth:"Tägl. Wachstum",playerLinks:"Spieler Links",action:{linkToTWHelp:"Stammesakte (TWHelp)",showTribeChanges:"Zeige Stammeswechsel",showEnnoblements:"Zeige Adelungen",showMembersGrowth:"Zeige Mitglieder-Wachstum",showHistory:"Zeige Verlauf",generateMailingList:"Maillisten-Generator",exportVillages:"Dörfer exportieren"}}};var c=({query:e,variables:t={}}={})=>fetch("https://api.tribalwarshelp.com/graphql",{method:"POST",body:JSON.stringify({query:e,variables:t}),headers:{"Content-Type":"application/json"}}).then((e=>e.json())).then((({data:e,errors:t})=>{if(t&&Array.isArray(t)&&t.length>0)throw new Error(t[0].message);return new Promise((t=>t(e)))}));const g="data-page",m=(e,t=1)=>{if(!e instanceof HTMLElement)throw new Error("Expected HTMLElement as the first argument");if("number"!=typeof(t=parseInt(t))||isNaN(t))throw new Error("Expected number or string as the second argument");e.setAttribute(g,t+"")},p=e=>!e instanceof HTMLElement?0:parseInt(e.getAttribute(g)),u=({total:e,limit:t,marginRight:n=3,currentPage:r=0}={})=>{const a=((e,t)=>{if("number"!=typeof e)throw new Error("Expected number as the first argument");if("number"!=typeof t)throw new Error("Expected number as the second argument");return e>0?Math.ceil(e/t):1})(e,t),i=[];for(let e=1;e<=a;e++)e===r?i.push(`>${e}<`):i.push(`${e}`);return i},b={pl_PL:{title:"Dzisiejsze zmiany w statystykach",points:"Punkty",rank:"Ranking",villages:"Liczba wiosek",members:"Liczba członków",oda:"Pokonani przeciwnicy jako agresor",odaRank:"RA",odd:"Pokonani przeciwnicy jako obrońca",oddRank:"RO",ods:"Pokonani przeciwnicy jako wspierający",odsRank:"RW",od:"Pokonani przeciwnicy",odRank:"Pokonani przeciwnicy razem ranking"},en_DK:{title:"Today's stat changes",points:"Points",rank:"Rank",villages:"Villages",members:"Members",oda:"ODA",odaRank:"ODA Rank",odd:"ODD",oddRank:"ODD Rank",ods:"ODS",odsRank:"ODS Rank",od:"OD",odRank:"OD Rank"},de_DE:{title:"Heutige Werte Änderungen",points:"Punkte",rank:"Rang",villages:"Dörfer",members:"Mitglieder",oda:"BGA",odaRank:"BGA Rang",odd:"BGD",oddRank:"BGD Rang",ods:"BGS",odsRank:"BGS Rang",od:"BP",odRank:"BP Rang"}};const h=b[window.game_data.locale]||b.en_DK,y=e=>e>0?"color: #000; background-color: #0f0":e<0?"color: #000; background-color: #f00":"color: #000; background-color: #808080";const f={pl_PL:{date:"Data",newOwner:"Nowy właściciel",oldOwner:"Poprzedni właściciel",village:"Wioska",title:"Przejęcia"},en_DK:{date:"Date",newOwner:"New owner",oldOwner:"Old owner",village:"Village",title:"Ennoblements"},de_DE:{date:"Datum",newOwner:"Neuer Besitzer",oldOwner:"Alter Besitzer",village:"Dorf",title:"Adelungen"}};var $=({html:e,id:t,title:n}={})=>{Dialog.show(t,`

${n}

`+e);const r=document.querySelector(".popup_box");r&&(r.style.width="auto",r.style.maxWidth="1000px")};const w=(e,t)=>new Date(e).toLocaleDateString(void 0,t||{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"}),D=e=>window.location.origin+TribalWars.buildURL("",{screen:"info_ally",id:e}),v=e=>window.location.origin+TribalWars.buildURL("",{screen:"info_player",id:e}),k=f[window.game_data.locale]||f.en_DK,S=(e,t)=>e?`${e.name} (${t?`${t.tag}`:"-"})`:"-";var T=(e,t,{limit:n=0,currentPage:r=1,onPageChange:a=(()=>{})}={})=>{const i=`\n
\n ${u({total:t.total,limit:n,currentPage:r}).join("")}\n
\n \n \n \n \n \n \n \n \n ${t.items.map((e=>{let t=``;var n;return e.village?t+=``:t+="",t+=S(e.newOwner,e.newOwnerTribe),t+=S(e.oldOwner,e.oldOwnerTribe),t+""})).join("")}\n \n
\n ${k.date}\n \n ${k.village}\n \n ${k.newOwner}\n \n ${k.oldOwner}\n
${w(e.ennobledAt)}${((e="",t=500,n=500)=>`${e} (${t}|${n}) ${"K"+String(n)[0]+String(t)[0]}`)(e.village.name,e.village.x,e.village.y)}-
\n `;$({e:e,title:k.title,id:"ennoblements",html:i}),document.querySelectorAll("#ennoblementsPagination a").forEach((e=>{e.addEventListener("click",a)}))};function A(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}function L(e,t){n(2,arguments);var a=r(e),i=A(t);return isNaN(i)?new Date(NaN):i?(a.setDate(a.getDate()+i),a):a}const E={pl_PL:{title:"Historia",date:"Data",tribe:"Plemię",points:"Punkty",rank:"Ranking",villages:"Liczba wiosek",members:"Liczba członków",oda:"Pokonani przeciwnicy jako agresor",odd:"Pokonani przeciwnicy jako obrońca",ods:"Pokonani przeciwnicy jako wspierający",od:"Pokonani przeciwnicy"},en_DK:{title:"History",date:"Date",tribe:"Tribe",points:"Points",villages:"Villages",members:"Members",oda:"ODA",odd:"ODD",ods:"ODS",od:"OD"},de_DE:{title:"Verlauf",date:"Datum",tribe:"Stamm",points:"Punkte",villages:"Dörfer",members:"Mitglieder",oda:"BGA",odd:"BGV",ods:"BGS",od:"BP"}};const P=E[window.game_data.locale]||E.en_DK,M=e=>e>0?"+"+e:e;var j=(e,t,r,{currentPage:a=1,limit:i=0,onPageChange:o=(()=>{}),tribe:s=!1}={})=>{const l=`\n
\n ${u({total:t.total,limit:i,currentPage:a}).join("")}\n
\n \n \n \n \n ${s?"":``}\n \n \n ${s?``:""}\n \n \n \n ${s?"":``}\n \n ${t.items.map((e=>{const t=function(e,t){n(2,arguments);var r=A(t);return L(e,-r)}(new Date(e.createDate),1).toISOString().split(".")[0]+"Z",a=r.items.find((e=>e.createDate===t));let i=``;return!s&&e.tribe?i+=``:s||(i+=""),i+=`\n \n \n ${s?`\n \n `:""}\n \n \n \n ${s?"":`\n \n `}\n `,i})).join("")}\n \n
\n ${P.date}\n ${P.tribe}\n ${P.points}\n \n ${P.villages}\n ${P.members}\n ${P.od}\n \n ${P.oda}\n \n ${P.odd}\n ${P.ods}
${w(e.createDate,{year:"numeric",month:"2-digit",day:"2-digit"})}${e.tribe.tag}-\n ${e.points.toLocaleString()} (${e.rank})\n \n ${e.totalVillages.toLocaleString()}\n \n ${e.totalMembers}\n \n ${e.scoreTotal.toLocaleString()} (${e.rankTotal})\n \n ${e.scoreAtt.toLocaleString()} (${e.rankAtt})\n \n ${e.scoreDef.toLocaleString()} (${e.rankDef})\n \n ${e.scoreSup.toLocaleString()} (${e.rankSup})\n
\n `;$({e:e,title:P.title,id:"history",html:l}),document.querySelectorAll("#historyPagination a").forEach((e=>{e.addEventListener("click",o)}))},O=e=>parseInt(new URLSearchParams(e).get("id"));const R=(e="",t=0)=>`http://www.twstats.com/in/${e}/player/${t}`,x=(e="",t="",n=0,r="")=>`${((e="",t="")=>`https://${e}.tribalwarshelp.com/server/${t}`)(e,t)}/${r}/${n}`,H=(e="",t="",n=0)=>x(e,t,n,"player"),C=window.location.host.split(".")[0],z=((e="")=>e.substr(0,2))(C),G=O(window.location.search),q="kichiyaki_extended_tribe_profile"+G;let _="points";const N=document.querySelector("#content_value"),I=document.querySelector("#content_value > table:nth-child(3) > tbody > tr > td:nth-child(1) > table > tbody"),F=I,V=document.querySelector("#content_value > table:nth-child(3) > tbody > tr > td:nth-child(2)"),B=N.querySelector("h3").nextElementSibling.querySelector("tbody"),W=d[window.game_data.locale]||d.en_DK,K=()=>((e,t={})=>{const n=localStorage.getItem(e);let r=t;return n&&(r=JSON.parse(n)),r})(q),U=(e={})=>{var t,n;t=q,n=e,localStorage.setItem(t,JSON.stringify(n))},Y=()=>{const e=[];return B.querySelectorAll("a").forEach((t=>{const n=t.getAttribute("href");n.includes("info_player")&&e.push(O(n))})),e},Z=({tribe:e,dailyTribeStats:t,players:n})=>{[{title:W.createdAt+":",data:w(e.createdAt),id:"created_at"},{title:W.dominance+":",data:e.dominance.toFixed(2)+"%",id:"dominance"},{title:W.bestRank+":",data:e.bestRank+" "+`(${w(e.bestRankAt)})`,id:"best_rank"},{title:W.mostPoints+":",data:e.mostPoints.toLocaleString()+" "+`(${w(e.mostPointsAt)})`,id:"most_points"},{title:W.mostVillages+":",data:e.mostVillages+" "+`(${w(e.mostVillagesAt)})`,id:"most_villages"}].forEach((e=>{(({title:e,data:t,id:n})=>{let r=document.querySelector("#"+n);r||(r=document.createElement("tr"),r.id=n,r.appendChild(document.createElement("td")),r.appendChild(document.createElement("td")),I.append(r)),r.children[0].innerHTML=e,r.children[1].innerHTML=t})(e)})),t&&t.items.length>0&&((e,t)=>{let n=e.querySelector("#todaysStats");n||(n=document.createElement("div"),n.id="todaysStats",n.width="100%",e.prepend(n));const r=!(null==t.rankSup);n.innerHTML=`\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ${r?"":`\n \n \n `}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ${r?`\n \n \n \n \n \n \n `:""}\n \n \n \n \n \n \n \n \n \n
\n ${h.title}\n
\n ${h.points}:\n \n ${Math.abs(t.points).toLocaleString()}\n
\n ${h.rank}:\n \n ${Math.abs(t.rank)}\n
\n ${h.villages}:\n \n ${Math.abs(t.villages).toLocaleString()}\n
\n ${h.members}:\n \n ${Math.abs(t.members)}\n
\n ${h.oda}:\n \n ${Math.abs(t.scoreAtt).toLocaleString()}\n
\n ${h.odaRank}:\n \n ${Math.abs(t.rankAtt)}\n
\n ${h.odd}:\n \n ${Math.abs(t.scoreDef).toLocaleString()}\n
\n ${h.oddRank}:\n \n ${Math.abs(t.rankDef)}\n
\n ${h.ods}:\n \n ${Math.abs(t.scoreSup).toLocaleString()}\n
\n ${h.odsRank}:\n \n ${Math.abs(t.rankSup)}\n
\n ${h.od}:\n \n ${Math.abs(t.scoreTotal).toLocaleString()}\n
\n ${h.odRank}:\n \n ${Math.abs(t.rankTotal)}\n
\n `})(V,t.items[0]),n&&n.items.length>0&&(e=>{B.parentElement.style.width="100%",N.append(B.parentElement);const t=B.querySelector("tr:first-child");11!==t.children.length&&[W.oda,W.odd,W.ods,W.od,W.dailyGrowth,W.playerLinks].forEach((e=>{const n=document.createElement("th");n.innerHTML=e,t.appendChild(n)})),B.querySelectorAll("tr").forEach((t=>{const n=t.querySelector("a");if(!n)return;const r=O(n.getAttribute("href")),a=e.items.find((e=>e.id===r));a&&[[a.scoreAtt,a.rankAtt],[a.scoreDef,a.rankDef],[a.scoreSup,a.rankSup],[a.scoreTotal,a.rankTotal],a.dailyGrowth,[{link:H(z,C,a.id),label:"TWHelp"},{link:R(C,a.id),label:"TWStats"}]].forEach(((e,n)=>{let r=t.children[5+n];r||(r=document.createElement("td"),t.appendChild(r)),Array.isArray(e)?"number"==typeof e[0]?r.innerHTML=`${e[0].toLocaleString()} (${e[1]})`:e[0].link&&(r.innerHTML=e.map((({link:e,label:t})=>`${t}`)).join("
")):"number"==typeof e&&(r.innerHTML=e.toLocaleString())}))}))})(n)},J=async e=>{e.preventDefault();const t=p(e.target);if(!isNaN(t)){const n=await c({query:"\n query ennoblements($server: String!, $limit: Int, $offset: Int, $sort: [String!], $filter: EnnoblementFilter!) {\n ennoblements(server: $server, limit: $limit, offset: $offset, sort: $sort, filter: $filter) {\n total\n items {\n village {\n id\n name\n x\n y\n }\n oldOwner {\n id\n name\n }\n oldOwnerTribe {\n id\n tag\n }\n newOwner {\n id\n name\n }\n newOwnerTribe {\n id\n tag\n }\n ennobledAt\n }\n }\n }\n",variables:{filter:{or:{oldOwnerTribeID:[G],newOwnerTribeID:[G]}},offset:15*(t-1),limit:15,sort:["ennobledAt DESC"],server:C}});T(e,n.ennoblements,{currentPage:t,limit:15,onPageChange:J})}},X=async e=>{e.preventDefault();const t=p(e.target);if(!isNaN(t))try{const n={tribeID:[G]},{tribeHistory:r,dailyTribeStats:a}=await c({query:"\nquery tribeHistoryAndTribeDailyStats($server: String!,\n $tribeHistoryFilter: TribeHistoryFilter!,\n $dailyTribeStatsFilter: DailyTribeStatsFilter!,\n $sort: [String!],\n $offset: Int,\n $limit: Int) {\n tribeHistory(server: $server, sort: $sort, limit: $limit, offset: $offset, filter: $tribeHistoryFilter) {\n total\n items {\n totalVillages\n points\n rank\n scoreAtt\n rankAtt\n scoreDef\n rankDef\n scoreTotal\n rankTotal\n createDate\n totalMembers\n }\n }\n dailyTribeStats(server: $server, sort: $sort, limit: $limit, offset: $offset, filter: $dailyTribeStatsFilter) {\n items {\n points\n scoreAtt\n scoreDef\n scoreTotal\n villages\n createDate\n members\n }\n }\n}\n",variables:{server:C,offset:15*(t-1),limit:15,sort:["createDate DESC"],tribeHistoryFilter:n,dailyTribeStatsFilter:n}});j(e,r,a,{currentPage:t,limit:15,tribe:!0,onPageChange:X})}catch(e){console.log("couldnt load tribe history",e)}},Q=e=>e>0?"color: #000; background-color: #0f0":e<0?"color: #000; background-color: #f00":"color: #000; background-color: #808080",ee=e=>{switch(_){case"points":return e.points;case"villages":return e.villages;case"od":return e.scoreTotal;case"oda":return e.scoreAtt;case"odd":return e.scoreDef;case"ods":return e.scoreSup;default:return 0}},te=e=>{const t=[...new Set(e.items.map((e=>e.createDate)))].reverse();return`\n \n \n ${W.player}\n ${t.map((e=>`${w(e,{year:"numeric",month:"2-digit",day:"2-digit"})}`)).join("")}\n ${W.total}\n \n ${Y().map((n=>{const r=e.items.filter((e=>e.player&&e.player.id===n)).reverse();let a;r.length>0&&(a=r[0].player);const i=[];let o=0;for(let e of t){const t=r.find((t=>t.createDate===e));let n=0;t&&(n=ee(t)),o+=n,i.push(`${n.toLocaleString()}`)}return`\n \n ${a?`${a.name}`:"-"}\n \n ${i.join("")}\n ${o.toLocaleString()}\n `})).join("")}\n \n `},ne=(e,t)=>{const n=`\n
\n \n \n
\n \n ${te(t)}\n
\n `;$({e:e,title:W.membersGrowth,id:"mg",html:n}),document.querySelector("#membersGrowthForm").addEventListener("submit",(e=>t=>{t.preventDefault(),_=t.target[0].value,document.querySelector("#membersGrowth").innerHTML=te(e)})(t))},re=async({createDateLTE:e,createDateGT:t}={})=>{const a=Y(),i=a.length*function(e,t){n(2,arguments);var a=r(e),i=r(t),o=l(a,i),d=Math.abs(s(a,i));a.setDate(a.getDate()-o*d);var c=Number(l(a,i)===-o),g=o*(d-c);return 0===g?0:g}(e,t),o={playerID:a,createDateLTE:e,createDateGT:t};return await c({query:"\nquery tribeMembersDailyStats($server: String!,\n $filter: DailyPlayerStatsFilter!,\n $limit: Int,\n $sort: [String!]) {\n dailyPlayerStats(server: $server, limit: $limit, sort: $sort, filter: $filter) {\n items {\n player {\n id\n name\n }\n points\n scoreAtt\n scoreDef\n scoreSup\n scoreTotal\n villages\n createDate\n }\n }\n}\n",variables:{filter:o,limit:i,sort:["createDate DESC"],server:C}})},ae=async e=>{e.preventDefault();const t=new Date;t.setDate(t.getDate()-7);const n=await re({createDateLTE:new Date,createDateGT:t});ne(e,n.dailyPlayerStats)},ie=async e=>{e.preventDefault();const t=p(e.target);if(!isNaN(t)){((e,t,n)=>{const r=`\n
\n ${u({total:n.total,limit:15,currentPage:t}).join("")}\n
\n \n \n \n \n \n \n \n ${n.items.map((e=>{let t=``;return e.player?t+=``:t+="",t+=``,t+""})).join("")}\n \n
\n ${W.date}\n \n ${W.player}\n \n ${W.act}\n
${w(e.createdAt)}${e.player.name}-${e.newTribe&&e.newTribe.id===G?W.joined:W.left}
\n `;$({e:e,title:W.tribeChanges,id:"tribeChanges",html:r}),document.querySelectorAll("#tribeChangesPagination a").forEach((e=>{e.addEventListener("click",ie)}))})(e,t,(await c({query:"\n query tribeChanges($server: String!, $limit: Int, $offset: Int, $sort: [String!], $filter: TribeChangeFilter!) {\n tribeChanges(server: $server, offset: $offset, limit: $limit, sort: $sort, filter: $filter) {\n total\n items {\n player {\n id\n name\n }\n newTribe {\n id\n tag\n }\n createdAt\n }\n }\n }\n",variables:{filter:{or:{oldTribeID:[G],newTribeID:[G]}},offset:15*(t-1),limit:15,sort:["createdAt DESC"],server:C}})).tribeChanges)}},oe=e=>{e.preventDefault();const t=(()=>{const e=[];return B.querySelectorAll("a").forEach((t=>{t.getAttribute("href").includes("info_player")&&e.push(t.innerText.trim())})),e})(),n=[];for(let e=0;e{r+=`

${t+1}.

\n `})),Dialog.show("mailinglist",r)},se=async(e,t=!1)=>{try{const n=await c({variables:e,query:`\n query villages($server: String!, $sort: [String!], $limit: Int, $offset: Int, $filter: VillageFilter!) {\n villages(server: $server, sort: $sort, limit: $limit, offset: $offset, filter: $filter) {\n ${t?"total":""}\n items {\n id\n x\n y\n }\n }\n }\n `});if(n&&n.villages&&Array.isArray(n.villages.items))return n.villages}catch(e){console.log("load villages",e)}return{total:0,items:[]}},le=(e=0,t=0)=>e&&t?Dialog.show("loading",`Loaded: ${e}/${t}`):Dialog.show("loading","Loading..."),de=async e=>{e.preventDefault();let n=parseInt(e.target[4].value);const r={filter:{xLTE:parseInt(e.target[0].value),xGTE:parseInt(e.target[1].value),yLTE:parseInt(e.target[2].value),yGTE:parseInt(e.target[3].value),playerID:Y()},limit:isNaN(n)||!n?0:n,sort:["id ASC"],server:C};le();let{total:a,items:i}=await se(r,!0);const o=i.length;if(0!==n&&no)for(let e=o;e${i.map((e=>`${e.x}|${e.y}`)).join(" ")}\n `)},ce=e=>{e.preventDefault();Dialog.show("exportTribeVillages",'\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n \n
\n
\n '),document.querySelector("#etvForm").addEventListener("submit",de)},ge=e=>{const t=document.createElement("td");t.colSpan="2",t.append(e);const n=document.createElement("tr");return n.appendChild(t),n},me=()=>{const e=document.createElement("a");e.href=((e="",t="",n=0)=>x(e,t,n,"tribe"))(z,C,G),e.innerHTML=W.action.linkToTWHelp,F.appendChild(ge(e));const t=document.createElement("a");t.href="#",m(t,"1"),t.innerHTML=W.action.showEnnoblements,t.addEventListener("click",J),F.appendChild(ge(t));const n=document.createElement("a");n.href="#",m(n,"1"),n.innerHTML=W.action.showHistory,n.addEventListener("click",X),F.appendChild(ge(n));const r=document.createElement("a");r.href="#",m(r,"1"),r.innerHTML=W.action.showTribeChanges,r.addEventListener("click",ie),F.appendChild(ge(r));const a=document.createElement("a");a.href="#",a.innerHTML=W.action.showMembersGrowth,a.addEventListener("click",ae),F.appendChild(ge(a));const i=document.createElement("a");i.href="#",i.innerHTML=W.action.generateMailingList,i.addEventListener("click",oe),F.appendChild(ge(i));const o=document.createElement("a");o.href="#",o.innerHTML=W.action.exportVillages,o.addEventListener("click",ce),F.appendChild(ge(o))};!async function(){try{me();const e=K();e&&e.tribe&&Z(e);const t=await(async()=>{const e=Y(),t=await c({query:"\n query tribe(\n $server: String!\n $id: Int!\n $dailyTribeStatsSort: [String!]\n $dailyTribeStatsLimit: Int\n $playersLimit: Int\n $playersSort: [String!]\n $playerFilter: PlayerFilter!\n $dailyTribeStatsFilter: DailyTribeStatsFilter!\n ) {\n tribe(server: $server, id: $id) {\n id\n bestRank\n bestRankAt\n mostPoints\n mostPointsAt\n mostVillages\n mostVillagesAt\n createdAt\n dominance\n }\n dailyTribeStats(\n server: $server\n limit: $dailyTribeStatsLimit\n sort: $dailyTribeStatsSort\n filter: $dailyTribeStatsFilter\n ) {\n items {\n rank\n rankAtt\n rankDef\n rankTotal\n points\n scoreAtt\n scoreAtt\n scoreDef\n scoreTotal\n villages\n members\n }\n }\n players(server: $server, sort: $playersSort, filter: $playerFilter, limit: $playersLimit) {\n items {\n id\n rankAtt\n rankDef\n rankSup\n rankTotal\n scoreAtt\n scoreAtt\n scoreDef\n scoreSup\n scoreTotal\n dailyGrowth\n }\n }\n }\n",variables:{server:C,id:G,dailyTribeStatsSort:["createDate DESC"],dailyTribeStatsLimit:1,dailyTribeStatsFilter:{tribeID:[G]},playersSort:["rank ASC"],playersLimit:e.length,playerFilter:{id:e}}});return U(t),t})();t&&Z(t)}catch(e){console.log("extended tribe profile",e)}}()}();