ary = e.source.match(/(\S+)@(.*)/); 
ary = e.source.match(/([^ ]+)@(.*)/); 
function serv_onRawData(e){    var ary;    var l = e.data;    if (l.length == 0)    {        dd ("empty line on onRawData?");        return false;    }    if (l[0] == ":")    {        // Must split only on a REAL space here, not just any old whitespace.        ary = l.match(/:(\S+) (.*)/);        e.source = ary[1];        l = ary[2];        ary = e.source.match(/(\S+)!(\S+)@(.*)/);        if (ary)        {            e.user = new CIRCUser(this, null, ary[1], ary[2], ary[3]);        }        else        {            ary = e.source.match(/(\S+)@(.*)/);            if (ary)            {                e.user = new CIRCUser(this, null, ary[1], null, ary[2]);            }            else            {                ary = e.source.match(/(\S+)!(.*)/);                if (ary)                    e.user = new CIRCUser(this, null, ary[1], ary[2], null);            }        }    }    e.ignored = false;    if (("user" in e) && e.user && ("ignoreList" in this.parent))    {        // Assumption: if "ignoreList" is in this.parent, we assume that:        //   a) it's an array.        //   b) ignoreMaskCache also exists, and        //   c) it's an array too.        if (!(e.source in this.parent.ignoreMaskCache))        {            for (var m in this.parent.ignoreList)            {                if (hostmaskMatches(e.user, this.parent.ignoreList[m]))                {                    e.ignored = true;                    break;                }            }            /* Save this exact source in the cache, with results of tests. */            this.parent.ignoreMaskCache[e.source] = e.ignored;        }        else        {            e.ignored = this.parent.ignoreMaskCache[e.source];        }    }    e.server = this;    var sep = l.indexOf(" :");    if (sep != -1) /* <trailing> param, if there is one */    {        var trail = l.substr (sep + 2, l.length);        e.params = l.substr(0, sep).split(" ");        e.params[e.params.length] = trail;    }    else    {        e.params = l.split(" ");    }    e.decodeParam = decodeParam;    e.code = e.params[0].toUpperCase();    // Ignore all Privmsg and Notice messages here.    if (e.ignored && ((e.code == "PRIVMSG") || (e.code == "NOTICE")))        return true;    e.type = "parseddata";    e.destObject = this;    e.destMethod = "onParsedData";    return true;}
5872	/local1/tlutelli/issta_data/temp/all_js/javascript/2007_temp/2007/5872/b9e1c87023084f53d448f0950373036c39c91d75/irc.js/buggy/extensions/irc/js/lib/irc.js