Apache Traffic Server
Copyright 2014 The Apache Software Foundation

This product includes software developed at
  - The Apache Software Foundation (http://www.apache.org/).
  - Yahoo! Inc
  - Network Geographics (http://network-geographics.com)
  - OmniTI
  - Comcast
  - LinkedIn
  - Mike Pall
  - GoDaddy

~~~

Codebase originally donated by Yahoo:

Copyright (C) 2009 Yahoo! Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

~~~

lib/wccp and lib/tsconfig developed by Network Geographics.
Copyright (C) 2010 Network Geographics, Inc.

~~~

WebSocket support developed by LinkedIn
Copyright (C) 2014 LinkedIn

~~~

stale_while_revalidate Plugin developed by OmniTI on behalf of Oregon Health & Science University
Copyright (C) 2012 Oregon Health & Science University

~~~

cache-key-genid Plugin developed by GoDaddy
Copyright (C) 2013 GoDaddy Operating Company, LLC

~~~

lib/atscppapi developed by LinkedIn
Copyright (c) 2013 LinkedIn

~~~

remap_stats and url_sig plugins developed by Comcast.
Copyright (C) 2014 Comcast

~~~

LuaJIT -- a Just-In-Time Compiler for Lua. http://luajit.org/
Copyright (C) 2005-2014 Mike Pall. All rights reserved.

~~~

ats_speed - PageSpeed for ATS. Author: oschaaf@we-amp.com (Otto van der Schaaf)
Copyright (C) 2013 We-Amp B.V.

prepare_psol.sh, ats_message_handler.cc and ats_message_handler.h for ats_speed:
Copyright (C) 2012 Google Inc.

~~~

collapsed_collapsing: Plugin for connection collapsing to origin
Copyright (C) 2014 Yahoo! Inc.  All rights reserved.

multiplexer: Plugin for request multiplixing
Copyright (C) 2015 Yahoo! Inc.  All rights reserved.

inliner: Plugin for inlining base64 images
Copyright (C) 2016 Yahoo! Inc.  All rights reserved.

~~~

healthchecks: Plugin for ATS healthchecks.
Copyright (C) 2012 GoDaddy Operating Company, LLC

~~~

lib/ts/HashFNV.cc contains code derived from code at http://www.isthe.com/chongo/tech/comp/fnv/
It is public domain and has no copyright.

~~

lib/ts/HashSip.cc contains code derived from code at https://github.com/floodyberry/siphash
The code is public domain.

The algorithm info can be found at: https://131002.net/siphash/

~~

lib/raft developed by Google.
Copyright 2014 Google Inc. All Rights Reserved.

~~

plugins/experimental/memcache/protocol_binary.h developed by Sun Microsystems, Inc.
Copyright (c) <2008>, Sun Microsystems, Inc.  All rights reserved.
