User:Eejit43/scripts/aligner.js

// // 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(` display: none; }
 * 1) 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;const n=$("#wpTextbox1");if(n.length===0)return mw.notify("Edit box not found!",{type:"error",autoHideSeconds:"short"});const e=n.textSelection("getContents");if(!e)return mw.notify("Edit box value not found!",{type:"error",autoHideSeconds:"short"});let o=0;function w(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;const l=String(t),f=t.split(` `),x=[];for(const g of f){const u=splitIntoParameters(g.trim);for(const p of u){const h=p.trim;if(!h.startsWith("|")||h.split("=").length!==2){x.push(h);continue}let[m,S]=splitParameter(h);m=m.slice(1).trim,m.length>r&&(r=m.length),x.push("| "+m+"="+S)}}let c="";r+=2;for(let g of x){const u=splitParameter(g);if(u.length<2){c+=g+=` `;continue}let p=u[0].trim;for(p.lengthf&&(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++,w(d),d="")))}mw.notify(`Successfully aligned ${o} template${o>1?"s":""}!`,{type:"success",autoHideSeconds:"short"})})});function splitParameter(i){const s=i.split("=");return s.length<=2?s:[s.shift,s.join("=")]}function splitIntoParameters(i){if(i.startsWith(""))return i.includes("|")?[""]:[i];const s=[];let n="",e=0;for(const 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}
 * 1) content:has(#wpTextbox1) #align-parameters {

// //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc2NyaXB0cy9hbGlnbmVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIoKCkgPT4ge1xuICAgIGlmIChtdy5jb25maWcuZ2V0KCd3Z05hbWVzcGFjZU51bWJlcicpIDwgMCkgcmV0dXJuOyAvLyBEb24ndCBydW4gaW4gdmlydHVhbCBuYW1lc3BhY2VzXG4gICAgaWYgKCFtdy5jb25maWcuZ2V0KCd3Z0lzUHJvYmFibHlFZGl0YWJsZScpKSByZXR1cm47IC8vIERvbid0IHJ1biBpZiB1c2VyIGNhbid0IGVkaXQgcGFnZVxuXG4gICAgbXcubG9hZGVyLnVzaW5nKFsnbWVkaWF3aWtpLnV0aWwnLCAnanF1ZXJ5LnRleHRTZWxlY3Rpb24nXSwgKCkgPT4ge1xuICAgICAgICBtdy51dGlsLmFkZENTUyhgXG4jYWxpZ24tcGFyYW1ldGVycyB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuI2NvbnRlbnQ6aGFzKCN3cFRleHRib3gxKSAjYWxpZ24tcGFyYW1ldGVycyB7XG4gICAgZGlzcGxheTogdW5zZXQ7XG59YCk7XG5cbiAgICAgICAgY29uc3QgbGluayA9IG13LnV0aWwuYWRkUG9ydGxldExpbmsobXcuY29uZmlnLmdldCgnc2tpbicpID09PSAnbWluZXJ2YScgPyAncC1uYXZpZ2F0aW9uJyA6ICdwLWNhY3Rpb25zJywgJyMnLCAnQWxpZ24gdGVtcGxhdGUgcGFyYW1ldGVycycsICdhbGlnbi1wYXJhbWV0ZXJzJykhO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgICAgICBjb25zdCBlZGl0Qm94ID0gJCgnI3dwVGV4dGJveDEnKTtcbiAgICAgICAgICAgIGlmIChlZGl0Qm94Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG13Lm5vdGlmeSgnRWRpdCBib3ggbm90IGZvdW5kIScsIHsgdHlwZTogJ2Vycm9yJywgYXV0b0hpZGVTZWNvbmRzOiAnc2hvcnQnIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB0ZXh0ID0gZWRpdEJveC50ZXh0U2VsZWN0aW9uKCdnZXRDb250ZW50cycpO1xuICAgICAgICAgICAgaWYgKCF0ZXh0KSByZXR1cm4gbXcubm90aWZ5KCdFZGl0IGJveCB2YWx1ZSBub3QgZm91bmQhJywgeyB0eXBlOiAnZXJyb3InLCBhdXRvSGlkZVNlY29uZHM6ICdzaG9ydCcgfSk7XG5cbiAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmluaXNoZXMgcHJvY2Vzc2luZyBhbiBpbmZvYm94IGFuZCB1cGRhdGVzIHRoZSBlZGl0IGJveCBjb250ZW50cy5cbiAgICAgICAgICAgICAqIEBwYXJhbSB0ZW1wbGF0ZSBUaGUgdGVtcGxhdGUgc3RyaW5nIHRvIHByb2Nlc3MuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NJbmZvYm94KHRlbXBsYXRlOiBzdHJpbmcpIHtcbiAgICAgICAgICAgICAgICBpZiAodGVtcGxhdGUgPT09ICcnKSByZXR1cm4gbXcubm90aWZ5KCdJbmZvYm94IG5vdCBmb3VuZCEnLCB7IHR5cGU6ICdlcnJvcicsIGF1dG9IaWRlU2Vjb25kczogJ3Nob3J0JyB9KTtcblxuICAgICAgICAgICAgICAgIGlmIChvcGVuICE9PSAwKSByZXR1cm4gbXcubm90aWZ5KCdUZW1wbGF0ZSB3YXMgbm90IHByb3Blcmx5IGNsb3NlZCEnLCB7IHR5cGU6ICdlcnJvcicsIGF1dG9IaWRlU2Vjb25kczogJ3Nob3J0JyB9KTtcblxuICAgICAgICAgICAgICAgIGxldCBtYXhMZW5ndGggPSAwO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgb3JpZ1RlbXBsYXRlID0gU3RyaW5nKHRlbXBsYXRlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lcyA9IHRlbXBsYXRlLnNwbGl0KCdcXG4nKTtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdMaW5lcyA9IFtdO1xuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtZXRlcnNJbkxpbmUgPSBzcGxpdEludG9QYXJhbWV0ZXJzKGxpbmUudHJpbSgpKTtcblxuICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHBhcmFtZXRlciBvZiBwYXJhbWV0ZXJzSW5MaW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gcGFyYW1ldGVyLnRyaW0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbGluZS5zdGFydHNXaXRoKCd8JykgfHwgbGluZS5zcGxpdCgnPScpLmxlbmd0aCAhPT0gMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpbmVzLnB1c2gobGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBbZmlyc3RQYXJ0LCBsYXN0UGFydF0gPSBzcGxpdFBhcmFtZXRlcihsaW5lKSBhcyBbc3RyaW5nLCBzdHJpbmddOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByZWZlci1jb25zdFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RQYXJ0ID0gZmlyc3RQYXJ0LnNsaWNlKDEpLnRyaW0oKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0UGFydC5sZW5ndGggPiBtYXhMZW5ndGgpIG1heExlbmd0aCA9IGZpcnN0UGFydC5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpbmVzLnB1c2goJ3wgJyArIGZpcnN0UGFydCArICc9JyArIGxhc3RQYXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBvdXRwdXQgPSAnJztcblxuICAgICAgICAgICAgICAgIG1heExlbmd0aCArPSAyOyAvLyB0byBpbmNsdWRlICd8ICdcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGxpbmUgb2YgbmV3TGluZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFydHMgPSBzcGxpdFBhcmFtZXRlcihsaW5lKSBhcyBbc3RyaW5nLCBzdHJpbmddO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gbGluZSArPSAnXFxuJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0UGFydCA9IHBhcnRzWzBdLnRyaW0oKTtcblxuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoZmlyc3RQYXJ0Lmxlbmd0aCA8IG1heExlbmd0aCkgZmlyc3RQYXJ0ICs9ICcgJztcblxuICAgICAgICAgICAgICAgICAgICBvdXRwdXQgKz0gZmlyc3RQYXJ0ICsgJyA9ICcgKyBwYXJ0c1sxXS50cmltKCkgKyAnXFxuJztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAob3V0cHV0LmVuZHNXaXRoKCdcXG4nKSkgb3V0cHV0ID0gb3V0cHV0LnNsaWNlKDAsIC0xKTtcblxuICAgICAgICAgICAgICAgIGVkaXRCb3gudGV4dFNlbGVjdGlvbignc2V0Q29udGVudHMnLCBlZGl0Qm94LnRleHRTZWxlY3Rpb24oJ2dldENvbnRlbnRzJykucmVwbGFjZShvcmlnVGVtcGxhdGUsIG91dHB1dCkucmVwbGFjZSgvXFxuKyQvLCAnJykpO1xuXG4gICAgICAgICAgICAgICAgZWRpdEJveC50ZXh0U2VsZWN0aW9uKCdzZXRTZWxlY3Rpb24nLCB7IHN0YXJ0OiAwIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgdGVtcGxhdGUgPSAnJztcbiAgICAgICAgICAgIGxldCBvcGVuID0gMDtcblxuICAgICAgICAgICAgY29uc3Qgc2VhcmNoZXMgPSBbJ2luZm9ib3gnLCAnc3BlY2llc2JveCcsICd0YXhvYm94JywgJ2F1dG9tYXRpYyB0YXhvYm94JywgJ29zbSBsb2NhdGlvbiBtYXAnLCAnbW90b3JzcG9ydCBzZWFzb24nXTtcblxuICAgICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRleHQubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IGZvbyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgc2VhcmNoIG9mIHNlYXJjaGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaCA9ICd7eycgKyBzZWFyY2g7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaExlbmd0aCA9IHNlYXJjaC5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC5sZW5ndGggLSBpbmRleCA+IHNlYXJjaExlbmd0aCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgKHRleHQuc2xpY2UoaW5kZXgsIGluZGV4ICsgc2VhcmNoTGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09PSBzZWFyY2ggfHwgdGV4dC5zbGljZShpbmRleCwgaW5kZXggKyBzZWFyY2hMZW5ndGgpLnRvTG93ZXJDYXNlKCkgPT09IHNlYXJjaC5yZXBsYWNlKCcgJywgJ18nKSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVuKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZSArPSB0ZXh0W2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAob3BlbiA+PSAxICYmICFmb28pIHtcbiAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGUgKz0gdGV4dFtpbmRleF07XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRleHRbaW5kZXhdID09PSAneycpIG9wZW4rKztcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGV4dFtpbmRleF0gPT09ICd9Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3Blbi0tO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BlbiA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0luZm9ib3godGVtcGxhdGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG13Lm5vdGlmeShgU3VjY2Vzc2Z1bGx5IGFsaWduZWQgJHtjb3VudH0gdGVtcGxhdGUke2NvdW50ID4gMSA/ICdzJyA6ICcnfSFgLCB7IHR5cGU6ICdzdWNjZXNzJywgYXV0b0hpZGVTZWNvbmRzOiAnc2hvcnQnIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn0pKCk7XG5cbi8qKlxuICogU3BsaXRzIGEgc3RyaW5nIGludG8gYW4gQXJyYXkgY29udGFpbmluZyB0aGUga2V5IGFuZCB2YWx1ZS5cbiAqIEBwYXJhbSBzdHJpbmcgVGhlIGZ1bGwgc3RyaW5nIHRvIHNwbGl0LlxuICovXG5mdW5jdGlvbiBzcGxpdFBhcmFtZXRlcihzdHJpbmc6IHN0cmluZykge1xuICAgIGNvbnN0IHNwbGl0ID0gc3RyaW5nLnNwbGl0KCc9Jyk7XG4gICAgaWYgKHNwbGl0Lmxlbmd0aCA8PSAyKSByZXR1cm4gc3BsaXQ7XG5cbiAgICBjb25zdCBmaXJzdCA9IHNwbGl0LnNoaWZ0KCk7XG4gICAgcmV0dXJuIFtmaXJzdCwgc3BsaXQuam9pbignPScpXTtcbn1cblxuLyoqXG4gKiBTcGxpdHMgYSB0ZW1wbGF0ZSBpbnRvIGFuIEFycmF5IHdpdGggYWxsIHBhcmFtZXRlcnMuXG4gKiBAcGFyYW0gc3RyaW5nIFRoZSB0ZW1wbGF0ZSB0byBwcm9jZXNzLlxuICovXG5mdW5jdGlvbiBzcGxpdEludG9QYXJhbWV0ZXJzKHN0cmluZzogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGlmIChzdHJpbmcuc3RhcnRzV2l0aCgne3snKSAmJiBzdHJpbmcuZW5kc1dpdGgoJ319JykpIHtcbiAgICAgICAgaWYgKCFzdHJpbmcuaW5jbHVkZXMoJ3wnKSkgcmV0dXJuIFtzdHJpbmddO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdHMgPSBzcGxpdEludG9QYXJhbWV0ZXJzKHN0cmluZy5zbGljZSgyLCAtMikpO1xuICAgICAgICByZXR1cm4gWyd7eycgKyByZXN1bHRzWzBdLCAuLi5zcGxpdEludG9QYXJhbWV0ZXJzKHN0cmluZy5zbGljZSgyLCAtMikpLnNsaWNlKDEpLCAnfX0nXTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJhbWV0ZXJzID0gW107XG4gICAgbGV0IHRlbXBvcmFyeSA9ICcnO1xuICAgIGxldCBvcGVuID0gMDtcblxuICAgIGZvciAoY29uc3QgY2hhciBvZiBzdHJpbmcpIHtcbiAgICAgICAgdGVtcG9yYXJ5ICs9IGNoYXI7XG5cbiAgICAgICAgaWYgKGNoYXIgPT09ICd7JyB8fCBjaGFyID09PSAnWycpIG9wZW4gKz0gMTtcbiAgICAgICAgZWxzZSBpZiAoY2hhciA9PT0gJycgfHwgY2hhciA9PT0gJ10nKSBvcGVuLS07XG4gICAgICAgIGVsc2UgaWYgKGNoYXIgPT09ICd8JyAmJiBvcGVuID09PSAwICYmIHRlbXBvcmFyeS50cmltKCkgIT09ICd8Jykge1xuICAgICAgICAgICAgcGFyYW1ldGVycy5wdXNoKHRlbXBvcmFyeS5zbGljZSgwLCAtMSkudHJpbSgpKTtcbiAgICAgICAgICAgIHRlbXBvcmFyeSA9ICd8JztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBhcmFtZXRlcnMucHVzaCh0ZW1wb3JhcnkpO1xuXG4gICAgcmV0dXJuIHBhcmFtZXRlcnM7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7YUFDUSxHQUFHLE9BQU8sSUFBSSxtQkFBbUIsRUFBSSxHQUNwQyxHQUFHLE9BQU8sSUFBSSxzQkFBc0IsR0FFekMsR0FBRyxPQUFPLE1BQU0sQ0FBQyxpQkFBa0Isc0JBQXNCLEVBQUcsSUFBTSxDQUM5RCxHQUFHLEtBQUssT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBT3JCLEVBRW1CLEdBQUcsS0FBSyxlQUFlLEdBQUcsT0FBTyxJQUFJLE1BQU0sSUFBTSxVQUFZLGVBQWlCLGFBQWMsSUFBSyw0QkFBNkIsa0JBQWtCLEVBQ3hKLGlCQUFpQixRQUFVQSxHQUFVLENBQ3RDQSxFQUFNLGVBQWUsRUFFckIsTUFBTUMsRUFBVSxFQUFFLGFBQWEsRUFDL0IsR0FBSUEsRUFBUSxTQUFXLEVBQUcsT0FBTyxHQUFHLE9BQU8sc0JBQXVCLENBQUUsS0FBTSxRQUFTLGdCQUFpQixPQUFRLENBQUMsRUFFN0csTUFBTUMsRUFBT0QsRUFBUSxjQUFjLGFBQWEsRUFDaEQsR0FBSSxDQUFDQyxFQUFNLE9BQU8sR0FBRyxPQUFPLDRCQUE2QixDQUFFLEtBQU0sUUFBUyxnQkFBaUIsT0FBUSxDQUFDLEVBRXBHLElBQUlDLEVBQVEsRUFNWixTQUFTQyxFQUFlQyxFQUFrQixDQUN0QyxHQUFJQSxJQUFhLEdBQUksT0FBTyxHQUFHLE9BQU8scUJBQXNCLENBQUUsS0FBTSxRQUFTLGdCQUFpQixPQUFRLENBQUMsRUFFdkcsR0FBSUMsSUFBUyxFQUFHLE9BQU8sR0FBRyxPQUFPLG9DQUFxQyxDQUFFLEtBQU0sUUFBUyxnQkFBaUIsT0FBUSxDQUFDLEVBRWpILElBQUlDLEVBQVksRUFFaEIsTUFBTUMs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QUksRUFDL0MsT0FBS0EsRUFBTyxTQUFTLEdBQUcsRUFHakIsQ0FBQyxLQURRLG9CQUFvQkEsRUFBTyxNQUFNLEVBQUcsRUFBRSxDQUFDLEVBQ2hDLENBQUMsRUFBRyxHQUFHLG9CQUFvQkEsRUFBTyxNQUFNLEVBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUcsSUFBSSxFQUhuRCxDQUFDQSxDQUFNLEVBTTdDLE1BQU1FLEVBQWEsQ0FBQyxFQUNwQixJQUFJQyxFQUFZLEdBQ1pwQixFQUFPLEVBRVgsVUFBV3FCLEtBQVFKLEVBQ2ZHLEdBQWFDLEVBRVRBLElBQVMsS0FBT0EsSUFBUyxJQUFLckIsR0FBUSxFQUNqQ3FCLElBQVMsSUFBTUEsSUFBUyxJQUFLckIsSUFDN0JxQixJQUFTLEtBQU9yQixJQUFTLEdBQUtvQixFQUFVLEtBQUssSUFBTSxNQUN4REQsRUFBVyxLQUFLQyxFQUFVLE1BQU0sRUFBRyxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQzdDQSxFQUFZLEtBSXBCLE9BQUFELEVBQVcsS0FBS0MsQ0FBUyxFQUVsQkQsQ0FDWCIsCiAgIm5hbWVzIjogWyJldmVudCIsICJlZGl0Qm94IiwgInRleHQiLCAiY291bnQiLCAicHJvY2Vzc0luZm9ib3giLCAidGVtcGxhdGUiLCAib3BlbiIsICJtYXhMZW5ndGgiLCAib3JpZ1RlbXBsYXRlIiwgImxpbmVzIiwgIm5ld0xpbmVzIiwgImxpbmUiLCAicGFyYW1ldGVyc0luTGluZSIsICJwYXJhbWV0ZXIiLCAiZmlyc3RQYXJ0IiwgImxhc3RQYXJ0IiwgIm91dHB1dCIsICJwYXJ0cyIsICJzZWFyY2hlcyIsICJpbmRleCIsICJmb28iLCAic2VhcmNoIiwgInNlYXJjaExlbmd0aCIsICJzdHJpbmciLCAic3BsaXQiLCAicGFyYW1ldGVycyIsICJ0ZW1wb3JhcnkiLCAiY2hhciJdCn0K