)]}'
{
  "log": [
    {
      "commit": "73e444401d645f686b4aa9adcab88fa78cf85a4f",
      "tree": "b17110f70506b33760030dbfdce57ca4c2e26c9b",
      "parents": [
        "35410aa86c49ed219be5152f20720166b5e1dc60",
        "7309af6dbf9bb81477a2e1eb819d73d7583b576e"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 23 09:04:43 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 23 09:04:43 2021"
      },
      "message": "Merge pull request #138 from jpneverwas/external\n\nSupport SASL EXTERNAL and proxies for TLS connections"
    },
    {
      "commit": "7309af6dbf9bb81477a2e1eb819d73d7583b576e",
      "tree": "b17110f70506b33760030dbfdce57ca4c2e26c9b",
      "parents": [
        "272c4d1650c498714abc4c0dcc18f6061aea71cb"
      ],
      "author": {
        "name": "J.P. Neverwas",
        "email": "jp@neverwas.me",
        "time": "Sat Jul 03 13:59:00 2021"
      },
      "committer": {
        "name": "J.P. Neverwas",
        "email": "jp@neverwas.me",
        "time": "Sun Jul 04 03:57:00 2021"
      },
      "message": "Add support for SASL EXTERNAL mechanism\n"
    },
    {
      "commit": "272c4d1650c498714abc4c0dcc18f6061aea71cb",
      "tree": "aa3f3eb99ced3f0dcaa12b054a8aad128de2ea62",
      "parents": [
        "35410aa86c49ed219be5152f20720166b5e1dc60"
      ],
      "author": {
        "name": "J.P. Neverwas",
        "email": "jp@neverwas.me",
        "time": "Sat Jul 03 13:59:00 2021"
      },
      "committer": {
        "name": "J.P. Neverwas",
        "email": "jp@neverwas.me",
        "time": "Sat Jul 03 23:09:44 2021"
      },
      "message": "Allow connecting via proxy\n"
    },
    {
      "commit": "35410aa86c49ed219be5152f20720166b5e1dc60",
      "tree": "7603dad0f56a76d2703dfda27d0e91e3e0b5b0ec",
      "parents": [
        "8e7ce4b5a1eb84ddfdc8cd31cf0ee87edb4133a0",
        "ca8c40146754ad0d8f0ce35280e13b7b5a3439ec"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Mon Apr 19 09:03:48 2021"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 19 09:03:48 2021"
      },
      "message": "Merge pull request #132 from slingamn/sasl_stall.1\n\nfix SASL stalling due to duplicated callbacks"
    },
    {
      "commit": "ca8c40146754ad0d8f0ce35280e13b7b5a3439ec",
      "tree": "7603dad0f56a76d2703dfda27d0e91e3e0b5b0ec",
      "parents": [
        "8e7ce4b5a1eb84ddfdc8cd31cf0ee87edb4133a0"
      ],
      "author": {
        "name": "Shivaram Lingamneni",
        "email": "slingamn@cs.stanford.edu",
        "time": "Thu Feb 11 15:40:29 2021"
      },
      "committer": {
        "name": "Shivaram Lingamneni",
        "email": "slingamn@cs.stanford.edu",
        "time": "Fri Feb 12 03:37:42 2021"
      },
      "message": "fix SASL stalling due to duplicated callbacks\n\nEach reconnection would add redundant callbacks for CAP and the\nSASL numerics. This would result in `AUTHENTICATE PLAIN` being sent\nmultiple times (once for each callback), which would confuse the server.\n"
    },
    {
      "commit": "8e7ce4b5a1eb84ddfdc8cd31cf0ee87edb4133a0",
      "tree": "6133bd5f62b4fddebb20c131cec1e24d95cc670c",
      "parents": [
        "48e72812fe4f879f224eaab7b274cbb3cb20700e",
        "511f12d368a5a6ae12b0be7217afad9e312a5099"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Wed Aug 07 11:50:34 2019"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 07 11:50:34 2019"
      },
      "message": "Merge pull request #128 from akihiro/master\n\nAdd non UTF-8 encoding support"
    },
    {
      "commit": "48e72812fe4f879f224eaab7b274cbb3cb20700e",
      "tree": "16e6453c40ace5ea05f673b3b04fd156c97be450",
      "parents": [
        "949efec00844e7af06ee7fb225c1e7883a22d0ae",
        "2d0ed40435f1b0a57d5c35677add28716c2952e3"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Wed Aug 07 11:50:13 2019"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 07 11:50:13 2019"
      },
      "message": "Merge pull request #124 from irccloud/cap-timeout\n\nAdd an overall timeout on CAP negotiation"
    },
    {
      "commit": "511f12d368a5a6ae12b0be7217afad9e312a5099",
      "tree": "58e78f228f0e1ecb3879f8e634190e2e7158948e",
      "parents": [
        "949efec00844e7af06ee7fb225c1e7883a22d0ae"
      ],
      "author": {
        "name": "Hiroaki Mizuguchi",
        "email": "mhiroaki@gmail.com",
        "time": "Wed Aug 07 09:08:15 2019"
      },
      "committer": {
        "name": "Hiroaki Mizuguchi",
        "email": "mhiroaki@gmail.com",
        "time": "Wed Aug 07 09:21:07 2019"
      },
      "message": "Add non UTF-8 encoding support\n"
    },
    {
      "commit": "949efec00844e7af06ee7fb225c1e7883a22d0ae",
      "tree": "21940a7632918bc36bc96f26a0ee5437053211ef",
      "parents": [
        "0b3c53b3242262ba07daaaf35eda001526002d66",
        "555c28fe5d30500018f76ab40291936c47fe2616"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sun Jun 09 08:25:34 2019"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jun 09 08:25:34 2019"
      },
      "message": "Merge pull request #126 from IceflowRE/master\n\nAdd go mod support"
    },
    {
      "commit": "555c28fe5d30500018f76ab40291936c47fe2616",
      "tree": "21940a7632918bc36bc96f26a0ee5437053211ef",
      "parents": [
        "0b3c53b3242262ba07daaaf35eda001526002d66"
      ],
      "author": {
        "name": "Iceflower",
        "email": "iceflower@gmx.de",
        "time": "Sun Jun 09 00:12:30 2019"
      },
      "committer": {
        "name": "Iceflower",
        "email": "iceflower@gmx.de",
        "time": "Sun Jun 09 00:12:35 2019"
      },
      "message": "Add go mod support\n"
    },
    {
      "commit": "2d0ed40435f1b0a57d5c35677add28716c2952e3",
      "tree": "8b9155787b2537db4d26c3abe7b7b955d71cdb35",
      "parents": [
        "0b3c53b3242262ba07daaaf35eda001526002d66"
      ],
      "author": {
        "name": "Russ Garrett",
        "email": "russ@garrett.co.uk",
        "time": "Sun May 12 09:29:21 2019"
      },
      "committer": {
        "name": "Russ Garrett",
        "email": "russ@garrett.co.uk",
        "time": "Sun May 12 09:29:21 2019"
      },
      "message": "Add an overall timeout on CAP negotiation\n\nAt the moment it just hangs if the server doesn\u0027t support CAP. This adds\na 15 second timeout to the CAP negotiation process, after which the\nconnection continues.\n\nThe timeout and error on failed SASL negotiation is preserved.\n"
    },
    {
      "commit": "0b3c53b3242262ba07daaaf35eda001526002d66",
      "tree": "f6cc9ee59b9552b4353a5e5d6d18e701d253e37e",
      "parents": [
        "139f940005843483a21ec0ab24ed35094d6c9c5f",
        "0d03b4dd26f8a13df2d0458d5fd0cc9e1ce42848"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Thu Apr 04 14:52:36 2019"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 04 14:52:36 2019"
      },
      "message": "Merge pull request #117 from l-n-s/ipv6_support\n\nAdd IPv6 address support"
    },
    {
      "commit": "0d03b4dd26f8a13df2d0458d5fd0cc9e1ce42848",
      "tree": "f6cc9ee59b9552b4353a5e5d6d18e701d253e37e",
      "parents": [
        "b9b3e9bcc0305127155464c9abf06ae0e1fdbe24"
      ],
      "author": {
        "name": "Viktor Villainov",
        "email": "supervillain@riseup.net",
        "time": "Thu Apr 04 14:35:40 2019"
      },
      "committer": {
        "name": "Viktor Villainov",
        "email": "supervillain@riseup.net",
        "time": "Thu Apr 04 14:35:40 2019"
      },
      "message": "Add IPv6 support: Use net.SplitHostPort\n"
    },
    {
      "commit": "b9b3e9bcc0305127155464c9abf06ae0e1fdbe24",
      "tree": "d42bdf928e528bd3f61d9c6a5bbd585594db2575",
      "parents": [
        "139f940005843483a21ec0ab24ed35094d6c9c5f"
      ],
      "author": {
        "name": "Viktor Villainov",
        "email": "supervillain@riseup.net",
        "time": "Wed Apr 03 21:50:05 2019"
      },
      "committer": {
        "name": "Viktor Villainov",
        "email": "supervillain@riseup.net",
        "time": "Wed Apr 03 21:50:05 2019"
      },
      "message": "Add IPv6 address support\n"
    },
    {
      "commit": "139f940005843483a21ec0ab24ed35094d6c9c5f",
      "tree": "c2d44c80e3a79b2a627934353a9365faaefc09cf",
      "parents": [
        "dc1855cb439cb8512fb7855d3293b785be25b850",
        "c5c6e02b15c0e23a91760ee2d89bac72c8c91e88"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sun Mar 24 14:35:21 2019"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 24 14:35:21 2019"
      },
      "message": "Merge pull request #116 from int3l/master\n\nPrevent nil pointer dereference"
    },
    {
      "commit": "c5c6e02b15c0e23a91760ee2d89bac72c8c91e88",
      "tree": "c2d44c80e3a79b2a627934353a9365faaefc09cf",
      "parents": [
        "dc1855cb439cb8512fb7855d3293b785be25b850"
      ],
      "author": {
        "name": "int3l",
        "email": "int3l@users.noreply.github.com",
        "time": "Sun Mar 24 14:09:35 2019"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Mar 24 14:09:35 2019"
      },
      "message": "Prevent nil pointer dereference\n\nfixes #110"
    },
    {
      "commit": "dc1855cb439cb8512fb7855d3293b785be25b850",
      "tree": "4f5bb93e6bbd40d68353355ceb9b0d2c2ec44d30",
      "parents": [
        "4a9f9901cc3d2a3cadfcc71022271c35b7717ac1",
        "916eeaf7ddd280b87eb87efd59a209da5577a688"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Mar 01 10:51:15 2019"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 01 10:51:15 2019"
      },
      "message": "Merge pull request #111 from IceflowRE/master\n\nAdd strikethrough to message filter"
    },
    {
      "commit": "4a9f9901cc3d2a3cadfcc71022271c35b7717ac1",
      "tree": "4083933f19d0b0d13a677a4d7aaf09befe306709",
      "parents": [
        "98931bbadbbc5bfcbbf173af06c419338a4952f0",
        "6e51f3a4d0051997d01a8a95b7f64ead60cbf461"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Mar 01 10:50:49 2019"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Mar 01 10:50:49 2019"
      },
      "message": "Merge pull request #115 from irccloud/sasl_fix\n\nFix issue with SASL auth on some servers"
    },
    {
      "commit": "6e51f3a4d0051997d01a8a95b7f64ead60cbf461",
      "tree": "4083933f19d0b0d13a677a4d7aaf09befe306709",
      "parents": [
        "98931bbadbbc5bfcbbf173af06c419338a4952f0"
      ],
      "author": {
        "name": "Russ Garrett",
        "email": "russ@garrett.co.uk",
        "time": "Fri Mar 01 10:20:59 2019"
      },
      "committer": {
        "name": "Russ Garrett",
        "email": "russ@garrett.co.uk",
        "time": "Fri Mar 01 10:20:59 2019"
      },
      "message": "Fix issue with SASL auth on some servers\n\nOn some servers SASL auth would fail because we didn\u0027t fully comply with\nthe spec. Multiple caps can be returned in a `CAP ACK`, and sometimes\nservers add a trailing space. Parse these responses more correctly.\n"
    },
    {
      "commit": "98931bbadbbc5bfcbbf173af06c419338a4952f0",
      "tree": "7a0cbd3f5fdc57587b8a61568bee373d90377505",
      "parents": [
        "e4af78aa4fe5beb85214dc1784be77987b52fa09",
        "08674caae56f1709d8d8a8753ee8a7c51596eba4"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Thu Feb 21 22:52:39 2019"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 21 22:52:39 2019"
      },
      "message": "Merge pull request #114 from MattMcNam/nick\n\nDon’t send NICK and USER commands while negotiating caps"
    },
    {
      "commit": "08674caae56f1709d8d8a8753ee8a7c51596eba4",
      "tree": "7a0cbd3f5fdc57587b8a61568bee373d90377505",
      "parents": [
        "e4af78aa4fe5beb85214dc1784be77987b52fa09"
      ],
      "author": {
        "name": "Matthew McNamara",
        "email": "mattmcnam@gmail.com",
        "time": "Thu Feb 21 22:31:06 2019"
      },
      "committer": {
        "name": "Matthew McNamara",
        "email": "mattmcnam@gmail.com",
        "time": "Thu Feb 21 22:31:06 2019"
      },
      "message": "Don’t send NICK and USER while negotiating caps\n"
    },
    {
      "commit": "e4af78aa4fe5beb85214dc1784be77987b52fa09",
      "tree": "9b3ab1e76d3bd6dc962c8add117441a03dfc6eca",
      "parents": [
        "14f3614f28c3fea160ea49194ff662c2cd2f8280",
        "9fa2a77567104d0e10b66c70d300220297207ab6"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Thu Feb 21 14:18:30 2019"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Feb 21 14:18:30 2019"
      },
      "message": "Merge pull request #113 from irccloud/sasl_cap_fix\n\nFix SASL where additional caps are requested"
    },
    {
      "commit": "9fa2a77567104d0e10b66c70d300220297207ab6",
      "tree": "9b3ab1e76d3bd6dc962c8add117441a03dfc6eca",
      "parents": [
        "14f3614f28c3fea160ea49194ff662c2cd2f8280"
      ],
      "author": {
        "name": "Russ Garrett",
        "email": "russ@garrett.co.uk",
        "time": "Thu Feb 21 12:20:50 2019"
      },
      "committer": {
        "name": "Russ Garrett",
        "email": "russ@garrett.co.uk",
        "time": "Thu Feb 21 12:22:37 2019"
      },
      "message": "Fix SASL where additional caps are requested\n\nWhere additional caps were requested using `RequestCaps`, SASL would\nsend an `AUTHENTICATE` command for each one which servers don\u0027t like.\nCheck that we\u0027re responding to the correct `CAP ACK`.\n"
    },
    {
      "commit": "916eeaf7ddd280b87eb87efd59a209da5577a688",
      "tree": "2391b56d1866e0546cfd8c32201318e5190b0305",
      "parents": [
        "14f3614f28c3fea160ea49194ff662c2cd2f8280"
      ],
      "author": {
        "name": "Iceflower",
        "email": "iceflower@gmx.de",
        "time": "Sat Sep 29 16:42:34 2018"
      },
      "committer": {
        "name": "Iceflower",
        "email": "iceflower@gmx.de",
        "time": "Sat Sep 29 16:43:29 2018"
      },
      "message": "Add strikethrough to message filter\n\nhttps://modern.ircdocs.horse/formatting.html\n"
    },
    {
      "commit": "14f3614f28c3fea160ea49194ff662c2cd2f8280",
      "tree": "2a6a074286986d1920fc9860f88c2283b21e1ee7",
      "parents": [
        "54508e33af2d946d80f20635cbbc73836157ac2c",
        "fc944ef429b1dc2ae17122424aaaefd4d68af581"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Thu Aug 16 04:31:03 2018"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 16 04:31:03 2018"
      },
      "message": "Merge pull request #104 from sadbox/parallel\n\nRun all callbacks in parallel"
    },
    {
      "commit": "54508e33af2d946d80f20635cbbc73836157ac2c",
      "tree": "8368dbdbaaf3d6e913ff0a38a5b40f8c0533021b",
      "parents": [
        "f25dab053fc718bcbadfa19f40441d93310181f8",
        "edafec0fc702a30ad0d592d7971eeaa2d3d2d39e"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Thu Aug 16 04:30:43 2018"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 16 04:30:43 2018"
      },
      "message": "Merge pull request #103 from sadbox/master\n\nAdd support for Handler timeouts via context"
    },
    {
      "commit": "f25dab053fc718bcbadfa19f40441d93310181f8",
      "tree": "3a5ce83754ac22cef251f7cf7ea128a60ccf0312",
      "parents": [
        "3962ef5b5b55589b340f8b9acddc3f9f27327bc0",
        "e975eae5bace80a4ca6e898ecc8b5a9aa359a037"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Thu Aug 16 04:25:45 2018"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Aug 16 04:25:45 2018"
      },
      "message": "Merge pull request #107 from IceflowRE/master\n\nAdd method to get message without formatting"
    },
    {
      "commit": "3962ef5b5b55589b340f8b9acddc3f9f27327bc0",
      "tree": "a97923c06c1b67a22b311854f99be96e95ebc31a",
      "parents": [
        "5063e5f26097f6423c9de665079347c9473788da",
        "6d6a4e3311a1782e3ece4b8aff8fcebcac34ac3d"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Aug 10 05:33:44 2018"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Aug 10 05:33:44 2018"
      },
      "message": "Merge pull request #109 from boreq/docs\n\nImprove AddCallback documentation"
    },
    {
      "commit": "6d6a4e3311a1782e3ece4b8aff8fcebcac34ac3d",
      "tree": "a97923c06c1b67a22b311854f99be96e95ebc31a",
      "parents": [
        "5063e5f26097f6423c9de665079347c9473788da"
      ],
      "author": {
        "name": "boreq",
        "email": "boreq@0x46.net",
        "time": "Fri Aug 10 00:04:31 2018"
      },
      "committer": {
        "name": "boreq",
        "email": "boreq@0x46.net",
        "time": "Fri Aug 10 00:04:31 2018"
      },
      "message": "Improve AddCallback documentation\n"
    },
    {
      "commit": "e975eae5bace80a4ca6e898ecc8b5a9aa359a037",
      "tree": "33d6caae067be0627ddabc858bc82995d50daede",
      "parents": [
        "5063e5f26097f6423c9de665079347c9473788da"
      ],
      "author": {
        "name": "Iceflower",
        "email": "iceflower@gmx.de",
        "time": "Tue Jun 26 06:48:51 2018"
      },
      "committer": {
        "name": "Iceflower",
        "email": "iceflower@gmx.de",
        "time": "Tue Jun 26 06:49:07 2018"
      },
      "message": "Add method to get message without formatting\n"
    },
    {
      "commit": "fc944ef429b1dc2ae17122424aaaefd4d68af581",
      "tree": "cc4f5edf20adab1652c180b690fa094a638a84aa",
      "parents": [
        "edafec0fc702a30ad0d592d7971eeaa2d3d2d39e"
      ],
      "author": {
        "name": "James McGuire",
        "email": "james@sadbox.org",
        "time": "Mon May 14 18:45:57 2018"
      },
      "committer": {
        "name": "James McGuire",
        "email": "james@sadbox.org",
        "time": "Fri May 18 22:19:14 2018"
      },
      "message": "Run all callbacks in parallel\n"
    },
    {
      "commit": "edafec0fc702a30ad0d592d7971eeaa2d3d2d39e",
      "tree": "1362081610f5203c08360b3f5229b2ff8f2660f1",
      "parents": [
        "5063e5f26097f6423c9de665079347c9473788da"
      ],
      "author": {
        "name": "James McGuire",
        "email": "james@sadbox.org",
        "time": "Sat May 12 01:41:43 2018"
      },
      "committer": {
        "name": "James McGuire",
        "email": "james@sadbox.org",
        "time": "Sat May 12 02:17:24 2018"
      },
      "message": "Add support for callback timeouts via context\n"
    },
    {
      "commit": "5063e5f26097f6423c9de665079347c9473788da",
      "tree": "859622b08c053732743bd98c030f8e93aaff8651",
      "parents": [
        "db5bd176f7c6f4b2f15c46142fdc8319a365bf6e",
        "81cb5e913295b45dc25ca8b0e3c142326a382fb3"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Mon Apr 09 13:01:47 2018"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 09 13:01:47 2018"
      },
      "message": "Merge pull request #96 from qaisjp/feature/webirc\n\nAdd WebIRC field"
    },
    {
      "commit": "81cb5e913295b45dc25ca8b0e3c142326a382fb3",
      "tree": "859622b08c053732743bd98c030f8e93aaff8651",
      "parents": [
        "d5dbd683d97c8d612963d42d4525c44ae8c38090",
        "db5bd176f7c6f4b2f15c46142fdc8319a365bf6e"
      ],
      "author": {
        "name": "Qais Patankar",
        "email": "qaisjp@gmail.com",
        "time": "Sun Dec 24 19:08:48 2017"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Dec 24 19:08:48 2017"
      },
      "message": "Merge branch \u0027master\u0027 into feature/webirc"
    },
    {
      "commit": "d5dbd683d97c8d612963d42d4525c44ae8c38090",
      "tree": "859622b08c053732743bd98c030f8e93aaff8651",
      "parents": [
        "c359ee267050b143ccc9c715ce73a797d52c9f5a",
        "db5bd176f7c6f4b2f15c46142fdc8319a365bf6e"
      ],
      "author": {
        "name": "Qais Patankar",
        "email": "qaisjp@gmail.com",
        "time": "Sun Dec 24 19:08:02 2017"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Dec 24 19:08:02 2017"
      },
      "message": "Merge branch \u0027master\u0027 into feature/webirc"
    },
    {
      "commit": "db5bd176f7c6f4b2f15c46142fdc8319a365bf6e",
      "tree": "2be83421d98cc19c802686503399e38f5a3e1ff9",
      "parents": [
        "ef65ae61a32a5100a9f50f3eb74fc4266b716239",
        "547dde5ba34a852acac20af51e599ff89650560e"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Mon Nov 13 08:21:06 2017"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Nov 13 08:21:06 2017"
      },
      "message": "Merge pull request #99 from prologic/master\n\nAdd realname support. Guard against race conditions on Disconnect"
    },
    {
      "commit": "547dde5ba34a852acac20af51e599ff89650560e",
      "tree": "2be83421d98cc19c802686503399e38f5a3e1ff9",
      "parents": [
        "656226dc22874dcb7ad22082584e5a5c4963b054"
      ],
      "author": {
        "name": "James Mills",
        "email": "prologic@shortcircuit.net.au",
        "time": "Sun Nov 12 21:45:29 2017"
      },
      "committer": {
        "name": "James Mills",
        "email": "prologic@shortcircuit.net.au",
        "time": "Mon Nov 13 02:53:49 2017"
      },
      "message": "Do not Disconnect() on ERROR events (e.g: KILL).\n"
    },
    {
      "commit": "656226dc22874dcb7ad22082584e5a5c4963b054",
      "tree": "79fc1996c36d64f09a6135783c0208a371b276c7",
      "parents": [
        "ef65ae61a32a5100a9f50f3eb74fc4266b716239"
      ],
      "author": {
        "name": "James Mills",
        "email": "prologic@shortcircuit.net.au",
        "time": "Thu Nov 09 08:52:12 2017"
      },
      "committer": {
        "name": "James Mills",
        "email": "prologic@shortcircuit.net.au",
        "time": "Mon Nov 13 02:53:49 2017"
      },
      "message": "Add realname support. Guard against race conditions on Disconnect\n"
    },
    {
      "commit": "ef65ae61a32a5100a9f50f3eb74fc4266b716239",
      "tree": "5168568638ca5db7d3b181d8750ecaa1c78d2c70",
      "parents": [
        "12e0f85112137204d226a670b49bc15228e33b36",
        "744f1e3a7afc6518ba1fe5fa376944ae7ca0fcc5"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Oct 13 17:30:29 2017"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Oct 13 17:30:29 2017"
      },
      "message": "Merge pull request #94 from irccloud/ircv3-tags\n\nIRCv3 capability negotiation and tag parsing"
    },
    {
      "commit": "12e0f85112137204d226a670b49bc15228e33b36",
      "tree": "40ea4031e2bf9d99517f349ea6dc07135dff582b",
      "parents": [
        "1b0acb5f2f1b615cfbd4b9f91abb14cb39a18769",
        "5a0a9009952b97fb28dc2b1f37799936db0a9439"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Tue Oct 03 06:19:41 2017"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 03 06:19:41 2017"
      },
      "message": "Merge pull request #97 from pztrn/pztrn_master\n\nFix dataraces and possible application stuck"
    },
    {
      "commit": "5a0a9009952b97fb28dc2b1f37799936db0a9439",
      "tree": "40ea4031e2bf9d99517f349ea6dc07135dff582b",
      "parents": [
        "e39cceace6a64bfd503baa2910ce677d98019f8b"
      ],
      "author": {
        "name": "Stanislav N. aka pztrn",
        "email": "pztrn@pztrn.name",
        "time": "Mon Oct 02 21:19:13 2017"
      },
      "committer": {
        "name": "Stanislav N. aka pztrn",
        "email": "pztrn@pztrn.name",
        "time": "Mon Oct 02 21:19:13 2017"
      },
      "message": "Pings are also wrapped with own sync.Mutex.\n"
    },
    {
      "commit": "e39cceace6a64bfd503baa2910ce677d98019f8b",
      "tree": "417e92299aba2c3ad8c76c965c6f22a023637592",
      "parents": [
        "1b0acb5f2f1b615cfbd4b9f91abb14cb39a18769"
      ],
      "author": {
        "name": "Stanislav N. aka pztrn",
        "email": "pztrn@pztrn.name",
        "time": "Mon Oct 02 21:03:43 2017"
      },
      "committer": {
        "name": "Stanislav N. aka pztrn",
        "email": "pztrn@pztrn.name",
        "time": "Mon Oct 02 21:03:43 2017"
      },
      "message": "Added eventsMutex and wrap all events calls with it.\n\nDue to some \"golangish\" code this library have possibility to\nrun into data race when application is working with callbacks.\nThis commit adds eventsMutex (which is a sync.Mutex), removed\nall \"golangish\" ifs-map reads, and wrap events map read with\nsync.Mutex to avoid data races.\n"
    },
    {
      "commit": "c359ee267050b143ccc9c715ce73a797d52c9f5a",
      "tree": "be494a80da66d153016a066a0689f4027d76c668",
      "parents": [
        "1b0acb5f2f1b615cfbd4b9f91abb14cb39a18769"
      ],
      "author": {
        "name": "Qais Patankar",
        "email": "qaisjp@gmail.com",
        "time": "Fri Aug 18 15:56:08 2017"
      },
      "committer": {
        "name": "Qais Patankar",
        "email": "qaisjp@gmail.com",
        "time": "Fri Aug 18 15:56:08 2017"
      },
      "message": "Add WebIRC field\n"
    },
    {
      "commit": "744f1e3a7afc6518ba1fe5fa376944ae7ca0fcc5",
      "tree": "156a0f91cc3d9f3c72c28d161178cb597250ccd6",
      "parents": [
        "e1d00ae799013d174fc3504fc7493436a3fdb263"
      ],
      "author": {
        "name": "Russ Garrett",
        "email": "russ@garrett.co.uk",
        "time": "Wed Jan 25 17:36:15 2017"
      },
      "committer": {
        "name": "Russ Garrett",
        "email": "russ@garrett.co.uk",
        "time": "Wed Jan 25 17:36:15 2017"
      },
      "message": "IRCv3 Capability Negotiation\n\nThis adds the ability to negotiate arbitrary IRCv3 capabilities on\nconnection. Capabilities to be requested can be set in `irc.RequestCaps`,\nand after registration the negotiated capabilities can be seen in\n`irc.AcknowledgedCaps`.\n"
    },
    {
      "commit": "e1d00ae799013d174fc3504fc7493436a3fdb263",
      "tree": "d02a0ae7ae0e3b0e99d786fa4cbc446953a22f7e",
      "parents": [
        "1b0acb5f2f1b615cfbd4b9f91abb14cb39a18769"
      ],
      "author": {
        "name": "Russ Garrett",
        "email": "russ@garrett.co.uk",
        "time": "Wed Jan 25 15:39:59 2017"
      },
      "committer": {
        "name": "Russ Garrett",
        "email": "russ@garrett.co.uk",
        "time": "Wed Jan 25 15:39:59 2017"
      },
      "message": "Add support for parsing IRCv3 tags in received messages\n"
    },
    {
      "commit": "1b0acb5f2f1b615cfbd4b9f91abb14cb39a18769",
      "tree": "fe9e6960e054a228a7e7cfbc64442a5ee223003d",
      "parents": [
        "cfd5535e0938a9b7918b571c305fcba6aa4f32ff"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Thu Dec 08 08:29:58 2016"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Thu Dec 08 08:29:58 2016"
      },
      "message": "Fix double close of irc.end channel.\n"
    },
    {
      "commit": "cfd5535e0938a9b7918b571c305fcba6aa4f32ff",
      "tree": "4b09c5ad43fce80da51ba17dc25e0928215ecef5",
      "parents": [
        "9fa6da3c5ccca59f5cbfdedd90d2b69f7e248060",
        "f4980d9fc2bd0ba8d9c896627d2a246ea4986802"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sat Nov 26 17:48:35 2016"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Nov 26 17:48:35 2016"
      },
      "message": "Merge pull request #91 from ugjka/master\n\nmake other threads exit if there\u0027s an error in one"
    },
    {
      "commit": "f4980d9fc2bd0ba8d9c896627d2a246ea4986802",
      "tree": "4b09c5ad43fce80da51ba17dc25e0928215ecef5",
      "parents": [
        "9fa6da3c5ccca59f5cbfdedd90d2b69f7e248060"
      ],
      "author": {
        "name": "ugjka",
        "email": "ugis.germanis@gmail.com",
        "time": "Sat Nov 26 11:51:12 2016"
      },
      "committer": {
        "name": "ugjka",
        "email": "ugis.germanis@gmail.com",
        "time": "Sat Nov 26 11:51:12 2016"
      },
      "message": "make other threads exit if there\u0027s an error in one\n"
    },
    {
      "commit": "9fa6da3c5ccca59f5cbfdedd90d2b69f7e248060",
      "tree": "2079b004e6d19e78166e3c086d2cee126192e0a7",
      "parents": [
        "01d32de186dc5db738a4f2c9524e43184ffff704",
        "0d77e6970c6195ad9fabfcf2163c98bda8f7e112"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Tue Nov 08 12:59:05 2016"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 08 12:59:05 2016"
      },
      "message": "Merge pull request #87 from tetheredge/fix-example\n\nfix import statement in the example to the correct repo name"
    },
    {
      "commit": "0d77e6970c6195ad9fabfcf2163c98bda8f7e112",
      "tree": "2079b004e6d19e78166e3c086d2cee126192e0a7",
      "parents": [
        "01d32de186dc5db738a4f2c9524e43184ffff704"
      ],
      "author": {
        "name": "Taylor Etheredge",
        "email": "taylor.etheredge@gmail.com",
        "time": "Tue Nov 08 02:19:02 2016"
      },
      "committer": {
        "name": "Taylor Etheredge",
        "email": "taylor.etheredge@gmail.com",
        "time": "Tue Nov 08 02:19:02 2016"
      },
      "message": "fix import statement to correct repo name\n"
    },
    {
      "commit": "01d32de186dc5db738a4f2c9524e43184ffff704",
      "tree": "c48e4486d6f42cf009d23ca1bb34556785dd51ed",
      "parents": [
        "e7aa1b5e946bc998a5275d856394831e29396091"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sat Nov 05 18:17:13 2016"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Nov 05 18:17:13 2016"
      },
      "message": "Link to example in README"
    },
    {
      "commit": "e7aa1b5e946bc998a5275d856394831e29396091",
      "tree": "46c7601f19dd81496687b88724602c4aac051ce1",
      "parents": [
        "491578616f18753615a0fe70f6efa69decdb64eb"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sat Nov 05 18:10:18 2016"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sat Nov 05 18:10:18 2016"
      },
      "message": "Add example\n"
    },
    {
      "commit": "491578616f18753615a0fe70f6efa69decdb64eb",
      "tree": "8d16809ec42c5b5881acf659d4491fa6a8fd7eee",
      "parents": [
        "3078a030efc82cfa40c503bf4059c1cdeb0c001d",
        "229753e4cc560fd5bf5de02ef8dcb7b229713902"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sat Nov 05 17:55:39 2016"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Nov 05 17:55:39 2016"
      },
      "message": "Merge pull request #82 from thoj/testing\n\nChanged the way Quit/Disconnect works to avoid possible DATA races."
    },
    {
      "commit": "229753e4cc560fd5bf5de02ef8dcb7b229713902",
      "tree": "b7ffd584b7a4ff04224e877f623aa6ebb32b87e4",
      "parents": [
        "9e77c40650dc1d3addf80a59c9e93dda49a03795"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sat Nov 05 17:53:53 2016"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sat Nov 05 17:53:53 2016"
      },
      "message": "Do ping/Lag test\n"
    },
    {
      "commit": "9e77c40650dc1d3addf80a59c9e93dda49a03795",
      "tree": "c241cf5a0137cd908a5a7c76e3897ac78c77259d",
      "parents": [
        "fdbbdf33e346df16375b85c85e500d1c1d3ab598"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sat Nov 05 17:53:35 2016"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sat Nov 05 17:53:35 2016"
      },
      "message": "Fix lag printing\n"
    },
    {
      "commit": "fdbbdf33e346df16375b85c85e500d1c1d3ab598",
      "tree": "7eda6a16ab4fb11d56173a629d32c0d63c107d3d",
      "parents": [
        "30fbca01f10d929d0530b56caa9aa6da0ece3cb3"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sat Nov 05 17:53:11 2016"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sat Nov 05 17:53:11 2016"
      },
      "message": "Fix data races\n"
    },
    {
      "commit": "3078a030efc82cfa40c503bf4059c1cdeb0c001d",
      "tree": "9a956a0b1b0874dc2f432e95fd31370806084382",
      "parents": [
        "a6b1561a016c2a4aae183c3ef152c25d134c095d",
        "1a78dc3a3948190ba6854ef99a9dbbcd6d7e1dab"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Mon Oct 17 14:17:55 2016"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Oct 17 14:17:55 2016"
      },
      "message": "Merge pull request #84 from davidscholberg/master\n\nREADME: fixed test file path, converted it to github-flavored file link"
    },
    {
      "commit": "1a78dc3a3948190ba6854ef99a9dbbcd6d7e1dab",
      "tree": "9a956a0b1b0874dc2f432e95fd31370806084382",
      "parents": [
        "a6b1561a016c2a4aae183c3ef152c25d134c095d"
      ],
      "author": {
        "name": "David Scholberg",
        "email": "recombinant.vector@gmail.com",
        "time": "Sat Oct 08 02:49:57 2016"
      },
      "committer": {
        "name": "David Scholberg",
        "email": "recombinant.vector@gmail.com",
        "time": "Sat Oct 08 02:49:57 2016"
      },
      "message": "README: fixed test file path, converted it to github-flavored file link\n"
    },
    {
      "commit": "30fbca01f10d929d0530b56caa9aa6da0ece3cb3",
      "tree": "79f1d65af29e8eda2f5286d9629f68994b875450",
      "parents": [
        "582bf809929a933095e059c5ade2fae191057929",
        "7c392f5a61c195b528832868b4272adfc851448d"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Wed Aug 03 08:57:04 2016"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Aug 03 08:57:04 2016"
      },
      "message": "Merge pull request #83 from tetheredge/testing\n\nTesting"
    },
    {
      "commit": "7c392f5a61c195b528832868b4272adfc851448d",
      "tree": "79f1d65af29e8eda2f5286d9629f68994b875450",
      "parents": [
        "62964f02b040eeb49569212bf24367564190d580"
      ],
      "author": {
        "name": "Taylor Etheredge",
        "email": "taylor.etheredge@gmail.com",
        "time": "Wed Aug 03 02:00:42 2016"
      },
      "committer": {
        "name": "Taylor Etheredge",
        "email": "taylor.etheredge@gmail.com",
        "time": "Wed Aug 03 02:00:42 2016"
      },
      "message": "add helper function to degub tests\n"
    },
    {
      "commit": "62964f02b040eeb49569212bf24367564190d580",
      "tree": "cb5cbd5c4c24dfa39f57e7919af5b0b28d93e050",
      "parents": [
        "582bf809929a933095e059c5ade2fae191057929"
      ],
      "author": {
        "name": "Taylor Etheredge",
        "email": "taylor.etheredge@gmail.com",
        "time": "Wed Aug 03 01:58:54 2016"
      },
      "committer": {
        "name": "Taylor Etheredge",
        "email": "taylor.etheredge@gmail.com",
        "time": "Wed Aug 03 01:58:54 2016"
      },
      "message": "update comment on handling error events\n"
    },
    {
      "commit": "582bf809929a933095e059c5ade2fae191057929",
      "tree": "9072054ec9fc27a268464be462672ee945cb6078",
      "parents": [
        "a6b1561a016c2a4aae183c3ef152c25d134c095d"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Wed Jul 27 20:55:55 2016"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Wed Jul 27 20:55:55 2016"
      },
      "message": "Changed the way Quit/Disconnect works to avoid possible DATA races.\nRewrote tests to be less spammy. Created REconnection test.\n"
    },
    {
      "commit": "a6b1561a016c2a4aae183c3ef152c25d134c095d",
      "tree": "4b128171ee8fdee7fa012c33c1acbf492028f081",
      "parents": [
        "6c780b5b703af7ef3902d63e504a018d55a2a928"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Mon Jul 25 11:27:37 2016"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Mon Jul 25 11:27:37 2016"
      },
      "message": "Redo and Clean up some tests\n"
    },
    {
      "commit": "6c780b5b703af7ef3902d63e504a018d55a2a928",
      "tree": "ff6e41ea288b87babf9065689d29c024cd145482",
      "parents": [
        "39b48423fdda0129fdc5adc2f44b269541832623",
        "a08c3321849b6b77d8f726f8a9c3a8ca5e1b6a8e"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sun Jul 24 23:30:25 2016"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sun Jul 24 23:30:25 2016"
      },
      "message": "Merge branch \u0027master\u0027 of github.com:thoj/go-ircevent\n"
    },
    {
      "commit": "39b48423fdda0129fdc5adc2f44b269541832623",
      "tree": "a5bbb18135d1b7d55dfd1ac8121d45594e617bee",
      "parents": [
        "4d2d36fc65cc6ab77f719455b2a31fabe46d251b"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sun Jul 24 23:29:47 2016"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sun Jul 24 23:29:47 2016"
      },
      "message": "Wrong format type in printf (%s -\u003e %d)\n"
    },
    {
      "commit": "4d2d36fc65cc6ab77f719455b2a31fabe46d251b",
      "tree": "85da4b92c89d1951bf3eb83b30b352d34643be16",
      "parents": [
        "98c1902dd2097f38142384167e60206ba26f1585"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sun Jul 24 23:29:06 2016"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sun Jul 24 23:29:06 2016"
      },
      "message": "Remove unreacable code\n"
    },
    {
      "commit": "a08c3321849b6b77d8f726f8a9c3a8ca5e1b6a8e",
      "tree": "2f88a04a136f2d4bd031b62e05e8521ef02cb3a4",
      "parents": [
        "98c1902dd2097f38142384167e60206ba26f1585",
        "8401b5855faea3d6370ea023f83cb21191c1219c"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 22 23:52:49 2016"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jul 22 23:52:49 2016"
      },
      "message": "Merge pull request #77 from 42wim/sasl\n\nAdd SASL (PLAIN) support"
    },
    {
      "commit": "8401b5855faea3d6370ea023f83cb21191c1219c",
      "tree": "2f88a04a136f2d4bd031b62e05e8521ef02cb3a4",
      "parents": [
        "221c89fece3699394760d46fa6b34cc93e869781"
      ],
      "author": {
        "name": "Wim",
        "email": "wim@42.be",
        "time": "Thu Jul 21 20:55:31 2016"
      },
      "committer": {
        "name": "Wim",
        "email": "wim@42.be",
        "time": "Fri Jul 22 20:38:18 2016"
      },
      "message": "Add SASL (PLAIN) support\n"
    },
    {
      "commit": "98c1902dd2097f38142384167e60206ba26f1585",
      "tree": "7476c3466793c6c683fc9cdd80566e69a70e9a3d",
      "parents": [
        "da78ed515c0f0833e7a92c7cc52898176198e2c1",
        "221c89fece3699394760d46fa6b34cc93e869781"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Wed Jul 20 12:27:14 2016"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 20 12:27:14 2016"
      },
      "message": "Merge pull request #74 from d1str0/master\n\nCorrect typo in README example and ellaborate on a comment."
    },
    {
      "commit": "221c89fece3699394760d46fa6b34cc93e869781",
      "tree": "7476c3466793c6c683fc9cdd80566e69a70e9a3d",
      "parents": [
        "da78ed515c0f0833e7a92c7cc52898176198e2c1"
      ],
      "author": {
        "name": "Brady Sullivan",
        "email": "brady@bsull.com",
        "time": "Mon May 30 06:03:20 2016"
      },
      "committer": {
        "name": "Brady Sullivan",
        "email": "brady@bsull.com",
        "time": "Mon May 30 06:03:20 2016"
      },
      "message": "Correct type in README example and ellaborate on a comment.\n"
    },
    {
      "commit": "da78ed515c0f0833e7a92c7cc52898176198e2c1",
      "tree": "fe2d696b0f28c862aa481f607bd561cd8ed653ca",
      "parents": [
        "ab737c68eb44b3d0780258a61a4c4425538f4544"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sat Feb 06 20:33:04 2016"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sat Feb 06 20:38:53 2016"
      },
      "message": "BREAKING CHANGES: Run callbacks in main thread and int callback id.\n\nExecute callbacks in main thread. This will break callbacks that\nuse a long time to execute. Create your own thread in AddCallback\nusing gorutines on long running callbacks.\n\nUse deterministic IDs for AddCallback. Changes the id from SHA-hash\nto int.\n"
    },
    {
      "commit": "ab737c68eb44b3d0780258a61a4c4425538f4544",
      "tree": "ab216a7237691f1bf7f5511f40e6f6d6fc368155",
      "parents": [
        "a7676549083289e7bbf5c9a9614fff29250fb8ec"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sat Feb 06 20:20:35 2016"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sat Feb 06 20:20:35 2016"
      },
      "message": "Remove unnecessary return\n"
    },
    {
      "commit": "a7676549083289e7bbf5c9a9614fff29250fb8ec",
      "tree": "47da093f5b0d09e9129322c0d2792d07c684d6f4",
      "parents": [
        "db3338ebd4546123dfcde5dfad6057d1d646a42d",
        "5a16c2581e17f58a549c2abbefe4e0f7ea23720c"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sat Dec 05 10:32:46 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Sat Dec 05 10:32:46 2015"
      },
      "message": "Merge pull request #69 from peted27/master\n\nfix reconnection logic"
    },
    {
      "commit": "5a16c2581e17f58a549c2abbefe4e0f7ea23720c",
      "tree": "47da093f5b0d09e9129322c0d2792d07c684d6f4",
      "parents": [
        "937f84605b0815b4902315a801bfcc0011045b3d"
      ],
      "author": {
        "name": "peted",
        "email": "peted27@gmail.com",
        "time": "Sat Nov 14 13:51:15 2015"
      },
      "committer": {
        "name": "peted",
        "email": "peted27@gmail.com",
        "time": "Sat Nov 14 13:51:15 2015"
      },
      "message": "revert some changes but also update err chan for new connection so further errors are received in Loop\n"
    },
    {
      "commit": "937f84605b0815b4902315a801bfcc0011045b3d",
      "tree": "8462ee311019886f72e03200136394522f390b1e",
      "parents": [
        "db3338ebd4546123dfcde5dfad6057d1d646a42d"
      ],
      "author": {
        "name": "peted",
        "email": "peted27@gmail.com",
        "time": "Sat Nov 14 13:10:39 2015"
      },
      "committer": {
        "name": "peted",
        "email": "peted27@gmail.com",
        "time": "Sat Nov 14 13:10:39 2015"
      },
      "message": "fix reconnection logic\n"
    },
    {
      "commit": "db3338ebd4546123dfcde5dfad6057d1d646a42d",
      "tree": "47692ca45a2afc9e979360c215171e96c555b51c",
      "parents": [
        "988aaaacd937fc2748708c2a3b8ea5869be4d3a0",
        "f0c83dc012b0a5e3dcedd54f3bf87f3cdd19948f"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Wed Oct 28 13:31:23 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Wed Oct 28 13:31:23 2015"
      },
      "message": "Merge pull request #68 from lukevers/quit-message\n\nAdd support for specifying a quit message."
    },
    {
      "commit": "f0c83dc012b0a5e3dcedd54f3bf87f3cdd19948f",
      "tree": "47692ca45a2afc9e979360c215171e96c555b51c",
      "parents": [
        "988aaaacd937fc2748708c2a3b8ea5869be4d3a0"
      ],
      "author": {
        "name": "Luke Evers",
        "email": "me@lukevers.com",
        "time": "Wed Oct 28 12:58:41 2015"
      },
      "committer": {
        "name": "Luke Evers",
        "email": "me@lukevers.com",
        "time": "Wed Oct 28 12:58:41 2015"
      },
      "message": "Add support for specifying a quit message.\n"
    },
    {
      "commit": "988aaaacd937fc2748708c2a3b8ea5869be4d3a0",
      "tree": "2494c80ed3a636fb2d5e50f3a6d94e817291b4db",
      "parents": [
        "172717c0c58fe0f0facf7e36f637ab0c436a1ab7",
        "3b5fa9fe31d59e106eb24d3e3f0a63d702574731"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Aug 28 18:28:27 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Aug 28 18:28:27 2015"
      },
      "message": "Merge pull request #66 from dainis/master\n\nFix - #65,"
    },
    {
      "commit": "3b5fa9fe31d59e106eb24d3e3f0a63d702574731",
      "tree": "2494c80ed3a636fb2d5e50f3a6d94e817291b4db",
      "parents": [
        "172717c0c58fe0f0facf7e36f637ab0c436a1ab7"
      ],
      "author": {
        "name": "Dainis Tillers",
        "email": "dainis.tillers@gmail.com",
        "time": "Fri Aug 28 18:01:23 2015"
      },
      "committer": {
        "name": "Dainis Tillers",
        "email": "dainis.tillers@gmail.com",
        "time": "Fri Aug 28 18:01:23 2015"
      },
      "message": "Fix - #65, when disconnect is called it will try to reconnect again in the Loop function, but Disconnect has already closed the channel\n"
    },
    {
      "commit": "172717c0c58fe0f0facf7e36f637ab0c436a1ab7",
      "tree": "d182cd7566c321f129fd5f0c8cbb64a4e8040939",
      "parents": [
        "3f51dd25c77626365378f0e07cec120631d8bbc4"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 19:34:27 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 19:34:27 2015"
      },
      "message": "Remove fuzzing testcases\n"
    },
    {
      "commit": "3f51dd25c77626365378f0e07cec120631d8bbc4",
      "tree": "6d2cdb05cd8d205da0acb69a97379a1aec367bf2",
      "parents": [
        "f204a14e00278d99ad940a055aeeb315439999b4"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 19:33:36 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 19:33:36 2015"
      },
      "message": "Move fuzzing code to seperate file\n"
    },
    {
      "commit": "f204a14e00278d99ad940a055aeeb315439999b4",
      "tree": "0faf3d9b15a6ecc0785ac0336c5fa585b3b47070",
      "parents": [
        "e2be9c53c12ddd75f3cf8f5c809267f181aa2dc7"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 11:03:48 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 11:03:48 2015"
      },
      "message": "Only trim newline/linefeed\n"
    },
    {
      "commit": "e2be9c53c12ddd75f3cf8f5c809267f181aa2dc7",
      "tree": "9337482cd0b70f1dee599566829769ea424d4543",
      "parents": [
        "6ce1e34c2169a3ba454b4fdd632ec64ea6d0a886"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 11:03:31 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 11:03:31 2015"
      },
      "message": "Test empty Action\n"
    },
    {
      "commit": "6ce1e34c2169a3ba454b4fdd632ec64ea6d0a886",
      "tree": "2a469966b204b0890738982974e2c45da138051d",
      "parents": [
        "c47f9d8e3db1e137c31efbd755bd563d1bf29efc"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 11:03:09 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 11:03:09 2015"
      },
      "message": "Don\u0027t crash on empty ACTION\n"
    },
    {
      "commit": "c47f9d8e3db1e137c31efbd755bd563d1bf29efc",
      "tree": "c923363d0e66cc4803b29f347c4785f6bc1cb93d",
      "parents": [
        "8b3e6a50ace27054d34556bdc0d85f7aa9be1191"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 06:30:21 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 06:30:21 2015"
      },
      "message": "Fuzz testing callbacks\n"
    },
    {
      "commit": "8b3e6a50ace27054d34556bdc0d85f7aa9be1191",
      "tree": "4286f02ae48d963aed4475f82d9157708f432229",
      "parents": [
        "414fe0a20144f75b1b650d7e5ff260496ec3cc8c"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 06:29:20 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 06:29:20 2015"
      },
      "message": "Fix ident\n"
    },
    {
      "commit": "414fe0a20144f75b1b650d7e5ff260496ec3cc8c",
      "tree": "f51018d4b7c82510d510251ba2da0a95265e8d7d",
      "parents": [
        "6c849e114799c11e08aa0c1ee8b295dd85159a9a"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 06:28:54 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 06:28:54 2015"
      },
      "message": "Fix testcase. Id can come in diffrent orders.\n"
    },
    {
      "commit": "6c849e114799c11e08aa0c1ee8b295dd85159a9a",
      "tree": "61fad65acb7a7bcd3ac3efc2341a050b601cb475",
      "parents": [
        "4b30e65f8305e7fa55be9e0df1e13fc30419bea5",
        "35f8ae857e332f58f1d1cf8f90f1ccb6d63919ee"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 05:35:48 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 05:35:48 2015"
      },
      "message": "Merge branch \u0027master\u0027 of github.com:thoj/go-ircevent into fuzz\n"
    },
    {
      "commit": "4b30e65f8305e7fa55be9e0df1e13fc30419bea5",
      "tree": "ed219f0679a017786402cb12052c72a29a60098e",
      "parents": [
        "4f50f209c47842d6eaffcafaa3877266eff540c2"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 05:35:34 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 05:35:34 2015"
      },
      "message": "Fix indentation\n"
    },
    {
      "commit": "4f50f209c47842d6eaffcafaa3877266eff540c2",
      "tree": "798c47243dda29dd65e42eaaa275a463cb2b6e02",
      "parents": [
        "747806b8ddb5095ab74aaa2465c3127fdf331ae2"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 05:34:19 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 05:34:19 2015"
      },
      "message": "Fix parser. Tested with go-fuzz\n"
    },
    {
      "commit": "35f8ae857e332f58f1d1cf8f90f1ccb6d63919ee",
      "tree": "9af34cf79968e3503e2ec18e118ae46f4cd90af2",
      "parents": [
        "2c747035542b6e12d47dee8edcc29121179f00cd",
        "b0ed3d4bd5c60abbd8c1f141df10f44fd8dd1110"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 05:05:02 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Fri Jul 31 05:05:02 2015"
      },
      "message": "Merge pull request #62 from alaska/master\n\nAdd kick/multi kick. Properly randomize. Catch invalid CTCP messages and log"
    },
    {
      "commit": "b0ed3d4bd5c60abbd8c1f141df10f44fd8dd1110",
      "tree": "4bf6ad141b4ef06965a29484f7308b5895cd94b8",
      "parents": [
        "03b22b08f42f39e3513c33460c16871005a8f395"
      ],
      "author": {
        "name": "Andy Walker",
        "email": "walkeraj@gmail.com",
        "time": "Thu Jul 30 17:03:55 2015"
      },
      "committer": {
        "name": "Andy Walker",
        "email": "walkeraj@gmail.com",
        "time": "Thu Jul 30 17:03:55 2015"
      },
      "message": "should return in case of CTCP error\n"
    },
    {
      "commit": "03b22b08f42f39e3513c33460c16871005a8f395",
      "tree": "b3eab190ed3057475b538553f2792ca15087de75",
      "parents": [
        "6112236593e0685877ddd60c8ab6fdd4428733cd"
      ],
      "author": {
        "name": "Andy Walker",
        "email": "walkeraj@gmail.com",
        "time": "Thu Jul 30 16:58:23 2015"
      },
      "committer": {
        "name": "Andy Walker",
        "email": "walkeraj@gmail.com",
        "time": "Thu Jul 30 16:58:23 2015"
      },
      "message": "Report on unterminated CTCP messages\n\nA bug was discovered where, under certain circumstances that are still\nbeing researched, the library would panic on a message that started with\n\\0x01, but did not end with it. This would cause the re-slice to panic,\nbecause the library assumes a terminating index \u003e0, effectively\nintroducing the possibility of msg \u003d msg[1:0]. Since this violates the\nCTCP spec, it is an error, and should be logged, along with the\ncomplete, escaped message.\n"
    },
    {
      "commit": "6112236593e0685877ddd60c8ab6fdd4428733cd",
      "tree": "72edf8838123ae86a0e5e7c903ff174a57423684",
      "parents": [
        "ad73608a8738d746c1dd198b49519221c6decbb9"
      ],
      "author": {
        "name": "Andy Walker",
        "email": "walkeraj@gmail.com",
        "time": "Thu Jul 30 16:57:48 2015"
      },
      "committer": {
        "name": "Andy Walker",
        "email": "walkeraj@gmail.com",
        "time": "Thu Jul 30 16:57:48 2015"
      },
      "message": "fix multi-kick\n\nSpec defines multiple users as joined by spaces not commas\n"
    },
    {
      "commit": "747806b8ddb5095ab74aaa2465c3127fdf331ae2",
      "tree": "a273e6504cf6baced7ecfc87b2ee19385806ebb2",
      "parents": [
        "2c747035542b6e12d47dee8edcc29121179f00cd"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Thu Jul 30 12:41:53 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Thu Jul 30 12:41:53 2015"
      },
      "message": "Move connection tests last\n"
    },
    {
      "commit": "2c747035542b6e12d47dee8edcc29121179f00cd",
      "tree": "813156954ea952c210ac23765490f94abce5f9a0",
      "parents": [
        "f169aaad6f6dfeffe1242dfd28937aea8bdb54b0",
        "f69e2d34447f899c9fd0984c8e3cfbb1271e0381"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Thu Jul 30 10:46:56 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Thu Jul 30 10:46:56 2015"
      },
      "message": "Merge pull request #60 from dainis/master\n\nFix - wait for waitgroup to sync before reconnecting "
    },
    {
      "commit": "ad73608a8738d746c1dd198b49519221c6decbb9",
      "tree": "53a97342a7ebb4030e92dd4e72f5f9e9ee19efec",
      "parents": [
        "b49099e0755f8841084edf2817fcac2cd1a512ec"
      ],
      "author": {
        "name": "Andy Walker",
        "email": "walkeraj@gmail.com",
        "time": "Tue Jul 21 22:41:16 2015"
      },
      "committer": {
        "name": "Andy Walker",
        "email": "walkeraj@gmail.com",
        "time": "Tue Jul 21 22:41:16 2015"
      },
      "message": "add Kick and MultiKick commands\n"
    },
    {
      "commit": "b49099e0755f8841084edf2817fcac2cd1a512ec",
      "tree": "9987babb912cb7fc9c9d866d15849b73355d510a",
      "parents": [
        "f169aaad6f6dfeffe1242dfd28937aea8bdb54b0"
      ],
      "author": {
        "name": "Andy Walker",
        "email": "walkeraj@gmail.com",
        "time": "Mon Jul 20 20:13:15 2015"
      },
      "committer": {
        "name": "Andy Walker",
        "email": "walkeraj@gmail.com",
        "time": "Mon Jul 20 20:13:15 2015"
      },
      "message": "use rand.Seed() in init() to properly randomize\n"
    },
    {
      "commit": "f69e2d34447f899c9fd0984c8e3cfbb1271e0381",
      "tree": "813156954ea952c210ac23765490f94abce5f9a0",
      "parents": [
        "f169aaad6f6dfeffe1242dfd28937aea8bdb54b0"
      ],
      "author": {
        "name": "Dainis",
        "email": "dainis.tillers@gmail.com",
        "time": "Tue Jul 14 06:35:22 2015"
      },
      "committer": {
        "name": "Dainis",
        "email": "dainis.tillers@gmail.com",
        "time": "Tue Jul 14 06:35:22 2015"
      },
      "message": "Fix - wait for waitgroup to sync before reconnecting again ensuring that it just doesn\u0027t keep on creating new goroutines\n"
    },
    {
      "commit": "f169aaad6f6dfeffe1242dfd28937aea8bdb54b0",
      "tree": "f7ac73ba3b778140d98aa5e9a85acbcaec7ed8de",
      "parents": [
        "087ae892d056f3699db20764b67d785a6980266f",
        "f9d88d1af185e520993b8a94edbb0ede9fc34226"
      ],
      "author": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Thu Jun 25 08:38:50 2015"
      },
      "committer": {
        "name": "Thomas Jager",
        "email": "mail@jager.no",
        "time": "Thu Jun 25 08:38:50 2015"
      },
      "message": "Merge pull request #58 from julidau/master\n\nfixing small bugs"
    }
  ],
  "next": "f9d88d1af185e520993b8a94edbb0ede9fc34226"
}
