var erel = aLink.rel; var etype = aLink.type; 
var erel = aLink.rel && aLink.rel.toLowerCase(); var etype = aLink.type && aLink.type.toLowerCase(); 
function recognizeFeedFromLink(aLink, aPrincipal){  if (!aLink || !aPrincipal)    return null;  var erel = aLink.rel;  var etype = aLink.type;  var etitle = aLink.title;  const rssTitleRegex = /(^|\s)rss($|\s)/i;  var rels = {};  if (erel) {    for each (var relValue in erel.split(/\s+/))      rels[relValue] = true;  }  var isFeed = rels.feed;  if (!isFeed && (!rels.alternate || rels.stylesheet || !etype))    return null;  if (!isFeed) {    // Use type value    etype = etype.replace(/^\s+/, "");    etype = etype.replace(/\s+$/, "");    etype = etype.replace(/\s*;.*/, "");    etype = etype.toLowerCase();    isFeed = (etype == "application/rss+xml" ||              etype == "application/atom+xml");    if (!isFeed) {      // really slimy: general XML types with magic letters in the title      isFeed = ((etype == "text/xml" || etype == "application/xml" ||                 etype == "application/rdf+xml") && rssTitleRegex.test(etitle));    }  }  if (isFeed) {    try {       urlSecurityCheck(aLink.href,                       aPrincipal,                       Components.interfaces.nsIScriptSecurityManager.DISALLOW_INHERIT_PRINCIPAL);    }    catch (ex) {      dump(ex.message);      return null; // doesn't pass security check    }    // successful!  return the feed    return {        href: aLink.href,        type: etype,        title: aLink.title      };  }  return null;}
5459	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/5459/d92361a7740c7499e04892d05b6f9cc4e6115570/utilityOverlay.js/buggy/browser/base/content/utilityOverlay.js