Jump to content

User:Eejit43/scripts/aligner.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
// <nowiki>
// Note: This script was compiled and minified from TypeScript. For a more readable version, see https://github.com/Eejit43/wikipedia-scripts/blob/main/scripts/aligner.ts

"use strict";(()=>{mw.config.get("wgNamespaceNumber")<0||mw.config.get("wgIsProbablyEditable")&&mw.loader.using(["mediawiki.util","jquery.textSelection"],()=>{mw.util.addCSS(`
#align-parameters {
    display: none;
}

#content:has(#wpTextbox1) #align-parameters {
    display: unset;
}`),mw.util.addPortletLink(mw.config.get("skin")==="minerva"?"p-navigation":"p-cactions","#","Align template parameters","align-parameters").addEventListener("click",s=>{s.preventDefault();let n=$("#wpTextbox1");if(n.length===0)return mw.notify("Edit box not found!",{type:"error",autoHideSeconds:"short"});let e=n.textSelection("getContents");if(!e)return mw.notify("Edit box value not found!",{type:"error",autoHideSeconds:"short"});let o=0;function S(t){if(t==="")return mw.notify("Infobox not found!",{type:"error",autoHideSeconds:"short"});if(a!==0)return mw.notify("Template was not properly closed!",{type:"error",autoHideSeconds:"short"});let r=0,l=String(t),f=t.split(`
`),w=[];for(let g of f){let u=x(g.trim());for(let p of u){let h=p.trim();if(!h.startsWith("|")||h.split("=").length!==2){w.push(h);continue}let[m,L]=y(h);m=m.slice(1).trim(),m.length>r&&(r=m.length),w.push("| "+m+"="+L)}}let c="";r+=2;for(let g of w){let u=y(g);if(u.length<2){c+=g+=`
`;continue}let p=u[0].trim();for(;p.length<r;)p+=" ";c+=p+" = "+u[1].trim()+`
`}c.endsWith(`
`)&&(c=c.slice(0,-1)),n.textSelection("setContents",n.textSelection("getContents").replace(l,c).replace(/\n+$/,"")),n.textSelection("setSelection",{start:0})}let d="",a=0,b=["infobox","speciesbox","taxobox","automatic taxobox","osm location map","motorsport season"];for(let t=0;t<e.length;t++){let r=!1;for(let l of b){l="{{"+l;let f=l.length;e.length-t>f&&(e.slice(t,t+f).toLowerCase()===l||e.slice(t,t+f).toLowerCase()===l.replace(" ","_"))&&(a++,d+=e[t],r=!0)}a>=1&&!r&&(d+=e[t],e[t]==="{"?a++:e[t]==="}"&&(a--,a===0&&(o++,S(d),d="")))}o===0?mw.notify("No templates found to align!",{type:"warn",autoHideSeconds:"short"}):mw.notify(`Successfully aligned ${o} template${o>1?"s":""}!`,{type:"success",autoHideSeconds:"short"})})});function y(i){let s=i.split("=");return s.length<=2?s:[s.shift(),s.join("=")]}function x(i){if(i.startsWith("{{")&&i.endsWith("}}"))return i.includes("|")?["{{"+x(i.slice(2,-2))[0],...x(i.slice(2,-2)).slice(1),"}}"]:[i];let s=[],n="",e=0;for(let o of i)n+=o,o==="{"||o==="["?e+=1:o===""||o==="]"?e--:o==="|"&&e===0&&n.trim()!=="|"&&(s.push(n.slice(0,-1).trim()),n="|");return s.push(n),s}})();

// </nowiki>
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc2NyaXB0cy9hbGlnbmVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIoKCkgPT4ge1xuICAgIGlmIChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpIDwgMCkgcmV0dXJuOyAvLyBEb24ndCBydW4gaW4gdmlydHVhbCBuYW1lc3BhY2VzXG4gICAgaWYgKCFtdy5jb25maWcuZ2V0KCd3Z0lzUHJvYmFibHlFZGl0YWJsZScpKSByZXR1cm47IC8vIERvbid0IHJ1biBpZiB1c2VyIGNhbid0IGVkaXQgcGFnZVxuXG4gICAgbXcubG9hZGVyLnVzaW5nKFsnbWVkaWF3aWtpLnV0aWwnLCAnanF1ZXJ5LnRleHRTZWxlY3Rpb24nXSwgKCkgPT4ge1xuICAgICAgICBtdy51dGlsLmFkZENTUyhgXG4jYWxpZ24tcGFyYW1ldGVycyB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuI2NvbnRlbnQ6aGFzKCN3cFRleHRib3gxKSAjYWxpZ24tcGFyYW1ldGVycyB7XG4gICAgZGlzcGxheTogdW5zZXQ7XG59YCk7XG5cbiAgICAgICAgY29uc3QgbGluayA9IG13LnV0aWwuYWRkUG9ydGxldExpbmsoXG4gICAgICAgICAgICBtdy5jb25maWcuZ2V0KCdza2luJykgPT09ICdtaW5lcnZhJyA/ICdwLW5hdmlnYXRpb24nIDogJ3AtY2FjdGlvbnMnLFxuICAgICAgICAgICAgJyMnLFxuICAgICAgICAgICAgJ0FsaWduIHRlbXBsYXRlIHBhcmFtZXRlcnMnLFxuICAgICAgICAgICAgJ2FsaWduLXBhcmFtZXRlcnMnLFxuICAgICAgICApITtcblxuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICBjb25zdCBlZGl0Qm94ID0gJCgnI3dwVGV4dGJveDEnKTtcbiAgICAgICAgICAgIGlmIChlZGl0Qm94Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG13Lm5vdGlmeSgnRWRpdCBib3ggbm90IGZvdW5kIScsIHsgdHlwZTogJ2Vycm9yJywgYXV0b0hpZGVTZWNvbmRzOiAnc2hvcnQnIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB0ZXh0ID0gZWRpdEJveC50ZXh0U2VsZWN0aW9uKCdnZXRDb250ZW50cycpO1xuICAgICAgICAgICAgaWYgKCF0ZXh0KSByZXR1cm4gbXcubm90aWZ5KCdFZGl0IGJveCB2YWx1ZSBub3QgZm91bmQhJywgeyB0eXBlOiAnZXJyb3InLCBhdXRvSGlkZVNlY29uZHM6ICdzaG9ydCcgfSk7XG5cbiAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmluaXNoZXMgcHJvY2Vzc2luZyBhbiBpbmZvYm94IGFuZCB1cGRhdGVzIHRoZSBlZGl0IGJveCBjb250ZW50cy5cbiAgICAgICAgICAgICAqIEBwYXJhbSB0ZW1wbGF0ZSBUaGUgdGVtcGxhdGUgc3RyaW5nIHRvIHByb2Nlc3MuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NJbmZvYm94KHRlbXBsYXRlOiBzdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBpZiAodGVtcGxhdGUgPT09ICcnKSByZXR1cm4gbXcubm90aWZ5KCdJbmZvYm94IG5vdCBmb3VuZCEnLCB7IHR5cGU6ICdlcnJvcicsIGF1dG9IaWRlU2Vjb25kczogJ3Nob3J0JyB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChvcGVuICE9PSAwKSByZXR1cm4gbXcubm90aWZ5KCdUZW1wbGF0ZSB3YXMgbm90IHByb3Blcmx5IGNsb3NlZCEnLCB7IHR5cGU6ICdlcnJvcicsIGF1dG9IaWRlU2Vjb25kczogJ3Nob3J0JyB9KTtcblxuICAgICAgICAgICAgICAgIGxldCBtYXhMZW5ndGggPSAwO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ1RlbXBsYXRlID0gU3RyaW5nKHRlbXBsYXRlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lcyA9IHRlbXBsYXRlLnNwbGl0KCdcXG4nKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdMaW5lcyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtZXRlcnNJbkxpbmUgPSBzcGxpdEludG9QYXJhbWV0ZXJzKGxpbmUudHJpbSgpKTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhcmFtZXRlciBvZiBwYXJhbWV0ZXJzSW5MaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gcGFyYW1ldGVyLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGluZS5zdGFydHNXaXRoKCd8JykgfHwgbGluZS5zcGxpdCgnPScpLmxlbmd0aCAhPT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpbmVzLnB1c2gobGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBbZmlyc3RQYXJ0LCBsYXN0UGFydF0gPSBzcGxpdFBhcmFtZXRlcihsaW5lKSBhcyBbc3RyaW5nLCBzdHJpbmddOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByZWZlci1jb25zdFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RQYXJ0ID0gZmlyc3RQYXJ0LnNsaWNlKDEpLnRyaW0oKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0UGFydC5sZW5ndGggPiBtYXhMZW5ndGgpIG1heExlbmd0aCA9IGZpcnN0UGFydC5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpbmVzLnB1c2goJ3wgJyArIGZpcnN0UGFydCArICc9JyArIGxhc3RQYXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBvdXRwdXQgPSAnJztcblxuICAgICAgICAgICAgICAgIG1heExlbmd0aCArPSAyOyAvLyB0byBpbmNsdWRlICd8ICdcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGxpbmUgb2YgbmV3TGluZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFydHMgPSBzcGxpdFBhcmFtZXRlcihsaW5lKSBhcyBbc3RyaW5nLCBzdHJpbmddO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gbGluZSArPSAnXFxuJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0UGFydCA9IHBhcnRzWzBdLnRyaW0oKTtcblxuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZmlyc3RQYXJ0Lmxlbmd0aCA8IG1heExlbmd0aCkgZmlyc3RQYXJ0ICs9ICcgJztcblxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gZmlyc3RQYXJ0ICsgJyA9ICcgKyBwYXJ0c1sxXS50cmltKCkgKyAnXFxuJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAob3V0cHV0LmVuZHNXaXRoKCdcXG4nKSkgb3V0cHV0ID0gb3V0cHV0LnNsaWNlKDAsIC0xKTtcblxuICAgICAgICAgICAgICAgIGVkaXRCb3gudGV4dFNlbGVjdGlvbihcbiAgICAgICAgICAgICAgICAgICAgJ3NldENvbnRlbnRzJyxcbiAgICAgICAgICAgICAgICAgICAgZWRpdEJveC50ZXh0U2VsZWN0aW9uKCdnZXRDb250ZW50cycpLnJlcGxhY2Uob3JpZ1RlbXBsYXRlLCBvdXRwdXQpLnJlcGxhY2UoL1xcbiskLywgJycpLFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBlZGl0Qm94LnRleHRTZWxlY3Rpb24oJ3NldFNlbGVjdGlvbicsIHsgc3RhcnQ6IDAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCB0ZW1wbGF0ZSA9ICcnO1xuICAgICAgICAgICAgbGV0IG9wZW4gPSAwO1xuXG4gICAgICAgICAgICBjb25zdCBzZWFyY2hlcyA9IFsnaW5mb2JveCcsICdzcGVjaWVzYm94JywgJ3RheG9ib3gnLCAnYXV0b21hdGljIHRheG9ib3gnLCAnb3NtIGxvY2F0aW9uIG1hcCcsICdtb3RvcnNwb3J0IHNlYXNvbiddO1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGV4dC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgICAgICBsZXQgZm9vID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICBmb3IgKGxldCBzZWFyY2ggb2Ygc2VhcmNoZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoID0gJ3t7JyArIHNlYXJjaDtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2VhcmNoTGVuZ3RoID0gc2VhcmNoLmxlbmd0aDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Lmxlbmd0aCAtIGluZGV4ID4gc2VhcmNoTGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAodGV4dC5zbGljZShpbmRleCwgaW5kZXggKyBzZWFyY2hMZW5ndGgpLnRvTG93ZXJDYXNlKCkgPT09IHNlYXJjaCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQuc2xpY2UoaW5kZXgsIGluZGV4ICsgc2VhcmNoTGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09PSBzZWFyY2gucmVwbGFjZSgnICcsICdfJykpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3BlbisrO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUgKz0gdGV4dFtpbmRleF07XG4gICAgICAgICAgICAgICAgICAgICAgICBmb28gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG9wZW4gPj0gMSAmJiAhZm9vKSB7XG4gICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlICs9IHRleHRbaW5kZXhdO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZXh0W2luZGV4XSA9PT0gJ3snKSBvcGVuKys7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRleHRbaW5kZXhdID09PSAnfScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZW4tLTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wZW4gPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NJbmZvYm94KHRlbXBsYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY291bnQgPT09IDApIG13Lm5vdGlmeSgnTm8gdGVtcGxhdGVzIGZvdW5kIHRvIGFsaWduIScsIHsgdHlwZTogJ3dhcm4nLCBhdXRvSGlkZVNlY29uZHM6ICdzaG9ydCcgfSk7XG4gICAgICAgICAgICBlbHNlIG13Lm5vdGlmeShgU3VjY2Vzc2Z1bGx5IGFsaWduZWQgJHtjb3VudH0gdGVtcGxhdGUke2NvdW50ID4gMSA/ICdzJyA6ICcnfSFgLCB7IHR5cGU6ICdzdWNjZXNzJywgYXV0b0hpZGVTZWNvbmRzOiAnc2hvcnQnIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn0pKCk7XG5cbi8qKlxuICogU3BsaXRzIGEgc3RyaW5nIGludG8gYW4gQXJyYXkgY29udGFpbmluZyB0aGUga2V5IGFuZCB2YWx1ZS5cbiAqIEBwYXJhbSBzdHJpbmcgVGhlIGZ1bGwgc3RyaW5nIHRvIHNwbGl0LlxuICovXG5mdW5jdGlvbiBzcGxpdFBhcmFtZXRlcihzdHJpbmc6IHN0cmluZykge1xuICAgIGNvbnN0IHNwbGl0ID0gc3RyaW5nLnNwbGl0KCc9Jyk7XG4gICAgaWYgKHNwbGl0Lmxlbmd0aCA8PSAyKSByZXR1cm4gc3BsaXQ7XG5cbiAgICBjb25zdCBmaXJzdCA9IHNwbGl0LnNoaWZ0KCk7XG4gICAgcmV0dXJuIFtmaXJzdCwgc3BsaXQuam9pbignPScpXTtcbn1cblxuLyoqXG4gKiBTcGxpdHMgYSB0ZW1wbGF0ZSBpbnRvIGFuIEFycmF5IHdpdGggYWxsIHBhcmFtZXRlcnMuXG4gKiBAcGFyYW0gc3RyaW5nIFRoZSB0ZW1wbGF0ZSB0byBwcm9jZXNzLlxuICovXG5mdW5jdGlvbiBzcGxpdEludG9QYXJhbWV0ZXJzKHN0cmluZzogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aCgne3snKSAmJiBzdHJpbmcuZW5kc1dpdGgoJ319JykpIHtcbiAgICAgICAgaWYgKCFzdHJpbmcuaW5jbHVkZXMoJ3wnKSkgcmV0dXJuIFtzdHJpbmddO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBzcGxpdEludG9QYXJhbWV0ZXJzKHN0cmluZy5zbGljZSgyLCAtMikpO1xuICAgICAgICByZXR1cm4gWyd7eycgKyByZXN1bHRzWzBdLCAuLi5zcGxpdEludG9QYXJhbWV0ZXJzKHN0cmluZy5zbGljZSgyLCAtMikpLnNsaWNlKDEpLCAnfX0nXTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbWV0ZXJzID0gW107XG4gICAgbGV0IHRlbXBvcmFyeSA9ICcnO1xuICAgIGxldCBvcGVuID0gMDtcblxuICAgIGZvciAoY29uc3QgY2hhciBvZiBzdHJpbmcpIHtcbiAgICAgICAgdGVtcG9yYXJ5ICs9IGNoYXI7XG5cbiAgICAgICAgaWYgKGNoYXIgPT09ICd7JyB8fCBjaGFyID09PSAnWycpIG9wZW4gKz0gMTtcbiAgICAgICAgZWxzZSBpZiAoY2hhciA9PT0gJycgfHwgY2hhciA9PT0gJ10nKSBvcGVuLS07XG4gICAgICAgIGVsc2UgaWYgKGNoYXIgPT09ICd8JyAmJiBvcGVuID09PSAwICYmIHRlbXBvcmFyeS50cmltKCkgIT09ICd8Jykge1xuICAgICAgICAgICAgcGFyYW1ldGVycy5wdXNoKHRlbXBvcmFyeS5zbGljZSgwLCAtMSkudHJpbSgpKTtcbiAgICAgICAgICAgIHRlbXBvcmFyeSA9ICd8JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBhcmFtZXRlcnMucHVzaCh0ZW1wb3JhcnkpO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcnM7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7bUJBQ1EsR0FBRyxPQUFPLElBQUksbUJBQW1CLEVBQUksR0FDcEMsR0FBRyxPQUFPLElBQUksc0JBQXNCLEdBRXpDLEdBQUcsT0FBTyxNQUFNLENBQUMsaUJBQWtCLHNCQUFzQixFQUFHLElBQU0sQ0FDOUQsR0FBRyxLQUFLLE9BQU87QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxFQU9yQixFQUVtQixHQUFHLEtBQUssZUFDakIsR0FBRyxPQUFPLElBQUksTUFBTSxJQUFNLFVBQVksZUFBaUIsYUFDdkQsSUFDQSw0QkFDQSxrQkFDSixFQUVLLGlCQUFpQixRQUFVQSxHQUFVLENBQ3RDQSxFQUFNLGVBQWUsRUFFckIsSUFBTUMsRUFBVSxFQUFFLGFBQWEsRUFDL0IsR0FBSUEsRUFBUSxTQUFXLEVBQUcsT0FBTyxHQUFHLE9BQU8sc0JBQXVCLENBQUUsS0FBTSxRQUFTLGdCQUFpQixPQUFRLENBQUMsRUFFN0csSUFBTUMsRUFBT0QsRUFBUSxjQUFjLGFBQWEsRUFDaEQsR0FBSSxDQUFDQyxF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LE9BQVEsZ0JBQWlCLE9BQVEsQ0FBQyxFQUNoRyxHQUFHLE9BQU8sd0JBQXdCQSxDQUFLLFlBQVlBLEVBQVEsRUFBSSxJQUFNLEVBQUUsSUFBSyxDQUFFLEtBQU0sVUFBVyxnQkFBaUIsT0FBUSxDQUFDLENBQ2xJLENBQUMsQ0FDTCxDQUFDLEVBT0wsU0FBU2MsRUFBZVEsRUFBZ0IsQ0FDcEMsSUFBTUMsRUFBUUQsRUFBTyxNQUFNLEdBQUcsRUFDOUIsT0FBSUMsRUFBTSxRQUFVLEVBQVVBLEVBR3ZCLENBRE9BLEVBQU0sTUFBTSxFQUNYQSxFQUFNLEtBQUssR0FBRyxDQUFDLENBQ2xDLENBTUEsU0FBU2IsRUFBb0JZLEVBQTBCLENBQ25ELEdBQUlBLEVBQU8sV0FBVyxJQUFJLEdBQUtBLEVBQU8sU0FBUyxJQUFJLEVBQy9DLE9BQUtBLEVBQU8sU0FBUyxHQUFHLEVBR2pCLENBQUMsS0FEUVosRUFBb0JZLEVBQU8sTUFBTSxFQUFHLEVBQUUsQ0FBQyxFQUNoQyxDQUFDLEVBQUcsR0FBR1osRUFBb0JZLEVBQU8sTUFBTSxFQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFHLElBQUksRUFIbkQsQ0FBQ0EsQ0FBTSxFQU03QyxJQUFNRSxFQUFhLENBQUMsRUFDaEJDLEVBQVksR0FDWnRCLEVBQU8sRUFFWCxRQUFXdUIsS0FBUUosRUFDZkcsR0FBYUMsRUFFVEEsSUFBUyxLQUFPQSxJQUFTLElBQUt2QixHQUFRLEVBQ2pDdUIsSUFBUyxJQUFNQSxJQUFTLElBQUt2QixJQUM3QnVCLElBQVMsS0FBT3ZCLElBQVMsR0FBS3NCLEVBQVUsS0FBSyxJQUFNLE1BQ3hERCxFQUFXLEtBQUtDLEVBQVUsTUFBTSxFQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFDN0NBLEVBQVksS0FJcEIsT0FBQUQsRUFBVyxLQUFLQyxDQUFTLEVBRWxCRCxDQUNYIiwKICAibmFtZXMiOiBbImV2ZW50IiwgImVkaXRCb3giLCAidGV4dCIsICJjb3VudCIsICJwcm9jZXNzSW5mb2JveCIsICJ0ZW1wbGF0ZSIsICJvcGVuIiwgIm1heExlbmd0aCIsICJvcmlnVGVtcGxhdGUiLCAibGluZXMiLCAibmV3TGluZXMiLCAibGluZSIsICJwYXJhbWV0ZXJzSW5MaW5lIiwgInNwbGl0SW50b1BhcmFtZXRlcnMiLCAicGFyYW1ldGVyIiwgImZpcnN0UGFydCIsICJsYXN0UGFydCIsICJzcGxpdFBhcmFtZXRlciIsICJvdXRwdXQiLCAicGFydHMiLCAic2VhcmNoZXMiLCAiaW5kZXgiLCAiZm9vIiwgInNlYXJjaCIsICJzZWFyY2hMZW5ndGgiLCAic3RyaW5nIiwgInNwbGl0IiwgInBhcmFtZXRlcnMiLCAidGVtcG9yYXJ5IiwgImNoYXIiXQp9Cg==