(function () {

var newMathJax = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js';
var oldMathJax = 'cdn.mathjax.org/mathjax/latest/MathJax.js';

var replaceScript = function (script, src) {
  //
  //  Make redirected script
  //
  var newScript = document.createElement('script');
  newScript.src = newMathJax + src.replace(/.*?(\?|$)/, '$1');
  //
  //  Move onload and onerror handlers to new script
  //
  newScript.onload = script.onload; 
  newScript.onerror = script.onerror;
  script.onload = script.onerror = null;
  //
  //  Move any content (old-style configuration scripts)
  //
  while (script.firstChild) newScript.appendChild(script.firstChild);
  //
  //  Copy script id
  //
  if (script.id != null) newScript.id = script.id;
  //
  //  Replace original script with new one
  //
  script.parentNode.replaceChild(newScript, script);
  //
  //  Issue a console warning
  //
  console.warn('WARNING: cdn.mathjax.org has been retired. Check https://www.mathjax.org/cdn-shutting-down/ for migration tips.')
}

if (document.currentScript) {
  var script = document.currentScript;
  replaceScript(script, script.src);
} else {
  //
  // Look for current script by searching for one with the right source
  //
  var n = oldMathJax.length;
  var scripts = document.getElementsByTagName('script');
  for (var i = 0; i < scripts.length; i++) {
    var script = scripts[i];
    var src = (script.src || '').replace(/.*?:\/\//,'');
    if (src.substr(0, n) === oldMathJax) {
      replaceScript(script, src);
      break;
    }
  }
}

})();