{
    "basic": {
        "sent": [
            "NICK testbot",
            "USER nodebot 8 * :nodeJS IRC client",
            "QUIT :node-irc says goodbye"
        ],
        "received": [
            ":localhost 001 testbot :Welcome to the Internet Relay Chat Network testbot\r\n"
        ]
    },
    "double-CRLF": {
        "sent": [
            ["NICK testbot", "Client sent NICK message"],
            ["USER nodebot 8 * :nodeJS IRC client", "Client sent USER message"],
            ["QUIT :node-irc says goodbye", "Client sent QUIT message"]
        ],
        "received": [
            [":localhost 001 testbot :Welcome to the Internet Relay Chat Network testbot\r\n\r\n", "Received welcome message"]
        ]
    },
    "parse-line": {
        ":irc.dollyfish.net.nz 372 nodebot :The message of the day was last changed: 2012-6-16 23:57": {
            "prefix": "irc.dollyfish.net.nz",
            "server": "irc.dollyfish.net.nz",
            "command": "rpl_motd",
            "rawCommand": "372",
            "commandType": "reply",
            "args": ["nodebot", "The message of the day was last changed: 2012-6-16 23:57"]
        },
        ":Ned!~martyn@irc.dollyfish.net.nz PRIVMSG #test :Hello nodebot!": {
            "prefix": "Ned!~martyn@irc.dollyfish.net.nz",
            "nick": "Ned",
            "user": "~martyn",
            "host": "irc.dollyfish.net.nz",
            "command": "PRIVMSG",
            "rawCommand": "PRIVMSG",
            "commandType": "normal",
            "args": ["#test", "Hello nodebot!"]
        },
        ":Ned!~martyn@irc.dollyfish.net.nz PRIVMSG #test ::-)": {
            "prefix": "Ned!~martyn@irc.dollyfish.net.nz",
            "nick": "Ned",
            "user": "~martyn",
            "host": "irc.dollyfish.net.nz",
            "command": "PRIVMSG",
            "rawCommand": "PRIVMSG",
            "commandType": "normal",
            "args": ["#test", ":-)"]
        },
        ":Ned!~martyn@irc.dollyfish.net.nz PRIVMSG #test ::": {
            "prefix": "Ned!~martyn@irc.dollyfish.net.nz",
            "nick": "Ned",
            "user": "~martyn",
            "host": "irc.dollyfish.net.nz",
            "command": "PRIVMSG",
            "rawCommand": "PRIVMSG",
            "commandType": "normal",
            "args": ["#test", ":"]
        },
        ":Ned!~martyn@irc.dollyfish.net.nz PRIVMSG #test ::^:^:": {
            "prefix": "Ned!~martyn@irc.dollyfish.net.nz",
            "nick": "Ned",
            "user": "~martyn",
            "host": "irc.dollyfish.net.nz",
            "command": "PRIVMSG",
            "rawCommand": "PRIVMSG",
            "commandType": "normal",
            "args": ["#test", ":^:^:"]
        },
        ":some.irc.net 324 webuser #channel +Cnj 5:10": {
            "prefix": "some.irc.net",
            "server": "some.irc.net",
            "command": "rpl_channelmodeis",
            "rawCommand": "324",
            "commandType": "reply",
            "args": ["webuser", "#channel", "+Cnj", "5:10"]
        },
        ":nick!user@host QUIT :Ping timeout: 252 seconds": {
            "prefix": "nick!user@host",
            "nick": "nick",
            "user": "user",
            "host": "host",
            "command": "QUIT",
            "rawCommand": "QUIT",
            "commandType": "normal",
            "args": ["Ping timeout: 252 seconds"]
        },
        ":nick!user@host PRIVMSG #channel :so : colons: :are :: not a problem ::::": {
            "prefix": "nick!user@host",
            "nick": "nick",
            "user": "user",
            "host": "host",
            "command": "PRIVMSG",
            "rawCommand": "PRIVMSG",
            "commandType": "normal",
            "args": ["#channel", "so : colons: :are :: not a problem ::::"]
        },
        ":nick!user@host PRIVMSG #channel :\u000314,01\u001fneither are colors or styles\u001f\u0003": {
            "prefix": "nick!user@host",
            "nick": "nick",
            "user": "user",
            "host": "host",
            "command": "PRIVMSG",
            "rawCommand": "PRIVMSG",
            "commandType": "normal",
            "args": ["#channel", "neither are colors or styles"],
            "stripColors": true
        },
        ":nick!user@host PRIVMSG #channel :\u000314,01\u001fwe can leave styles and colors alone if desired\u001f\u0003": {
            "prefix": "nick!user@host",
            "nick": "nick",
            "user": "user",
            "host": "host",
            "command": "PRIVMSG",
            "rawCommand": "PRIVMSG",
            "commandType": "normal",
            "args": ["#channel", "\u000314,01\u001fwe can leave styles and colors alone if desired\u001f\u0003"],
            "stripColors": false
        },
        ":pratchett.freenode.net 324 nodebot #ubuntu +CLcntjf 5:10 #ubuntu-unregged": {
            "prefix": "pratchett.freenode.net",
            "server": "pratchett.freenode.net",
            "command": "rpl_channelmodeis",
            "rawCommand": "324",
            "commandType": "reply",
            "args": ["nodebot", "#ubuntu", "+CLcntjf", "5:10", "#ubuntu-unregged"]
        },
        ":127.0.0.1 477 nodebot #channel :Cannot join channel (+r) - you need to be identified with services": {
            "prefix": "127.0.0.1",
            "server": "127.0.0.1",
            "command": "477",
            "rawCommand": "477",
            "commandType": "error",
            "args": ["nodebot", "#channel", "Cannot join channel (+r) - you need to be identified with services"]
        }
    },
    "parse-line-nonstrict": {
        ":견본!~examplename@example.host PRIVMSG #channel :test message": {
            "prefix": "견본!~examplename@example.host",
            "nick": "견본",
            "user": "~examplename",
            "host": "example.host",
            "command": "PRIVMSG",
            "rawCommand": "PRIVMSG",
            "commandType": "normal",
            "args": ["#channel", "test message"]
        },
        ":x/y!~examplename@example.host PRIVMSG #channel :test message": {
            "prefix": "x/y!~examplename@example.host",
            "nick": "x/y",
            "user": "~examplename",
            "host": "example.host",
            "command": "PRIVMSG",
            "rawCommand": "PRIVMSG",
            "commandType": "normal",
            "args": ["#channel", "test message"]
        },
        ":?nick!~examplename@example.host PRIVMSG #channel :test message": {
            "prefix": "?nick!~examplename@example.host",
            "nick": "?nick",
            "user": "~examplename",
            "host": "example.host",
            "command": "PRIVMSG",
            "rawCommand": "PRIVMSG",
            "commandType": "normal",
            "args": ["#channel", "test message"]
        }
    },
    "parse-line-strict": {
        ":x/y!~examplename@example.host PRIVMSG #channel :test message": {
            "prefix": "x/y!~examplename@example.host",
            "server": "x/y!~examplename@example.host",
            "command": "PRIVMSG",
            "rawCommand": "PRIVMSG",
            "commandType": "normal",
            "args": ["#channel", "test message"]
        },
        ":?nick!~examplename@example.host PRIVMSG #channel :test message": {
            "prefix": "?nick!~examplename@example.host",
            "server": "?nick!~examplename@example.host",
            "command": "PRIVMSG",
            "rawCommand": "PRIVMSG",
            "commandType": "normal",
            "args": ["#channel", "test message"]
        }
    },
    "parse-line-noprefix": {
        "477 nodebot #channel :Cannot join channel (+r) - you need to be identified with services": {
            "command": "477",
            "rawCommand": "477",
            "commandType": "error",
            "args": ["nodebot", "#channel", "Cannot join channel (+r) - you need to be identified with services"]
        }
    },
    "convert-encoding": {
        "causesException": [
            ":ubottu!ubottu@ubuntu/bot/ubottu MODE #ubuntu -bo *!~Brian@* ubottu\r\n",
            "Elizabeth",
            ":sblack1!~sblack1@unaffiliated/sblack1 NICK :sblack\r\n",
            ":TijG!~TijG@null.1ago.be PRIVMSG #ubuntu :ThinkPad\r\n"
        ],
        "sampleData": {
          "iso-8859-1 to utf-8": [
            [
              [58, 84, 104, 114, 111, 110, 101, 51, 100, 33, 126, 84, 104, 114, 111, 110, 101, 51, 100, 64, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109, 32, 80, 82, 73, 86, 77, 83, 71, 32, 35, 116, 101, 115, 116, 98, 101, 100, 32, 58, 101, 117, 32, 110, 227, 111, 32, 103, 111, 115, 116, 111, 32, 100, 101, 32, 100, 105, 102, 101, 114, 101, 110, 99, 105, 97, 231, 227, 111, 13, 10],
              [58, 84, 104, 114, 111, 110, 101, 51, 100, 33, 126, 84, 104, 114, 111, 110, 101, 51, 100, 64, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109, 32, 80, 82, 73, 86, 77, 83, 71, 32, 35, 116, 101, 115, 116, 98, 101, 100, 32, 58, 101, 117, 32, 110, 195, 163, 111, 32, 103, 111, 115, 116, 111, 32, 100, 101, 32, 100, 105, 102, 101, 114, 101, 110, 99, 105, 97, 195, 167, 195, 163, 111, 13, 10]
            ],
            [
              [58, 84, 104, 114, 111, 110, 101, 51, 100, 33, 126, 84, 104, 114, 111, 110, 101, 51, 100, 64, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109, 32, 80, 82, 73, 86, 77, 83, 71, 32, 35, 116, 101, 115, 116, 98, 101, 100, 32, 58, 105, 110, 102, 111, 114, 109, 97, 231, 245, 101, 115, 13, 10],
              [58, 84, 104, 114, 111, 110, 101, 51, 100, 33, 126, 84, 104, 114, 111, 110, 101, 51, 100, 64, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109, 32, 80, 82, 73, 86, 77, 83, 71, 32, 35, 116, 101, 115, 116, 98, 101, 100, 32, 58, 105, 110, 102, 111, 114, 109, 97, 195, 167, 195, 181, 101, 115, 13, 10]
            ],
            [
              [58, 84, 104, 114, 111, 110, 101, 51, 100, 33, 126, 84, 104, 114, 111, 110, 101, 51, 100, 64, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109, 32, 80, 82, 73, 86, 77, 83, 71, 32, 35, 116, 101, 115, 116, 98, 101, 100, 32, 58, 231, 97, 32, 109, 101, 32, 102, 97, 105, 116, 32, 114, 105, 114, 101, 13, 10],
              [58, 84, 104, 114, 111, 110, 101, 51, 100, 33, 126, 84, 104, 114, 111, 110, 101, 51, 100, 64, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109, 32, 80, 82, 73, 86, 77, 83, 71, 32, 35, 116, 101, 115, 116, 98, 101, 100, 32, 58, 195, 167, 97, 32, 109, 101, 32, 102, 97, 105, 116, 32, 114, 105, 114, 101, 13, 10]
            ],
            [
              [58, 84, 104, 114, 111, 110, 101, 51, 100, 33, 126, 84, 104, 114, 111, 110, 101, 51, 100, 64, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109, 32, 80, 82, 73, 86, 77, 83, 71, 32, 35, 116, 101, 115, 116, 98, 101, 100, 32, 58, 110, 105, 105, 110, 32, 107, 97, 105, 32, 115, 105, 116, 228, 32, 118, 111, 105, 115, 13, 10],
              [58, 84, 104, 114, 111, 110, 101, 51, 100, 33, 126, 84, 104, 114, 111, 110, 101, 51, 100, 64, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109, 32, 80, 82, 73, 86, 77, 83, 71, 32, 35, 116, 101, 115, 116, 98, 101, 100, 32, 58, 110, 105, 105, 110, 32, 107, 97, 105, 32, 115, 105, 116, 195, 164, 32, 118, 111, 105, 115, 13, 10]
            ]
          ],
          "utf-8 to utf-8": [
            [
              [58, 84, 104, 114, 111, 110, 101, 51, 100, 33, 126, 84, 104, 114, 111, 110, 101, 51, 100, 64, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109, 32, 80, 82, 73, 86, 77, 83, 71, 32, 35, 116, 101, 115, 116, 98, 101, 100, 32, 58, 107, 121, 108, 108, 195, 164, 13, 10],
              [58, 84, 104, 114, 111, 110, 101, 51, 100, 33, 126, 84, 104, 114, 111, 110, 101, 51, 100, 64, 101, 120, 97, 109, 112, 108, 101, 46, 99, 111, 109, 32, 80, 82, 73, 86, 77, 83, 71, 32, 35, 116, 101, 115, 116, 98, 101, 100, 32, 58, 107, 121, 108, 108, 195, 164, 13, 10]
            ]
          ]
        }
    },
    "_splitLongLines": [
        {
            "input": "abcde ",
            "maxLength": 5,
            "result": ["abcde"]
        },
        {
            "input": "abcde",
            "maxLength": 5,
            "result": ["abcde"]
        },
        {
            "input": "abcdefghijklmnopqrstuvwxyz",
            "maxLength": 5,
            "result": ["abcde", "fghij", "klmno", "pqrst", "uvwxy", "z"]
        },
        {
            "input": "abc abcdef abc abcd abc",
            "maxLength": 5,
            "result": ["abc", "abcde", "f abc", "abcd", "abc"]
        }
    ],
    "_splitLongLines_no_max": [
        {
            "input": "abcdefghijklmnopqrstuvwxyz",
            "result": ["abcdefghijklmnopqrstuvwxyz"]
        }
    ],
    "_splitLongLines_bytes": [
        {
            "input": "<Throne> 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQR",
            "result": ["<Throne>", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGH", "IJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQR"]
        },
        {
            "input": "<Throne> ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ",
            "result": ["<Throne>", "ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペ", "ホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジス", "ズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲン", "ヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒ", "ビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケ", "ゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリル", "レロヮワヰヱヲンヴヵヶヷヸヹヺ・ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶヷヸヹヺ"]
        }
    ],
    "mode": {
        "expected": [
            {"key": "#channel","serverName": "#channel","users": {},"modeParams": {"n": []},"mode": "n"},
            {"key": "#channel","serverName": "#channel","users": {},"modeParams": {"n": [],"t": []},"mode": "nt"},
            {"key": "#channel","serverName": "#channel","users": {"testbot": "@"},"modeParams": {"n": [],"t": []},"mode": "+nt"},
            {"key": "#channel","serverName": "#channel","users": {"testbot": "@"},"mode": "+ntb","modeParams": {"b": ["*!*@AN.IP.1"],"n": [],"t": []}},
            {"key": "#channel","serverName": "#channel","users": {"testbot": "@"},"mode": "+ntb","modeParams": {"b": ["*!*@AN.IP.1","*!*@AN.IP.2"],"n": [],"t": []}},
            {"key": "#channel","serverName": "#channel","users": {"testbot": "@"},"mode": "+ntb","modeParams": {"b": ["*!*@AN.IP.1","*!*@AN.IP.2","*!*@AN.IP.3"],"n": [],"t": []}},
            {"key": "#channel","serverName": "#channel","users": {"testbot": "@"},"mode": "+ntb","modeParams": {"b": ["*!*@AN.IP.1","*!*@AN.IP.3"],"n": [],"t": []}},
            {"key": "#channel","serverName": "#channel","users": {"testbot": "@"},"mode": "+ntbf","modeParams": {"f": ["[10j]:15"],"b": ["*!*@AN.IP.1","*!*@AN.IP.3"],"n": [],"t": []}},
            {"key": "#channel","serverName": "#channel","users": {"testbot": "@"},"mode": "+ntbf","modeParams": {"f": ["[8j]:15"],"b": ["*!*@AN.IP.1","*!*@AN.IP.3"],"n": [],"t": []}},
            {"key": "#channel","serverName": "#channel","users": {"testbot": "@"},"mode": "+ntb","modeParams": {"b": ["*!*@AN.IP.1","*!*@AN.IP.3"],"n": [],"t": []}},
            {"key": "#channel","serverName": "#channel","users": {"testbot": "@"},"mode": "+ntbj","modeParams": {"j": ["3:5"],"b": ["*!*@AN.IP.1","*!*@AN.IP.3"],"n": [],"t": []}},
            {"key": "#channel","serverName": "#channel","users": {"testbot": "@"},"mode": "+ntbj","modeParams": {"j": ["2:5"],"b": ["*!*@AN.IP.1","*!*@AN.IP.3"],"n": [],"t": []}},
            {"key": "#channel","serverName": "#channel","users": {"testbot": "@"},"mode": "+ntb","modeParams": {"b": ["*!*@AN.IP.1","*!*@AN.IP.3"],"n": [],"t": []}},
            {"key": "#channel","serverName": "#channel","users": {"testbot": "@"},"mode": "+ntbp","modeParams": {"p": [],"b": ["*!*@AN.IP.1","*!*@AN.IP.3"],"n": [],"t": []}},
            {"key": "#channel","serverName": "#channel","users": {"testbot": "@"},"mode": "+ntbps","modeParams": {"s": [],"p": [],"b": ["*!*@AN.IP.1","*!*@AN.IP.3"],"n": [],"t": []}},
            {"key": "#channel","serverName": "#channel","users": {"testbot": "@"},"mode": "+ntbpsK","modeParams": {"K": [],"s": [],"p": [],"b": ["*!*@AN.IP.1","*!*@AN.IP.3"],"n": [],"t": []}},
            {"key": "#channel","serverName": "#channel","users": {"testbot": "@"},"mode": "+ntbsK","modeParams": {"K": [],"s": [],"b": ["*!*@AN.IP.1","*!*@AN.IP.3"],"n": [],"t": []}},
            {"key": "#channel","serverName": "#channel","users": {"testbot": "@"},"mode": "+ntbK","modeParams": {"K": [],"b": ["*!*@AN.IP.1","*!*@AN.IP.3"],"n": [],"t": []}},
            {"key": "#channel","serverName": "#channel","users": {"testbot": "@"},"mode": "+ntbKF","modeParams": {"F": [],"K": [],"b": ["*!*@AN.IP.1","*!*@AN.IP.3"],"n": [],"t": []}}
        ],
        "serverMessages": [
          ":localhost 005 testbot MODES=12 CHANTYPES=# PREFIX=(ohv)@%+ CHANMODES=beIqa,kfL,lj,psmntirRcOAQKVCuzNSMTGHFEB\r\n",
          ":testbot MODE testbot :+ix\r\n",
          ":testbot JOIN :#channel\r\n",
          ":localhost MODE #channel +nt\r\n",
          ":localhost 353 testbot = #channel :@testbot\r\n",
          ":localhost 366 testbot #channel :End of /NAMES list.\r\n",
          ":localhost 324 testbot #channel +nt\r\n",
          ":localhost MODE #channel -b *!*@AN.IP.1\r\n",
          ":localhost MODE #channel +b *!*@AN.IP.1\r\n",
          ":localhost MODE #channel +bb *!*@AN.IP.2 *!*@AN.IP.3\r\n",
          ":localhost MODE #channel -b *!*@AN.IP.2\r\n",
          ":localhost MODE #channel +f [10j]:15\r\n",
          ":localhost MODE #channel +f [8j]:15\r\n",
          ":localhost MODE #channel -f+j [10j]:15 3:5\r\n",
          ":localhost MODE #channel +j 2:5\r\n",
          ":localhost MODE #channel -j\r\n",
          ":localhost MODE #channel +ps\r\n",
          ":localhost MODE #channel +K-p-s+F\r\n"
        ]
    }
}
