diff --git a/Copyright Notice.doc b/Copyright Notice.doc
deleted file mode 100644
index f6f9c68..0000000
--- a/Copyright Notice.doc
+++ /dev/null
@@ -1,653 +0,0 @@
-
-
-Navia wangshuangtao 31 531 2017-02-14T01:11:00Z 2020-12-16T02:27:00Z 520 110918 632237 Huawei Technologies Co.,Ltd. 5268 1483 741672 15 (1)T18lzDrcBiLXr1OopgkcTDfuu01PuSGUl/YFhfoQrnga1ta/o5/QVL6sHY6TzPEL6xIf0jI4
-cPIrOWAW1Wf0oPt5rUYStqXc+2z+kIlp1NX9TRxK2Qlho4lO+i+KYP4iYXIVCR9SaR/MPgqM
-7r1xJJBzXcR3UBP41ol4wjy5rHo= _ms_pID_725343 (3)/btavgNToLWAiVzIW6w4CbZkLWuHCuR9yeS9Gd0MlrpX8I0biHqjz8gGU1YSt2j92vEZgCF9
-7PSoEDoUEuvzfU6fFcKR6HRms6/mywaJcaSmlW7i1AkV/tPpX9I9NkygLv0gHd8AFtS8R8i9
-rZqwSft/qU6mzHlavfq7XJdRx4avrMRGmIEcTKJLFblHLScJ2sNpPi6p35BV8LHu9FMfcdVF
-5COk+J58G+yjzbm+u/ _new_ms_pID_72543 ocQt4u9m2Nj/X7fAzOLc7V15vf2zSOcCCzz7Vw+BKQef5kpxZI96+l
-L01I6XGk0b1JmSdPvXHrz3E1RlD/4/4C/+tb20ksNIeG6CZpE/6H1agJB+KnCTeedNnK/6DA
-nostYPxI+qr2zjtlaIvlAT11tH0g/DAsZjP9huox+XZzwgNBERBb0P34GBq+qaXp5LgEGI1s
-0zPVTFlVbU0bT3556ZCCR2gcZ99UBI2Gizh+ _new_ms_pID_725431 3reHPN9RtONqOiYLs4ytxoGzHikHwJOQIrLz
-QQW9p6fSGWk3AqiE14rZckqUyQVnEQ== _new_ms_pID_725432 (3)bA52cHI6ZUf4odljKFnTF7dOQSdE9eGDGa2jJyq9ZrV4syyCpeIjdUb+r2l41tu2Mf0wVLJE
-yylv5QjVsSASkgnKyXtqlZoQzi/Mc0RGl6fqUpAL5XEJCqGpppcefvMBDpYSqLJF8S/+7ZHD
-P8UKW8pO6m/YruD5u2WVfB6XF6Asd/KCDY/EzBtwCXaj67iaD371yryeDWxL9diVk50kagkH
-rFJBGC9850sbnJ86US KX8wwhSfpEb48liHN76HXWttc57mUp5e1P1sjFAlxcrQGwmU6P6/Z3
-ZO49IB1P+cDhpnqRgCkTvWWWZwfunvGMmQ4ZSiIpbt+KmxRvOo02jrpJnnh/93+RlBNh7kjj
-8CJz1eEwG2jfpqCJk0auCiqevnvsWU092WFr3fLykxR+ndFbW0Oarr80miw3kOJnmS42Q/ov
-rmPaZpoQUWSnbrj4LaVht3lcRIJWl8pSEqvG 4HUoQdwF3WB+jMA58C+gm906ZnwAsRFsUFen
-UMj94UDySO4ZKfFKL4iTCAjVP9/0wg== _2015_ms_pID_725343 _2015_ms_pID_7253431 _2015_ms_pID_7253432 1607933198 OPEN SOURCE SOFTWARE NOTICE Please note we provide an open source software notice along with this product and/or this product firmware (in the following just “this product”). The open source software licenses are granted by the respective right holders. And the open source licenses prevail all other license information with regard to the respective open source software contained in the product, including but not limited to End User Software Licensing Agreement. This notice is provided on behalf of Huawei Technologies Co. Ltd. and any of its local subsidiaries which may have provided this product to you in your local country. Warranty Disclaimer The open source software in this product is distributed in the hope that it will be useful, b ut WITHOUT ANY WARRANTY , without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the applicable licenses for more details. Copyright Notice and License Texts Software: zlib 1.2.11 Copyright notice: Copyright (C) 1995-2006, 2011, 2016 Jean-loup Gailly Copyright (C) 2011, 2016 Mark Adler Copyright (C) 1995-2006, 2010, 2011, 2016 Jean-loup Gailly Copyright (C) 1995-2003 Mark Adler Copyright (C) 2003 Chris Anderson <christop@charm.net> 2005 - Adaptation to Microsoft C Compiler for AMD64 by Gilles Vollant Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler. Copyright (C) 1998 by Bob Dellaca. Copyright (C) 2003 by Cosmin Truta. Copyright (C) 1995-2003 by Jean-loup Gailly. Copyright (C) 1998,1999,2000 by Jacques Nomssi Nzali. Copyright (C) 1995-2011, 2016 Mark Adler Copyright (C) 1995-2005, 2014, 2016 Jean-loup Gailly, Mark Adler Copyright (C) 1995-2006, 2010, 2011, 2012, 2016 Mark Adler Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler Copyright (C) 1995-2016 Jean-loup Gailly Copyright (C) 2004, 2010 Mark Adler Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler Copyright (C) 2004-2017 Mark Adler Copyright (C) 1995-2016 Mark Adler Copyright (C) 1995-2017 Mark Adler Copyright (C) 1995-2003, 2010 Mark Adler Copyright (C) 1995-2005, 2010 Mark Adler (C) 1995-2017 Jean-loup Gailly and Mark Adler Copyright (C) 1995-2017 Jean-loup Gailly Copyright (C) 1995-2003, 2010, 2014, 2016 Jean-loup Gailly, Mark Adler Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler Copyright (C) 1995-2008 Mark Adler Copyright (C) 2003 Mark Adler Copyright (C) 1998-2005 Gilles Vollant Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http:www.winimage.com/zLibDll/minizip.html ) Copyright (C) 2009-2010 Mathias Svensson ( http:result42.com ) Copyright (C) 2007-2008 Even Rouault Copyright (c) 1990-2000 Info-ZIP. All rights reserved. Copyright (C) 1998 - 2010 Gilles Vollant, Even Rouault, Mathias Svensson Copyright (c) 1997 Copyright (C) 2002-2013 Mark Adler Copyright (C) 2002-2013 Mark Adler, all rights reserved Copyright (C) 2003, 2012, 2013 Mark Adler Copyright (c) Henrik Ravn 2004 Copyright (C) 2007, 2008, 2012 Mark Adler Copyright (C) 2003, 2005, 2008, 2010, 2012 Mark Adler Copyright (C) 2003, 2012 Mark Adler, all rights reserved Copyright (C) 2004, 2005, 2012 Mark Adler, all rights reserved Copyright (C) 2004, 2008, 2012, 2016 Mark Adler, all rights reserved Copyright (C) 2004, 2008, 2012 Mark Adler, all rights reserved Copyright (C) 2005, 2012 Mark Adler (C) Copyright Henrik Ravn 2004 License: zlib/libpng License Copyright (c) <year> <copyright holders> This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. Software: ipaddress 1.0.2 3 Copyright notice: Copyright 2007 Google Inc. i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, License: Python Software Foundation License V2 PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2 -------------------------------------------- 1. This LICENSE AGREEMENT is between the Python Software Foundation ("PSF"), and the Individual or Organization ("Licensee") accessing and otherwise using this software ("Python") in source or binary form and its associated documentation. 2. Subject to the terms and conditions of this License Agreement, PSF hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python alone or in any derivative version, provided, however, that PSF's License Agreement and PSF's notice of copyright, i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Python Software Foundation; All Rights Reserved" are retained in Python alone or in any derivative version prepared by Licensee. 3. In the event Licensee prepares a derivative work that is based on or incorporates Python or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to Python. 4. PSF is making Python available to Licensee on an "AS IS" basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. 6. This License Agreement will automatically terminate upon a material breach of its terms and conditions. 7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between PSF and Licensee. This License Agreement does not grant permission to use PSF trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party. 8. By copying, installing or otherwise using Python, Licensee agrees to be bound by the terms and conditions of this License Agreement. BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0 ------------------------------------------- BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1 1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the Individual or Organization ("Licensee") accessing and otherwise using this software in source or binary form and its associated documentation ("the Software"). 2. Subject to the terms and conditions of this BeOpen Python License Agreement, BeOpen hereby grants Licensee a non-exclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use the Software alone or in any derivative version, provided, however, that the BeOpen Python License is retained in the Software, alone or in any derivative version prepared by Licensee. 3. BeOpen is making the Software available to Licensee on an "AS IS" basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. 4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. 5. This License Agreement will automatically terminate upon a material breach of its terms and conditions. 6. This License Agreement shall be governed by and interpreted in all respects by the law of the State of California, excluding conflict of law provisions. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between BeOpen and Licensee. This License Agreement does not grant permission to use BeOpen trademarks or trade names in a trademark sense to endorse or promote products or services of Licensee, or any third party. As an exception, the "BeOpen Python" logos available at http://www.pythonlabs.com/logos.html may be used according to the permissions granted on that web page. 7. By copying, installing or otherwise using the software, Licensee agrees to be bound by the terms and conditions of this License Agreement. CNRI OPEN SOURCE LICENSE AGREEMENT (for Python 1.6b1) -------------------------------------------------- IMPORTANT: PLEASE READ THE FOLLOWING AGREEMENT CAREFULLY. BY CLICKING ON "ACCEPT" WHERE INDICATED BELOW, OR BY COPYING, INSTALLING OR OTHERWISE USING PYTHON 1.6, beta 1 SOFTWARE, YOU ARE DEEMED TO HAVE AGREED TO THE TERMS AND CONDITIONS OF THIS LICENSE AGREEMENT. 1. This LICENSE AGREEMENT is between the Corporation for National Research Initiatives, having an office at 1895 Preston White Drive, Reston, VA 20191 ("CNRI"), and the Individual or Organization ("Licensee") accessing and otherwise using Python 1.6, beta 1 software in source or binary form and its associated documentation, as released at the www.python.org Internet site on August 4, 2000 ("Python 1.6b1"). 2. Subject to the terms and conditions of this License Agreement, CNRI hereby grants Licensee a non-exclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use Python 1.6b1 alone or in any derivative version, provided, however, that CNRIs License Agreement is retained in Python 1.6b1, alone or in any derivative version prepared by Licensee. Alternately, in lieu of CNRIs License Agreement, Licensee may substitute the following text (omitting the quotes): "Python 1.6, beta 1, is made available subject to the terms and conditions in CNRIs License Agreement. This Agreement may be located on the Internet using the following unique, persistent identifier (known as a handle): 1895.22/1011. This Agreement may also be obtained from a proxy server on the Internet using the URL:http://hdl.handle.net/1895.22/1011". 3. In the event Licensee prepares a derivative work that is based on or incorporates Python 1.6b1 or any part thereof, and wants to make the derivative work available to the public as provided herein, then Licensee hereby agrees to indicate in any such work the nature of the modifications made to Python 1.6b1. 4. CNRI is making Python 1.6b1 available to Licensee on an "AS IS" basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6b1 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. 5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF USING, MODIFYING OR DISTRIBUTING PYTHON 1.6b1, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. 6. This License Agreement will automatically terminate upon a material breach of its terms and conditions. 7. This License Agreement shall be governed by and interpreted in all respects by the law of the State of Virginia, excluding conflict of law provisions. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between CNRI and Licensee. This License Agreement does not grant permission to use CNRI trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party. 8. By clicking on the "ACCEPT" button where indicated, or by copying, installing or otherwise using Python 1.6b1, Licensee agrees to be bound by the terms and conditions of this License Agreement. ACCEPT CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2 -------------------------------------------------- Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam, The Netherlands. All rights reserved. Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Stichting Mathematisch Centrum or CWI not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. Software: six 1.1 4 .0 Copyright notice: Copyright (c) 2010-2020 Benjamin Peterson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. License: MIT The MIT License Copyright (c) <year> <copyright holders> Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Software: openGauss-server 1.0.0 Copyright notice: Copyright (c) 2020 Huawei Technologies Co.,Ltd. Copyright (c) 1996-2012, PostgreSQL Global Development Group Copyright (c) 1994, Regents of the University of California Copyright (c) 1994-5, Regents of the University of California Copyright (c) 1999-2012, PostgreSQL Global Development Group Copyright (c) 2002-2012, PostgreSQL Global Development Group Copyright (c) 2010-2012 Postgres-XC Development Group Copyright (c) 2013 Postgres-XC Development Group Copyright (c) 2013, Postgres-XC Development Group Copyright (c) 1996-2009, PostgreSQL Global Development Group Copyright (c) 2010-2013 Postgres-XC Development Group Copyright (c) 2019 Huawei Technologies Co.,Ltd. Copyright (c) 1998-2004 Gilles Vollant Copyright (c) 1998-2012, PostgreSQL Global Development Group Copyright (c) 2007-2012, PostgreSQL Global Development Group Copyright (c) 1996-2014, PostgreSQL Global Development Group Copyright (c) 1996-2016, PostgreSQL Global Development Group Copyright (c) 1996-2010, PostgreSQL Global Development Group Copyright (c) 1996-2000, PostgreSQL, Inc Copyright (c) 1996-2008, PostgreSQL Global Development Group Copyright (c) 1996-2018, PostgreSQL Global Development Group Copyright (c) 2010-2012, PostgreSQL Global Development Group Copyright (c) 1998, Regents of the University of California Copyright (c) 2007 Agendaless Consulting and Contributors. Copyright (c) 1999-2000, Marc-Andre Lemburg; mailto:mal@lemburg.com Copyright (c) 2000-2010, eGenix.com Software GmbH; mailto:info@egenix.com Copyright 2000, Maurice Aubrey <maurice@hevanet.com>. Copyright 2003, North Carolina State Highway Patrol. Copyright (c) 2001-2012, PostgreSQL Global Development Group Copyright (c) 1996-2011, PostgreSQL Global Development Group Copyright (c) 1996-2012 PostgreSQL Global Development Group Copyright (c) 2000, Philip Warner Copyright (c) 1996-2012, PostgreSQL Global Development Group Copyright (c) 1994, Regents of the University of California Copyright (c) 2000, Philip Warner Copyright (c) 2010-2012, Postgres-XC Development Group Copyright (c) 2015-2016, PostgreSQL Global Development Group Copyright (c) 2012, PostgreSQL Global Development Group Copyright (c) 2006-2012, PostgreSQL Global Development Group Copyright (C) 1998 PhiloSoft Design Copyright (c) 2005-2006 Tatsuo Ishii Copyright (c) 2003-2009, PostgreSQL Global Development Group Copyright (c) 2011, Postgres-XC Development Group Copyright (c) 2000-2011, PostgreSQL Global Development Group Copyright (c) 2012-2016, PostgreSQL Global Development Group Copyright (c) 2015, PostgreSQL Global Development Group Copyright (c) 2014-2016, PostgreSQL Global Development Group Copyright (c) 2013 Hideaki Ohno <hide.o.j55{at}gmail.com> Copyright (c) 1996-2015, PostgreSQL Global Development Group Copyright (c) 2011-2012, PostgreSQL Global Development Group Copyright (c) 2006 Satoshi Nagayasu <nagayasus@nttdata.co.jp> Copyright (c) 1998-2016, PostgreSQL Global Development Group Copyright (c) 2013-2015, PostgreSQL Global Development Group Copyright (c) 2010-2015, PostgreSQL Global Development Group Copyright (c) 2009-2012, PostgreSQL Global Development Group Copyright (c) 2012, Postgres-XC Development Group Copyright (c) 2003-2012, PostgreSQL Global Development Group Copyright (c) 1987, 1993, 1994 Copyright (c) 1995, Regents of the University of California Copyright (c) 2000-2012, PostgreSQL Global Development Group Copyright (c) 2006-2014, PostgreSQL Global Development Group Copyright (c) 1996-2020, PostgreSQL Global Development Group Copyright (c) 1996-2013, PostgreSQL Global Development Group Copyright (C) 2010-2011, PostgreSQL Global Development Group Copyright (c) 1989 The Regents of the University of California. Copyright (c) 2012-2014, PostgreSQL Global Development Group Copyright (c) 2010-2011, PostgreSQL Global Development Group Copyright (c) 2010-2013, PostgreSQL Global Development Group Copyright (c) 2004-2005, PostgreSQL Global Development Group Copyright (c) 2000-2001, Aaron D. Gifford Copyright (c) 1999-2012, PostgreSQL Global Development Group Copyright (c) 2004-2012, PostgreSQL Global Development Group Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") Copyright (c) 1996,1999 by Internet Software Consortium. Copyright (c) 2019, Huawei Tech. Co., Ltd. Copyright (c) 1996-2005, PostgreSQL Global Development Group Copyright (c) 2005-2008, Google Inc. Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. Copyright (c) 1998, 1999 Henry Spencer. All rights reserved. Copyright (c) 1998 by Scriptics Corporation. Copyright (c) 1998, 1999 Henry Spencer Copyright (c) 2012 Postgres-XC Development Group Copyright (c) 1990 The Regents of the University of California. Copyright 2008 Bryan Ischo <bryan@ischo.com> Copyright (c) 1994 David Burren Copyright (c) 2005 Marko Kreen Copyright (C) 2002 Michael J. Fromberger, All Rights Reserved. Copyright (c) 2001 Marko Kreen Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. Copyright (c) 2000 Marko Kreen Copyright (c) 2020 Huawei Technologies Co.,Ltd. Copyright (c) 2010-2013, Postgres-XC Development Group Copyright (c) 1996-2013, PostgreSQL Global Development Group Copyright (c) 1994, The Regents of the University of California Copyright (C) 2002-present Jason Evans <jasone@canonware.com>. Copyright (C) 2007-2012 Mozilla Foundation. All rights reserved. Copyright (C) 2009-present Facebook, Inc. All rights reserved. Copyright (c) 2006-2008 Alexander Chemeris Copyright (c) 2010-2012 Austin Appleby Copyright (c) 2006,2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima Copyright (C) 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima Copyright (C) 2006, 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima Copyright (C) 1996-2015 Free Software Foundation, Inc. Copyright (c) 1997 The NetBSD Foundation, Inc. Copyright (c) 2009 The NetBSD Foundation, Inc. Copyright (c) 2017 The NetBSD Foundation, Inc. Copyright (c) 2001 The NetBSD Foundation, Inc. Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> Copyright (c) 1989, 1993 Copyright (c) 1999, 2005 The NetBSD Foundation, Inc. Copyright (c) 1990, 1993 Copyright (C) 2006 Aleksey Cheusov Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2011-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2010-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2011 Google Inc. Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2014, Intel Corporation. All Rights Reserved. Copyright (c) 2015, CloudFlare, Inc. Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2016 Viktor Dukhovni <openssl-users@dukhovni.org>. Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2015-2016 Cryptography Research, Inc. Copyright 2015 Cryptography Research, Inc. Copyright 2014 Cryptography Research, Inc. Copyright 2007-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 1999-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2004-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2003-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2004 Kungliga Tekniska Högskolan Copyright 2003-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2017 BaishanCloud. All rights reserved. Copyright 2015-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2011-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2006-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. Copyright 2017 Ribose Inc. All Rights Reserved. Copyright 2005 Nokia. All rights reserved. Copyright 2014-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2002-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2012-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 1998-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 1998-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 1998-2001 The OpenSSL Project Authors. All Rights Reserved. Copyright 2001-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2006 NTT (Nippon Telegraph and Telephone Corporation) . Copyright (c) 2017 National Security Research Institute. All rights reserved. Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2005-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2008-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2012-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright (C) 2006, Network Resonance, Inc. Copyright (C) 2011, RTFM, Inc. Copyright (c) 2004, EdelKey Project. All Rights Reserved. Copyright (c) 2004, Richard Levitte <richard@levitte.org> Copyright (c) 2013-2014 Timo Teräs <timo.teras@gmail.com> Copyright 1998-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2016 VMS Software, Inc. All Rights Reserved. Copyright (c) 2012, Intel Corporation. All Rights Reserved. Copyright 2013-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright (C) 1989, 1991 Free Software Foundation, Inc. Copyright (C) 19yy <name of author> Copyright 2013-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright (C) 2017 National Security Research Institute. All Rights Reserved. Copyright Patrick Powell 1995 Copyright (c) 2007 KISA(Korea Information Security Agency). All rights reserved. Copyright (c) 2012-2016 Jean-Philippe Aumasson Copyright (c) 2012-2014 Daniel J. Bernstein Copyright 2012-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2016 Cryptography Research, Inc. Copyright 2014-2016 Cryptography Research, Inc. Copyright 2009-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 1998-2018 The OpenSSL Project. All rights reserved. Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) Copyright (c) 1998-2018 The OpenSSL Project Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson Copyright 2012, Samuel Neves <sneves@dei.uc.pt> Copyright (c) 2004, 2018, Richard Levitte <richard@levitte.org> Copyright 2004-2014, Akamai Technologies. All Rights Reserved. Copyright 2003-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2010-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. Copyright (c) 2018-present lzutao <taolzu(at)gmail.com> Copyright (c) 2018-present lzutao <taolzu(at)gmail.com> Copyright (c) 2018-present lzutao <taolzu(at)gmail.com> Copyright (c) 2016-present, Facebook, Inc. Copyright (c) 2014, lpsantil Copyright (C) Yann Collet 2014-present Copyright (C) Yann Collet 2018 - present Copyright (C) 1989, 1991 Free Software Foundation, Inc., Copyright (C) Yann Collet 2012-2016 Copyright (C) Yann Collet 2014-2016 Copyright (C) Yann Collet 2012-2017 Copyright (c) 2016-present, Yann Collet, Facebook, Inc. Copyright (c) 2016-present, Przemyslaw Skibinski, Yann Collet, Facebook, Inc. Copyright (C) 2011-present, Takayuki Matsuoka Copyright (c) 2011-2016, Yann Collet Copyright (C) 2011-present, Yann Collet. Copyright (C) 2011-2016, Yann Collet. Copyright (C) 2011-2017, Yann Collet. Copyright (C) 2012-2016, Yann Collet Copyright (C) 2012-2016, Yann Collet. Copyright (C) Yann Collet 2011-2016 Copyright (C) Yann Collet 2011-2017 Copyright (C) 2016-present, Przemyslaw Skibinski, Yann Collet Copyright (C) 1991 Free Software Foundation, Inc. Copyright (C) 1998 Insight Distribution Systems Copyright (C) 1998 - 2013 The PostgreSQL Global Development Group (C) 2001.Christian Czezatke and Dan McGuirk, (C) 1996. . Copyright 2011 Martin Gieseking <martin.gieseking@uos.de>. Copyright 2008 Google Inc. All Rights Reserved. Copyright 2011 Google Inc. All Rights Reserved. Copyright 2005 Google Inc. All Rights Reserved. Copyright 2005 and onwards Google Inc. Copyright 2015 Google Inc. All rights reserved. Copyright 2017 Google Inc. All rights reserved. Copyright 2016 Google Inc. All rights reserved. Copyright 2014 Google Inc. All rights reserved. Copyright 2007 Google Inc. All Rights Reserved. Copyright 2008 Google Inc. Copyright (c) 2007-2010 Baptiste Lepilleur. Copyright (c) 2012-2014 Massachusetts Institute of Technology Copyright (c) 2012-2013 President and Fellows of Harvard College Copyright (c) 2012-2013 Massachusetts Institute of Technology Copyright (c) 1997-2014 Eddie Kohler, ekohler@gmail.com Copyright (c) 2012-2014 Eddie Kohler Copyright (c) 2012-2016 President and Fellows of Harvard College Copyright (c) 2012-2016 Massachusetts Institute of Technology (c) 2011-2019 President and Fellows of Harvard College (c) 2010-2011 Regents of the University of California (c) 2010-2013 Massachusetts Institute of Technology Copyright (c) 1999-2000 Massachusetts Institute of Technology Copyright (c) 2001-2013 Eddie Kohler Copyright (c) 2008-2009 Meraki, Inc. Copyright (c) 1998-2017,2018 Free Software Foundation, Inc. Copyright (c) 2003-2014,2017 Free Software Foundation, Inc. Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. Copyright (c) 1999-2016,2017 Free Software Foundation, Inc. Copyright (c) 2006-2012,2017 Free Software Foundation, Inc. Copyright (c) 2008-2016,2017 Free Software Foundation, Inc. Copyright (c) 2011-2012,2016 Free Software Foundation, Inc. Copyright (c) 2003-2012,2014 Free Software Foundation, Inc. Copyright (c) 2005-2016,2017 Free Software Foundation, Inc. Copyright (c) 2002-2016,2017 Free Software Foundation, Inc. Copyright (c) 2003-2016,2017 Free Software Foundation, Inc. Copyright (c) 2002-2006,2017 Free Software Foundation, Inc. Copyright (c) 2017 Free Software Foundation, Inc. Copyright (c) 2007-2016,2017 Free Software Foundation, Inc. Copyright (c) 2009-2016,2017 Free Software Foundation, Inc. Copyright (c) 1999-2013,2017 Free Software Foundation, Inc. Copyright (c) 2014,2017 Free Software Foundation, Inc. Copyright (c) 2007-2013,2017 Free Software Foundation, Inc. Copyright (c) 2013-2014,2017 Free Software Foundation, Inc. Copyright (c) 2006-2014,2017 Free Software Foundation, Inc. Copyright (c) 2003-2013,2017 Free Software Foundation, Inc. Copyright (c) 1998-2014,2017 Free Software Foundation, Inc. Copyright (c) 1998-2010,2017 Free Software Foundation, Inc. Copyright (c) 2006-2016,2017 Free Software Foundation, Inc. Copyright (c) 1998-2013,2017 Free Software Foundation, Inc. Copyright (c) 2007-2012,2017 Free Software Foundation, Inc. Copyright (c) 2007-2010,2017 Free Software Foundation, Inc. Copyright (c) 2008-2014,2017 Free Software Foundation, Inc. Copyright (c) 1998-2006,2008 Free Software Foundation, Inc. Copyright (c) 2007-2014,2017 Free Software Foundation, Inc. Copyright (c) 2009-2010,2012 Free Software Foundation, Inc. Copyright (c) 2003-2006,2010 Free Software Foundation, Inc. Copyright (c) 2016,2017 Free Software Foundation, Inc. Copyright (c) 2010-2015,2017 Free Software Foundation, Inc. Copyright (c) 2006-2013,2017 Free Software Foundation, Inc. Copyright (c) 1998 Free Software Foundation, Inc. Copyright (c) 2017,2018 Free Software Foundation, Inc. Copyright (c) 2000-2013,2017 Free Software Foundation, Inc. Copyright (c) 2007-2017,2018 Free Software Foundation, Inc. Copyright (c) 2007-2009,2018 Free Software Foundation, Inc. Copyright (c) 1998-2013,2014 Free Software Foundation, Inc. Copyright (c) 1998-2002,2006 Free Software Foundation, Inc. Copyright (c) 2007-2011,2017 Free Software Foundation, Inc. Copyright (c) 2007-2008,2009 Free Software Foundation, Inc. Copyright (c) 2015,2016 Free Software Foundation, Inc. Copyright (c) 2015-2016,2017 Free Software Foundation, Inc. Copyright (c) 2012 Free Software Foundation, Inc. Copyright (c) 2003-2005,2008 Free Software Foundation, Inc. Copyright (c) 2004-2011,2016 Free Software Foundation, Inc. Copyright (c) 2002-2009,2011 Free Software Foundation, Inc. Copyright (c) 2001-2016,2017 Free Software Foundation, Inc. Copyright (c) 2002-2010,2014 Free Software Foundation, Inc. Copyright (c) 2002-2011,2016 Free Software Foundation, Inc. Copyright (c) 2002-2010,2016 Free Software Foundation, Inc. Copyright (c) 2002-2009,2016 Free Software Foundation, Inc. Copyright (c) 2002-2007,2009 Free Software Foundation, Inc. Copyright (c) 2007,2017 Free Software Foundation, Inc. Copyright (c) 2004,2009 Free Software Foundation, Inc. Copyright (c) 2003-2011,2016 Free Software Foundation, Inc. Copyright (c) 2002-2014,2017 Free Software Foundation, Inc. Copyright (c) 2002-2015,2016 Free Software Foundation, Inc. Copyright (c) 2001-2011,2012 Free Software Foundation, Inc. Copyright (c) 2012,2013 Free Software Foundation, Inc. Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. Copyright (c) 1998-2005,2011 Free Software Foundation, Inc. Copyright (c) 1998-2012,2014 Free Software Foundation, Inc. Copyright (c) 1998-2011,2017 Free Software Foundation, Inc. Copyright (c) 1998-2007,2013 Free Software Foundation, Inc. Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. Copyright (c) 2007-2012,2014 Free Software Foundation, Inc. Copyright (c) 1998-2005,2012 Free Software Foundation, Inc. Copyright (c) 1998-2012,2017 Free Software Foundation, Inc. Copyright (c) 1998-2008,2012 Free Software Foundation, Inc. Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. Copyright (c) 1998-2000,2008 Free Software Foundation, Inc. Copyright (c) 2000,2001,2017 Free Software Foundation, Inc. Copyright (c) 1998,2006 Free Software Foundation, Inc. Copyright (c) 2001-2013,2017 Free Software Foundation, Inc. Copyright (c) 2008-2010,2017 Free Software Foundation, Inc. Copyright (c) 1998-2009,2017 Free Software Foundation, Inc. Copyright (c) 2012-2013,2016 Free Software Foundation, Inc. Copyright (c) 2011-2014,2017 Free Software Foundation, Inc. Copyright (c) 1998-2015,2017 Free Software Foundation, Inc. Copyright (c) 1998-2012,2016 Free Software Foundation, Inc. Copyright (c) 1998-2010,2016 Free Software Foundation, Inc. Copyright (c) 1998-2010,2012 Free Software Foundation, Inc. Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. Copyright (c) 1998-2010,2013 Free Software Foundation, Inc. Copyright (c) 1998-2012,2015 Free Software Foundation, Inc. Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. Copyright (c) 2008-2012,2016 Free Software Foundation, Inc. Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. Copyright (c) 2004-2010,2016 Free Software Foundation, Inc. Copyright (c) 1998-2009,2012 Free Software Foundation, Inc. Copyright (c) 1998-2011,2012 Free Software Foundation, Inc. Copyright (c) 1999-2011,2012 Free Software Foundation, Inc. Copyright (c) 1999-2010,2016 Free Software Foundation, Inc. Copyright (c) 2001-2008,2012 Free Software Foundation, Inc. Copyright (c) 2006,2017 Free Software Foundation, Inc. Copyright (c) 1998-2012,2018 Free Software Foundation, Inc. Copyright (c) 1998-2006,2018 Free Software Foundation, Inc. Copyright (c) 2008-2011,2012 Free Software Foundation, Inc. Copyright (c) 1998-2015,2016 Free Software Foundation, Inc. Copyright (c) 1998-2014,2016 Free Software Foundation, Inc. Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. Copyright (c) 2010,2012 Free Software Foundation, Inc. Copyright (c) 2002,2006 Free Software Foundation, Inc. Copyright (c) 1998-2000,2005 Free Software Foundation, Inc. Copyright (c) 2004-2011,2012 Free Software Foundation, Inc. Copyright (c) 2008-2010,2014 Free Software Foundation, Inc. Copyright (c) 2010 Free Software Foundation, Inc. Copyright (c) 1998-2015,2018 Free Software Foundation, Inc. Copyright (c) 1998-2005,2017 Free Software Foundation, Inc. Copyright (c) 1998-2003,2017 Free Software Foundation, Inc. Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. Copyright (c) 1998-2000,2012 Free Software Foundation, Inc. Copyright (c) 1999-2011,2017 Free Software Foundation, Inc. Copyright (c) 2006-2011,2013 Free Software Foundation, Inc. Copyright (c) 1998-2009,2013 Free Software Foundation, Inc. Copyright (c) 1998-2010,2015 Free Software Foundation, Inc. Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. Copyright (c) 2000-2008,2012 Free Software Foundation, Inc. Copyright (c) 1998-2011,2015 Free Software Foundation, Inc. Copyright (c) 2007-2010,2011 Free Software Foundation, Inc. Copyright (c) 2001-2003,2017 Free Software Foundation, Inc. Copyright (c) 1999-2013,2016 Free Software Foundation, Inc. Copyright (c) 2013-2014,2016 Free Software Foundation, Inc. Copyright (c) 2000-2012,2017 Free Software Foundation, Inc. Copyright (c) 2005-2012,2017 Free Software Foundation, Inc. Copyright (c) 2007-2009,2016 Free Software Foundation, Inc. Copyright (c) 2010-2014,2016 Free Software Foundation, Inc. Copyright (c) 2002-2012,2017 Free Software Foundation, Inc. Copyright (c) 2001-2015,2017 Free Software Foundation, Inc. Copyright (c) 2002-2015,2017 Free Software Foundation, Inc. Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. Copyright (c) 2002-2011,2012 Free Software Foundation, Inc. Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. Copyright (c) 2002-2010,2017 Free Software Foundation, Inc. Copyright (c) 2007-2015,2017 Free Software Foundation, Inc. Copyright (c) 2007-2014,2015 Free Software Foundation, Inc. Copyright (c) 1998-2013,2015 Free Software Foundation, Inc. Copyright (c) 2008-2015,2017 Free Software Foundation, Inc. Copyright (c) 2000-2016,2017 Free Software Foundation, Inc. Copyright (c) 1998-2011,2016 Free Software Foundation, Inc. Copyright (c) 1998-2014,2015 Free Software Foundation, Inc. Copyright (c) 2010-2013,2017 Free Software Foundation, Inc. Copyright (c) 1999-2008,2010 Free Software Foundation, Inc. Copyright (c) 1998,2010 Free Software Foundation, Inc. Copyright (c) 2011-2015,2017 Free Software Foundation, Inc. Copyright (c) 2016 Free Software Foundation, Inc. Copyright (c) 2014 Free Software Foundation, Inc. Copyright (c) 2009-2010,2011 Free Software Foundation, Inc. Copyright (c) 1980, 1991, 1993 Copyright (c) 1998-2002,2003 Free Software Foundation, Inc. Copyright (c) 1998-2004,2012 Free Software Foundation, Inc. Copyright (c) 2011,2014 Free Software Foundation, Inc. Copyright (c) 2011-2014,2015 Free Software Foundation, Inc. Copyright (c) 2011,2015 Free Software Foundation, Inc. Copyright (c) 2016,2018 Free Software Foundation, Inc. Copyright (c) 1998,2003 Free Software Foundation, Inc. Copyright (c) 1998-2009,2014 Free Software Foundation, Inc. Copyright (c) 1999-2009,2011 Free Software Foundation, Inc. Copyright (c) 2003-2006,2009 Free Software Foundation, Inc. Copyright (c) 2005,2009 Free Software Foundation, Inc. Copyright (c) 1998-2000,2009 Free Software Foundation, Inc. Copyright (c) 1998-2001,2009 Free Software Foundation, Inc. Copyright (c) 1998-2004,2017 Free Software Foundation, Inc. Copyright (c) 2008-2012,2014 Free Software Foundation, Inc. Copyright (c) 1998-2009,2016 Free Software Foundation, Inc. Copyright (c) 1998-2013,2016 Free Software Foundation, Inc. Copyright (c) 2004-2009,2016 Free Software Foundation, Inc. Copyright (c) 1998-2004,2009 Free Software Foundation, Inc. Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. Copyright (c) 1998-2005,2009 Free Software Foundation, Inc. Copyright (c) 1998-2007,2009 Free Software Foundation, Inc. Copyright (c) 1998-2017,2017 Free Software Foundation, Inc. Copyright (c) 1999-2004,2005 Free Software Foundation, Inc.. Copyright (C) 2010 Sofian Brabez <sbz@6dev.net> Copyright (C) 2008 Robey Pointer <robeypointer@gmail.com> Copyright (C) 2003-2007 John Rochester <john@jrochester.org> Copyright (C) 2006-2007 Robey Pointer <robeypointer@gmail.com> Copyright (C) 2012 Olle Lundberg <geek@nerd.sh> Copyright (C) 2013 Torsten Landschoff <torsten@debian.org> Copyright (C) 2013-2014 science + computing ag Copyright (C) 2012 Yipit, Inc <coders@yipit.com> Copyright (C) 2003-2006 Robey Pointer <robeypointer@gmail.com> Copyright (C) 2005 John Arbash-Meinel <john@arbash-meinel.com> Copyright (C) 2003-2011 Robey Pointer <robeypointer@gmail.com> Copyright (C) 1991, 1999 Free Software Foundation, Inc. Copyright (C) 2003-2008 Robey Pointer <robeypointer@gmail.com> Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors Copyright JS Foundation and other contributors (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc. Copyright (C) 2003-2009 Robey Pointer <robeypointer@gmail.com> Copyright 1996-1999 by David Turner, Robert Wilhelm, and Werner Lemberg. Copyright 1996-1999 by Juliusz Chroboczek, Copyright 2019 Huawei Technologies Co.,Ltd. Copyright (C) 2006 Thumtronics Pty Ltd. Copyright (C) 2007 Craig W. Nadler Copyright (C) 2007 Stefan Kopp, Gechingen, Germany Copyright (C) 2008 Novell, Inc. Copyright (C) 2008 Greg Kroah-Hartman <gregkh@suse.de> Copyright (C) 2009 Laurent Pinchart <laurent.pinchart@skynet.be> Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. Copyright (c) 2000-2005 The OpenSSL Project. All rights reserved. Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. Copyright (c) 2006 The OpenSSL Project. All rights reserved. Copyright (c) 2010 The OpenSSL Project. All rights reserved. Copyright (c) 2008 The OpenSSL Project. All rights reserved. Copyright (c) 2000 The OpenSSL Project. All rights reserved. Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved. Copyright (c) 2000-2002 The OpenSSL Project. All rights reserved. Copyright (c) 1999-2004 The OpenSSL Project. All rights reserved. Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. Copyright (c) 2008 The OpenSSL Project. All rights reserved. Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. Copyright (c) 1999 The OpenSSL Project. All rights reserved. Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved. Copyright (c) 2004 The OpenSSL Project. All rights reserved. Copyright (c) 2001 The OpenSSL Project. All rights reserved. Copyright (C) 1999 Hewlett-Packard Co Copyright (C) 1999 David Mosberger-Tang <davidm@hpl.hp.com> Copyright (C) 1998, 1999, 2002, 2003 Hewlett-Packard Co Copyright (C) 2002,2003 Jun Nakajima <jun.nakajima@intel.com> Copyright (C) 2002,2003 Suresh Siddha <suresh.b.siddha@intel.com> Copyright (C) 2002,2003 Intel Corp. Copyright (C) 2005,2006 Hongjiu Lu <hongjiu.lu@intel.com> Copyright (C) 2002-2003 Hewlett-Packard Co Copyright (C) 2007 Xiantao Zhang <xiantao.zhang@intel.com> Copyright (C) 2001-2003 Hewlett-Packard Co Copyright (C) 1998-2004 Hewlett-Packard Co Copyright (C) 2003 Intel Co Copyright (C) 1999, 2003 Hewlett-Packard Co Copyright (C) 1998, 1999 Hewlett-Packard Co Copyright (C) 1998, 1999 David Mosberger-Tang <davidm@hpl.hp.com> Copyright (C) 1998, 1999, 2001 Hewlett-Packard Co Copyright (C) 1998, 1999, 2001 David Mosberger-Tang <davidm@hpl.hp.com> Copyright (C) 1998-2005 Hewlett-Packard Co Copyright (C) ST-Ericsson 2013 Copyright (C) 2011-2012 Pali Roh �� r <pali.rohar@gmail.com> Copyright (C) 2011 Samsung Electronics Co., Ltd. Copyright (C) 2012, Anish Kumar <anish198519851985@gmail.com> Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de> Copyright (C) 2011 Nokia Corporation Copyright (C) 2009, Jiejing Zhang <kzjeef@gmail.com> Copyright (C) 2011 Samsung Electronics Copyright (c) 2010, NVIDIA Corporation. Copyright (C) 2010 Texas Instruments, Inc. Copyright (C) 2008 Nokia Corporation Copyright (C) 2007 Texas Instruments, Inc. Copyright (C) 2011, Intel Corporation Copyright 2000, LifeLine Networks BV (www.lifeline.nl). All rights reserved. Copyright 2000, Bastiaan Bakker. All rights reserved. Copyright 2002, Log4cpp Project. All rights reserved. Copyright 2001, LifeLine Networks BV (www.lifeline.nl). All rights reserved. Copyright 2001, Bastiaan Bakker. All rights reserved. Copyright 2001, Glen Scott. All rights reserved. Copyright 2000, Marc Welz Copyright 2002, Bastiaan Bakker. All rights reserved. Copyright 2002, LifeLine Networks BV (www.lifeline.nl). All rights reserved. Copyright 2001, Walter Stroebel. All rights reserved. Copyright 1999, Mark Martinec. All rights reserved. Copyright 2002, the Log4cpp project. Copyright (c) 2002-2006, Network Appliance, Inc. All rights reserved. Copyright (c) 2007-2011 Intel Corporation. All rights reserved. Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation Copyright (C) 1998, 1999, 2000, 2001, 2004, 2005 Free Software Foundation Copyright 2013 Jeff Layton <jlayton@poochiereds.net> Copyright (c) 2010-2013, NVIDIA Corporation. Copyright (C) 2013 Shuah Khan <shuah.kh@samsung.com> Copyright 2002 Andy Grover <andrew.grover@intel.com> Copyright (C) 1997-1999 Richard Gooch Copyright(c) 2007 Intel Corporation. All rights reserved. Copyright (C) 2005-2013 Free Software Foundation, Inc. Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. Copyright (C) 2007-2008 Intel Corporation. All rights reserved. Copyright (C) 2007, 2008 Free Software Foundation, Inc. Copyright (C) 2007 Free Software Foundation, Inc. Copyright (c) 2002-2003 Patrick Mochel Copyright (c) 2002-2003 Open Source Development Labs Copyright (C) 2005 Oracle. All rights reserved. Copright (C) 2008-2009 Nicholas A. Bellinger <nab@linux-iscsi.org> Copyright (C) 2005, 2006 Free Software Foundation, Inc. Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. Copyright (C) 2004, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 1999, 2000, 2001, 2004, 2007 Free Software Foundation, Inc. Copyright (C) 2004, 2007 Free Software Foundation, Inc. Copyright 2002, Emiliano Martin emilianomc@terra.es All rights reserved. Copyright (C) 2005, 2006, 2008 Free Software Foundation, Inc. Copyright (c) 2012 Red Hat, Inc. Copyright (C) 1995 Olaf Kirch <okir@monad.swb.de> Copyright (C) 1995-1997 Olaf Kirch <okir@monad.swb.de> Copyright (C) 1995, 1996, 1997 Olaf Kirch <okir@monad.swb.de> Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de> Copyright (C) 2009-2013 Free Software Foundation, Inc. Copyright 2009 Wolfson Microelectronics PLC. Copyright 1997 by Carsten Paeth <calle@calle.de> Copyright++ 1985, 1988, 1993 Copyright (c) 1985, 1988, 1993 Copyright (c) 1993 by Digital Equipment Corporation. Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation Copyright (C) 1998, 1999, 2002 Free Software Foundation Copyright (C) 1998, 1999, 2000, 2004, 2006 Free Software Foundation Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,2008, 2009 Free Software Foundation Copyright (C) 1999, 2000 Free Software Foundation Copyright (C) 2007-2013 Free Software Foundation, Inc. Copyright (C) 2006-2013 Free Software Foundation, Inc. Copyright (C) 2010-2013 Free Software Foundation, Inc. Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd. Copyright (C) 1998, 1999 Greg Colvin and Beman Dawes. Copyright (C) 2001, 2002, 2003 Peter Dimov Copyright (C) 2002 Peter Dimov Copyright (C) 1996-98 Ingo Molnar, Gadi Oxman Copyright (C) 1998 Ingo Molnar Copyright 2003 H. Peter Anvin - All Rights Reserved Copyright (C) 2006 SWAPP Copyright (C) 2008 Copyright (C) 2005-2007 Freescale Semiconductor, Inc. Copyright (C) 1996-2000,2003,2004,2007 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1992, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1996 Free Software Foundation, Inc. Copyright (C) 1995-1999, 2003, 2004, 2005, 2006, 2007, 2009 Copyright (C) 1995,96,97,98,99,2000,2004,2007 Free Software Foundation, Inc. Copyright (c) 1983, 1989, 1993 Copyright (C) 1997, 1999, 2000, 2001, 2004 Free Software Foundation, Inc. Copyright (c) 1996-1999 by Internet Software Consortium. Copyright (c) 1983, 1989 Copyright (c) 1983, 1993 Copyright (C) 1995-1999 Russell King Copyright (C) 1996-1998 Russell King. Copyright (C) 1996-2003 Russell King Copyright (C) 1997-1999 Russell King Copyright (C) 2001-2005 Russell King Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu> Copyright (C) 2008-2009 PetaLogix Copyright (C) 2006 Atmark Techno, Inc. Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu> Copyright (C) 2007-2009 PetaLogix Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu> Copyright (C) 1999,2003 Matthew Wilcox < willy at debian . org > Copyright (C) 2000 Grant Grundler, Hewlett-Packard Copyright IBM Corp. 2007 Copyright IBM Corp. 2008 Copyright (C) 2006 Sony Computer Entertainment Inc. Copyright 2006, 2007 Sony Corporation Copyright (C) 2001 PPC64 Team, IBM Corp (C) Copyright 2006 IBM Corp. Copyright 2008 IBM Corp. (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 Copyright EMC Corporation, 2008 Copyright (C) 1999, 2000 IBM Deutschland Entwicklung GmbH,IBM Corporation Copyright (C) IBM Corp. 2006 Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation Copyright (C) 2004 IBM Corporation Copyright IBM Corp. 1999,2006 Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation Copyright IBM Corp. 2001,2006 (C) Copyright IBM Corp. 2005 Copyright (C) 2001, 2006 IBM Corporation Copyright (C) 1991,1992,1994-2001,2003,2004,2007 Copyright (C) 1997, 1998, 2000, 2002, 2003, 2007, 2008 Copyright (C) 1997, 1998, 2001, 2007 Free Software Foundation, Inc. Copyright (C) 1993,1995-1998,2000,2001,2003,2004,2007,2009 Copyright (C) 1996, 1997 Free Software Foundation, Inc. Copyright (C) 1996-2001, 2004 Free Software Foundation, Inc. Copyright (C) 1999, 2001, 2004, 2009 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1998, 1999, 2005 Free Software Foundation, Inc. Copyright (C) 2001,2002,2004,2006,2007,2009 Free Software Foundation, Inc. Copyright (C) 1997,1998,1999,2000,2001,2004 Free Software Foundation, Inc. Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000, 2004 Copyright (C) 1992, 1996, 1997, 2004 Free Software Foundation, Inc. Copyright (C) 1991-1999, 2000, 2004, 2008 Free Software Foundation, Inc. Copyright (C) 2004 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1998, 2003 Free Software Foundation, Inc. Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc. Copyright (C) 2002 Free Software Foundation, Inc. Copyright (C) 1996-2003, 2005, 2007 Free Software Foundation, Inc. Copyright (C) 2006 Free Software Foundation, Inc. Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc. Copyright (C) 2001 Free Software Foundation, Inc. Copyright (C) 1993-1998,2000,2002-2004,2008 Free Software Foundation, Inc. Copyright (C) 1996-2002, 2003, 2006 Free Software Foundation, Inc. Copyright (C) 2001, 2004 Free Software Foundation, Inc. Copyright (C) 2002, 2003, 2004, 2007, 2009 Free Software Foundation, Inc. Copyright (C) 2001, 2003, 2005, 2006, 2009 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997, 2000, 2002 Free Software Foundation, Inc. Copyright (C) 1992,1996,1997,1999,2004,2006 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. Copyright (C) 1997, 2001, 2006 Free Software Foundation, Inc. Copyright (C) 1991-1993,96,98,2000-2003,2004 Free Software Foundation, Inc. Copyright (C) 1991, 1996, 1999, 2000, 2001 Free Software Foundation, Inc. Copyright (C) 1996-2004, 2006, 2008, 2009 Free Software Foundation, Inc. Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc. Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2004, 2005, 2008, 2009 Copyright (C) 1996-1999,2001-2003,2005,2006,2007,2008,2009 Copyright (C) 1997,1998,1999,2001,2008,2009 Free Software Foundation, Inc. Copyright (C) 2002, 2004 Free Software Foundation, Inc. Copyright (C) 2001,2002,2003,2005,2006 Free Software Foundation, Inc. Copyright (C) 2009 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997, 2000, 2002, 2004, 2009 Copyright (C) 1993-1999, 2000 Free Software Foundation, Inc. Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc. Copyright (C) 1995,1996,1997,1998,1999,2003 Free Software Foundation, Inc. Copyright (C) 1991, 1992, 1994, 1996, 1997, 2007 Copyright (C) 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2000, 2002, 2009 Free Software Foundation, Inc. Copyright (C) 1995,1996,1997,1998,2000,2001 Free Software Foundation, Inc. Copyright (C) 1991, 1992, 1994-2001, 2004, 2006, 2007, 2008, 2009 Copyright (C) 2005, 2007 Free Software Foundation, Inc. Copyright (C) 1999,2000,2001,2002,2003,2009 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc. Copyright (C) 1997,1998,2000,2001,2002,2006 Free Software Foundation, Inc. Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Copyright (C) 1998, 2000, 2001, 2004, 2007 Free Software Foundation, Inc. Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 1994, 1997, 1998, 1999, 2009 Free Software Foundation, Inc. Copyright (C) 2006, 2007 Free Software Foundation, Inc. Copyright (C) 1997-2003, 2004, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc. Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2003, 2005 Copyright (C) 1996,1997,1999-2002,2003 Free Software Foundation, Inc. Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc. Copyright (C) 2002, 2003 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 2006 Free Software Foundation, Inc. Copyright (C) 1997, 2002 Free Software Foundation, Inc. Copyright (C) 1993, 1996, 1997, 1998, 1999, 2002 Copyright (C) 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. Copyright (C) 1992,1996,1997,2000,2004,2005 Free Software Foundation, Inc. Copyright (C) 1992,1994,1996,1997,2000,2004 Free Software Foundation, Inc. Copyright (C) 2000 Free Software Foundation, Inc. Copyright 1991-1998 by Bell Labs Innovations for Lucent Copyright 1993-1998 Lucent Technologies, Inc. Copyright 1993-2000 Lucent Technologies, Inc. Copyright 2001 Silicon Metrics Corporation. Copyright (c) 1991-1993 The Regents of the University of California. Copyright (c) 1994 Sun Microsystems, Inc. Copyright 1998-1999 Lucent Technologies, Inc. Copyright (C) 1997 Free Software Foundation, Inc. Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 Copyright (c) 1994 Copyright (c) 1996-1998 Copyright (c) 1996,1997 Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Copyright (c) 1996-1997 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,2006, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc. (C) Copyright Jeremy Siek 2000. Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Copyright (C) 2001, 2004, 2005 Free Software Foundation, Inc. Copyright (C) 2007,2008 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004, 2005, 2006 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004, 2005 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006 Copyright (c) 1996 Copyright (c) 1996-1999 Copyright (c) 1997 Copyright (C) 2001, 2002, 2004, 2005, 2008 Free Software Foundation, Inc. Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Copyright (C) 2000, 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc. Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. Copyright (C) 2003, 2004, 2005, 2006, 2007 Copyright (C) 2003, 2004, 2005, 2006 Copyright (C) 2001, 2003 Free Software Foundation, Inc. Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009 Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc. Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Copyright (C) 2006 Copyright (C) 2004, 2005 Free Software Foundation, Inc. 2006, 2007 Free Software Foundation, Inc. Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Copyright (C) 2005 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004 Copyright (C) 2000, 2002 Free Software Foundation, Inc. Copyright (C) 2004, 2006, 2008 Free Software Foundation, Inc. Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Copyright (C) 1997, 1999, 2000, 2004 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 2004 Free Software Foundation, Inc. Copyright (C) 2003, 2007 Free Software Foundation, Inc. Copyright (C) 2001-2013 Free Software Foundation, Inc. Copyright (C) 2011-2013 Free Software Foundation, Inc. Copyright (C) 2008-2013 Free Software Foundation, Inc. Copyright (C) 1997-2013 Free Software Foundation, Inc. Copyright (C) 2004-2013 Free Software Foundation, Inc. Copyright (C) 2000-2013 Free Software Foundation, Inc. Copyright (C) 2003-2013 Free Software Foundation, Inc. Copyright (C) 2002-2013 Free Software Foundation, Inc. Copyright (C) 2013 Free Software Foundation, Inc. Copyright (C) 2012-2013 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999, 2000, 2006 Free Software Foundation, Inc. Copyright (C) 1992, 1998 Free Software Foundation, Inc. Copyright (C) 2004 Dominik Brodowski <linux@dominikbrodowski.de> Copyright (C) 1991,92,93,96,97,98,2000,2004 Free Software Foundation, Inc. Copyright (C) 1991,92,93,95,96,97,98,99,2001,2002,2004,2007,2008,2009 Copyright (c) 2002-2005, Network Appliance, Inc. All rights reserved. Copyright (C) 1990, 1991, 1993, 2008 Free Software Foundation, Inc. Copyright (C) 1991-2000,2003-2005,2009,2010 Free Software Foundation, Inc. Copyright (C) 1995-2001,2003,2004,2006,2009 Free Software Foundation, Inc. Copyright (C) 1995-2003,2004,2005,2006,2007,2008,2009 Copyright (C) 1992, 1996, 1997, 2000, 2008 Free Software Foundation, Inc. Copyright (C) 1995, 96, 98, 99, 2000 Free Software Foundation, Inc. Copyright (C) 1991,92,93,94,95,96,97,2002 Free Software Foundation, Inc. Copyright (C) 1995,1996,1997,2003,2006,2007 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2004, 2005 Free Software Foundation, Inc. Copyright (C) 1991,1992,1994-2001,2003,2004,2005,2006,2007, 2009 Copyright (C) 1991-1993,1995-2006,2007,2009 Free Software Foundation, Inc. Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc. Copyright (c) 1993 The Regents of the University of California. Copyright (C) 1997, 1999, 2000, 2003 Free Software Foundation, Inc. Copyright (C) 1991-93,96,97,98,99,2001,2004 Free Software Foundation, Inc. Copyright (C) 1993,1995,1996,1997,1998,2000,2001,2002 Free Software Foundation, Inc. Copyright (c) 1980, 1993 Copyright (C) 1992,1996-1999,2003,2004 Free Software Foundation, Inc. Copyright (C) 1997-1999, 2000-2002, 2007 Free Software Foundation, Inc. Copyright (C) 1990, 1991, 1993 Free Software Foundation, Inc. Copyright (C) 1989-1994,1996-1999,2001,2003,2004,2009 Copyright (C) 1999-2006 Brian Paul All Rights Reserved. Copyright (C) 2009 VMware, Inc. All Rights Reserved. Copyright (c) 1990, 1991, 2003 Linas Vepstas <linas@linas.org> Copyright (C) 1991,92,95-98,2000,2001,2004 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc. Copyright 1994,1995 rubini@linux.it (Alessandro Rubini) Copyright (C) 1998 Ian Zimmerman <itz@rahul.net> Copyright (C) 2002 Nico Schottelius <nico@schottelius.org> Copyright (C) 1991,1992,1995-2001,2003,2004 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc. Copyright (C) 1992, 1995, 1996, 1999 Free Software Foundation, Inc. Copyright (c) 2009 Intel Corporation. All rights reserved. Copyright (c) 2005 Topspin Communications. All rights reserved. Copyright (c) 2004-2006 Intel Corporation. All rights reserved. Copyright (c) 2004 Topspin Corporation. All rights reserved. Copyright (c) 2004 Voltaire Corporation. All rights reserved. Copyright (c) 2005 Intel Corporation. All rights reserved. Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved. Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved. Copyright (c) 1996-2003 Intel Corporation. All rights reserved. Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved. Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved. Copyright (c) 2008 Voltaire, Inc. All rights reserved. Copyright (c) 2007 Lawrence Livermore National Lab Copyright (c) 2002-2010 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2004-2008 Voltaire, Inc. All rights reserved. Copyright (c) 2004-2007 Voltaire, Inc. All rights reserved. Copyright (c) 2004, 2005 Topspin Communications. All rights reserved. Copyright (c) 2005, 2006 Cisco Systems, Inc. All rights reserved. Copyright (c) 2005 PathScale, Inc. All rights reserved. Copyright (c) 2010 Intel Corporation. All rights reserved. Copyright (c) 2002-2011 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2009 HNR Consulting. All rights reserved. Copyright (c) 2004-2012 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved. Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. Copyright (c) 2009 Voltaire, Inc. All rights reserved. Copyright (c) 2008 Lawrence Livermore National Lab. All rights reserved. Copyright (c) 2010,2011 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2005, 2006 Cisco Systems. All rights reserved. Copyright (c) 2004-2009 Voltaire Inc. All rights reserved. Copyright (c) 2009 HNR Consulting. All rights reserved. Copyright (c) 2009 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2009-2010 Mellanox Technologies. All rights reserved. Copyright (c) 2009 Sun Microsystems, Inc. All rights reserved. Copyright (c) 2005-2007 Voltaire, Inc. All rights reserved. Copyright (c) 2007 The Regents of the University of California. Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2002-2009 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2008,2009 System Fabric Works, Inc. All rights reserved. Copyright (c) 2002-2008 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2007-2009 Voltaire, Inc. All rights reserved. Copyright (c) 2010 Sun Microsystems, Inc. All rights reserved. Copyright (c) 2002-2005,2008 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2008 Xsigo Systems Inc. All rights reserved. Copyright (c) 2008 Xsigo Systems Inc. All rights reserved. Copyright (c) 2009 System Fabric Works, Inc. All rights reserved. Copyright (c) 2008 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2007 Simula Research Laboratory. All rights reserved. Copyright (c) 2007 Silicon Graphics Inc. All rights reserved. Copyright (c) 2004 Topspin Communications. All rights reserved. Copyright (c) 2005 Voltaire, Inc. All rights reserved. Copyright (c) 2011 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2004 Intel Corporation. All rights reserved. Copyright (c) 2005, 2006, 2007 Cisco Systems, Inc. All rights reserved. Copyright (C) 1997-2001, 2004, 2007 Free Software Foundation, Inc. Copyright (c) 1997-2007 Jean Tourrilhes <jt@hpl.hp.com> Copyright (C) 1995-2002,2003,2004,2005,2009 Free Software Foundation, Inc. Copyright 2000,2001,2002 Red Hat, Inc. Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc. Copyright (C) 1995-2002, 2004, 2005 Free Software Foundation, Inc. Copyright (C) 1991-1995,1997-2006,2007,2009 Free Software Foundation, Inc. Copyright (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com> Copyright 1988, 1989 by Carnegie Mellon University Copyright (c) 1998 - 2001 Mike D. Schiffman <mike@infonexus.com> Copyright (C) 1998 by Josh Vanderhoof Copyright (C) 1991, 1992, 1996, 1997, 1998, 1999, 2000, 2005 Copyright (C) 1995-2001, 2004, 2005, 2006 Free Software Foundation, Inc. Copyright (C) 1995 - 1997 Marco van Wieringen - ELM Consultancy B.V. Copyright (C) 2001 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com> Copyright (C) 2013, Intel Corporation Copyright (C) 2006 Intel Corp. Copyright (C) 1999 Jeff Hartmann Copyright (C) 1999 Precision Insight, Inc. Copyright (C) 1999 Xi Graphics, Inc. Copyright (C) 2004 Silicon Graphics, Inc. Copyright (C) 2002-2003 Dave Jones Copyright 2004-2005 Red Hat, Inc. Copyright 2010 MontaVista Software, LLC. Copyright 2000,2001,2002 Red Hat. Copyright (C) 2003 Deep Blue Solutions Ltd, All Rights Reserved. Copyright (C) 2001 ARM Limited Copyright (C) 2000 Deep Blue Solutions Ltd. Copyright (C) 2008-2009 ST-Ericsson AB Copyright (C) 2006 STMicroelectronics Pvt. Ltd. Copyright 2008 Openmoko, Inc. Copyright 2008 Simtec Electronics Copyright (C) 2005 ARM Ltd Copyright (C) 2010 ST-Ericsson SA Copyright (c) 2008 Simtec Electronics Copyright (C) 2010 Samsung Electronics Co. Ltd. Copyright (C) ARM Limited Copyright (C) 2009 ST Microelectronics Copyright (C) 2007-2010 Advanced Micro Devices, Inc. Copyright (C) 2007 Davide Libenzi <davidel@xmailserver.org> (C) 2003 zecke@handhelds.org Copyright 1994-2001 Stephen Rothwell (sfr@canb.auug.org.au) Copyright (C) 2012 Red Hat, Inc. All Rights Reserved. Copyright (C) 2013 Red Hat, Inc. All Rights Reserved. (C) Copyright 2009 Intel Corporation Copyright ? 2006, Intel Corporation. Copyright 2003-2004 Red Hat, Inc. All rights reserved. Copyright 2003-2004 Jeff Garzik Copyright (c) 2008 Atheros Communications Inc. Copyright (c) 2009 Gabor Juhos <juhosg@openwrt.org> Copyright (c) 2009 Imre Kaloz <kaloz@openwrt.org> Copyright (C) 2007 Atmel Corporation Copyright (C) 2005 Ivan Kokshaysky Copyright (C) SAN People (C) INESC 1998 Copyright (c) 2005 - James Bottomley <James.Bottomley@steeleye.com> Copyright 2003-2004 Red Hat Inc., Durham, North Carolina. Copyright 2008 Red Hat, Inc. All rights reserved. Copyright 2008 Ian Kent <raven@themaw.net> Copyright 1997 Transmeta Corporation - All Rights Reserved Copyright 1999-2000 Jeremy Fitzhardinge <jeremy@goop.org> Copyright 1996 by Carsten Paeth (calle@calle.in-berlin.de) Copyright 1999 by Carsten Paeth (calle@calle.in-berlin.de) Copyright (C) 2003,2004 Hewlett-Packard Company Copyright (C) 2012, Red Hat, Inc. Rafael Aquini <aquini@redhat.com> Copyright 2008 MontaVista Software, Inc. Copyright 2008,2010 Anton Vorontsov <cbouatmailru@gmail.com> (C) 1997-1998 by Thomas Sailer, HB9JNX/AE4WA Copyright ? 2011 Parrot S.A. Copyright 2004-2010 Analog Devices Inc. Copyright (C) 1999 Tigran Aivazian <tigran@veritas.com> Copyright (C) 2001 Jens Axboe <axboe@suse.de> Copyright (c) 2011 Bosch Sensortec GmbH Copyright (c) 2011 Unixphere Copyright (C) 2008 James Smart, Emulex Corporation Copyright (C) 2011 Red Hat, Inc. All rights reserved. Copyright (C) 2011 Mike Christie Copyright (c) 2007 Rodolfo Giometti <giometti@linux.it> Copyright (c) 2007 Eurotech S.p.A. <info@eurotech.it> Copyright (c) 2002-2007 Volkswagen Group Electronic Research Copyright (C) 2006 Andrey Volkov <avolkov@varma-el.com> Copyright (C) 2008 Wolfgang Grandegger <wg@grandegger.com> Copyright 2012, Fabio Baltieri <fabio.baltieri@gmail.com> Copyright (c) 2009 Wolfgang Grandegger <wg@grandegger.com> Copyright (C) 2010 Marc Kleine-Budde <kernel@pengutronix.de> Copyright (C) 2009 Texas Instruments Incorporated - http:www.ti.com/ Copyright (C) 2012 Oliver Hartkopp <socketcan@hartkopp.net> Copyright 1997 by Carsten Paeth (calle@calle.in-berlin.de) Copyright by Micha? Miros?aw, 2008-2009 Copyright (C) 1996-1998 Stallion Technologies Copyright (C) 1994-1996 Greg Ungerer. Copyright (C) 1992 David Giller, rafetmad@oxy.edu Copyright (C) 1994, 1995 Eberhard M?nkeberg, emoenke@gwdg.de Copyright (C) 1996 David van Leeuwen, david@tm.tno.nl Copyright (C) 1997, 1998 Erik Andersen, andersee@debian.org Copyright (C) 1998-2002 Jens Axboe, axboe@suse.de Copyright (C) Miguel Ojeda Sandonis Copyright (C) 2003 BULL SA Copyright (C) 2004-2006 Silicon Graphics, Inc. Copyright IBM Corporation, 2007 Copyright (C) 2010 Broadcom Copyright (C) 2013 Freescale Semiconductor, Inc. Copyright 2012 Maxime Ripard Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. Copyright (C) 2012 National Instruments Copyright (c) 2010-2011 Jeremy Kerr <jeremy.kerr@canonical.com> Copyright (C) 2011-2012 Linaro Ltd <mturquette@linaro.org> Copyright (C) 2004 ARM Limited. Copyright (C) 2008 Russell King. Copyright (C) ST-Ericsson SA 2011 Copyright (C) Matt Helsley, IBM Corp. 2005 Copyright (C) 2005 Nguyen Anh Quynh <aquynh@gmail.com> Copyright (C) 2005 Guillaume Thouvenin <guillaume.thouvenin@bull.net> Copyright (c) 1987-1999 Carnegie Mellon University Copyright 1993 United States Government as represented by the Director, National Security Agency. (C) Copyright 2001 Linus Torvalds Copyright 1997 by Henner Eisen <eis@baty.hanse.de> 2004-2005 Copyright (c) Evgeniy Polyakov <zbr@ioremap.net> Copyright (C) 1993 Hamish Macdonald Copyright (c) 2011 Broadcom Corporation Copyright (C) 2010, Intel Corp. Copyright (C) 2001 Russell King (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de> (C) 2007 Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> Copyright (C) 2012 Samsung Electronics Co., Ltd(http:www.samsung.com) Copyright (C) 2012 Amit Daniel <amit.kachhap@linaro.org> Copyright (C) 2011 Google, Inc. Copyright 2011 Solarflare Communications Inc. Copyright (c) 2005 Ben Gardner <bgardner@wabtec.com> Copyright (C) 2008 Red Hat, Inc. All Rights Reserved. Copyright (c) 2002 James Morris <jmorris@intercode.com.au> Copyright (c) 2002 David S. Miller (davem@redhat.com) Copyright (c) 2005 Herbert Xu <herbert@gondor.apana.org.au> Copyright (C) 2011 secunet Security Networks AG Copyright (C) 2011 Steffen Klassert <steffen.klassert@secunet.com> Copyright (C) 2006 Advanced Micro Devices, Inc. Copyright (C) 2009 Andres Salomon <dilinger@collabora.co.uk> Copyright (C) 1996 Paul Mackerras. 2007 (c) Deep Root Systems, LLC. This file is licensed under Copyright(c) 2007 - 2009 Intel Corporation. All rights reserved. Copyright (c) 2008, Intel Corporation. Copyright 2002 John Levon <levon@movementarian.org> Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com> Copyright (C) 2004 IBM Inc. Copyright (C) 1993 Linus Torvalds Copyright (C) Shailabh Nagar, IBM Corp. 2006 Copyright (C) 2001 Sistina Software (UK) Limited. Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved. Copyright (c) 2001-2003 Patrick Mochel <mochel@osdl.org> Copyright (c) 2004-2009 Greg Kroah-Hartman <gregkh@suse.de> Copyright (c) 2008-2009 Novell Inc. Copyright 1998-2004 H. Peter Anvin -- All Rights Reserved Copyright (C) 2011 Intel Corporation Copyright (C) Peter Maydell 05/1998 <pmaydell@chiark.greenend.org.uk> Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. Copyright (C) 2004-2011 Red Hat, Inc. All rights reserved. Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved. Copyright (C) 2007 Red Hat, Inc. All rights reserved. Copyright (C) 2005-2008 Red Hat, Inc. All rights reserved. Copyright (C) 2003 Sistina Software Copyright (C) 2004 - 2008 Red Hat, Inc. All rights reserved. Copyright (C) 2001 - 2003 Sistina Software (UK) Limited. Copyright (C) 2004 - 2005 Red Hat, Inc. All rights reserved. Copyright (C) 2001 - 2003 Sistina Software Copyright (C) 2006-2009 Red Hat, Inc. Copyright (C) 2003 Sistina Software Limited. Copyright (c) 2004 Simtec Electronics Copyright(C) 2011 Linaro Limited. All rights reserved. Copyright (c) 2010-2011 by Samsung Electronics. Copyright (C) 2008 Advanced Micro Devices, Inc. Copyright(c) 2004 - 2006 Intel Corporation. All rights reserved. Copyright (c) 2006, Intel Corporation. Copyright (C) Ashok Raj <ashok.raj@intel.com> Copyright (C) Shaohua Li <shaohua.li@intel.com> Copyright (C) 2000,2002 Stephen Rothwell Copyright (c) International Business Machines Corp., 2008 Copyright (c) 1995-2001,2004 Silicon Graphics, Inc. All Rights Reserved. Copyright (C) 2001-2008, LINBIT Information Technologies GmbH. Copyright (C) 2001-2008, Philipp Reisner <philipp.reisner@linbit.com>. Copyright (C) 2001-2008, Lars Ellenberg <lars.ellenberg@linbit.com>. Copyright (C) 1998, 1999, 2003 Ralf Baechle (C) 2003 Guido Guenther <agx@sigxcpu.org> Copyright (C) 2000 Ralph Metzler <ralph@convergence.de> Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> Copyright (C) 2001 Ralph Metzler <ralph@convergence.de> Copyright (C) 2000 Holger Waechtler <holger@convergence.de> Copyright (C) 2010-2011 ST Microelectronics Copyright (c) 2011, Tom Herbert <therbert@google.com> 2006-2008 (c) MontaVista Software, Inc. This file is licensed under Copyright (C) 2002, 2003, 2004 Dell Inc. Copyright 2012 Texas Instruments Copyright (C) 2004 - 2006 rt2x00 SourceForge Project Copyright (C) 1999 VA Linux Systems Copyright (C) 1999 Walt Drummond <drummond@valinux.com> Copyright (C) 1999, 2002-2003 Hewlett-Packard Co. Copyright (c) 1999 Al Smith (c) 1988 Silicon Graphics (c) 1985 MIPS Computer Systems, Inc. Copyright (C) 2003 Red Hat, Inc. All Rights Reserved. Copyright (C) 2008 James Bottomley <James.Bottomley@HansenPartnership.com> Copyright (C) 1998 David S. Miller (davem@redhat.com) Copyright 2001 Jeff Garzik <jgarzik@pobox.com> Copyright 2001 Sun Microsystems (thockin@sun.com) Copyright 2002 Intel (eli.kupermann@intel.com,christopher.leech@intel.com,scott.feldman@intel.com) Copyright (C) Sun Microsystems 2008 Copyright (C) 2001,...,2006 Davide Libenzi Copyright (c) 2009 IBM Corporation Copyright (C) 1992, 1993, 1994, 1995 Copyright (C) 1991, 1992 Linus Torvalds Copyright (C) 2012 Samsung Electronics Copyright (C) 2008 Google, Inc. Copyright (c) 2012 Samsung Electronics Co., Ltd. Copyright (C) 2007, Riku Voipio <riku.voipio@iki.fi> Copyright (c) 2009 Orex Computed Radiography Copyright (C) 2010 Freescale Semiconductor, Inc. Copyright (C) 2012 Canonical Ltd Copyright (C) 2012 Texas Instruments copyright (C) 2007 Cluster File Systems, Inc Copyright (C) 2005-2006 Kristian Hoegsberg <krh@bitplanet.net> Copyright (C) 2008 SUSE LINUX Products GmbH Copyright (c) 2002 Johann Deneux Copyright (C) 2002-2003 David McCullough <davidm@snapgear.com> Copyright (C) 1998 Kenneth Albanowski <kjahds@kjahds.com> Copyright (C) 2011, SUSE, Jan Kara <jack@suse.cz> Copyright (C) 2004-2007 Red Hat, Inc. All Rights Reserved. Copyright (C) 2006 Freescale - John Rigby Copyright (C) 2006 Sylvain Munaut <tnt@246tNt.com> Copyright (C) 2006 Sylvain Munaut <tnt@246tNt.com> Copyright (C) 2005 Varma Electronics Oy,( by Andrey Volkov <avolkov@varma-el.com> ) Copyright (C) 2003-2004 MontaVista, Software, Inc. Copyright (C) 2006-2007 Sylvain Munaut <tnt@246tNt.com> Copyright (C) 2007 Sylvain Munaut <tnt@246tNt.com> Copyright (C) 2006 AppSpec Computer Technologies Corp. Copyright 2011 Freescale Semiconductor, Inc. All Rights Reserved. Copyright 2008 Freescale Semiconductor, Inc. All Rights Reserved. Copyright (C) 2004 S.Hauer, Pengutronix Copyright 2004,2012 Freescale Semiconductor, Inc Copyright (C) 2008-2011 Freescale Semiconductor, Inc. (C) Copyright 2005 Robert Love Copyright (C) 2008 Red Hat, Inc., Eric Paris <eparis@redhat.com> Copyright (c) 2003 Intracom S.A. 2005 (c) MontaVista Software, Inc. 2006 (c) MontaVista Software, Inc. Copyright (C) 2001-2008 Miklos Szeredi <miklos@szeredi.hu> Copyright (c) 1999-2002 Vojtech Pavlik Copyright (C) 1998 R.E.Wolff@BitWizard.nl Copyright (C) 1992 Drew Eckhardt Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved. Copyright (c) 2004 by Hansjoerg Lipp <hjlipp@web.de> (C) 2002 Nadia Yvette Chambers, IBM / (C) 2012 Sasha Levin <levinsasha928@gmail.com> Copyright (C) 1999-2005 Krzysztof Halasa <khc@pm.waw.pl> (C) 1996-1998 by Thomas Sailer, HB9JNX/AE4WA Copyright (C) 2012 Avionic Design GmbH Copyright (c) 2007-2009 Jiri Kosina Copyright (c) 2010 Stefan Achatz <erazorde@users.sourceforge.net> Copyright (c) 2012, Intel Corporation. Copyright (c) 1999 Andreas Gal Copyright (c) 2000-2001 Vojtech Pavlik Copyright (c) 2006-2007 Jiri Kosina Copyright (c) 1999-2000 Vojtech Pavlik Copyright (c) 2007 Jiri Kosina Copyright (c) 2001 Brian S. Julin Copyright(C) 2005, Thomas Gleixner <tglx@linutronix.de> Copyright(C) 2005, Red Hat, Inc., Ingo Molnar Copyright (C) 2010 Nokia Corporation. All rights reserved. Copyright IBM Corporation, 2012 Copyright (C) 2005 Yani Ioannou <yani.ioannou@gmail.com> Copyright (c) 2002 Mark D. Studebaker <mdsxyz123@yahoo.com> Copyright (C) 2005 Mark M. Hoffman <mhoffman@lightlink.com> Copyright (C) 2010 Texas Instruments Incorporated - http:www.ti.com Copyright (c) 2011, Microsoft Corporation. Copyright 1999 by Werner Cornelius (werner@titro.de) Copyright 2009-2010 Analog Devices Inc. (C) Copyright 2010 Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). Copyright (C) 2010 Samsung Electronics Co.Ltd Copyright (c) 2012 Benjamin Tissoires <benjamin.tissoires@gmail.com> Copyright (c) 2012 Ecole Nationale de l'Aviation Civile, France Copyright (c) 2010 Ira W. Snyder <iws@ovro.caltech.edu> Copyright (C) 2009 - 2010 Samsung Electronics Co.Ltd Copyright (C) 2012 Samsung Electronics Co.Ltd Copyright (c) 2008-2009 Rodolfo Giometti <giometti@linux.it> Copyright (c) 2008-2009 Eurotech S.p.A. <info@eurotech.it> Copyright (c) 2010, 2011 Ericsson AB. Copyright (C) 2002 Intrinsyc Software Inc. Copyright (c) 2010, Code Aurora Forum. All rights reserved. Copyright (C) 2004 Dirk Behme <dirk.behme@de.bosch.com> Copyright (C) 2005-2006 Texas Instruments, Inc. Copyright (c) by Kai Svahn <kai.svahn@nokia.com> Copyright (C) 2011 Texas Instruments Incorporated - http:www.ti.com/ Copyright (C) 1995-99 Simon G. Vogl Copyright (C) 1995-97 Simon G. Vogl 1998-99 Hans Berglund Copyright (C) 1998-99 Frodo Looijaard <frodol@dds.nl> 2004-2006 (c) MontaVista Software, Inc. This file is licensed under Copyright (C) 2010 Jean Delvare <khali@linux-fr.org> Copyright (c) 2009 Intel Corporation Copyright (C) 1995-2000 Simon G. Vogl (c) Copyright 1999, 2000 Red Hat Software Copyright 1994, Anders Klemets <klemets@it.kth.se> Copyright (C) 2001 Massimo Dal Zotto <dz@debian.org> Copyright (C) 1994-2002 Linus Torvalds & authors Copyright (C) 2002 by Concurrent Computer Corporation Copyright (c) 2001-2002, SSH Communications Security Corp and Jouni Malinen Copyright (c) 2002-2003, Jouni Malinen <jkmaline@cc.hut.fi> Copyright (c) 2005, Devicescape Software, Inc. Copyright (c) 2006, Michael Wu <flamingice@sourmilk.net> Copyright (c) 2013 - 2014 Intel Mobile Communications GmbH Copyright (C)2007 USAGI/WIDE Project, All Rights Reserved. Copyright 1995 Simon "Guru Aleph-Null" Janes Copyright 1999, Thomas Davis, tadavis@lbl.gov Copyright 1998 Franco Venturi Copyright 1995 Simon "Guru Aleph-Null" Janes Copyright (C) 2008 Nokia Corporation. All rights reserved. Copyright (c) 1989 Carnegie Mellon University. Copyright 1996 The Board of Trustees of The Leland Stanford Copyright (c) 2011 Jiri Pirko <jpirko@redhat.com> Copyright (C) 1999-2000 Maxim Krasnyansky <maxmk@yahoo.com> Copyright 2012 Analog Devices Inc. Copyright (c) 2008 Jonathan Cameron Copyright 2012-2013 STMicroelectronics Inc. Copyright (c) 2011 Jonathan Cameron Copyright 2011 Analog Devices Inc. Copyright 2011 Roland Stigge <stigge@antcom.de> Copyright (C) 2012 Peter Meerwald <pmeerw@pmeerw.net> Copyright (c) 2008-2011 Jonathan Cameron Copyright (c) 2011 Christian Strobel <christian.strobel@iis.fraunhofer.de> Copyright (c) 2011 Manuel Stahl <manuel.stahl@iis.fraunhofer.de> Copyright (c) 2012 Thorsten Nowak <thorsten.nowak@iis.fraunhofer.de> Copyright (C) 2008 IBM Corporation (C) Copyright IBM Corp. 2007 Copyright (C) 2005 John McCutchan Copyright 2009-2011 Analog Devices Inc. Copyright 2010-2011 Analog Devices Inc. Copyright 2009 Analog Devices Inc. Copyright (c) 2010, 2011 Fabien Marteau <fabien.marteau@armadeus.com> Copyright (c) 2011 Heiko Stuebner <heiko@sntech.de> Copyright (c) 2008 QUALCOMM Incorporated. Copyright (c) 2008 QUALCOMM USA, INC. Copyright (C) ST-Ericsson SA 2010 Copyright (C) 2010 Texas Instruments Copyright (C) 2009, 2010, 2011 Cypress Semiconductor, Inc. Copyright (C) 2012 Javier Martinez Canillas <javier@dowhile0.org> Copyright (c) 2012 Simon Budig, <simon.budig@kernelconcepts.de> Copyright (C) 2011 Kionix, Inc. Copyright (C) 2012 Wolfram Sang, Pengutronix <w.sang@pengutronix.de> Copyright (c) 2010 Henrik Rydberg Copyright (C) 2012 Paul Parsons <lost.distance@yahoo.com> Copyright (c) 2011, Code Aurora Forum. All rights reserved. Copyright (c) 2010-2011, Code Aurora Forum. All rights reserved. Copyright (c) 2009 Dmitry Torokhov Copyright (C) 2011 Fuel7, Inc. All rights reserved. Copyright (c) 2009 RidgeRun (todd.fischer@ridgerun.com) Copyright (c) 2007 Dmitry Torokhov Copyright (C) 2009 IBM Corporation Copyright (C) 2006-2008 Intel Corporation Copyright (C) 2008-10 Intel Corp (C) 2012 Michel Lespinasse <walken@google.com> Copyright ? 2008 Keith Packard <keithp@keithp.com> Copyright 2006 PathScale, Inc. All Rights Reserved. Copyright (c) 2005 Stanislaw Skowronek <skylark@linux-mips.org> Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved. Copyright (C) 2007-2008 Advanced Micro Devices, Inc. Copyright (C) 2011-2012 CERN (www.cern.ch) Copyright 2002 MontaVista Software Inc. Copyright (c) 1999 Dag Brattli, All Rights Reserved. Copyright (C) 2015 Red Hat, Inc. Copyright (c) 2015 Linaro Ltd. Copyright (C) 2002 ARM Limited, All Rights Reserved. Copyright (c) ARM Limited 2003. All rights reserved. Copyright (C) 2011 ARM Ltd. Copyright (C) 2012 Imagination Technologies Copyright (C) 2011 Imagination Technologies Copyright (C) 2009-2012 ST Microelectronics Copyright (C) 2012 Thomas Petazzoni Copyright (c) by Jaroslav Kysela <perex@suse.cz> Copyright (C) 2010 Red Hat, Inc. All rights reserved. Copyright (C) 2010 Mike Christie Copyright 2007 Red Hat, Inc. Copyright 2007 IBM, Inc. Copyright 2008 Copyright 1999 by Carsten Paeth <calle@calle.de> Copyright (C) 2009 Karsten Keil <keil@b1-systems.de> Copyright (C) 2002 Wolfgang M �� es <wolfgang@iksw-muees.de> Copyright (C) 2001 Frode Isaksen <fisaksen@bewan.com> Copyright (C) 2001 Kai Germaschewski <kai.germaschewski@gmx.de> Copyright 1994,95,96 by Fritz Elfert (fritz@isdn4linux.de) Copyright 1995,96 by Thinking Objects Software GmbH Wuerzburg Copyright 1995,96 by Michael Hipp (Michael.Hipp@student.uni-tuebingen.de) Copyright 1995,96 Thinking Objects Software GmbH Wuerzburg Copyright by Werner Cornelius (werner@titro.de) Copyright 1994-1999 by Fritz Elfert (fritz@isdn4linux.de) Copyright 2000-2002 by Kai Germaschewski (kai@germaschewski.name) Copyright (C) 2003-2004 Kevin Thayer <nufanwfk at yahoo.com> Copyright (C) 2004-2007 Hans Verkuil <hverkuil@xs4all.nl> Copyright (C) 2006, 2007 Ian Armstrong <ian@iarmst.demon.co.uk> (c) Copyright 1999-2001 Quicknet Technologies, Inc. Copyright 1998-2000 Red Hat, Inc --- All Rights Reserved Copyright (C) 2001-2003 Red Hat, Inc. Copyright (C) 2006. Bob Jenkins (bobjenkins@burtleburtle.net) Copyright (C) 2009-2010 Jozsef Kadlecsik (kadlec@blackhole.kfki.hu) Copyright (C) 1996-2000 Vojtech Pavlik Copyright (C) 2009-2012 Jason Baron <jbaron@redhat.com> Copyright (C) 2011-2012 Peter Zijlstra <pzijlstr@redhat.com> Copyright 2002 Rusty Russell <rusty@rustcorp.com.au> IBM Corporation Copyright (c) 2000-2007 Silicon Graphics, Inc. All Rights Reserved. Copyright (C) 2000 Stephane Eranian <eranian@hpl.hp.com> Copyright (C) 2009 Jason Wessel <jason.wessel@windriver.com> (c) Copyright 1997 by Carsten Paeth (calle@calle.in-berlin.de) Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. Copyright (C) 2004, 2007 Red Hat, Inc. All Rights Reserved. Copyright (C) 2004, 2008 Red Hat, Inc. All Rights Reserved. Copyright (C) 2009/2010 Stefani Seibold <stefani@seibold.net> 2001-2004 (c) Amit S. Kale and 2003-2005 (c) MontaVista Software, Inc. Copyright (C) 2005 Patrick Mochel Copyright (C) 2008 ARM Limited Copyright (C) 2009 Net Insight AB Copyright (c) 2002-2003 Patrick Mochel Copyright (c) 2002-2003 Open Source Development Labs Copyright (c) 2006-2008 Greg Kroah-Hartman <greg@kroah.com> Copyright (c) 2006-2008 Novell Inc. Copyright (C) IBM Corporation, 2002, 2004 2002-Oct Created by Vamsi Krishna S <vamsikrishna@in.ibm.com> Kernel Copyright (C) 2004 IBM Corp. Copyright (C) 2002-2003 Patrick Mochel <mochel@osdl.org> Copyright (C) 2002-2003 Open Source Development Labs Copyright (c) 2010 Intel Corporation Copyright (c) 2012 BTicino S.p.A. (C) Copyright 2008 Intel Corporation Copyright (C) 2011 ST-Ericsson SA. Copyright (C) 2009 Motorola, Inc. Copyright (C) 2009 Samsung Electronics Copyright (C) 2009 Antonio Ospite <ospite@studenti.unina.it> Copyright (C) 2008 Riku Voipio <riku.voipio@movial.fi> Copyright (C) 2011 Neil Brown <neil@brown.name> Copyright (C) 2005 John Lenz <lenz@cs.wisc.edu> Copyright (C) 2005 Richard Purdie <rpurdie@openedhand.com> Copyright 2009, 2010, Nick Piggin, Novell Inc. Copyright 2003-2005 Red Hat, Inc. All rights reserved. Copyright 2003-2005 Jeff Garzik Copyright (C) 1999-2002 Vojtech Pavlik Copyright (C) 2004 Dmitry Torokhov Copyright (C) 1996 Larry Ewing (lewing@isc.tamu.edu) Copyright (C) 1996,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) Copyright (C) 2001 Greg Banks <gnb@alphalink.com.au> Copyright (C) 2001 Jan-Benedict Glaw <jbglaw@lug-owl.de> Copyright (C) 2003 Geert Uytterhoeven <geert@linux-m68k.org> Copyright (c) 2013 Red Hat, Inc. and Parallels Inc. All rights reserved. Copyright (C) 2014 Seth Jennings <sjenning@redhat.com> Copyright (C) 2014 SUSE Copyright (c) 2001 by Jay Schulist <jschlst@samba.org> Copyright 2010,2011 Intel Corp. Copyright (C) 1996, Olaf Kirch <okir@monad.swb.de> Copyright (C) 1996 Olaf Kirch <okir@monad.swb.de> Copyright (C) 2006,2007 Red Hat, Inc., Ingo Molnar <mingo@redhat.com> Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra <pzijlstr@redhat.com> Copyright (C) 2006 Red Hat, Inc. All Rights Reserved. Copyright 1993 by Theodore Ts'o. Redistribution of this file is copyright (C) 1992 Michael K. Johnson Copyright (C) 2003-2008, LINBIT Information Technologies GmbH. Copyright (C) 2003-2008, Philipp Reisner <philipp.reisner@linbit.com>. Copyright (C) 2003-2008, Lars Ellenberg <lars.ellenberg@linbit.com>. Copyright (C) 1996-2012 Markus F.X.J. Oberhumer <markus@oberhumer.com> Copyright (c) 2006 Tower Technologies Copyright (c) 2005 Henk Vergonet <Henk.Vergonet@gmail.com> (C) 2001 by Andreas Gruenbacher, <a.gruenbacher@computer.org> Copyright (C) 2008 Marvell Semiconductor Copyright Torsten Duwe <duwe@informatik.uni-erlangen.de> 1993 Copyright Motorola 1984 (!). copyright Joerg Dorchain (dorchain@mpi-sb.mpg.de) Copyright (C) 2008, Paulius Zaleckas <paulius.zaleckas@teltonika.lt> Copyright (C) 2011, 2012 Cavium, Inc. Copyright 2006-2009 Solarflare Communications Inc. Copyright (C) 2009, Guennadi Liakhovetski <g.liakhovetski@gmx.de> Copyright (C) 2001 Peter Bergner, IBM Corp. Copyright 2007 OpenVZ SWsoft Inc Copyright 2003,2004 Andi Kleen SuSE Labs Copyright (C) 2007 Alex Dubov <oakad@yahoo.com> Copyright (C) 2001-2003 Stelian Pop <stelian@popies.net> Copyright (C) 2001-2002 Alc?ve <www.alcove.com> Copyright (C) 2000 Andrew Tridgell <tridge@valinux.com> Copyright (C) 2012 Marvell International Ltd. Copyright (C) 2009 Marvell International Ltd. Copyright (c) 2011, NVIDIA Corporation. Copyright (C) 2007-2009 ST-Ericsson AB Copyright ST-Ericsson 2012. Copyright (C) ST-Ericsson SA 2012 Copyright ST-Ericsson 2010. Copyright 2012 Wolfson Microelectronics plc Copyright 2012 Wolfson Microelectronics. PLC. Copyright (C) 2012 Renesas Electronics Corporation Copyright 2001 Compaq Computer Corporation. Copyright 2007-2008 OpenedHand Ltd. Copyright (c) 2006 Ian Molton Copyright (c) 2007 Dmitry Baryshkov Copyright (C) 2012 Google, Inc Copyright(c) 2011 Dialog Semiconductor Ltd. Copyright(c) 2012 Dialog Semiconductor Ltd. Copyright (C) 2012 Dialog Semiconductor Ltd. Copyright (C) 2010 Texas Instruments, Inc Copyright (C) STMicroelectronics 2009 Copyright (C) ST Ericsson SA 2011 Copyright 2009 Daniel Ribeiro <drwyrm@gmail.com> Copyright (c) 2007 Philipp Zabel <philipp.zabel@gmail.com> Copyright (C) 2011-2012 Texas Instruments Copyright (c) 2012 Extreme Engineering Solution, Inc. Copyright (C) 2012 Samsung Electrnoics Copyright (C) 2010 Gyungoh Yoo <jack.yoo@maxim-ic.com> Copyright (C) 2012, NVIDIA CORPORATION. All rights reserved. Copyright (C) 2010 Samsung Electrnoics Copyright (C) 2009-2010 Samsung Electrnoics Copyright 2010 Yong Shen <yong.shen@linaro.org> Copyright 2009-2010 Pengutronix Copyright (C) 2001 Russell King, All Rights Reserved. Copyright 2011-2013 Texas Instruments Inc. (C) 2006-2008 by Openmoko, Inc. Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de> Copyright (c) 2011-2012, NVIDIA CORPORATION. All rights reserved. Copyright (C) 2011 RICOH COMPANY,LTD Copyright(c) 2009-2013 Realtek Semiconductor Corp. All rights reserved. copyright (c) 2011 Samsung Electronics Co., Ltd Copyright (c) 2012 Samsung Electronics Co., Ltd Copyright (c) 2011 Samsung Electronics Co., Ltd Copyright (C) 2012 Innovative Converged Devices(ICD) Copyright (C) 2013 Andrey Smirnov Copyright 2012 Texas Instruments Inc. Copyright (c) 2009-2011 Wind River Systems, Inc. Copyright (c) 2011 ST Microelectronics (Alessandro Rubini) Copyright (C) 2012 Freescale Semiconductor, Inc. Copyright (C) 2012 Linaro Ltd. (C) Copyright 2005 Ian Molton <spyro@f2s.com> Copyright(c) 2005-2006 Chris Humbert Copyright(c) 2005 Dirk Opfer Copyright(c) 2005 Ian Molton <spyro@f2s.com> Copyright(c) 2007 Dmitry Baryshkov Copyright (C) 2012 Texas Instruments Incorporated - http:www.ti.com/ Copyright (C) 2010 Texas Instruments Inc Copyright (C) 2011 ST-Ericsson SA Copyright (C) 2012 NVIDIA Corporation Copyright 2010-2011 Texas Instruments Inc. Copyright 2011 Texas Instruments Inc. Copyright (c) 2012, NVIDIA Corporation. (C) 2012 by Lemonage GmbH Copyright (C) 2010 Nokia Corporation Copyright 2007, 2008 Wolfson Microelectronics PLC Copyright 2007 Wolfson Microelectronics PLC Copyright 2008 Wolfson Microelectronics plc (c) 2008 mGine Co.,LTD (c) 2008 unsik Kim <donari75@gmail.com> Copyright (C) 1996, 1999, 2001 David S. Miller (davem@redhat.com) Copyright 2008 by Karsten Keil <kkeil@novell.com> Copyright (c) 2006 Cisco Systems, Inc. All rights reserved. Copyright (c) 2007 Cisco Systems, Inc. All rights reserved. Copyright (c) 2006, 2007 Cisco Systems, Inc. All rights reserved. Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved. Copyright (c) 2005 Mellanox Technologies. All rights reserved. Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved. Copyright (c) 2013-2015, Mellanox Technologies, Ltd. All rights reserved. Copyright (C) 2009 NXP Semiconductors Copyright (C) 2009, 2010 Imagination Technologies Ltd. Copyright 2002 Hewlett-Packard Company Copyright (C) 2005-2007 Pierre Ossman, All Rights Reserved. Copyright (C) 2010 ST Microelectronics Copyright (C) 2005-2008 Pierre Ossman, All Rights Reserved. Copyright 2006-2007 Pierre Ossman Copyright 2007-2008 Pierre Ossman Copyright (C) 2010 Renesas Solutions Corp. Copyright (C) 2011, Guennadi Liakhovetski <g.liakhovetski@gmx.de> Copyright (C) 2007 Ian Molton Copyright (C) 2004 Ian Molton Copyright (c) 2001-2004 Silicon Graphics, Inc. All rights reserved. (C) Copyright 2001, 2002 Rusty Russell IBM Corporation Copyright (C) 1994, 1996, 1998, 1999,2000, 2001 Free Software Foundation, Inc. Copyright (C) 2003 Krzysztof Benedyczak & Michal Wronski Copyright (C) 2007 Google Incorporated Copyright ? 2005 Samsung Electronics Copyright ? 2000-2005 Copyright ? 2003-2010 David Woodhouse <dwmw2@infradead.org> Copyright ? 2000-2010 David Woodhouse <dwmw2@infradead.org> et al. Copyright ? 2001-2010 David Woodhouse <dwmw2@infradead.org> Copyright ? 2002 Robert Kaiser <rkaiser@sysgo.de> Copyright ? 1999 Machine Vision Holdings, Inc. Copyright ? 1999-2010 David Woodhouse <dwmw2@infradead.org> Copyright ? 2002-2003 Greg Ungerer <gerg@snapgear.com> Copyright ? 2002-2003 SnapGear Inc Copyright ? 2000 Red Hat UK Limited Copyright ? 2000-2010 David Woodhouse <dwmw2@infradead.org> Copyright ? 2010 ST Microelectronics Copyright (C) 1999 David A. Hinds. All Rights Reserved. Copyright ? 2001 Red Hat UK Limited (C) Copyright 2002, Greg Ungerer (gerg@snapgear.com) Copyright ? 2008 MontaVista Software, Inc. <source@mvista.com> Copyright ? 2012 Roland Stigge Copyright ? 1999-2010 David Woodhouse <dwmw2@infradead.org> et al. Copyright ? 2011 Ivan Djelic <ivan.djelic@parrot.com> Copyright (C) 2000-2010 Steven J. Hill <sjhill@realitydiluted.com> Copyright (c) 2006 Thomas Gleixner <tglx@linutronix.de> Copyright ? 2005-2009 Samsung Electronics Copyright (C) 2005-2007 Samsung Electronics (C) 2000 Nicolas Pitre <nico@fluxnic.net> Copyright (C) 2003 MontaVista Software Inc. (c) 2004 Simtec Electronics Copyright (C) 2008 Dmitry Baryshkov Copyright ? 2008 Renesas Solutions Corp. Copyright ? 2006 Red Hat, Inc. All Rights Reserved. Copyright (c) International Business Machines Corp., 2006 Copyright (C) 2004, 2005, 2006 Red Hat, Inc., Ingo Molnar <mingo@redhat.com> Copyright 2002 Momentum Computer, Inc. Copyright 2002 GALILEO TECHNOLOGY, LTD. Copyright(C) 2010 Red Hat. Copyright (C) Pavel Machek, pavel@ucw.cz. This code is GPL. Copyright (C) 1999 VMware, Inc. (Regis "HPReg" Duchesne) 2001 Copyright (C) Steven Whitehouse Copyright (C) 1995 by Volker Lendecke Copyright (C) 1995, 1996 by Volker Lendecke Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu> Copyright (C) 2003-2013 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@users.sourceforge.net> Copyright (c) 2006 Jing Min Zhao <zhaojingmin@users.sourceforge.net> Copyright (C) 2002,2004 MARA Systems AB <http:www.marasystems.com> (C) 2001 Marc Boucher (marc@mbsi.ca). (C) 2002 Harald Welte <laforge@gnumonks.org> (C) 2005 Harald Welte <laforge@netfilter.org> Copyright (c) 2003+ Evgeniy Polyakov <johnpol@2ka.mxt.ru> (C)2002 Rusty Russell IBM -- This code is GPL. Copyright (C) 1999 Paul `Rusty' Russell & Michael J. Neuling (C) Steve Whitehouse 1999 derived from the ipv4 netfilter header file which is (C)1998 Rusty Russell -- This code is GPL. (C) 2000 by Harald Welte <laforge@gnumonks.org> / (C) 2000-2002 by Harald Welte <laforge@gnumonks.org> (C) 2000 James Morris, this code is GPL. (C)1999 David Jeffery Copyright (c) 2002 The Regents of the University of Michigan. Copyright (C) 2002 Trond Myklebust (C) 2003 Andreas Gruenbacher <agruen@suse.de> Copyright (C) 1992 Rick Sladkey Copyright (C) 2005, 2006 Chuck Lever <cel@netapp.com> Copyright (C) 2000 Trond Myklebust Copyright (C) 2005-2008 Nippon Telegraph and Telephone Corporation. Copyright 2006, 2007, 2008 Johannes Berg <johannes@sipsolutions.net> Copyright 2008 Michael Wu <flamingice@sourmilk.net> Copyright 2008 Luis Carlos Cobo <luisca@cozybit.com> Copyright 2008 Michael Buesch <mb@bu3sch.de> Copyright 2008, 2009 Luis R. Rodriguez <lrodriguez@atheros.com> Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com> Copyright 2008 Colin McCabe <colin@cozybit.com> Copyright (C) 2007, 2008, 2009 Siemens AG Copyright (c) 2005 Jim Cromie <jim.cromie@gmail.com> Copyright(c) 2012 Intel Corporation. All rights reserved. Copyright (c) 2011-2014, Intel Corporation. Copyright (C) 2008 IBM Corp., Benjamin Krill <ben@codiert.org> Copyright (C) 1996-2005 Paul Mackerras. Copyright 2009 Benjamin Herrenschmidt, IBM Corp Copyright (c) 2007-2008 MontaVista Software, Inc. Copyright (c) 2009 Secret Lab Technologies, Ltd. Copyright 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Copyright (C) 2010 Andres Salomon <dilinger@queued.net> Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp. Copyright (C) 2008-2009 Nokia Corporation Copyright (C) 2004 Nokia Corporation Copyright (c) 2007-2011 Nicira Networks. Copyright (C) 2009-2010 Texas Instruments Incorporated. Copyright 2002 OProfile authors Copyright (C) 2008, 2009 secunet Security Networks AG Copyright (C) 2008, 2009 Steffen Klassert <steffen.klassert@secunet.com> Copyright (C) IBM Corporation, 2006 Copyright 1995 Linus Torvalds Copyright (C) 2011 ST Microelectronics Copyright (C) 2005 Stuart Brady Copyright (C) 2004 Intel Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com) Copyright (C) 2007 Intel Corp. Copyright 1994, Drew Eckhardt Copyright 1997--1999 Martin Mares <mj@ucw.cz> Copyright (C) 1995,2001 Compaq Computer Corporation Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) Copyright (C) 2001 IBM Corp. Copyright ? 2007 Anton Vorontsov <cbou@mail.ru> Copyright 2011 Red Hat, Inc. (C) 2012 Google, Inc. Copyright (C) 2008-2009, Thomas Gleixner <tglx@linutronix.de> Copyright (C) 2008-2009, Red Hat, Inc., Ingo Molnar Copyright (C) 2008-2009, Red Hat, Inc., Peter Zijlstra Copyright (C) 2008-2011, Red Hat, Inc., Ingo Molnar Copyright (C) 2008-2011, Red Hat, Inc., Peter Zijlstra (c) 1998 Grant R. Guenther <grant@torque.net> Copyright (C) 2005-2007 Jiri Slaby <jirislaby@gmail.com> Copyright (c) 2004 Freescale Semiconductor, Inc. Copyright (C) 2012 ST-Ericsson SA Copyright (C) 2000 Jens Axboe <axboe@suse.de> Copyright (C) 2001-2004 Peter Osterlund <petero2@telia.com> Copyright 2010 Analog Devices Inc. Copyright (c) 2012 Savoir-faire Linux Inc. Copyright (C) ST-Ericsson SA 2010-2013 Copyright (c) 2009 Samsung Electronics Co. Ltd Copyright (C) 2002 RidgeRun, Inc. (C) Copyright 2008 by Pengutronix (C) Copyright 2012 by Wolfram Sang Copyright (C) 2011 Free Electrons Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com> Copyright (c) 2010 Samsung Electronics Co., Ltd. Copyright (c) 2013 Broadcom Corporation Copyright (c) 2008, Paulius Zaleckas <paulius.zaleckas@teltonika.lt> Copyright (C) 2009, Darius Augulis <augulis.darius@gmail.com> Copyright (C) 2003, Intel Corporation Copyright (C) 2008, Guennadi Liakhovetski <kernel@pengutronix.de> Copyright (C) 2008, Sascha Hauer <s.hauer@pengutronix.de> Copyright (C) 2010, Baruch Siach <baruch@tkos.co.il> Copyright (C) 2008, Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de> Copyright (C) 2013 Philipp Zabel, Pengutronix Copyright (C) 2012 ST-Ericsson Copyright (C) 2008 Atmel Corporation Copyright (C) 2007-2013 ST-Ericsson Copyright 2004-2009 Freescale Semiconductor, Inc. All Rights Reserved. Copyright (c) 2011 Marvell Semiconductors Inc. Copyright (C) ST-Ericsson SA 2007-2010 Copyright (C) 2010-2011 Texas Instruments Incorporated - http:www.ti.com Copyright (C) 2012 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> Copyright (C) 2012 Renesas Solutions Corp. Copyright (C) 2012 Texas Instruments, Inc. Copyright (c) 2005 Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix Copyright (C) 2010 Samsung Electronics Copyright (C) 2003-2005 Nokia Corporation Copyright (C) 2013 Magnus Damm Copyright 2005 Simtec Electronics Copyright (C) 2004-2009 Nokia Corporation 2007 (c) MontaVista Software, Inc. This file is licensed under Copyright (c) 2008, Darius Augulis <augulis.darius@gmail.com> Copyright (C) 2009 ST-Ericsson Copyright 2004-2009 Simtec Electronics Copyright (C) 2012 Lothar Felten <l-felten@ti.com> Copyright (C) 2012 Invensense, Inc. Copyright (C) 2006 Komal Shah <komalshah802003@yahoo.com> Copyright (C) 2009 Texas Instruments, Inc Copyright (C) 2006 Samsung Electronics Copyright 2012 bct electronic GmbH Copyright (c) 2006 Simtec Electronics Copyright (C) 2011 Texas Instruments Copyright (C) 2011 National Semiconductor Copyright (C) 2004-2006 Atmel Corporation Copyright (C) 2012 Alexander Shiyan <shcwork@mail.ru> Copyright (c) 2012 Guenter Roeck <linux@roeck-us.net> Copyright (C) 2005 Russell King. Copyright (C) 2011 Tieto Poland Copyright (C) 2012 Intel Corporation. All rights reserved. Copyright (C) 2010 - 2012 Samsung Electronics Co., Ltd. Copyright 2010 Wolfram Sang <w.sang@pengutronix.de> Copyright (C) 2006 Nokia Corporation Copyright 2010 (C) Texas Instruments, Inc. http:www.ti.com/ Copyright ? 2006 Texas Instruments. Copyright ? 2008 by Sander Huijsen <Shuijsen@optelecom-nkf.com> Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved. Copyright 2008 Sascha Hauer, kernel@pengutronix.de Copyright (C) 2006 Micron Technology Inc. Copyright (C) 2011 Marvell International Ltd. All rights reserved. Copyright (C) 2011 Texas Instruments Incorporated - http:www.ti.com Copyright (C) 2012 Texas Instruments Incorporated - http:www.ti.com Copyright (C) 2007-2012 ST-Ericsson AB Copyright (C) 2008 STMicroelectronics Copyright (C) 2009 Alessandro Rubini <rubini@unipv.it> Copyright (C) Nokia Corporation Copyright 2010 Marvell Copyright (C) 2011 Texas Instruments, Inc. Copyright (C) 2012 Guenter Roeck <linux@roeck-us.net> Copyright (C) 2008 by Sascha Hauer <kernel@pengutronix.de> Copyright (C) 2010 Texas Instruments. Copyright (C) 2012 Renesas Corporation Copyright (c) 2009 Jonathan Cameron Copyright (c) 2007 Wouter Horre Copyright (C) 2012 Hideki EIRAKU Copyright 2009 Texas Instruments. Copyright (c) 2009 Nuvoton technology corporation. Copyright (C) 2009 Samsung Electronics Ltd. Copyright (C) 2010 Google, Inc. Copyright (c) 2005 Arnaud Patard <arnaud.patard@rtp-net.org> Copyright (C) 2009, 2010 STMicroelectronics Copyright (C) 2010 Copyright (C) 2012 Damian Hobson-Garcia Copyright (C) 2010-11 Texas Instruments Incorporated - http:www.ti.com/ Copyright (C) 2009 MontaVista Software, Inc. <source@mvista.com> Copyright (C) 2011 Samsung Electronics Co.Ltd Copyright (C) 2008 Darius Augulis <augulis.darius@gmail.com> Copyright (C) 2009 Martin Fuzzey <mfuzzey@gmail.com> Copyright (C) 2010 CompuLab Ltd. Copyright (c) 2008 Nuvoton technology corporation Copyright (C) 2011, Texas Instruments, Inc. (C) 2002-2003 Intel Corp 2001-2005 (c) MontaVista Software, Inc. (C) 2005 Thomas Gleixner <tglx@linutronix.de> Copyright (C) 2000 Andrew Henroid Copyright (C) 2012 ST Ericsson Corporation Copyright (C) 1998 Paul Mackerras. Copyright (C) 2011 Rafael J. Wysocki <rjw@sisk.pl>, Renesas Electronics Corp. Copyright (C) 2009 Rafael J. Wysocki <rjw@sisk.pl> Copyright (C) 2008 Alan Stern Copyright (C) 2010 Rafael J. Wysocki, Novell Inc. Copyright (C) 2007 Panasas Inc. [year of first publication] Copyright by Adam Belay <ambx1@neo.rr.com> Copyright (C) 2008 Hewlett-Packard Development Company, L.P. Copyright (C) 2010 OMICRON electronics GmbH (C) 2002 Andreas Gruenbacher, <a.gruenbacher@computer.org> Copyright (C) 2000 by Andreas Gruenbacher <a.gruenbacher@computer.org> Copyright (C) 2002 SGI - Silicon Graphics, Inc <linux-xfs@oss.sgi.com> Copyright (c) 2013, Intel Corporation. Copyright ? 2007 Anton Vorontsov <cbou@mail.ru> Copyright ? 2004 Szabolcs Gyurko Copyright ? 2003 Ian Molton <spyro@f2s.com> Copyright (C) 1998-9 Tim Waugh <tim@cyberelk.demon.co.uk> Copyright 1994-1998 Paul Mackerras. Copyright 1999 Paul Mackerras. Copyright 1994-2000 Paul Mackerras. Copyright (C) 2011 James Nuss <jamesnuss@nanometrics.ca> Copyright (C) 2005-2009 Rodolfo Giometti <giometti@linux.it> Copyright (C) 2009 Rodolfo Giometti <giometti@linux.it> Copyright (C) 2010 Intel Corporation <tony.luck@intel.com> Copyright (C) 2010 Marco Stornelli <marco.stornelli@gmail.com> Copyright (C) 2011 Kees Cook <keescook@chromium.org> Copyright (C) Intel 2011 Copyright (C) 2003 Russell King, All Rights Reserved. (C) 2007, SGI. Christoph Lameter <clameter@sgi.com> Copyright (c) 1982, 1986 Regents of the University of California. Copyright (C) 2001 Momchil Velikov Copyright (C) 2001 Christoph Hellwig Copyright (C) 2006 Nick Piggin Copyright (C) 2012 Konstantin Khlebnikov Copyright (C) 2009 emlix GmbH, Oskar Schirmer <oskar@scara.com> (C) 1999 Andrea Arcangeli <andrea@suse.de> (C) 2002 David Woodhouse <dwmw2@infradead.org> Copyright IBM Corporation, 2001 Copyright IBM Corporation, 2008 Copyright 2011 Wolfson Microelectronics plc Copyright (C) 2007, 2008 Wolfson Microelectronics PLC. Copyright (C) 2012 Marvell Technology Ltd. Copyright 2008 Wolfson Microelectronics PLC. Copyright (c) 2009 Nokia Corporation Copyright 2011 Heiko Stuebner <heiko@sntech.de> Copyright (C) 2008 Robert Jarzmik Copyright (C) 2009-2010 Marvell International Ltd. Copyright (C) 2009 Wolfram Sang, Pengutronix e.K. Copyright (C) 2002, 2003 - Tom Zanussi (zanussi@us.ibm.com), IBM Corp Copyright (C) 1999, 2000, 2001, 2002 - Karim Yaghmour (karim@opersys.com) Copyright(c) 2011 Texas Instruments, Inc. Copyright(c) 2011 Google, Inc. Copyright (C) 2012-2013 Canonical Ltd Copyright (c) 2006-2009 VMware, Inc., Palo Alto, CA., USA Copyright (C) 2009 Guiming Zhuo <gmzhuo@gmail.com> Copyright (C) 2011 Antonio Ospite <ospite@studenti.unina.it> Copyright (C) 2006 - 2007 Ivo van Doorn Copyright (C) 2007 Dmitry Torokhov Copyright 2009 Johannes Berg <johannes@sipsolutions.net> Copyright (c) 2014 Thomas Graf <tgraf@suug.ch> Copyright (c) 2008-2014 Patrick McHardy <kaber@trash.net> Copyright (c) 2014 Don Zickus Copyright 2005 MontaVista Software, Inc. Copyright (C) 2004 Thomas Gleixner (tglx@linutronix.de) Copyright 2002 Phil Karn, KA9Q (C) Copyright 2012 by Wolfram Sang, Pengutronix e.K. Copyright (c) 2007 Wind River Systems, Inc. Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. Copyright (C) 2012 Sven Schnelle <svens@stackframe.org> Copyright (C) 2006, 8D Technologies inc. Copyright (C) 1999 Hewlett-Packard Co. Copyright (C) 1999 Stephane Eranian <eranian@hpl.hp.com> Copyright (C) 2004-2006 Red Hat, Inc., Ingo Molnar <mingo@redhat.com> Copyright (C) 2006, Timesys Corp., Thomas Gleixner <tglx@timesys.com> portions Copyright 2005, Red Hat, Inc., Ingo Molnar Copyright (c) 2001 David Howells (dhowells@redhat.com). Copyright (C) 2012 Russell King (C) Copyright IBM Corp. 2001, 2004 Copyright (c) 1999-2000 Cisco, Inc. Copyright (c) 1999-2001 Motorola, Inc. Copyright (c) 2001 Intel Corp. Copyright (c) 2001 Nokia, Inc. Copyright (c) 2001 La Monte H.P. Yarroll Copyright (c) 2001,2002 Christer Weinigel <wingel@nano-system.com> Copyright (C) 2001 WireX Communications, Inc <chris@wirex.com> Copyright (C) 2001 Greg Kroah-Hartman <greg@kroah.com> Copyright (C) 2001 Networks Associates Technology, Inc <ssmalley@nai.com> Copyright (C) 2001 James Morris <jmorris@intercode.com.au> Copyright (C) 2001 Silicon Graphics, Inc. (Trust Technology Group) Copyright (C) 2005 Red Hat, Inc., James Morris <jmorris@redhat.com> Copyright (C) 2006 Trusted Computer Solutions, Inc. <dgoeddel@trustedcs.com> Copyright (C) 2006 IBM Corporation, Timothy R. Chavez <tinytim@us.ibm.com> Copyright (C) 2004 Red Hat, Inc., James Morris <jmorris@redhat.com> Copyright (c) 2008 Intel Corporation Copyright (C) 1992 by Theodore Ts'o. Copyright (C) 2004 Russell King Copyright (C) 2007 Christian Pellegrin Copyright (C) 1992, 1994 by Theodore Ts'o. Copyright (C) 2002 Shane Nay (shane@minirl.com) Copyright(c) 2009 Intel Corporation. All rights reserved. Copyright (C) 2011-2012 Guennadi Liakhovetski <g.liakhovetski@gmx.de> Copyright (C) 2009 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com> Copyright (C) 2009 Renesas Solutions, Inc. All rights reserved. Copyright (C) 2007 Freescale Semiconductor, Inc. All rights reserved. Copyright (C) 2010 Guennadi Liakhovetski <g.liakhovetski@gmx.de> (C) SGI 2006, Christoph Lameter (C) 2007 SGI, Christoph Lameter Copyright 2006 Simtec Electronics Copyright (C) 1995, 1996 by Paal-Kr. Engstad and Volker Lendecke Copyright (C) 1997 by Volker Lendecke Copyright (C) 1995 by Paal-Kr. Engstad and Volker Lendecke Copyright (C) 2004-2008 SMSC Copyright (C) 2005-2008 ARM Copyright (C) 2001-2005 Stelian Pop <stelian@popies.net> Copyright (C) 2005 Narayanan R S <nars@kadamba.org> Copyright (C) 2001 Michael Ashley <m.ashley@unsw.edu.au> Copyright (C) 2001 Junichi Morita <jun1m@mars.dti.ne.jp> Copyright (C) 2000 Takaya Kinjo <t-kinjo@tc4.so-net.ne.jp> Copyright by Hannu Savolainen 1993-1997 Copyright (C) 2009-2012 Siemens AG Copyright (c) 2009 Alberto Panizzo <maramaopercheseimorto@gmail.com> Copyright 2008 Analog Devices Inc. Copyright (C) 2009 Marek Vasut <marek.vasut@gmail.com> Copyright 2008 Embedded Alley Solutions, Inc. Copyright 2009-2011 Freescale Semiconductor, Inc. Copyright (C) 2005 Stephen Street / StreetFire Sound Labs Copyright (C) 2011 Kuninori Morimoto Copyright (C) 2005 David Brownell Copyright 2007 Simtec Electronics Copyright (C) 2009-2010 Nokia Corporation Copyright (C) 2007 Jens Axboe <jens.axboe@oracle.com> Copyright (C) Fujitsu, 2012 Copyright 2005, Broadcom Corporation Copyright 2006, Michael Buesch <m@bues.ch> Copyright 2006, Michael Buesch Copyright (C) ST-Ericsson AB 2012 Copyright (C) 2009 STMicroelectronics Ltd Copyright (C) 2011 Wolfram Sang, Pengutronix e.K. Copyright (C) 2013 Renesas Solutions Corp. Copyright (c) 2000 The Regents of the University of Michigan (c) 2008 NetApp. All Rights Reserved. Copyright (C) 2002 Neil Brown <neilb@cse.unsw.edu.au> Copyright (C) 1995, 1996, Olaf Kirch <okir@monad.swb.de> Copyright (c) 2000 The Regents of the University of Michigan. Copyright 1995 by the Massachusetts Institute of Technology. Copyright 1993 by OpenVision Technologies, Inc. Copyright (c) 2000-2008 The Regents of the University of Michigan. Copyright (C) 2005 Chuck Lever <cel@netapp.com> Copyright (c) 2003-2007 Network Appliance, Inc. All rights reserved. Copyright (c) 2002 The Regents of the University of Michigan Copyright (c) 2005-2006 Network Appliance, Inc. All rights reserved. Copyright (C) 2002 Trond Myklebust <trond.myklebust@fys.uio.no> Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) Copyright (C) 2002 David S. Miller (davem@redhat.com) Copyright (C) 2004, 2005 Paul Mundt <lethal@linux-sh.org> Copyright (C) 1998-2000 by Microgate Corporation Copyright (c) 2004 Randy Dunlap Copyright (c) 2004 Open Source Development Labs Copyright (c) 2001,2002 Patrick Mochel Copyright (c) 2004 Silicon Graphics, Inc. Copyright (c) 2007 SUSE Linux Products GmbH Copyright (c) 2007 Tejun Heo <teheo@suse.de> Copyright 2010 Canonical, Ltd. (c) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz> (c) 2000 Crutcher Dunnavant <crutcher+kernel@datastacks.com> (C) Balbir Singh, IBM Corp. 2006 (C) Jay Lan, SGI, 2006 Copyright (c) 2006-2009, Intel Corporation Copyright (c) 1998 Harald Koerfgen Copyright (c) 2005 James Simmons Copyright (c) 2006 Maciej W. Rozycki Copyright (c) 2010 Google, Inc Copyright 1999-2001 Quicknet Technologies, Inc. Copyright (c) 2005 The University of Waikato, Hamilton, New Zealand. Copyright (c) 2005 Ian McDonald <iam4@cs.waikato.ac.nz> Copyright (c) 2005 Arnaldo Carvalho de Melo <acme@conectiva.com.br> Copyright (c) 2003 Nils-Erik Mattsson, Joacim Haggmark, Magnus Erixzon Copyright (C) 2008 Intel Corp Copyright (C) 2008 Zhang Rui <rui.zhang@intel.com> Copyright (C) 2008 Sujith Thomas <sujith.thomas@intel.com> Copyright (C) 2002 David Howells (dhowells@redhat.com) Copyright (C) 2006 Alex Dubov <oakad@yahoo.com> Copyright (C) 2012 Marvell Copyright (c) 2009 Alexander Clouter <alex@digriz.org.uk> Copyright (c) David L. Mills 1993 Copyright (c) 2003-2006, Ericsson AB Copyright (c) 2005, Wind River Systems Copyright (c) 2005-2007, Wind River Systems Copyright (C) 2009-2010 Texas Instruments Copyright (C) 2002, IBM Corp. Copyright (c) 1996-2000 Jonathan A. Buzzard (jonathan@buzzard.org.uk) Copyright (C) 2004,2007,2008 IBM Corporation Copyright (C) 2008-2009 Red Hat, Inc. All rights reserved. Copyright 2008 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> Copyright (C) Jay Lan Copyright(C) 2005, Benedikt Spranger <b.spranger@linutronix.de> Copyright(C) 2006, Hans J. Koch <hjk@hansjkoch.de> Copyright(C) 2006, Greg Kroah-Hartman <greg@kroah.com> Copyright (C) by Hannu Savolainen 1993-1997 Copyright (C) IBM Corporation, 2008-2012 Copyright (C) 2011-2012 Red Hat, Inc., Peter Zijlstra <pzijlstr@redhat.com> Copyright (C) 2006 Intel Corporation Copyright (c) 2010 Daniel Mack <daniel@caiaq.de> Copyright (C) 2006-2008 Barco N.V. Copyright (c) 2012 Bj?rn Mork <bjorn@mork.no> Copyright (C) ST-Ericsson 2010-2012 Copyright (C) 2006-2008 David Brownell Copyright (C) 2013 by Texas Instruments Copyright (C) 2009 Wind River Systems, Inc. Copyright (c) 2001-2002 by David Brownell Copyright (C) 2012 Hauke Mehrtens <hauke@hauke-m.de> (C) Copyright 2002-2004 by David Brownell Copyright (c) 2008 Philipp Zabel <philipp.zabel@gmail.com> Copyright (C) 2010 Fabien Chouteau <fabien.chouteau@barco.com> Copyright (C) 2005 Dmitry Torokhov Copyright (C) 2012 Roland Stigge <stigge@antcom.de> Copyright (C) 2009 Renesas Solutions Corp. Copyright (c) 2009-2011, Code Aurora Forum. All rights reserved. Copyright (C) 2007 Google, Inc. Copyright (C) 2011-2012 by Texas Instruments Copyright (C) 2013 ST-Ericsson AB Copyright (C) 2002 NetChip Technology, Inc. (http:www.netchip.com) Copyright (C) 2003 David Brownell Copyright (C) 2013 Texas Instruments Incorporated - http:www.ti.com Copyright (C) 2011 Renesas Solutions Corp. Copyright (C) 2005 by David Brownell Copyright (C) 1999 - 2012 Copyright Matthew Wilcox for Intel Corp, 2010 Copyright 2012 Tilera Corporation. All Rights Reserved. Copyright (C) 2000-2005 by David Brownell <dbrownell@users.sourceforge.net> Copyright (C) 2003-2005 David Hollis <dhollis@davehollis.com> Copyright (C) 2005-2006 Intel Corporation. Copyright (C) 2005-2006 Intel Corporation Copyright (C) 2000 Copyright (c) 2005 Pete Zaitcev <zaitcev@redhat.com> Copyright (c) 1999-2002 Matthew Dharm (mdharm-usb@one-eyed-alien.net) Copyright (c) 1999 Michael Gee (michael@linuxspecific.com) Copyright (C) 2015 Red Hat, Inc. Copyright (C) 2008 Cambridge Silicon Radio Ltd. Copyright (C) 2007 Cambridge Silicon Radio Ltd. Copyright (C) 2014 Red Hat, Inc. All Rights Reserved. Copyright (C) 2012 ARM Limited Copyright (C) 2012 Red Hat, Inc. All rights reserved. (C) Copyright 2005 Benjamin Herrenschmidt <benh@kernel.crashing.org> (C) Copyright 2007 Paulo R. Zanoni <przanoni@gmail.com> (C) Copyright 2007, 2009 Tiago Vignatti <vignatti@freedesktop.org> Copyright (c) 2010 Red Hat Inc. Copyright 1998-2009 VIA Technologies, Inc. All Rights Reserved. Copyright 2001-2008 S3 Graphics, Inc. All Rights Reserved. Copyright 2009-2010 Jonathan Corbet <corbet@lwn.net> Copyright 2010 Florian Tobias Schandinat <FlorianSchandinat@gmx.de> Copyright 2009 Jonathan Corbet <corbet@lwn.net> Copyright (C) 1999-2012 the contributors Copyright (c) 1994-97 Martin Buck <martin-2.buck@student.uni-ulm.de> Copyright (C) 2006 Luming Yu <luming.yu@intel.com> Copyright (C) Red Hat, Inc., 2009, 2010, 2011 Copyright (C) Amit Shah <amit.shah@redhat.com>, 2009, 2010, 2011 Copyright 2011, ARM Ltd. copyright IBM Corp. 2007 Copyright (C) 2006, 2007 Eugene Konev <ejka@openwrt.org> Copyright (C) 2012 VMware, Inc. All rights reserved. Copyright (C) 2007-2013 VMware, Inc. All rights reserved. Copyright IBM Corporation, 2013. Copyright 2009 Red Hat, Inc. (c) 1998 Martin Mares <mj@ucw.cz> Copyright (C) 2007 Ville Syrjala <syrjala@sci.fi> Copyright (C) 2005-2007 Intel Corporation Copyright (c) 1997-2007 Jean Tourrilhes, All Rights Reserved. Copyright (C) 2009 Nokia Corporation Copyright (C) 2013 Canonical Ltd. Copyright (C) 2001 by Andreas Gruenbacher <a.gruenbacher@computer.org> Copyright (c) 2001-2002 Silicon Graphics, Inc. All Rights Reserved. Copyright (c) 2004 Red Hat, Inc., James Morris <jmorris@redhat.com> Copyright 2007 Secret Lab Technologies Ltd. Copyright (C) 1998 Frederic Rible F1OAT (frible@teaser.fr) Copyright (C) 1995-1998 Jean-loup Gailly. Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler Copyright (C) 1995--2003 Geert Uytterhoeven Copyright (C) 2014 Dan Streetman Copyright (C) 2011 Nitin Gupta Copyright (C) 2012, 2013 Minchan Kim Copyright (C) 1991,1992,1995-2002,2007,2009 Free Software Foundation, Inc. Copyright (C) 1998-2000, 2004, 2005,2007, 2008 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1999, 2000, 2002-2004, 2005, 2007, 2009 Copyright (C) 1991-1993, 1995-1999, 2001, 2002, 2004, 2006, 2009 Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1996,1997,1998,1999,2000,2002,2006,2009 Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. Copyright (c) 2006 Mellanox Technologies Ltd. All rights reserved. Copyright (c) 1998-2004,2005 Free Software Foundation, Inc. Copyright (c) 1998-2005,2007 Free Software Foundation, Inc. Copyright (c) 1998-2003,2004 Free Software Foundation, Inc. Copyright (c) 1998-2003,2007 Free Software Foundation, Inc. Copyright (c) 2006 Free Software Foundation, Inc. Copyright (c) 1998-2001,2006 Free Software Foundation, Inc. Copyright (c) 1998,2000 Free Software Foundation, Inc. Copyright (c) 1998-2001,2004 Free Software Foundation, Inc. Copyright (C) 2005 by Latchesar Ionkov <lucho@ionkov.net> Copyright (C) 2004 by Eric Van Hensbergen <ericvh@gmail.com> Copyright (C) 2002 by Ron Minnich <rminnich@lanl.gov> Copyright (C) 2008 by Eric Van Hensbergen <ericvh@gmail.com> Copyright (C) 2007 by Latchesar Ionkov <lucho@ionkov.net> Copyright (C) 2004-2008 by Eric Van Hensbergen <ericvh@gmail.com> Copyright 2007, 2008 Siemens AG Copyright (c) 2010,2011 Code Aurora Forum. All rights reserved. Copyright (c) 2011,2012 Intel Corp. Copyright (C) 2000-2001 Qualcomm Incorporated Copyright (c) 2000-2001, 2010, Code Aurora Forum. All rights reserved. Copyright (C) 2011-2012 Intel Corporation Copyright (C) 2009-2010 Gustavo F. Padovan <gustavo@padovan.org> Copyright (C) 2010 Google Inc. Copyright (C) 2010 Nokia Corporation Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com> Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org> Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). Copyright(c) 1999 - 2004 Intel Corporation. All rights reserved. Copyright (c) 2013 Nikolay Aleksandrov <nikolay@redhat.com> Copyright(c) 2013 Intel Corporation. Copyright (C) ST-Ericsson AB 2010 Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net> Copyright 2013-2014 Intel Mobile Communications GmbH (c) Copyright Hewlett-Packard Development Company, L.P., 2006 Copyright (C) 2011-2012 Kathleen Nichols <nichols@pollere.com> Copyright (C) 2011-2012 Van Jacobson <van@pollere.net> Copyright (C) 2012 Michael D. Taht <dave.taht@bufferbloat.net> Copyright (C) 2012 Eric Dumazet <edumazet@google.com> Copyright (c) 2010, Intel Corporation. (c) 1995-1998 E.M. Serrat emserrat@geocities.com Copyright (c) 2008-2009 Marvell Semiconductor Copyright (C) 1997, 1999, 2001, 2008 Free Software Foundation, Inc. Copyright (C) 2008-2009 Avionic Design GmbH Copyright (c) 2003, 2004 David Young. All rights reserved. Copyright (C) 2007, 2008 Siemens AG Copyright (C) 2007-2012 Siemens AG Copyright (C) 1997,98,99,2000,2001 Free Software Foundation, Inc. Copyright (C) 1997,1999,2001,2006,2009 Free Software Foundation, Inc. Copyright (C) 1997, 1998 Free Software Foundation, Inc. Copyright (C) 1998 Free Software Foundation, Inc. Copyright (C) 1997 Martin Mares Copyright (c) 1998-2000 Dag Brattli, All Rights Reserved. Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com> Copyright (c) 1999-2000 Dag Brattli, All Rights Reserved. Copyright (c) 1998 Thomas Davis, <ratbert@radiks.net>, Copyright (c) 1997-1999 Dag Brattli <dagb@cs.uit.no>,All Rights Reserved. Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, All Rights Reserved. Copyright (c) 1998-1999 Dag Brattli, All Rights Reserved. Copyright (c) 1998 Dag Brattli <dagb@cs.uit.no>, All Rights Reserved. Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, Copyright (c) 1997 Dag Brattli <dagb@cs.uit.no>, All Rights Reserved. Copyright (c) 1998 Dag Brattli, All Rights Reserved. Copyright (c) 1997, 1999 Dag Brattli <dagb@cs.uit.no>, Copyright (C) 1998-1999, Aage Kvalnes <aage@cs.uit.no> Copyright (c) 1998, Dag Brattli Copyright (c) 1997, 1998-1999 Dag Brattli <dagb@cs.uit.no>, Copyright (c) 1998-2000 Dag Brattli <dagb@cs.uit.no>, Copyright 2006 IBM Corporation Copyright 2000, 2006 IBM Corporation Copyright (c) 2001-2007 Jean Tourrilhes, All Rights Reserved. Copyright (c) 2008, John W. Linville <linville@tuxdriver.com> Copyright (c) 2002-2003, Jouni Malinen <j@w1.fi> Copyright (c) 2004, Intel Corporation Copyright (c) 1997 by Procom Technology, Inc. 2001-2003 by Arnaldo Carvalho de Melo <acme@conectiva.com.br> 2001, 2002 by Arnaldo Carvalho de Melo <acme@conectiva.com.br> Copyright (c) 1997 by Procom Technology,Inc. 2001 by Arnaldo Carvalho de Melo <acme@conectiva.com.br> Copyright 2002-2005, Devicescape Software, Inc. Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net> Copyright 2013-2014 Intel Mobile Communications GmbH Copyright (C)2003-2006 Helsinki University of Technology Copyright (C)2003-2006 USAGI/WIDE Project Copyright (c) 2014 Nicira, Inc. (C) 2008 Krzysztof Piotr Oledzki <ole@ans.pl> Copyright (C)2003,2004 USAGI/WIDE Project (c) Copyright Hewlett-Packard Development Company, L.P., 2006, 2008 Copyright (C) 2011 Intel Corporation. All rights reserved. Copyright (C) 2012 Intel Corporation. All rights reserved. Copyright (C) 2011 Instituto Nokia de Tecnologia Copyright (C) 2008 Nokia Corporation. Copyright (c) 2008 Oracle. All rights reserved. Copyright 2008-2009 Luis R. Rodriguez <mcgrof@qca.qualcomm.com> (C) Copyright 2007 Hewlett-Packard Development Company, L.P. Copyright (c) 2001-2003 International Business Machines, Corp. Copyright (C) 1999-2001 Cisco, Motorola Copyright (c) 2001-2003 Intel Corp. Copyright (c) 1989 Regents of the University of California. Copyright (C) 2007-2008 Intel Corporation <linux-wimax@intel.com> Copyright (C) 1991, 1992, 1993, 1995, 1996, 1997, 2004 Copyright (C) 1997, 1999 Free Software Foundation, Inc. Copyright (C) 1996-2002, 2003, 2004, 2009 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. Copyright (C) 1991-1997,2000,2006,2009 Free Software Foundation, Inc. Copyright (c) 1982, 1986, 1993 Copyright (C) 1997, 2005 Free Software Foundation, Inc. Copyright (C) 1997, 1999, 2003 Free Software Foundation, Inc. Copyright (C) 1991-2001, 2003, 2004, 2006, 2007, 2008 Copyright (C) 1991,92,93,95,96,97,98,99,2000,2009 Free Software Copyright (C) 1991-1997, 2001, 2003, 2006 Free Software Foundation, Inc. Copyright (C) 1991, 92, 93, 95, 96, 97, 99 Free Software Foundation, Inc. Copyright (C) 1991-1993,1995-1997,2004,2009 Free Software Foundation, Inc. Copyright (C) 1982, 1986 Regents of the University of California. Copyright (C) 1991, 92, 93, 95, 96, 97, 98 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1999, 2003, 2004 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1999, 2008 Free Software Foundation, Inc. Copyright (C) 1988-1994,1996-1999,2003,2004,2005,2009 (C) 1999 David A. Hinds (C) 1999 David A. Hinds (C) 2003 - 2004 David Woodhouse (C) 2003 - 2004 Dominik Brodowski (C) 2003 - 2008 Dominik Brodowski Copyright (C) 1991-1993,1995-2001,2006,2009 Copyright (c) 2006-2010. QLogic Corporation. All rights reserved. Copyright (c) 2003-2006, PathScale, Inc. All rights reserved. Copyright (c) 1999-2006 Ralf S. Engelschall <rse@engelschall.com> Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Copyright (c) 2005 Voltaire Inc. All rights reserved. Copyright (c) 2005 Intel Corporation. All rights reserved. Copyright (c) 2004, 2005 Intel Corporation. All rights reserved. Copyright (c) 2004 Mellanox Technologies Ltd. All rights reserved. Copyright (c) 2004 Infinicon Corporation. All rights reserved. Copyright (c) 2004-2006 Voltaire Corporation. All rights reserved. Copyright (c) 2005-2006 Intel Corporation. All rights reserved. Copyright (c) 2006, 2007, 2008, 2009, 2010 QLogic Corporation. Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved. Copyright (c) 2005 Voltaire, Inc. All rights reserved. Copyright (c) 2006 Intel Corporation. All rights reserved. Copyright (c) 2007 Cisco Systems. All rights reserved. Copyright (c) 2014 Mellanox Technologies. All rights reserved. Copyright (c) 2005, 2006, 2007 Cisco Systems. All rights reserved. Copyright (c) 2005 Network Appliance, Inc. All rights reserved. Copyright (c) 2005 Open Grid Computing, Inc. All rights reserved. Copyright (c) 2014 Intel Corporation. All rights reserved. Copyright (c) 2014 Chelsio, Inc. All rights reserved. Copyright (c) 2014 Intel Corporation. All rights reserved. Copyright (c) 2005-2010 Intel Corporation. All rights reserved. Copyright (c) 2005-2011 Intel Corporation. All rights reserved. Copyright (c) 2010-2011 Intel Corporation. All rights reserved. Copyright (C) 1985,1989-93,1995-98,2000,2001,2002,2003,2005,2006,2008 Copyright (C) 1996, 1997, 1998, 1999, 2004, 2008 Copyright (c) 1983, 1987, 1989 Copyright (C) 1984, Sun Microsystems, Inc. Copyright (C) 1986, Sun Microsystems, Inc. Copyright (c) 1990, 1991 Sun Microsystems, Inc. Copyright (c) 1986 by Sun Microsystems, Inc. Copyright (c) 2000 Dug Song <dugsong@UMICH.EDU>. Copyright (C) 1999 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999, 2006, 2007, 2009 Copyright (c) 1991, Sun Microsystems Inc. Copyright (c) 1990 Sun Microsystems Copyright (c) 1986, 1990 by Sun Microsystems, Inc. Copyright (C) 2002, 2007 Red Hat, Inc. All Rights Reserved. Copyright (C) 2002 Red Hat, Inc. All Rights Reserved. Copyright (C) 1996,1997,1999,2001-2004,2007 Free Software Foundation, Inc. Copyright 2008 Cisco Systems, Inc. All rights reserved. Copyright(c) 2011 Intel Corporation. All rights reserved. Copyright (c) 2011-2012 Intel Corporation. All rights reserved. Copyright(c) 2008 Intel Corporation. All rights reserved. Copyright (C) 2005 Dmitry Yusupov Copyright (C) 2005 Alex Aizman Copyright (c) 2008-2009 Cisco Systems, Inc. All rights reserved. Copyright (c) 2007-2008 Intel Corporation. All rights reserved. Copyright (C) 2006 Red Hat, Inc. All rights reserved. Copyright (C) 2004 - 2006 Mike Christie Copyright (C) 2004 - 2005 Dmitry Yusupov Copyright (C) 2004 - 2005 Alex Aizman Copyright (C) 2008 Mike Christie Copyright (C) 2008 Red Hat, Inc. All rights reserved. Copyright (C) 2005 Adaptec, Inc. All rights reserved. Copyright (C) 2005 Luben Tuikov <lubentuikov@adaptec.com> Copyright (C) 2008 Panasas Inc. All rights reserved. Copyright (C) 2011 Copyright (C) 2006 IBM Corporation Copyright 1993, 1994 Drew Eckhardt Copyright (C) 2009 James Smart, Emulex Corporation Copyright (C) 2005 FUJITA Tomonori <tomof@acm.org> Copyright (C) 2005 Mike Christie <michaelc@cs.wisc.edu> Copyright (c) 2003 Silicon Graphics, Inc. All rights reserved. Copyright (C) 2004-2007 James Smart, Emulex Corporation Copyright (C) IBM Corporation, 2004 Copyright (C) Mike Christie, 2004 - 2006 Copyright (C) Dmitry Yusupov, 2004 - 2005 Copyright (C) Alex Aizman, 2004 - 2005 Copyright (C) 1992 Lawrence Foard Copyright (C) 1998 - 2014 Douglas Gilbert Copyright (c) 2005 Cisco Systems. All rights reserved. Copyright (C) 1991-1999,2001,2002,2007,2009 Free Software Foundation, Inc. Copyright (C) 1991, 1992, 1996, 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1998, 1999, 2003 Free Software Foundation, Inc. Copyright (C) 1991-2003, 2004, 2007, 2009 Free Software Foundation, Inc. Copyright (c) by Jaroslav Kysela <perex@perex.cz> Copyright (C) 1999-2000 by Massimo Piccioni <dafastidio@libero.it> Copyright 2003 Vivien Chappelier <vivien.chappelier@linux-mips.org> Copyright 2008 Thomas Bogendoerfer <tsbogend@franken.de> Copyright (c) by Jaroslav Kysela <perex@perex.cz>, Copyright (c) by Pavel Hofman <pavel.hofman@ivitera.com>, Copyright 2009 Philipp Zabel Copyright (c) 2000 Jaroslav Kysela <perex@perex.cz> Copyright (c) 1998-1999 by Frank van de Pol <fvdpol@coil.demon.nl> (c) 1998-1999 by Jaroslav Kysela <perex@perex.cz> Copyright (c) 1994-2003 by Jaroslav Kysela <perex@perex.cz>, Abramo Bagnara <abramo@alsa-project.org> Copyright (c) 1994-2000 by Jaroslav Kysela <perex@perex.cz> Copyright (c) 1994-98 by Jaroslav Kysela <perex@perex.cz>,4Front Technologies Copyright (C) 2009 Atmel Corporation Copyright (C) 2005-2009 Atmel Corporation Copyright (c) 1994-2001 by Jaroslav Kysela <perex@perex.cz> Copyright (c) 2010 Alexander Sverdlin <subaparts@yandex.ru> Copyright (c) 2012 Cirrus Logic Inc. Copyright (c) 2013 Dialog Semiconductor Copyright (c) 2012 Dialog Semiconductor Copyright (ST) 2012 Rajeev Kumar (rajeev-dlh.kumar@st.com) Copyright (C) 2012, Analog Devices Inc. Copyright (C) 2000 Takashi Iwai <tiwai@suse.de> Copyright (C) 1999 Steve Ratcliffe Copyright (C) 1999-2000 Takashi Iwai <tiwai@suse.de> Copyright (c) 2007 Takashi Iwai <tiwai@suse.de> Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org) Copyright (C) 2003 Winfried Ritsch (IEM) Copyright (C) 2011, 2012 by Wolfram Sang, Pengutronix e.K. Copyright 2010 Maxim Integrated Products Copyright 2011-2012 Maxim Integrated Products Copyright 2011 Maxim Integrated Products Copyright (c) 2003 by Clemens Ladisch <clemens@ladisch.de> Copyright (c) by Takashi Iwai <tiwai@suse.de> Copyright (c) by Abramo Bagnara <abramo@alsa-project.org> Copyright (c) 2006 Jochen Voss <voss@seehuhn.de> Copyright (c) 1999 by Uros Bizjak <uros@kss-loka.si> Copyright (c) 1999 by Takashi Iwai <tiwai@suse.de> Copyright (c) 1998 by Frank van de Pol <fvdpol@coil.demon.nl> Copyright (C) 1998,99 Takashi Iwai <tiwai@suse.de>,Jaroslav Kysela <perex@perex.cz> Copyright (C) 1998,99 Takashi Iwai Copyright (C) 2000 Abramo Bagnara <abramo@alsa-project.org> Copyright (c) 2000 by Takashi Iwai <tiwai@suse.de>, Copyright (C) 1999-2000 Takashi Iwai Copyright (C) 2009 Rafael Ignacio Zurita <rizurita@yahoo.com> Copyright (C) 2009 Renesas Solutions Corp. Copyright (C) 2012 Renesas Solutions Corp. Copyright (c) 1999-2000 Takashi iwai <tiwai@suse.de> Copyright (ST) 2012 Vipin Kumar (vipin.kumar@st.com) Copyright (c) 2004 Jaroslav Kysela <perex@perex.cz> Copyright (c) 2006 by Jaroslav Kysela <perex@perex.cz> Copyright 2011 Vista Silicon S.L. Copyright 2007 Dension Audio Systems Ltd. Copyright (c) 2002 by Takashi Iwai <tiwai@suse.de> Copyright (c) by Paul Barton-Davis <pbd@op.net> Copyright 2012 Wolfson Microelectronics PLC. Copyright 2011 Wolfson Microelectronics. PLC. Copyright 2010 Wolfson Microelectronics. PLC. Copyright 2009 Wolfson Microelectronics. PLC. Copyright 2009, 2010 Wolfson Microelectronics. PLC. Copyright (C) 2000, 2003, 2004, 2009 Free Software Foundation, Inc. Copyright (C) 1997,1998,1999,2000,2001,2006 Free Software Foundation, Inc. Copyright (C) 1991, 1994-2007, 2008, 2009 Free Software Foundation, Inc. Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc. Copyright (C) 1991-2007, 2009 Free Software Foundation, Inc. Copyright (C) 1991-1993,1995-2004,2007,2009 Free Software Foundation, Inc. Copyright (C) 1991,92,96,97,99,2000,2001,2009 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1998, 1999, 2007 Free Software Foundation, Inc. Copyright (C) 1992-2001, 2002, 2004, 2005, 2006, 2007, 2009 Copyright (C) 1991, 1996 Free Software Foundation, Inc. Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Free Software Foundation, Inc. Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. Copyright (C) 1991, 92, 96, 97, 98, 99 Free Software Foundation, Inc. Copyright (c) 1982, 1986, 1992, 1993 Copyright (C) 2005, 2006, 2008, 2009 Free Software Foundation, Inc. Copyright (C) 1996, 2000, 2002, 2009 Free Software Foundation, Inc. Copyright (C) 1991, 92, 93, 94, 96, 98, 99 Free Software Foundation, Inc. Copyright (C) 1995,1996,1997,1999,2002 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 2005 Free Software Foundation, Inc. Copyright (C) 1996, 1999 Free Software Foundation, Inc. Copyright (C) 1994-2000, 2003, 2004, 2005 Free Software Foundation, Inc. Copyright (C) 1996,1997,1998,1999,2000,2004 Free Software Foundation, Inc. Copyright (C) 1995-1997,1999,2000,2003,2006,2007 Copyright (C) 1995-1997,2000,2001,2003,2008 Free Software Foundation, Inc. Copyright (C) 1996, 1999, 2001 Free Software Foundation, Inc. Copyright (C) 2002, 2007 Free Software Foundation, Inc. Copyright (C) 1994,1996-2001,2004,2005,2006 Free Software Foundation, Inc. Copyright (C) 1996-1999,2000,2006,2007 Free Software Foundation, Inc. Copyright (c) 1991, 1993 Copyright (C) 2001, 2002 Free Software Foundation, Inc. Copyright (C) 1992,94,1996-2000,2002,2004 Free Software Foundation, Inc. Copyright (C) 1996-2003, 2009 Free Software Foundation, Inc. Copyright (C) 1995-1999, 2000, 2003 Free Software Foundation, Inc. Copyright (C) 1998,99,01,2002,2004 Free Software Foundation, Inc. Copyright (C) 1995-1999, 2000, 2002 Free Software Foundation, Inc. Copyright (C) 1991,92,1994-2001,2003,2005,2007,2008 Copyright (C) 1991, 1992, 1995-2004, 2005, 2006, 2007, 2009 Copyright (C) 1996, 1997, 1998, 1999, 2004 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2000, 2004 Free Software Foundation, Inc. Copyright (C) 1996, 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1996, 1999, 2002, 2003, 2004 Free Software Foundation, Inc. Copyright (c) 1982, 1986, 1988, 1993 Copyright (C) 1996, 1997, 1999, 2003, 2004, 2007 Copyright (C) 1991-1994,1996-2003,2005,2006,2009 Copyright (C) 1994, 1995, 1996, 1999 Free Software Foundation, Inc. Copyright (C) 2008 Free Software Foundation, Inc. Copyright (C) 1995-1997, 1999, 2007, 2009 Free Software Foundation, Inc. Copyright (c) 1982, 1986, 1990, 1993 (c) UNIX System Laboratories, Inc. Copyright (C) 1991,1992,1994,1995,1996,1997,1998,1999,2000,2001,2002,2006 Copyright (C) 1991,1992,1996-1999,2003,2009 Free Software Foundation, Inc. Copyright (C) 1991, 1995, 1996, 2001 Free Software Foundation, Inc. Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. Copyright (C) 1991,92,94,96,97,99,2002 Free Software Foundation, Inc. Copyright (C) 1991, 1992, 1996, 1999 Free Software Foundation, Inc. Copyright (C) 1991-1994,1996-2001,2003,2004,2005,2007,2009 Copyright (c) 1987, 1993 Copyright (C) 2003 Eric J Bohm Copyright (C) IBM Corp. 2004-2005 Copyright (C) 1992, 1996 Free Software Foundation, Inc. Copyright (C) 1991,92,93,94,96,97,98,99, 2003 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2007 Copyright (C) 1999,2001,2002,2003 Free Software Foundation, Inc. Copyright (C) 1991-2003,2006,2009 Free Software Foundation, Inc. Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. Copyright 2011 Intel Corporation Copyright (c) 2007 Dave Airlie <airlied@linux.ie> Copyright (c) 2007 Jakob Bornecrantz <wallbraker@gmail.com> Copyright (c) 2008 Red Hat Inc. Copyright (c) 2007-2008 Tungsten Graphics, Inc., Cedar Park, TX., USA Copyright (c) 2007-2008 Intel Corporation Copyright 2002 Tungsten Graphics, Inc., Cedar Park, Texas. Copyright (c) 2011 Samsung Electronics Co., Ltd. Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. Copyright 2005 Stephane Marchesin. Copyright 2013 Red Hat Copyright 2000 Precision Insight, Inc., Cedar Park, Texas. Copyright 2000 VA Linux Systems, Inc., Fremont, California. Copyright 2004 Felix Kuehling Copyright 2005 Eric Anholt Copyright (c) 2012-2013, NVIDIA CORPORATION. All rights reserved. Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved. Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved. Copyright ? 2009 VMware, Inc., Palo Alto, CA., USA Copyright (C) 2007 Oracle. All rights reserved. Copyright (c) 2011 Volkswagen Group Electronic Research Copyright (c) 2008-2011, Intel Corporation. Copyright (C) 2004 - 2009 Red Hat, Inc. All rights reserved. Copyright (C) 2005-2007 Kristian Hoegsberg <krh@bitplanet.net> Copyright (C) 2001-2007 Miklos Szeredi. All rights reserved. (C) Copyright IBM Corp. 2013 Copyright (c) 2013 Dmitry Kasatkin <d.kasatkin@samsung.com> Copyright (c) 2010 Herbert Xu <herbert@gondor.apana.org.au> Copyright ? 2001-2007 Red Hat, Inc. Copyright ? 2004-2010 David Woodhouse <dwmw2@infradead.org> Copyright 2014 Advanced Micro Devices, Inc. Copyright(c) 2003 - 2012 Intel Corporation. All rights reserved. Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> (C) 2010-2011 Thomas Graf <tgraf@redhat.com> (C) 2010-2011 Red Hat, Inc. (C) 2002 by Harald Welte <laforge@gnumonks.org> (C) 2010 Red Hat Inc Copyright (C) 2004, 2010 Nokia Corporation Copyright (c) 2015 6WIND S.A. Copyright (C) 2008,2009 Intel Corporation Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net> Copyright 2008 Michael Buesch <m@bues.ch> Copyright (C) 2009 Texas Instruments, Inc. Copyright (c) 2007-2013 Nicira, Inc. Copyright 1999-2002 Paul Mackerras. Copyright (c) 2002 Intel Corp. Copyright (c) 2005, 2010-2011, Wind River Systems Copyright (c) 2005-2007, 2010-2011, Wind River Systems Copyright (c) 2012 David Herrmann Copyright (C) 2012 Nokia Corporation Copyright (C) 2012 Hans Verkuil <hans.verkuil@cisco.com> Copyright Rusty Russell IBM Corporation 2007. / Copyright (C) 2014 Red Hat, Inc. Copyright (c) 2014 Qualcomm Atheros, Inc. Copyright 2014 IBM Corp. Copyright ? International Business Machines Corp., 2006 Copyright(c) 2015 Intel Corporation. Copyright (c) 2006 Mellanox Technologies. All rights reserved. Copyright (C) 2006 James Smart, Emulex Corporation Copyright (c) 2007-2010 The Khronos Group Inc. Copyright (C) 2007, 2008 Karsten Wiese <fzu@wemgehoertderstaat.de> Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria. Copyright (c) 2003-2005, K A Fraser Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1991-2006, 2007, 2008, 2009 Free Software Foundation, Inc. Copyright (C) 1991, 92, 96, 97, 98, 99, 2004 Free Software Foundation, Inc. Copyright (C) 1993, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999, 2003 Free Software Foundation, Inc. Copyright (C) 2012 Heiko Stuebner <heiko@sntech.de> Copyright (C) 2008 by Jaya Kumar Copyright 1999 Jeff Garzik <jgarzik@pobox.com> Copyright (C) 1997 Jes Sorensen Copyright (C) 1996 Frank Neumann Copyright (c) 1998-1999 Ilario Nardinocchi (nardinoc@CS.UniBO.IT) Copyright (C) 2008-2009 MontaVista Software Inc. Copyright (C) 2008-2009 Texas Instruments Inc Copyright 2012 Steffen Trumtrar <s.trumtrar@pengutronix.de> Copyright (C) 2012 Samsung Electronics Co., Ltd. Copyright (C) 1999 Silicon Graphics, Inc. (Jeffrey Newquist) Copyright (C) 2002 STMicroelectronics Copyright (C) 2004 Paul Mundt Copyright (C) 1997 Michael AK Tesch Copyright (C) 1999 by Michael Engel <engel@unix-ag.org> and Karsten Merker <merker@guug.de> Copyright (C) 2012 Marvell Technology Group Ltd. Copyright (c) 2001 Denis Oliver Kropp <dok@convergence.de> Copyright (C) 1996 David S. Miller (davem@davemloft.net) Copyright (C) 2013 Texas Instruments Copyright (C) 2010 Canonical Ltd. Copyright (c) 1998-2000 Ilario Nardinocchi (nardinoc@CS.UniBO.IT) Copyright (C) 2001 Romain Dolbeau <dolbeau@irisa.fr> Copyright (C) 2001 Sven Luther, <luther@dpt-info.u-strasbg.fr> Copyright (C) 1999, 2000, 2001 by Michael Engel <engel@unix-ag.org>,Karsten Merker <merker@linuxtag.org> Copyright (c) 2005 Maciej W. Rozycki (c) 2005 Thibaut VARENE <varenet@parisc-linux.org> Copyright (C) 1999 Eric A. Thomas Copyright (C) Russell King. Copyright (C) 1999 Silicon Graphics, Inc. Copyright (C) 2010, Guennadi Liakhovetski <g.liakhovetski@gmx.de> Copyright (c) 2000,2001 Ghozlane Toumi <gtoumi@messel.emse.fr> Copyright (C) 1999,2000 Martin Lucina, Tom Zerucha Copyright 1999 Ben Pfaff and Petr Vandrovec (c) 1998 Gerd Knorr (c) 1993 Tommy Frandsen Copyright 1993 Harm Hanemaayer Copyright (c) 2004-2005 Richard Purdie Copyright (c) 2005 Ian Molton Copyright (C) 1995-2008, 2009 Free Software Foundation, Inc. Copyright (C) 1996-2002,2005,2007,2008,2009 Free Software Foundation, Inc. Copyright (C) 1991, 92, 1996-1999, 2001, 2003 Free Software Foundation, Inc. Copyright (c) 2011 Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Copyright (c) 2011 Yu Ke <ke.yu@intel.com> Copyright (c) 2006, Ian Campbell Copyright (c) 2007, D G Murray Copyright (c) 2004-2005, K A Fraser Copyright (c) 2005, Christopher Clark Copyright (c) 2006, Ian Campbell, XenSource Ltd. Copyright (c) 2003-2004, K A Fraser. Copyright (c) 2006, Keir Fraser <keir@xensource.com> Copyright (c) 2004, K A Fraser Copyright (c) 2003-2004, Keir Fraser Copyright (c) 2005, Keir Fraser Copyright (C) 2005 Anthony Liguori <aliguori@us.ibm.com> Copyright (C) 2006 Red Hat, Inc., Markus Armbruster <armbru@redhat.com> Copyright (C) 2005 XenSource Ltd. Copyright (C) 2005 Rusty Russell IBM Corporation Copyright (c) 2005, Keir Fraser <keir@xensource.com> Copyright (c) 2002-2006, K Fraser Copyright (c) 2005, Nguyen Anh Quynh <aquynh@gmail.com> Copyright (C) 2005 Rusty Russell, IBM Corporation Copyright (c) 2011 Bastian Blank <waldi@debian.org> Copyright (C) 1997,2000,2002,2009 Free Software Foundation, Inc. Copyright ? 2008 Red Hat, Inc. Copyright 2007-2008 by Sascha Hlusiak. <saschahlusiak@freedesktop.org> Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (c) 2013, 2014 Tatsuhiro Tsujikawa Copyright (c) 2012, 2013 Tatsuhiro Tsujikawa Copyright (c) 1997-2014 University of Cambridge Copyright (c) 2005, Google Inc. Copyright (c) 1997-2012 University of Cambridge Copyright 2005, Francis ANDRE. All rights reserved. Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Copyright (C) 1999-2003, 2008 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2005, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2006, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2006, 2010 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2005, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001 Free Software Foundation, Inc. Copyright (C) 1999-2002 Free Software Foundation, Inc. Copyright (C) 1999-2005, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2004-2011, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2004, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2011, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2005, 2016 Free Software Foundation, Inc. Copyright (C) 2005, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2005, 2007, 2016 Free Software Foundation, Inc. Copyright (C) 1998-2005 Gilles Vollant Copyright (C) 2001, 2005, 2016 Free Software Foundation, Inc. Copyright (C) 2001, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2007, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2005, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2005, 2011, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2005, 2008, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2000, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2006, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2010, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2008, 2011 Free Software Foundation, Inc. Copyright (C) 1999-2009 Free Software Foundation, Inc. Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http:www.winimage.com/zLibDll/minizip.html ) Copyright (C) 2009-2010 Mathias Svensson ( http:result42.com ) Copyright (C) 1999-2004, 2008, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2008, 2011-2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2004, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2004, 2012 Free Software Foundation, Inc. Copyright (C) 1999-2007, 2012, 2016 Free Software Foundation, Inc. Copyright (c) 2004-2009, Sara Golemon <sarag@libssh2.org> Copyright (c) 2009-2015 Daniel Stenberg Copyright (c) 2010 Simon Josefsson <simon@josefsson.org> Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org> Copyright (c) 2004-2008, Sara Golemon <sarag@libssh2.org> Copyright (C) 2000-2003 Free Software Foundation, Inc. Copyright (C) 1999-2003, 2005-2006, 2008 Free Software Foundation, Inc. Copyright (C) 2000-2002, 2005-2006, 2008-2009, 2011 Free Software Foundation, Inc. Copyright (C) 2003, 2005, 2008-2011 Free Software Foundation, Inc. Copyright (C) 1999-2007, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2004, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2003 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2008, 2011, 2016 Free Software Foundation, Inc. Copyright (C) 2007-2008 Even Rouault Copyright (C) 2001, 2004, 2011 Free Software Foundation, Inc. Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2018 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright 1998-2008 The OpenLDAP Foundation. Copyright 1999 Computing Research Labs, New Mexico State University Copyright 2001 Computing Research Labs, New Mexico State University Copyright 1990,1991 by the Massachusetts Institute of Technology. Copyright 1990,2004,2008 by the Massachusetts Institute of Technology. Copyright 2006, 2007 by the Massachusetts Institute of Technology. Copyright 1990, 2007, 2008 by the Massachusetts Institute of Technology. Copyright 1990 by the Massachusetts Institute of Technology. Copyright 2000, 2007, 2008 by the Massachusetts Institute of Technology. Copyright (C) 2014 by the Massachusetts Institute of Technology. Copyright (C) 2011 by the Massachusetts Institute of Technology. Copyright (C) 2017 by Red Hat, Inc. Copyright 1990,1991,1992,1993,1994,2000,2004,2007 Massachusetts Institute of Technology. copyright 1995 by Cygnus Support. Copyright 1990,1991,1992,1993,1994,2000,2004 Massachusetts Institute of Copyright 1990,1991,2000,2004,2008 by the Massachusetts Institute of Copyright 2007 Secure Endpoints Inc. Copyright 2003,2004 by the Massachusetts Institute of Technology. Copyright 2000 by Carnegie Mellon University Copyright 1990,1991,1999,2007,2008 by the Massachusetts Institute of Technology. Copyright 2000 by the Massachusetts Institute of Technology. Copyright (C) 2013 by the Massachusetts Institute of Technology. Copyright 2011 by the Massachusetts Institute of Technology. Copyright 1991 by the Massachusetts Institute of Technology. Copyright 2005,2006 by the Massachusetts Institute of Technology Copyright 2007 by Secure Endpoints Inc. Copyright 2005 by the Massachusetts Institute of Technology Copyright (C) 2016 by Red Hat, Inc. Copyright (C) 2010 by the Massachusetts Institute of Technology. Copyright 2009 by the Massachusetts Institute of Technology. All Copyright (C) 2009 by the Massachusetts Institute of Technology. Copyright (c) 2006-2008, Novell, Inc. Copyright 2010 by the Massachusetts Institute of Technology. Copyright 1991, 2008, 2009 by the Massachusetts Institute of Technology. Copyright (C) 2004 by the Massachusetts Institute of Technology. Copyright 2001, 2007 by the Massachusetts Institute of Technology. Copyright 1994 by OpenVision Technologies, Inc. Copyright 1992 by the Massachusetts Institute of Technology. Copyright 1994,1999,2000, 2002, 2003, 2007, 2008, 2009 by the Massachusetts Institute of Technology. Copyright (C) 1998 by the FundsXpress, INC. Copyright 1990,1991,2009 by the Massachusetts Institute of Technology. Copyright 1990, 2009 by the Massachusetts Institute of Technology. Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. Copyright 1990,1991,2007-2009 by the Massachusetts Institute of Technology. Copyright 2009 by the Massachusetts Institute of Technology. Copyright 1991, 2002 by the Massachusetts Institute of Technology. Copyright 1990, 2008, 2010 by the Massachusetts Institute of Technology. Copyright (C) 2017 by Cloudera, Inc. Copyright 1990,1991, 2003, 2008 by the Massachusetts Institute of Technology. Copyright (C) 2002, 2003, 2008 by the Massachusetts Institute of Technology. Copyright (C) 2002 by the Massachusetts Institute of Technology. Copyright 1990,1991 the Massachusetts Institute of Technology. Copyright 1990,1991, 2008 by the Massachusetts Institute of Technology. Copyright 2006 Massachusetts Institute of Technology. Copyright 1990-1998, 2009 by the Massachusetts Institute of Technology. Copyright 2008 by the Massachusetts Institute of Technology. Copyright 1990,1991,2008,2012 by the Massachusetts Institute of Technology. Copyright (C) 2016 by the Massachusetts Institute of Technology. Copyright 1995, 2003, 2008, 2012 by the Massachusetts Institute of Technology. All Copyright (C) 2009, 2011 by the Massachusetts Institute of Technology. Copyright 1995, 2003, 2008, 2011 by the Massachusetts Institute of Technology. All Copyright 2011 NORDUnet A/S. All rights reserved. Copyright 2011 Red Hat, Inc. All rights reserved. Copyright 2013 Red Hat, Inc. All rights reserved. Copyright 1990,1991,2007 by the Massachusetts Institute of Technology. Copyright 1994-2009,2014 by the Massachusetts Institute of Technology. Copyright (c) 1994 CyberSAFE Corporation. Copyright 1990,1991,2007,2008 by the Massachusetts Institute of Technology. Copyright 2012 Red Hat, Inc. Copyright 2010 by the Massachusetts Institute of Technology. All Copyright 1991, 2009 by the Massachusetts Institute of Technology. Copyright 1990,1991,2009,2013 by the Massachusetts Institute of Technology. Copyright 1995, 2008 by the Massachusetts Institute of Technology. Copyright 1995, 2007, 2008 by the Massachusetts Institute of Technology. Copyright 1997 by the Massachusetts Institute of Technology. Copyright 2006, 2008 by the Massachusetts Institute of Technology. Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. Copyright 1995, 1999, 2007 by the Massachusetts Institute of Technology. Copyright (C) 2012 by the Massachusetts Institute of Technology. Copyright 1999 by the Massachusetts Institute of Technology. Copyright 2009 by the Massachusetts Institute of Technology. Copyright (C) 2018 by the Massachusetts Institute of Technology. Copyright (C) 2010,2012 by the Massachusetts Institute of Technology. Copyright (c) 2006 Kungliga Tekniska Högskolan Copyright (C) 2015 by the Massachusetts Institute of Technology. Copyright (c) 2003 Kungliga Tekniska Högskolan Copyright (C) 2017 by the Massachusetts Institute of Technology. Copyright 1990, 2008 by the Massachusetts Institute of Technology. Copyright (C) 1998, 2011, 2012 by the Massachusetts Institute of Technology. Copyright 1990,1991,2008,2009 by the Massachusetts Institute of Technology. Copyright 2001, 2008 by the Massachusetts Institute of Technology. Copyright 1993 OpenVision Technologies, Inc., All Rights Reserved Copyright 1995,2001,2008,2009 by the Massachusetts Institute of Technology. Copyright 2004 Sun Microsystems, Inc. All rights reserved. Copyright 1993 OpenVision Technologies, Inc., All Rights Reserved. Copyright 1995, 2007 by the Massachusetts Institute of Technology. Copyright (C) 1995-2015 by the Massachusetts Institute of Technology. Copyright (C) 2007 Apple Inc. Copyright 1990, 1991, 2007, 2008, 2009, 2013, 2014 by the Massachusetts Institute of Technology. All Rights Reserved. Copyright 1990, 1991, 2001, 2007, 2008, 2009, 2013, 2014 by the Copyright 1990,2001,2007,2009 by the Massachusetts Institute of Technology. Copyright (C) 2009, 2015 by the Massachusetts Institute of Technology. Copyright 2013 by the Massachusetts Institute of Technology. Copyright (C) 2007 Apple Inc. All Rights Reserved. Copyright (C) 2008, 2009 by the Massachusetts Institute of Technology. Copyright 2008,2009 by the Massachusetts Institute of Technology. Copyright 1995, 2003, 2007, 2009 by the Massachusetts Institute of Copyright (C) 1995, 2003, 2007, 2011 by the Massachusetts Institute of Technology. Copyright 1990,1991,2007,2008,2009 by the Massachusetts Institute of Technology. Copyright 1990, 2007, 2014 by the Massachusetts Institute of Technology. Copyright 1990,2001,2008,2009,2016 by the Massachusetts Institute of Copyright (c) 1990, 1993, 1994 Copyright (c) 1991, 1993, 1994 Copyright (c) 2004-2005, Novell, Inc. Copyright (c) 2015-2016 the fiat-crypto authors (see the AUTHORS file). Copyright (c) 2015-2016, Google Inc. Copyright (C) 2012 by the Red Hat Inc. Copyright (C) 2005 by the Massachusetts Institute of Technology. Copyright (C) 1995 by the Massachusetts Institute of Technology. Copyright (C) 2003, 2004, 2005 by the Massachusetts Institute of Technology. Copyright (C) 2003, 2004 by the Massachusetts Institute of Technology. Copyright (C) 2004,2005 by the Massachusetts Institute of Technology. Copyright 2003 Sun Microsystems, Inc. All rights reserved. Copyright (C) 2006,2008 by the Massachusetts Institute of Technology. Copyright 1987, 1989 by the Student Information Processing Board Copyright 1987, 1988, 1989 Massachusetts Institute of Technology Copyright 2007 Massachusetts Institute of Technology. Copyright 1987, 1988, 1989 by MIT Student Information Processing Copyright 1987, 1988, 1989 by Massachusetts Institute of Technology Copyright 1987, 1988 by MIT Student Information Processing Board Copyright 1987 by the Student Information Processing Board Copyright 1987, 1988, 1989 by MIT Copyright (C) 2010,2013 by the Massachusetts Institute of Technology. Copyright 2006 by the Massachusetts Institute of Technology. Copyright 1997,2006,2007-2009 by the Massachusetts Institute of Technology. Copyright 2004 by the Massachusetts Institute of Technology Copyright (C) 1985-2012 by the Massachusetts Institute of Technology.\par Copyright, OpenVision Technologies, Inc., 1996, All Rights Reserved\par Copyright 2000 by Zero-Knowledge Systems, Inc.\par Copyright (c) 2001, Dr Brian Gladman <brg@gladman.uk.net>, Worcester, UK.\par Copyright (C) 2006 by the Massachusetts Institute of Technology. Copyright 1998-2008 The OpenLDAP Foundation. All rights reserved. Copyright 1997 by the Regents of the University of Michigan Copyright 1997 by the Regents of the University of Michigan. Copyright 2006, 2007 Massachusetts Institute of Technology. Copyright (C) 2019 by the Massachusetts Institute of Technology. Copyright 1997 by Massachusetts Institute of Technology Copyright 1988, Student Information Processing Board of the Copyright 1995 by Cygnus Support. Copyright 1997,2000,2001,2004,2008 by Massachusetts Institute of Technology Copyright 1988 by the Student Information Processing Board of the Copyright 1987 by MIT Student Information Processing Board Copyright 1987, 1988 by the Student Information Processing Board Copyright 1995, 1996, 2008 by the Massachusetts Institute of Technology. (C) Copyright 1995, 1996 by the Massachusetts Institute of Technology. Copyright (C) 2003,2004 by the Massachusetts Institute of Technology. Copyright (C) 2003 by the Massachusetts Institute of Technology. Copyright 1990,1991,2001, 2002, 2008 by the Massachusetts Institute of Technology. (C) Copyright 1990,1991, 1996, 2008 by the Massachusetts Institute of Technology. Copyright (C) 1998 by Danilo Almeida. All rights reserved. Copyright 2008 Massachusetts Institute of Technology. Copyright (c) 2007,2008,2009,2010,2011,2012,2013 Marc Alexander Lehmann <libev@schmorp.de> Copyright (c) 2007,2008,2009,2010,2011,2012,2015 Marc Alexander Lehmann <libev@schmorp.de> Copyright (c) 2007,2008,2009,2010,2011 Marc Alexander Lehmann <libev@schmorp.de> Copyright (c) 2007,2008,2009 Marc Alexander Lehmann <libev@schmorp.de> Copyright (C) 2008 by the Massachusetts Institute of Technology. Copyright 1995 by Richard P. Basch. All Rights Reserved. Copyright 1995 by Lehman Brothers, Inc. All Rights Reserved. Copyright 1987, 1988, 1990, 2002 by the Massachusetts Institute of Copyright (C) 1990 by the Massachusetts Institute of Technology. Copyright 1985, 1986, 1987, 1988, 1990 by the Massachusetts Institute Copyright 1988, 1990 by the Massachusetts Institute of Technology. Copyright 1989,1990 by the Massachusetts Institute of Technology. Copyright 2012 by the Massachusetts Institute of Technology. Copyright 1996, Massachusetts Institute of Technology. Copyright 2015 Red Hat, Inc. Copyright 2014 by the Massachusetts Institute of Technology. Copyright 2010 by the Massachusetts Institute of Technology. Copyright (c) 2010, Oracle America, Inc. Copyright |copy| 1985-2019 by the Massachusetts Institute of Copyright |copy| 1985-2019 by the Massachusetts Institute of Technology. Copyright |copy| 2006 Red Hat, Inc. copyright |copy| 2006 Massachusetts Institute of Technology Copyright 2013,2014 Red Hat, Inc. Copyright |copy| 2004 Sun Microsystems, Inc. Copyright |copy| 1983 Regents of the University of California. Copyright |copy| 2004-2005, Novell, Inc. COPYRIGHT |copy| 2006-2007 Copyright 2006 g10 Code GmbH Copyright 2006 Andreas Jellinghaus Copyright 2004-2008 Apple Inc. All Rights Reserved. Copyright |copy| 2006 Kungliga Tekniska Högskola Copyright |copy| 2009 Kungliga Tekniska Högskola Copyright |copy| 2009 Apple Inc. All rights reserved. Copyright |copy| 2010, Oracle America, Inc. Copyright |copy| 2006,2007,2009 Copyright |copy| 2002 Naval Research Laboratory (NRL/CCS) Copyright |copy| 1991, 1992, 1994 by Cygnus Support. Copyright |copy| 2006 Secure Endpoints Inc. Copyright |copy| 2005 Marko Kreen Copyright |copy| 1994 by the University of Southern California Copyright |copy| 1995 Copyright |copy| 2008 by the Massachusetts Institute of Technology. Copyright |copy| 1997, 1998 The NetBSD Foundation, Inc. Copyright 1997, 1998, 1999 Computing Research Labs, Copyright |copy| 1998 Todd C. Miller ``Todd.Miller@courtesan.com`` Copyright 1999 by Theodore Ts'o. Copyright |copy| 1999-2000, The University of Chicago Copyright |copy| 2000 The Regents of the University of Michigan. Copyright |copy| 2000 Dug Song ``dugsong@UMICH.EDU``. Copyright |copy| 1990, RSA Data Security, Inc. All rights reserved. Copyright |copy| 1990-2, RSA Data Security, Inc. Created 1990. All Copyright |copy| 1994 CyberSAFE Corporation. Copyright 1990,1991,2007,2008 by the Massachusetts Copyright (c) 2011, PADL Software Pty Ltd. Copyright (C)2007,2008,2009 Marc Alexander Lehmann. Copyright |copy| 2010, Intel Corporation Copyright 1994, 2008 by the Massachusetts Institute of Technology. Copyright 2001 by the Massachusetts Institute of Technology. Copyright 1994 by the Massachusetts Institute of Technology. Copyright @1998 Massachusetts Institute of Technology - All rights reserved. Copyright (C) 2015, 2017 by the Massachusetts Institute of Technology. Copyright (c) 1995 - 2001 Kungliga Tekniska Högskolan Copyright (c) 2006, 2010 Kungliga Tekniska Högskolan Copyright (c) 2002 Naval Research Laboratory (NRL/CCS) Copyright (C) 2009, 2010 by the Massachusetts Institute of Technology. Copyright 1989,1991 by the Massachusetts Institute of Technology. (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors Copyright 1995-2004, 2007, 2008, 2017 by the Massachusetts Institute of Copyright 1994 OpenVision Technologies, Inc., All Rights Reserved Copyright 1990,1991,2008 by the Massachusetts Institute of Technology. Copyright 2008 Sun Microsystems, Inc. All rights reserved. Copyright 2004-2006 by the Massachusetts Institute of Technology. Copyright (C) 1990, RSA Data Security, Inc. All rights reserved. Copyright (C) 2002, 2016 by the Massachusetts Institute of Technology. Copyright 2000, 2004, 2007, 2008 by the Massachusetts Institute of Technology. Copyright 2000, 2007-2010 by the Massachusetts Institute of Technology. Copyright 1997,2007 by the Massachusetts Institute of Technology. Copyright 1997, 2007 by the Massachusetts Institute of Technology. Copyright 2000, 2008 by the Massachusetts Institute of Technology. Copyright 1995,2004,2007,2008 by the Massachusetts Institute of Technology. Copyright 2000, 2002, 2003, 2007, 2008 by the Massachusetts Institute of Copyright 2000, 2007 by the Massachusetts Institute of Technology. Copyright 2008, 2009 by the Massachusetts Institute of Technology. Copyright 2003,2004,2007 by the Massachusetts Institute of Technology. Copyright 2004, 2008 by the Massachusetts Institute of Technology. Copyright 1995, 2004, 2008 by the Massachusetts Institute of Technology. Copyright 2004 by the Massachusetts Institute of Technology. Copyright 1999, 2003 by the Massachusetts Institute of Technology. Copyright 2001, 2009 by the Massachusetts Institute of Technology. Copyright 1997, 2007 by Massachusetts Institute of Technology Copyright (C) 2009, 2018 by the Massachusetts Institute of Technology. Copyright (C) 2003, 2007, 2008, 2009 by the Massachusetts Institute of Technology. Copyright (C) 2003, 2007, 2008, 2009, 2010 by the Massachusetts Institute of Copyright (c) 2000 by Computer Science Laboratory,Rensselaer Polytechnic Institute Copyright 1996 by Sun Microsystems, Inc. Copyright (c) 1996,1997, by Sun Microsystems, Inc. Copyright 2008-2010 by the Massachusetts Institute of Technology. Copyright (c) 1995, by Sun Microsystems, Inc. Copyright 1998, 1999, 2006, 2008 by the Massachusetts Institute of Copyright (C) 2003, 2004, 2008 by the Massachusetts Institute of Technology. Copyright (C) 2004,2008 by the Massachusetts Institute of Technology. Copyright 2002, 2008, 2009 by the Massachusetts Institute of Technology. Copyright 1990, 2007 by the Massachusetts Institute of Technology. Copyright 1990,1999,2001,2008 by the Massachusetts Institute of Technology. Copyright 2004, 2009 by the Massachusetts Institute of Technology. Copyright 2004 by the Massachusetts Institute of Technology. Copyright 1990,2000,2001,2002,2003 by the Massachusetts Institute of Technology. Copyright (c) 2009, Secure Endpoints Inc. Copyright (C) 1990,1991,2002,2008,2009,2013 by the Massachusetts Institute Copyright (C) 2015 by the Massachusetts Institute Copyright 1994, 2007, 2008, 2009 by the Massachusetts Institute of Technology. Copyright (c) Hewlett-Packard Company 1991 Copyright 1990,1991,2000,2001,2002,2004,2007,2008 by the Massachusetts Copyright (C) 2013 by the Massachusetts Institute of Technology. All rights Copyright (C) 1990,1993,2007,2013 by the Massachusetts Institute Copyright (C) 1990,1991,2007,2008,2013 by the Massachusetts Copyright 1990,2000,2001,2002,2003,2004,2006,2008 Massachusetts Institute of Copyright 1990, 1998 by the Massachusetts Institute of Technology. Copyright 1995, 2009 by the Massachusetts Institute of Technology. Copyright 1987, 1988, 1990 by the Massachusetts Institute of Technology. Copyright 1987, 1988, 1990, 2009 by the Massachusetts Institute of Copyright 1990,1991,2001,2002,2004,2005,2007,2008 by the Massachusetts Institute of Technology. Copyright 1991,2002 by the Massachusetts Institute of Technology. Copyright 2005 by the Massachusetts Institute of Technology. Copyright 1988,1991 by the Massachusetts Institute of Technology. Copyright (C) 2004-2006 by the Massachusetts Institute of Technology. Copyright 2006 Sun Microsystems, Inc. All rights reserved. Copyright 1995,1996,1997,1998 by the Massachusetts Institute of Technology. Copyright 1995, 2007,2008,2009 by the Massachusetts Institute of Technology. Copyright (C) 1989-1994 by the Massachusetts Institute of Technology,Cambridge, MA, USA. All Rights Reserved. Copyright 1998-2006 Massachusetts Institute of Technology. Copyright (C) 2001,2002,2003,2004 by the Massachusetts Institute of Technology, Copyright 1990,1991,2000,2001,2002,2004 by the Massachusetts Institute of Technology. Copyright (c) 1995, 1996, 1997 Kungliga Tekniska Högskolan Copyright (C) 1989,1990,1991,1992,1993,1994,1995,2000,2001,2003,2006,2007,2008,2009 by the Massachusetts Institute of Technology, Copyright (c) 2010 Kungliga Tekniska Högskolan Copyright (c) 2010 Apple Inc. All rights reserved. Copyright 2003, 2004, 2005, 2007, 2008, 2009 Massachusetts Institute of Technology. Copyright (C) 2006 Massachusetts Institute of Technology. Copyright 2004,2005,2006,2007,2008 by the Massachusetts Institute of Technology. Copyright (C) 2008 by the Massachusetts Institute of Technology, Copyright (C) 2000 Novell, Inc. All Rights Reserved. Copyright (C) 1989-1998,2002 by the Massachusetts Institute of Technology, Copyright 1990, 1991, 2016 by the Massachusetts Institute of Technology. Copyright 2009 Sun Microsystems, Inc. All rights reserved. Copyright (C) 2001,2005 by the Massachusetts Institute of Technology, Copyright 1990,1991,2001,2006,2008,2009,2013 by the Massachusetts Institute Copyright 1990,1991,2001, 2002, 2008 by the Massachusetts Institute of (C) Copyright 1990,1991, 1996, 2008, 2009 by the Massachusetts Institute of Technology. Copyright 1992, 2008, 2009 by the Massachusetts Institute of Technology. Copyright (c) 1988 Regents of the University of California. Copyright 2006-2008 Massachusetts Institute of Technology. Copyright (c) 2006 Red Hat, Inc. copyright (c) 2006, 2011 Massachusetts Institute of Technology Copyright 1989, 1990, 1995, 2001, 2003, 2007, 2011 by the Massachusetts Copyright (C) 2004, 2009 by the Massachusetts Institute of Technology. Copyright 2002,2005 by the Massachusetts Institute of Technology. Copyright 2001,2002 by the Massachusetts Institute of Technology. Copyright (C) 1990-2, RSA Data Security, Inc. Created 1990. All Copyright 2002 by the Massachusetts Institute of Technology. Copyright (C) 2001 by the Massachusetts Institute of Technology. Copyright (c) 1995 - 2002 Kungliga Tekniska Högskolan Copyright (C) 1985-2019 by the Massachusetts Institute of Technology. Copyright, OpenVision Technologies, Inc., 1993-1996, All Rights Copyright (C) 2001, Dr Brian Gladman "brg@gladman.uk.net", Copyright (C) 2006 Red Hat, Inc. copyright (C) 2006 Massachusetts Institute of Technology Copyright (C) 2004 Sun Microsystems, Inc. Copyright (C) 1983 Regents of the University of California. Copyright (C) 2004-2005, Novell, Inc. Copyright (C) 2006 Kungliga Tekniska Högskola Copyright (C) 2009 Kungliga Tekniska Högskola Copyright (C) 2009 Apple Inc. All rights reserved. Copyright (C) 2010, Oracle America, Inc. Copyright (C) 2006,2007,2009 NTT (Nippon Telegraph and Telephone Copyright (C) 2002 Naval Research Laboratory (NRL/CCS) Copyright (C) 1991, 1992, 1994 by Cygnus Support. Copyright (C) 2006 Secure Endpoints Inc. Copyright (C) 2005 Marko Kreen Copyright (C) 1994 by the University of Southern California Copyright (C) 1997, 1998 The NetBSD Foundation, Inc. Copyright (C) 1998 Todd C. Miller "Todd.Miller@courtesan.com" Copyright (C) 1999-2000, The University of Chicago Copyright (C) 2000 The Regents of the University of Michigan. All Copyright (C) 2000 Dug Song "dugsong@UMICH.EDU". All rights Copyright (C) 1994 CyberSAFE Corporation. Copyright (c) 2011, PADL Software Pty Ltd. All rights reserved. Copyright (C)2007,2008,2009 Marc Alexander Copyright (C) 2010, Intel Corporation All rights reserved. Copyright (c) 2015-2016 the fiat-crypto authors (see the AUTHORS Copyright (C) 1985-2019 by the Massachusetts Institute of Technology Copyright (C) 2009, 2015 by the Massachusetts Institute of Technology. All Copyright 1990, 2002 by the Massachusetts Institute of Technology. Copyright (C) 1986 Gary S. Brown. You may use this program, or Copyright (C) 2001, 2014 by the Massachusetts Institute of Technology. Copyright 2008, 2009, 2010 by the Massachusetts Institute of Technology. Copyright (C) 2002, 2005 by the Massachusetts Institute of Technology. Copyright (C) 2004, 2009 by the Massachusetts Institute of Technology. Copyright (C) 2001, 2002, 2004, 2007, 2008, 2010 by the Massachusetts Institute of Technology. Copyright (C) 2010, 2011 by the Massachusetts Institute of Technology. Copyright (c) 2007 Kungliga Tekniska Högskolan Copyright (c) 2013 Red Hat, Inc. Copyright 2007, 2008 by the Massachusetts Institute of Technology. Copyright 1995 by OpenVision Technologies, Inc. Copyright (c) 1994 by the University of Southern California Copyright (c) 1987 Regents of the University of California. Copyright 1990,2000,2007,2008,2009,2010,2016 by the Massachusetts Institute Copyright 2016 by the Massachusetts Institute of Technology. Copyright 2006, 2009, 2010, 2016 by the Massachusetts Institute of Copyright 2005 Sun Microsystems, Inc. All rights reserved. Copyright 1995, 2009, 2014 by the Massachusetts Institute of Technology. Copyright 1990,2008 by the Massachusetts Institute of Technology. Copyright 2001,2008 by the Massachusetts Institute of Technology. Copyright 1990,1991,1995,2007,2008 by the Massachusetts Institute of Technology. Copyright 1990,1991,2002,2007,2008 by the Massachusetts Institute of Technology. Copyright (C) 2007 by the Massachusetts Institute of Technology. Copyright 1990, Daniel J. Bernstein. All rights reserved. Copyright 2011 by the Massachusetts Copyright (c) 2004 Sun Microsystems, Inc. Copyright (c) 2001, Dr Brian Gladman <brg@gladman.uk.net>, Worcester, UK. Copyright 2002, 2008 by the Massachusetts Institute of Technology. Copyright (C) 1994 by the Massachusetts Institute of Technology. Copyright (C) 1992,1993 Trusted Information Systems, Inc. Copyright (C) 1994 Massachusetts Institute of Technology Copyright (c) 1995-2001 Kungliga Tekniska Högskolan Copyright (C) 2004 by the Massachusetts Institute of Technology, Copyright (C) 2001,2002,2003,2004,2005,2006 by the Massachusetts Institute of Technology, Copyright 2006, 2007, 2009 Massachusetts Institute of Technology. Copyright 2003, 2004, 2005, 2007, 2008 Massachusetts Institute of Copyright 2004,2005,2006,2007,2008 by the Massachusetts Institute of Copyright (c) 1999 - 2001 Kungliga Tekniska Högskolan Copyright 2008, 2017 by the Massachusetts Institute of Technology. Copyright (C) 1999, 2000 Novell, Inc. All Rights Reserved. Copyright 2009 Massachusetts Institute of Technology. Copyright (C) 2003, 2007, 2008 by the Massachusetts Institute of Technology. Copyright © 1985-2002 by the Massachusetts Institute of Technology. Copyright (C) 2017 - 2019 Red Hat, Inc. Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2013 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (c) 2000 The Apache Software Foundation. All rights Copyright (c) 2003-2016 CORE Security Technologies) Copyright (c) 2003-2016 CORE Security Technologies Copyright (C) 2001 Michael Teo <michaelteo@bigfoot.com> Copyright (C) 2019, Michael Forney, <mforney@mforney.org> Copyright (C) 2010 - 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com> Copyright (C) 2012 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com> Copyright (C) 2017 - 2018, Yiming Jing, <jingyiming@baidu.com> Copyright (C) 2017-2018, Yiming Jing, <jingyiming@baidu.com> Copyright (C) 2010, 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com> Copyright (C) 2012 - 2016, Marc Hoersken, <info@marc-hoersken.de> Copyright (C) 2012, Mark Salisbury, <mark.salisbury@hp.com> Copyright (C) 2012 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2012, Marc Hoersken, <info@marc-hoersken.de>, et al. Copyright (C) 2012 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2012 - 2017, Nick Zitzmann, <nickzman@gmail.com>. Copyright (C) 2012 - 2014, Nick Zitzmann, <nickzman@gmail.com>. Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright 2013, John Malmberg Copyright 2009, John Malmberg Copyright 2012, John Malmberg Copyright (C) 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2012 - 2016, Linus Nielsen Feltzing, <linus@haxx.se> Copyright (C) 2015 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2012 - 2014, Linus Nielsen Feltzing, <linus@haxx.se> Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2015 - 2019, Steve Holme, <steveholme@hotmail.com>. Copyright (C) 2011 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2011 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2010, Howard Chu, <hyc@highlandsun.com> Copyright (C) 2010 - 2019, Howard Chu, <hyc@highlandsun.com> Copyright (C) 2012 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2019, Florin Petriuc, <petriuc.florin@gmail.com> Copyright (C) 2010 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2010 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2009 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1996-2019 Internet Software Consortium. Copyright (c) 1996 - 2019 by Internet Software Consortium. Copyright (c) 1995, 1996, 1997, 1998, 1999 Kungliga Tekniska Högskolan Copyright (c) 2004 - 2019 Daniel Stenberg Copyright (C) 1999 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2010, Howard Chu, <hyc@openldap.org> Copyright (c) 1998, 1999, 2017 Kungliga Tekniska Högskolan Copyright (C) 2001 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2014, Bill Nagel <wnagel@tycoint.com>, Exacq Technologies Copyright (C) 2016-2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2009, Markus Moeller, <markusmoeller@compuserve.com> Copyright (C) 2009, 2011, Markus Moeller, <markusmoeller@compuserve.com> Copyright (C) 1997 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2004 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2016 - 2019, Steve Holme, <steveholme@hotmail.com>. Copyright (C) 2013 - 2018, Linus Nielsen Feltzing <linus@haxx.se> Copyright (C) 2013, Linus Nielsen Feltzing <linus@haxx.se> Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2015, 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2014, Steve Holme, <steveholme@hotmail.com>. Copyright (C) 2014, Vijay Panghal, <vpanghal@maginatics.com>, et al. Copyright (C) 1998 - 2016, Vijay Panghal, <vpanghal@maginatics.com>, et al. Copyright (C) 2013 - 2019, Linus Nielsen Feltzing, <linus@haxx.se> Copyright (C) 1998 - 2011, 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2012, 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2013, 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2011, 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2017-2019, Daniel Stenberg, <daniel@haxx.se>, et al. (c) CopyRight EdelWeb for EdelKey and OpenEvidence, 2000-2004, 2009 Copyright (c) 1996 - 2020, Daniel Stenberg, <daniel@haxx.se>, and many Copyright (C) 2018 - 2019 Jeroen Ooms <jeroenooms@gmail.com> Copyright (c) 2000 - 2019 David Odin (aka DindinX) for MandrakeSoft Copyright (c) 2003 - 2019 The OpenEvidence Project. All rights reserved. Copyright (c) 2003 - 2019 Simtec Electronics Copyright (c) 2011 - 2019, Jim Hollinger Copyright (C) 1998 - 2014, 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2010, Mandy Wu, <mandy.wu@intel.com> Copyright (c) 1983 Regents of the University of California. Copyright (C) 2013-2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2013-2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2015 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2001 Eric Lavigne Copyright (C) 2014 - 2016, Steve Holme, <steveholme@hotmail.com>. Copyright (C) 2014 - 2019, Steve Holme, <steveholme@hotmail.com>. Copyright (C) 2015, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (c) 1996 - 2003, Daniel Stenberg, <daniel@haxx.se>. Copyright 2016 The Apache Software Foundation. (c) Copyright [2008-2015] Tom Preston-Werner Copyright 2013-2019 The Apache Software Foundation (c) Copyright [2014-2015] Hewlett-Packard Development Company, L.P Copyright 2013 Scott Jehl Copyright (C) 1999-2001 Bruno Haible. Copyright (C) 1999-2001, 2003, 2005, 2008, 2012, 2017 Free Software Foundation, Inc. Copyright (C) 1999-2003, 2005, 2008, 2012 Free Software Foundation, Inc. Copyright (C) 2000-2002, 2005-2006, 2008-2009, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2003, 2005, 2011-2012, 2016, 2018 Free Software Foundation, Inc. Copyright (C) 1999-2008, 2011, 2016, 2018 Free Software Foundation, Inc. Copyright (C) 1999-2008, 2011, 2018 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2008, 2011-2012, 2016, 2018 Free Software Foundation, Inc. Copyright (C) 2003-2006, 2008-2018 Free Software Foundation, Inc. Copyright (C) 2003, 2005, 2008-2017 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2004, 2016, 2019 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2016, 2019 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2011-2012, 2016, 2018 Free Software Foundation, Inc. Copyright (C) 1999-2004, 2006-2007, 2010, 2012, 2016, 2018 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2012, 2018 Free Software Foundation, Inc. Copyright (C) 2001-2002, 2005-2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2001-2002, 2006-2019 Free Software Foundation, Inc. Copyright (C) 2005, 2012 Free Software Foundation, Inc. Copyright (C) 2000, 2004-2005, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 2000-2002, 2004-2005 Free Software Foundation, Inc. Copyright (C) 2008, 2018 Free Software Foundation, Inc. Copyright (C) 2009, 2011 Free Software Foundation, Inc. Copyright (C) 86, 91, 1995-1998, 1999, 2012 Free Software Foundation, Inc. Copyright (C) 2000-2006, 2008-2018 Free Software Foundation, Inc. Copyright (C) 2018 Free Software Foundation, Inc. Copyright (C) 2000-2009, 2011-2012, 2016-2019 Free Software Foundation, Inc. Copyright (C) 2006, 2011-2018 Free Software Foundation, Inc. Copyright (C) 2007 Free Software Foundation, Inc. <http:fsf.org/> Copyright (C) 1995, 1999, 2001-2007 Free Software Foundation, Inc. Copyright (C) 2001-2004, 2006 Free Software Foundation, Inc. Copyright (C) 1990-1996, 2000-2003, 2005-2007 Free Software Foundation, Inc. Copyright (C) 1990, 1996, 2000-2003, 2005-2006 Free Software Foundation, Inc. Copyright (C) 2011-2019 Free Software Foundation, Inc. Copyright (C) 2001, 2003-2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2001, 2003-2004, 2007, 2009-2019 Free Software Foundation,Inc. Copyright (C) 2009-2019 Free Software Foundation, Inc. Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2019 Free Software Copyright 2017-2019 Free Software Foundation, Inc. Copyright (C) 2001, 2003, 2005, 2008-2019 Free Software Foundation, Inc. Copyright (C) 2010-2019 Free Software Foundation, Inc. Copyright (C) 2000-2003, 2006, 2008-2019 Free Software Foundation, Inc. Copyright (C) 1996-2019 Free Software Foundation, Inc. Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2019 Free Software Copyright (C) 1998, 2001, 2003-2006, 2009-2019 Free Software Foundation, Copyright (C) 2000-2001, 2004-2006, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2008-2019 Free Software Foundation, Inc. Copyright (C) 1990-1998, 2000-2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 1995-1997, 2003, 2006, 2008-2019 Free Software Foundation, Copyright (C) 2006-2019 Free Software Foundation, Inc. Copyright (C) 2001-2004, 2007-2019 Free Software Foundation, Inc. Copyright (C) 2016-2019 Free Software Foundation, Inc. Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2019 Free Software Copyright (C) 2001-2019 Free Software Foundation, Inc. Copyright 2016-2019 Free Software Foundation, Inc. Copyright (C) 2000-2003, 2009-2019 Free Software Foundation, Inc. Copyright (C) 1997-2006, 2008-2019 Free Software Foundation, Inc. Copyright (C) 1997-1998, 2006-2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2003, 2006-2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2003-2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2019 Free Software Copyright (C) 2001-2003, 2005-2019 Free Software Foundation, Inc. Copyright (C) 2001-2004, 2006, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2003-2019 Free Software Foundation, Inc. Copyright (C) 2002-2003, 2005-2006, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2003-2006, 2008-2019 Free Software Foundation, Inc. Copyright (C) 2003, 2005, 2008-2019 Free Software Foundation, Inc. Copyright (C) 2003, 2005-2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 1993-1994, 1998, 2002-2006, 2009-2019 Free Software Copyright (C) 2002, 2006, 2009-2019 Free Software Foundation, Inc. Copyright (C) 1992, 1995-2003, 2005-2019 Free Software Foundation, Inc. Copyright (C) 2005, 2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2017-2019 Free Software Foundation, Inc. Copyright (C) 2001-2003, 2006-2019 Free Software Foundation, Inc. Copyright (C) 2001-2002, 2004-2019 Free Software Foundation, Inc. Copyright (C) 2004, 2007-2019 Free Software Foundation, Inc. Copyright (C) 1995, 2001-2004, 2006-2019 Free Software Foundation, Inc. Copyright (C) 2001-2002, 2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2007-2019 Free Software Foundation, Inc. Copyright (C) 1995-1996, 2001-2019 Free Software Foundation, Inc. Copyright (C) 1990, 2001, 2003-2006, 2009-2019 Free Software Foundation, Copyright 2018-2019 Free Software Foundation, Inc. Copyright (C) 2005-2019 Free Software Foundation, Inc. Copyright (C) 2002, 2005-2006, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2001-2002, 2005, 2007, 2009-2019 Free Software Foundation, Copyright (C) 2001-2004, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2005-2006, 2009-2019 Free Software Foundation, Inc. Copyright (C) 1990-2000, 2003-2004, 2006-2019 Free Software Foundation, Inc. Copyright(c) 2010-2018 Zoltan Herczeg Copyright(c) 2009-2018 Zoltan Herczeg Copyright (c) 2007-2012 Google Inc Copyright (C) 1996-2017 Free Software Foundation, Inc. Copyright (c) 1997-2013 University of Cambridge Copyright (c) 2010, Google Inc. Copyright (c) 2005 - 2010, Google Inc. Copyright (c) 1997-2016 University of Cambridge Copyright (c) 1997-2017 University of Cambridge Copyright (c) 2010-2013 Copyright (c) 2010-2012 Copyright 2003 and onwards Google Inc. Copyright Zoltan Herczeg (hzmester@freemail.hu). All rights reserved. Copyright 2013-2013 Tilera Corporation(jiwang@tilera.com). All rights reserved. Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. Copyright (c) 2009, Giampaolo Rodola', Himanshu Shekhar. Copyright (c) 2009 Giampaolo Rodola'. All rights reserved. Copyright (c) 2009, Giampaolo Rodola', Oleksii Shevchuk. Copyright (c) 2009, Giampaolo Rodola' Copyright (c) 2017, Arnon Yaari Copyright (c) 2009, Giampaolo Rodola'. Copyright (c) 2015, Ryo ONODERA. Copyright (c) 2009, Giampaolo Rodola', Landry Breuil. Copyright (c) 2009, Giampaolo Rodola', Jeff Tang. All rights reserved. Copyright (c) 2009, Giampaolo Rodola', Landry Breuil (OpenBSD). Copyright (c) 2009, Jay Loden, Dave Daeschler, Giampaolo Rodola' Copyright (c) 2009, Giampaolo Rodola', karthikrev. All rights reserved. Copyright (c) 2007-2018 Alastair Houghton Copyright (c) 2014 Tatsuhiro Tsujikawa Copyright (c) 2016 Tatsuhiro Tsujikawa Copyright (c) 2013 Tatsuhiro Tsujikawa Copyright (c) 2012 Tatsuhiro Tsujikawa Copyright (c) 2015 Tatsuhiro Tsujikawa Copyright (c) 2012, 2014 Tatsuhiro Tsujikawa Copyright (c) 2012 Twist Inc. Copyright Joyent, Inc. and other Node contributors. Copyright Joyent, Inc. and other Node contributors. All rights reserved. Copyright (c) 2010 by the contributors (see AUTHORS file). Copyright Fedor Indutny, 2018. Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) Copyright (c) 2015 British Broadcasting Corporation Copyright (c) 2012, 2013, 2014, 2015 Tatsuhiro Tsujikawa Copyright (c) 2016 Peter Wu <peter@lekensteyn.nl> Copyright (c) 2012, 2014, 2015, 2016 Tatsuhiro Tsujikawa Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors Copyright (c) Individual contributors. Copyright 2001-2016 Python Software Foundation; All Rights Reserved. Copyright (c) 2002 Ranjit Mathew Copyright (c) 2002 Bo Thorsen Copyright (c) 2002 Roger Sayle Copyright (c) 1996-2003 Red Hat, Inc. Copyright (c) 1996-2003 Red Hat, Inc. Copyright (c) 1996 Red Hat, Inc. Copyright (c) 1996, 1998 Red Hat, Inc. Copyright (c) 1996, 1998 Red Hat, Inc. Copyright (c) 1996, 1998, 2001, 2002 Red Hat, Inc. Copyright (c) 2001 John Beniton Copyright (C) 2001-2017 Copyright (c) 2008-2017, Eli Bendersky Copyright (c) 2009 Raymond Hettinger Copyright (c) 2001-2014 Python Software Foundation; All Rights Reserved Copyright (c) 1991-2014 Unicode, Inc. All rights reserved. Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,2011, 2012, 2013, 2014 Python Software Foundation; All Rights Reserved Copyright (c) 2015 Thomas Pornin Copyright 2005,2007,2009 Colin Percival Copyright 2009 Colin Percival Copyright 2013 Alexander Peslyak Copyright 2013 Donald Stufft and individual contributors Copyright 2017 Donald Stufft and individual contributors Copyright 2013-2017 Donald Stufft and individual contributors Copyright 2018 Donald Stufft and individual contributors Copyright 2014 Donald Stufft and individual contributors Copyright 2013-2018 Donald Stufft and individual contributors Copyright (c) 2013-2017 Copyright 2016 Donald Stufft and individual contributors Copyright 2012,2013 Alexander Peslyak Copyright (C) 1995-2006, 2011, 2016 Jean-loup Gailly Copyright (C) 2011, 2016 Mark Adler Copyright (C) 1995-2006, 2010, 2011, 2016 Jean-loup Gailly Copyright (C) 1995-2003 Mark Adler Copyright (C) 2003 Chris Anderson <christop@charm.net> 2005 - Adaptation to Microsoft C Compiler for AMD64 by Gilles Vollant Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler. Copyright (C) 1998 by Bob Dellaca. Copyright (C) 2003 by Cosmin Truta. Copyright (C) 1995-2003 by Jean-loup Gailly. Copyright (C) 1998,1999,2000 by Jacques Nomssi Nzali. Copyright (C) 1995-2011, 2016 Mark Adler Copyright (C) 1995-2005, 2014, 2016 Jean-loup Gailly, Mark Adler Copyright (C) 1995-2006, 2010, 2011, 2012, 2016 Mark Adler Copyright (C) 1995-2016 Jean-loup Gailly Copyright (C) 2004, 2010 Mark Adler Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler Copyright (C) 2004-2017 Mark Adler Copyright (C) 1995-2016 Mark Adler Copyright (C) 1995-2017 Mark Adler Copyright (C) 1995-2003, 2010 Mark Adler Copyright (C) 1995-2005, 2010 Mark Adler (C) 1995-2017 Jean-loup Gailly and Mark Adler Copyright (C) 1995-2017 Jean-loup Gailly Copyright (C) 1995-2003, 2010, 2014, 2016 Jean-loup Gailly, Mark Adler Copyright (C) 1995-2008 Mark Adler Copyright (C) 2003 Mark Adler Copyright (c) 1990-2000 Info-ZIP. All rights reserved. Copyright (C) 1998 - 2010 Gilles Vollant, Even Rouault, Mathias Svensson Copyright (C) 2002-2013 Mark Adler Copyright (C) 2002-2013 Mark Adler, all rights reserved Copyright (C) 2003, 2012, 2013 Mark Adler Copyright (c) Henrik Ravn 2004 Copyright (C) 2007, 2008, 2012 Mark Adler Copyright (C) 2003, 2005, 2008, 2010, 2012 Mark Adler Copyright (C) 2003, 2012 Mark Adler, all rights reserved Copyright (C) 2004, 2005, 2012 Mark Adler, all rights reserved Copyright (C) 2004, 2008, 2012, 2016 Mark Adler, all rights reserved Copyright (C) 2004, 2008, 2012 Mark Adler, all rights reserved Copyright (C) 2005, 2012 Mark Adler © Copyright Henrik Ravn 2004 Copyright (C) 2005 Andi Kleen, SuSE Labs. Copyright (C) 2003,2004,2005,2008 Andi Kleen,SuSE Labs andCliff Wickman,SGI. Copyright (C) 1989, 1991 Free Software Foundation, Inc.,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Copyright (C) 2003,2004 Andi Kleen, SuSE Labs. Copyright (C) 2005 Christoph Lameter, Silicon Graphics, Incorporated. Copyright (C) 2007 Silicon Graphics, Inc. Christoph Lameter <clameter@sgi.com> Copyright (C) 2012 Bill Gray (bgray@redhat.com), Red Hat Inc. Copyright (C) 2006 Silicon Graphics, Inc. Copyright (C) AB Strakt Copyright (C) Jean-Paul Calderone 2008-2015, All rights reserved Copyright (c) The pyOpenSSL developers Copyright (c) Jean-Paul Calderone Copyright (c) Frederick Dean Copyright (C) Twisted Matrix Laboratories. Copyright (c) 2003-2013 University of Illinois at Urbana-Champaign. Copyright (C) 2017-2018 Dremio Corporation Licensed under the Apache Copyright (c) 2013-2016, Matt Terry and Matthew Brett (BSD 2-clause) Copyright (c) 2006-2010, Salvatore Sanfilippo <antirez at gmail dot com> Copyright (c) 2006-2012, Salvatore Sanfilippo <antirez at gmail dot com> Copyright (c) 2009-2012, Salvatore Sanfilippo <antirez at gmail dot com> Copyright (c) 2012, Joyent, Inc. All rights reserved. Copyright (C) 2009 Harish Mallipeddi - harish.mallipeddi@gmail.com Copyright 2013 Sharvil Nanavati Copyright (c) 2009 Google Inc. All rights reserved. Copyright 2014 Cloudera, Inc. Copyright 2016 The Apache Software Foundation Copyright (c) MapBox Copyright (c) 2002-2003 Copyright (C) 2017-2018 Dremio Corporation Copyright (c) 2011-2012, Lambda Foundry, Inc. and PyData Development Team Copyright (c) 2008-2011 AQR Capital Management, LLC Copyright (C) 2011-12, Dynamic NDArray Developers Copyright (C) 2007 The Guava Authors Copyright (c) 2016 Giles Hall Copyright (C) 2015 Dato, Inc. Copyright 2012 Continuum Analytics, Inc. Copyright 2001-2009 Kitware, Inc. Copyright 2012-2014 Continuum Analytics, Inc. Copyright 2012 Cloudera Inc. Copyright 2011 Kitware, Inc. Copyright (c) 2015, 2016, 2017 Howard Hinnant Copyright (c) 2016 Adrian Colomitchi Copyright (c) 2017 Florian Dang Copyright (c) 2017 Paul Thompson Copyright (c) 2018 Tomasz Kami �� ski Copyright 2015 Cloudera Inc. Copyright (c) Austin Appleby (aappleby (AT) gmail) copyright (c) Google inc and (c) The Chromium Authors and licensed under the Copyright (c) 2013 The Chromium Authors. All rights reserved. Copyright 2015 The TensorFlow Authors. All Rights Reserved. Copyright (c) 2005-2017, NumPy Developers. Copyright 2014 Google Inc. Copyright 2015 Microsoft Corporation. All rights reserved. Copyright (C) 2002-2017 Jason Evans <jasone@canonware.com>. Copyright (C) 2009-2017 Facebook, Inc. All rights reserved. Copyright (c) 2009 The Go Authors. All rights reserved. Copyright 2016 Cloudera Inc. Copyright (c) 2017, Jeroen Ooms and Jim Hester Copyright (c) 2016 Ray Project (https:github.com/ray-project/ray) Copyright (c) 2009 Carnegie Mellon University. Copyright (c) 2013-2016, Matt Terry and Matthew Brett; all rights reserved. Copyright (c) 2015 Cloudera, Inc. Copyright (c) 2003-2010 University of Illinois at Urbana-Champaign. Copyright (c) 2007 Thomas Porschberg <thomas@randspringer.de> Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved. Copyright (C) 1999 - 2007 Markus Mottl Copyright 2007 by Nathan C. Myers <ncm@cantrip.org>; some rights reserved. Copyright (c) 2008- Patrick Collison <patrick@collison.ie> Copyright (c) 2006- Facebook Copyright 2012 Twitter, Inc Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved. Copyright (C) 2006 - 2019, The Apache Software Foundation Copyright (C) 2012 Raphael Kubo da Costa <rakuco@webkit.org> Copyright Rene Rivera 2016 Copyright 2002 William E. Kempf Copyright 2019 Rene Rivera Copyright (C) 2005, 2006 Douglas Gregor. Copyright (C) 2006 The Trustees of Indiana University Copyright (c) 2004 Joel de Guzman Copyright 2013 Niall Douglas additions for colors and alignment. Copyright 2013 Paul A. Bristow additions for more colors and alignments. Copyright 2017 Tom Westerhout font fixes to support Sphinx (C) Copyright Beman Dawes, 2007 Copyright 2003-2004 Douglas Gregor Copyright 2004 Aleksey Gurtovoy Copyright 2003 Beman Dawes Copyright 2003 Douglas Gregor Copyright 2005 Eric Niebler Copyright 2005 Hartmut Kaiser Copyright 2004 John Maddock Copyright (c) 2006 Joel de Guzman Copyright 2006 Daniel Egloff, Olivier Gygi. Distributed under the Boost Copyright 2015 Google Inc. All Rights Reserved. Copyright 2017 Google Inc. All Rights Reserved. Copyright 2013 Google Inc. All Rights Reserved. Copyright 2016 The Brotli Authors. All rights reserved. Copyright 2015 The Chromium Authors. All rights reserved. Copyright 2014 Google Inc. All Rights Reserved. Copyright 2010 Google Inc. All Rights Reserved. Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors. Copyright 2015 The Brotli Authors. All rights reserved. Copyright 2005, Google Inc. Copyright 2007, Google Inc. Copyright 2015, Google Inc. Copyright 1998 by the Massachusetts Institute of Technology. Copyright (C) 2007-2013 by Daniel Stenberg Copyright (C) 2017 by John Schember <john@nachtimwald.com> Copyright (C) 2009 - 2013 by Daniel Stenberg et al Copyright (C) 2004 by Daniel Stenberg et al Copyright (C) 2009-2013 by Daniel Stenberg Copyright (C) 2004-2011 by Daniel Stenberg Copyright 1998, 2011 by the Massachusetts Institute of Technology. Copyright 1998, 2011, 2013 by the Massachusetts Institute of Technology. Copyright 2005 by Dominick Meglio Copyright (c) 1987-2001 The Regents of the University of California. Copyright (C) 2005 - 2010, Daniel Stenberg Copyright (C) 2005-2013 by Daniel Stenberg et al Copyright (C) 2004 - 2011 by Daniel Stenberg et al Copyright (C) 2005 by Dominick Meglio Copyright (C) 2004-2009 by Daniel Stenberg Copyright (C) 2010-2013 by Daniel Stenberg Copyright (C) 2010-2012 by Daniel Stenberg Copyright (C) 2008-2013 by Daniel Stenberg Copyright 2005 Dominick Meglio Copyright (C) 2010 Jeremy Lal <kapouer@melix.org> Copyright (C) 2009 by Jakub Hrozek <jhrozek@redhat.com> Copyright (C) 2012 Marko Kreen <markokr@gmail.com> Copyright (C) 2004-2010 by Daniel Stenberg Copyright (C) 2004-2017 by Daniel Stenberg Copyright (C) 2009 by Daniel Stenberg et al Copyright (C) 2004 - 2012 by Daniel Stenberg et al Copyright (C) 2018 by John Schember <john@nachtimwald.com> Copyright (C) 2008 by Daniel Stenberg et al Copyright (C) 2005, 2013 by Dominick Meglio Copyright (c) 2007 - 2018, Daniel Stenberg with many contributors, see AUTHORS Copyright (C) 2004 - 2013 by Daniel Stenberg et al Copyright 2008 the V8 project authors. All rights reserved. Copyright 2006-2008 the V8 project authors. All rights reserved. Copyright 2010 the V8 project authors. All rights reserved. Copyright 2011 the V8 project authors. All rights reserved. Copyright 2011, the V8 project authors. All rights reserved. Copyright 2012 the V8 project authors. All rights reserved. Copyright 2014 Google Inc. All rights reserved. Copyright 2015 Google Inc. All rights reserved. Copyright 2017 Google Inc. All rights reserved. Copyright 2008 Google Inc. All rights reserved. Copyright (c) 2013 Google, Inc. Copyright (c) 2014 Google, Inc. Copyright 2012, the Dart project authors. All rights reserved. Copyright 2018 Google Inc. All rights reserved. Copyright 2014 Stefan.Eilemann@epfl.ch Copyright 2016 Google Inc. All rights reserved. Copyright 2015 Google Inc. Copyright 2018 Dan Field. All rights reserved. Copyright 2018 Dan Field Copyright (c) 2008, Google Inc. Copyright (c) 2006, Google Inc. Copyright (c) 2009, Google Inc. Copyright (c) 1999, Google Inc. Copyright (c) 2002, Google Inc. Copyright (c) 2000 - 2007, Google Inc. Copyright (c) 2005 - 2007, Google Inc. Copyright (c) 2004, Google Inc. Copyright (c) 2003, Google Inc. Copyright (c) 1999, 2007, Google Inc. Copyright (c) 2003-2008, Jouni Malinen <j@w1.fi> and contributors Copyright 2015 gRPC authors. Copyright 2017 gRPC authors. Copyright 2018 gRPC authors. Copyright 2016 gRPC authors. Copyright 2019 gRPC authors. Copyright 2016-2017 gRPC authors. Copyright 2015-2016 gRPC authors. Copyright 2019 The gRPC Authors Copyright 2018, gRPC Authors All rights reserved. Copyright 2015 The gRPC Authors Copyright 2015-2017 gRPC authors. Copyright 2019 The gRPC Authors. Copyright (c) 2017, Google Inc. Copyright (c) 2015, Google Inc. Copyright 2014 gRPC authors. Copyright 2019 The gRPC authors. Copyright 2018 gRPC Authors. Copyright 2018 The gRPC Authors. Copyright IBM Corporation. 2008 Copyright Red Hat, Inc. 2012 Copyright RedHat Inc. 2008 Copyright IBM Corporation. 2009 Copyright Red Hat, Inc. 2009 Copyright RedHat Inc. 2009 Copyright (C) 2010 Red Hat, Inc. All Rights Reserved. Copyright (C) 2009 Red Hat, Inc. All Rights Reserved. Copyright (c) Cristian Gafton, 1996-1997, <gafton@redhat.com> Copyright Red Hat Inc. 2008 Copyright (C) 2005 BULL SA. Copyright Red Hat Inc., 2012 Copyright NEC Soft Ltd. 2009 Copyright (C) 2003-2012 Daniel Veillard. Copyright (C) 2000,2012 Bjorn Reese and Daniel Veillard. Copyright (C) 2000 Gary Pennington and Daniel Veillard. Copyright (c) 2010-2017 Christopher Swenson. Copyright (c) 2012 Vojtech Fried. Copyright (c) 2012 Google Inc. All Rights Reserved. Copyright (C) 1998 Bjorn Reese and Daniel Stenberg. Copyright (C) 2001 Bjorn Reese <breese@users.sourceforge.net> Copyright (C) 2000 Bjorn Reese and Daniel Stenberg. Copyright (C) 2001 Bjorn Reese and Daniel Stenberg. Copyright (C) 2013-present, Yann Collet. Copyright (C) 2013-2016, Yann Collet. Copyright (c) 2018-present Dima Krasner <dima@dimakrasner.com> Copyright (c) 2016-present, Przemyslaw Skibinski, Facebook, Inc. Copyright (c) 2016-present, Facebook, Inc. All rights reserved. Copyright (c) 2018-present, Yann Collet, Facebook, Inc. Copyright (C) 2013-2015, Yann Collet. Copyright (c) 2017-present, Yann Collet, Facebook, Inc. Copyright (C) 2016, Yann Collet. Copyright (c) 2017-present, Facebook, Inc. Copyright (c) 1995-2006, 2011 Jean-loup Gailly Copyright (C) 1995-2006, 2010, 2011 Jean-loup Gailly. Copyright (c) 2018-present, Facebook, Inc. Copyright (c) 2016 Tino Reichardt Copyright (c) 2015-present, Yann Collet, Facebook, Inc. Copyright 2015-2016 Free Software Foundation, Inc. Copyright (C) 2010-2016 Free Software Foundation, Inc. Copyright (C) 2000-2016 Free Software Foundation, Inc. Copyright (C) 2009-2016 Free Software Foundation, Inc. Copyright (C) 2013-2016 Free Software Foundation, Inc. Copyright 2016 Free Software Foundation, Inc. Copyright (C) 2012-2016 Free Software Foundation, Inc. Copyright 2014-2016 Free Software Foundation, Inc. Copyright (c) 2019-present, Yann Collet, Facebook, Inc. Copyright (c) 2003-2008 Yuta Mori All Rights Reserved. Copyright (c) 2009-2019 Dave Gamble and cJSON contributors Copyright (c) 2010 James Grenning and Contributed to Unity Project Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams Copyright (c) 2007 - 2017 Unity Project by Mike Karlesky, Mark VanderVoord, and Greg Williams Copyright (c) 2007-14 Mike Karlesky, Mark VanderVoord, Greg Williams Copyright (c) 2009-2017 Dave Gamble and cJSON contributors Copyright (c) 2015 Alexander Mueller / XelaRellum@web.de Copyright (c) 2010-2012 Niels Provos and Nick Mathewson Copyright (c) 1996, David Mazieres <dm@uun.org> Copyright (c) 2008, Damien Miller <djm@openbsd.org> Copyright (c) 2002-2007 Niels Provos <provos@citi.umich.edu> Copyright (c) 2007-2012 Niels Provos and Nick Mathewson Copyright (c) 2008-2012 Niels Provos and Nick Mathewson Copyright (c) 2007-2012 Niels Provos, Nick Mathewson Copyright (c) 2009-2012 Niels Provos and Nick Mathewson Copyright (c) 2002-2006 Niels Provos <provos@citi.umich.edu> Copyright (c) 2009-2012 Niels Provos, Nick Mathewson Copyright 2000-2009 Niels Provos <provos@citi.umich.edu> Copyright 2009-2012 Niels Provos and Nick Mathewson Copyright 2000-2007 Niels Provos <provos@citi.umich.edu> Copyright 2007-2012 Niels Provos, Nick Mathewson Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu> Copyright 2003-2009 Niels Provos <provos@citi.umich.edu> Copyright 2006-2007 Niels Provos Copyright 2007-2012 Nick Mathewson and Niels Provos Copyright (c) 2005-2007 Niels Provos <provos@citi.umich.edu> Copyright (c) 2003-2009 Niels Provos <provos@citi.umich.edu> Copyright 2007-2012 Niels Provos and Nick Mathewson Copyright (c) 2007 Sun Microsystems. All rights reserved. Copyright (c) 2006-2007 Niels Provos <provos@citi.umich.edu> Copyright (c) 2008-2012 Niels Provos, Nick Mathewson Copyright 2002 Christopher Clark Copyright 2005-2012 Nick Mathewson Copyright 2001-2007 Niels Provos <provos@citi.umich.edu> Copyright (c) 2012 Niels Provos and Nick Mathewson Copyright (c) 2000 Dug Song <dugsong@monkey.org> Copyright (c) 2003 Michael A. Davis <mike@datanerds.net> Copyright (c) 2007 Sun Microsystems Copyright (c) 2002 Christopher Clark Copyright (c) 2006 Maxim Yegorushkin <maxim.yegorushkin@gmail.com> Copyright (c) 2010 BitTorrent, Inc. Copyright (c) 2005-2012 Niels Provos and Nick Mathewson Copyright (c) 1993 Copyright (C) 1996-2018 Free Software Foundation, Inc. Copyright 2003 Michael A. Davis <mike@datanerds.net> Copyright (c) 1996 - 2013, Daniel Stenberg, <daniel@haxx.se>. Copyright (C) 2012, iSEC Partners. Copyright (c) 1987, 1993, 1994, 1995 Copyright (c) 1987, 1993, 1994, 1996 Copyright 2002 Niels Provos <provos@citi.umich.edu> Copyright 2003-2007 Niels Provos <provos@citi.umich.edu> Copyright 2008-2012 Niels Provos and Nick Mathewson Copyright (c) 2003-2007 Niels Provos <provos@citi.umich.edu> Copyright (c) 2013 Niels Provos and Nick Mathewson Copyright (c) 2009-2012 Nick Mathewson and Niels Provos Copyright (c) 2007-2013 Niels Provos and Nick Mathewson Copyright (c) 2012 Ross Lagerwall <rosslagerwall@gmail.com> Copyright 2009-2012 Nick Mathewson Copyright (c) 2009, Michihiro NAKAJIMA Copyright 2002-2011 Kitware, Inc. Copyright 2000-2013 Kitware, Inc. Copyright 2000-2011 Insight Software Consortium Copyright 2010 Kitware, Inc. Copyright (c) 2013-2016, PostgreSQL Global Development Group Copyright (c) 1990 Copyright (c) 1988, 1993 Copyright (c) 2010-2012 Nippon Telegraph and Telephone Corporation Copyright (c) 2008-2012, PostgreSQL Global Development Group Copyright (c) 2000-2016, PostgreSQL Global Development Group Copyright (c) 2001,2002 Tatsuo Ishii Copyright (c) 2012-2015, Huawei Tech. Co., Ltd. Copyright (c) 1996, 2003 VIA Networking Technologies, Inc. Copyright (c) 2000-2009, PostgreSQL Global Development Group Copyright (c) 1996-2011 PostgreSQL Global Development Group Copyright (c) 1996-2011, PostgreSQL Global Development Group ? Copyright (c) 2007-2011, NIPPON TELEGRAPH AND TELEPHONE CORPORATION copyright (c) Oliver Elphick <olly@lfix.co.uk>, 2001; Copyright (c) 2003-2015, PostgreSQL Global Development Group Copyright (c) 2017-2019, PostgreSQL Global Development Group Copyright (c) 1993 Martin Birgmeier Copyright (c) 2003 Copyright (c) 2003 SRA, Inc. Copyright (c) 2003 SKC, Inc. Copyright (c) 1988, 1993 The Regents of the University of California. Copyright (c) 1983, 1990, 1993 NetBSD copyright terms follow. Copyright (c) 1983, 1992, 1993 Copyright (c) 1992, 1993 Copyright (c) 1983, 1995, 1996 Eric P. Allman Copyright (C) 2001 earthian@tama.or.jp, All Rights Reserved. Copyright (C) 2001 I'O, All Rights Reserved. Copyright (C) 2006 Project X0213, All Rights Reserved. Copyright (c) 2002-2007, PostgreSQL Global Development Group Copyright (c) 1996-2017, PostgreSQL Global Development Group License: Mulan Permissive Software License , Version 2 木兰宽松许可证 , 第 2 版 木兰宽松许可证, 第 2 版 2020 年 1 月 http://license.coscl.org.cn/MulanPSL2 您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第 2 版(“本许可证”)的如下条款的约束: 0. 定义 “软件” 是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 “贡献” 是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 “贡献者” 是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 “法人实体” 是指提交贡献的机构及其“关联实体”。 “关联实体” 是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少 50% 直接或间接的投票权、资金或其他有价证券。 1. 授予版权许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。 2. 授予专利许可 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本 条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。 3. 无商标许可 “本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第 4 条规定的声明义务而必须使用除外。 4. 分发限制 您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 5. 免责声明与责任限制 “软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 6. 语言 “本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。 条款结束 如何将木兰宽松许可证,第 2 版,应用到您的软件 如果您希望将木兰宽松许可证,第 2 版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: 1 , 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; 2 , 请您在软件包的一级目录下创建以“ LICENSE ”为名的文件,将整个许可证文本放入该文件中; 3 , 请将如下声明文本放入每个源文件的头部注释中。 Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. Mulan Permissive Software License , Version 2 Mulan Permissive Software License , Version 2 (Mulan PSL v2) January 2020 http://license.coscl.org.cn/MulanPSL2 Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: 0. Definition Software means the program and related documents which are licensed under this License and comprise all Contribution(s). Contribution means the copyrightable work licensed by a particular Contributor under this License. Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. Legal Entity means the entity making a Contribution and all its Affiliates. Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. 1. Grant of Copyright License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. 2. Grant of Patent License Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. 3. No Trademark License No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in section 4. 4. Distribution Restriction You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. 5. Disclaimer of Warranty and Limitation of Liability THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 6. Language THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. END OF THE TERMS AND CONDITIONS How to Apply the Mulan Permissive Software License , Version 2 (Mulan PSL v2) to Your Software To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; Create a file named "LICENSE" which contains the whole context of this License in the first directory of your software package; Attach the statement to the appropriate annotated syntax at the beginning of each source file. Copyright (c) [Year] [name of copyright holder] [Software Name] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. Software: OpenSSL 1.1.1 g Copyright notice: Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 1998-2001 The OpenSSL Project Authors. All Rights Reserved. Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2012, Samuel Neves <sneves@dei.uc.pt> Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2005-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright (C) 2006, Network Resonance, Inc. Copyright (C) 2011, RTFM, Inc. Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2012-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2005 Nokia. All rights reserved. Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2004, EdelKey Project. All Rights Reserved. Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2015-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2001-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 1998-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2002-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2014-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 1998-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2011-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2012, Intel Corporation. All Rights Reserved. Copyright 2013-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2011-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2011 Google Inc. Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2014, Intel Corporation. All Rights Reserved. Copyright (c) 2015, CloudFlare, Inc. Copyright 2006-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright (C) 1989, 1991 Free Software Foundation, Inc. Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2017 National Security Research Institute. All rights reserved. Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. Copyright 2017 Ribose Inc. All Rights Reserved. Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2014-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2004, Richard Levitte <richard@levitte.org> Copyright 2003-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2018-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2008-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 1999-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2007 KISA(Korea Information Security Agency). All rights reserved. Copyright (c) 1998-2019 The OpenSSL Project. All rights reserved. Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) Copyright (c) 1998-2020 The OpenSSL Project Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson Copyright 2010-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2005-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2008-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2012-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 1999-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2008-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 1998-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2012-2016 Jean-Philippe Aumasson Copyright (c) 2012-2014 Daniel J. Bernstein Copyright 2007-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2017 BaishanCloud. All rights reserved. Copyright 2015-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2011-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2006-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2002-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2013-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2009-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 1998-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2013-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2004-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2004-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2003-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2004 Kungliga Tekniska Högskolan Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2013-2014 Timo Teräs <timo.teras@gmail.com> Copyright 2004-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2016 VMS Software, Inc. All Rights Reserved. Copyright (c) 2016 Viktor Dukhovni <openssl-users@dukhovni.org>. Copyright 2012-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright (C) 2017 National Security Research Institute. All Rights Reserved. Copyright 1998-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2004, 2018, Richard Levitte <richard@levitte.org> Copyright 2004-2014, Akamai Technologies. All Rights Reserved. Copyright 2003-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2009-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2010-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2012-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright Patrick Powell 1995 Copyright 2006 NTT (Nippon Telegraph and Telephone Corporation) . Copyright 2015-2016 Cryptography Research, Inc. Copyright 2015 Cryptography Research, Inc. Copyright 2014 Cryptography Research, Inc. Copyright 2016 Cryptography Research, Inc. Copyright 2014-2016 Cryptography Research, Inc. License: OpenSSL License Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 1998-2001 The OpenSSL Project Authors. All Rights Reserved. Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2012, Samuel Neves <sneves@dei.uc.pt> Copyright 2016-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2005-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright (C) 2006, Network Resonance, Inc. Copyright (C) 2011, RTFM, Inc. Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2012-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2005 Nokia. All rights reserved. Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2014-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2004, EdelKey Project. All Rights Reserved. Copyright 2014-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2015-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2001-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 1998-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2002-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2014-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 1998-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2011-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2013-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2012, Intel Corporation. All Rights Reserved. Copyright 2013-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2011-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2001-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2011 Google Inc. Copyright 2014-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2014, Intel Corporation. All Rights Reserved. Copyright (c) 2015, CloudFlare, Inc. Copyright 2006-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright (C) 1989, 1991 Free Software Foundation, Inc. Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. Copyright (c) 2017 National Security Research Institute. All rights reserved. Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. Copyright 2017 Ribose Inc. All Rights Reserved. Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2014-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2004, Richard Levitte <richard@levitte.org> Copyright 2003-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2018-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2008-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2000-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 1999-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2007 KISA(Korea Information Security Agency). All rights reserved. Copyright (c) 1998-2019 The OpenSSL Project. All rights reserved. Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) Copyright (c) 1998-2020 The OpenSSL Project Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson Copyright 2010-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2005-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2008-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2012-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 1999-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2008-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 1998-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2000-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2012-2016 Jean-Philippe Aumasson Copyright (c) 2012-2014 Daniel J. Bernstein Copyright 2007-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2017 BaishanCloud. All rights reserved. Copyright 2015-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2011-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2006-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2002-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2013-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2009-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 1998-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2013-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2004-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2004-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2003-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2004 Kungliga Tekniska Högskolan Copyright 2015-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2013-2014 Timo Teräs <timo.teras@gmail.com> Copyright 2004-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2016 VMS Software, Inc. All Rights Reserved. Copyright (c) 2016 Viktor Dukhovni <openssl-users@dukhovni.org>. Copyright 2012-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright (C) 2017 National Security Research Institute. All Rights Reserved. Copyright 1998-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2004, 2018, Richard Levitte <richard@levitte.org> Copyright 2004-2014, Akamai Technologies. All Rights Reserved. Copyright 2003-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2009-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2010-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2005-2020 The OpenSSL Project Authors. All Rights Reserved. Copyright 2012-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright Patrick Powell 1995 Copyright 2006 NTT (Nippon Telegraph and Telephone Corporation) . Copyright 2015-2016 Cryptography Research, Inc. Copyright 2015 Cryptography Research, Inc. Copyright 2014 Cryptography Research, Inc. Copyright 2016 Cryptography Research, Inc. Copyright 2014-2016 Cryptography Research, Inc. */ License: SSLeay License SSLeay License Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) All rights reserved. This package is an SSL implementation written by Eric Young (eay@cryptsoft.com). The implementation was written so as to conform with Netscapes SSL. This library is free for commercial and non-commercial use as long as the following conditions are aheared to. The following conditions apply to all code found in this distribution, be it the RC4, RSA, lhash, DES, etc., code; not just the SSL code. The SSL documentation included with this distribution is covered by the same copyright terms except that the holder is Tim Hudson (tjh@cryptsoft.com). Copyright remains Eric Young's, and as such any Copyright notices in the code are not to be removed. If this package is used in a product, Eric Young should be given attribution as the author of the parts of the library used. This can be in the form of a textual message at program startup or in documentation (online or textual) provided with the package. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. All advertising materials mentioning features or use of this software must display the following acknowledgement: "This product includes cryptographic software written by Eric Young (eay@cryptsoft.com)". The word 'cryptographic' can be left out if the rouines from the library being used are not cryptographic related :-). If you include any Windows specific code (or a derivative thereof) from the apps directory (application code) you must include an acknowledgement: "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.The licence and distribution terms for any publically available version or derivative of this code cannot be changed. i.e. this code cannot simply be copied and put under another distribution licence [including the GNU Public Licence. Software: Simple Logging Facade for Java (SLF4J) 1.7.30 Copyright notice: Copyright (c) 2004-2011 QOS.ch Copyright (c) 2004-2016 QOS.ch Copyright (C) 1999-2006, QOS.ch Copyright 2001-2004 The Apache Software Foundation. Copyright (c) 2004-2007 QOS.ch Copyright (c) 2004-2012 QOS.ch Copyright (c) 2004-2005 QOS.ch Copyright (c) 2004-2017 QOS.ch Copyright (c) 2004-2013 QOS.ch, Copyright (C) 2015 Google Inc. Copyright (c) 2004-2013 QOS.ch License: MIT License Please see above. Software: nanomsg 1.1.5 Copyright notice: Copyright (c) 2012 Martin Sustrik All rights reserved. Copyright (c) 2013 GoPivotal, Inc. All rights reserved. Copyright 2016 Garrett D'Amore <garrett@damore.org> Copyright (c) 2012-2014 Martin Sustrik All rights reserved. Copyright (c) 2012-2013 Martin Sustrik All rights reserved. Copyright (c) 2013 Martin Sustrik All rights reserved. Copyright 2017 Garrett D'Amore <garrett@damore.org> Copyright 2017 Capitar IT Group BV <info@capitar.com> Copyright (c) 2013 Evan Wies <evan@neomantra.net> Copyright (c) 2016 Bent Cardan. All rights reserved. Copyright (c) 2015-2016 Jack R. Dunaway. All rights reserved. Copyright (c) 2018 Dennis Klein <d.klein@gsi.de> Copyright (c) 2015-2016 Jack R. Dunaway. All rights reserved. Copyright 2015 Garrett D'Amore <garrett@damore.org> Copyright (c) 2012 250bpm s.r.o. All rights reserved. Copyright (c) 2014 Wirebird Labs LLC. All rights reserved. Copyright (c) 201-2013 Martin Sustrik All rights reserved. Copyright 2018 Garrett D'Amore <garrett@damore.org> Copyright 2018 Capitar IT Group BV <info@capitar.com> Copyright (c) 2012-2013 250bpm s.r.o. All rights reserved. Copyright (c) 2014-2016 Jack R. Dunaway. All rights reserved. Copyright (c) 2013 250bpm s.r.o. All rights reserved. Copyright (c) 2014-2016 Jack R. Dunaway. All rights reserved. Copyright (c) 2013 Insollo Entertainment, LLC. All rights reserved. Copyright (c) 2013-2014 Martin Sustrik All rights reserved. Copyright (c) 2014 Drew Crawford. All rights reserved. Copyright 2016 Franklin "Snaipe" Mathieu <franklinmathieu@gmail.com> Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> Copyright (c) 2013 Insollo Entertainment, LLC. All rights reserved. Copyright (c) 2014 Achille Roussel All rights reserved. Copyright (c) 2012 Julien Ammous Copyright (c) 2012Martin Sustrik All rights reserved. Copyright (c) 2013 Immanuel Weber, Fraunhofer FHR/AMLS All rights reserved. Copyright 2016 Garrett D'Amore Copyright (c) 2014 Martin Sustrik All rights reserved. Copyright (c) 2015 Jack R. Dunaway. All rights reserved. Copyright (c) 2013 Nir Soffer <nirsof@gmail.com> Copyright 2015 Garrett D'Amore Copyright (c) 2015 Timothee "TTimo" Besset All rights reserved. Copyright (c) 2014 Achille Roussel. All rights reserved. License: MIT License Please see above. Software: nghttp2 1. 41.0 Copyright notice: Copyright (c) 2013 Internet Initiative Japan Inc. Copyright (c) 2013 Tatsuhiro Tsujikawa Copyright (c) 2016 Tatsuhiro Tsujikawa Copyright (c) 2012 Tatsuhiro Tsujikawa Copyright (c) 2015 Tatsuhiro Tsujikawa Copyright (c) 2014 Tatsuhiro Tsujikawa Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) Copyright (c) 2015 British Broadcasting Corporation Copyright (c) 2019 mruby developers Copyright (c) 2010 by the contributors (see AUTHORS file). Copyright (c) 2012 Internet Initiative Japan Inc. Copyright (c) 2012, 2013, 2014, 2015 Tatsuhiro Tsujikawa Copyright (c) 2016 Peter Wu <peter@lekensteyn.nl> Copyright (c) 2012, 2014, 2015, 2016 Tatsuhiro Tsujikawa Copyright (c) 2012, 2014, 2015, 2016 nghttp2 contributors Copyright (C) 1996-2015 Free Software Foundation, Inc. original creator(s) or those who have been assigned copyright by the original author(s). Copyright (c) 2012, 2014 Tatsuhiro Tsujikawa Copyright (c) 2012 Twist Inc. Copyright 2011 Kitware, Inc. Copyright (c) 2013, 2014 Tatsuhiro Tsujikawa Copyright (c) 2012, 2013 Tatsuhiro Tsujikawa Copyright (c) modmruby developers 2012- Copyright (c) 2015 Kazuho Oku, DeNA Co., Ltd. Copyright Joyent, Inc. and other Node contributors. Copyright Joyent, Inc. and other Node contributors. All rights reserved. Copyright (c) 2005-2014 Rich Felker, et al. Copyright (C) 1997 - 2016, Makoto Matsumoto and Takuji Nishimura, All rights reserved. Copyright (c) mruby developers 2010-2019 License: MIT License Please see above. Software: rapidjson 4b3d7c2f42142f10b888e580c515f60ca98e2ee9 Copyright notice: Copyright (c) 2006-2013 Alexander Chemeris All Tencent Modifications are Copyright (C) 2015 THL A29 Limited. Copyright (c) 2012 Julian Berman Copyright (c) 2017 Bart Muzzin Copyright (c) 2015 mojmir svoboda Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip-> All rights reserved-> Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved. Copyright (c) 2002 JSON.org License: MIT License Please see above. Software: Paste 3.4.0 Copyright notice: (c) 2005 Ian Bicking and contributors; written for Paste (http://pythonpaste.org) (c) 2006 Ian Bicking, Philip Jenvey and contributors (c) 2005-2006 James Gardner <james@pythonweb.org> (c) 2005 Ian Bicking, Clark C. Evans and contributors (c) 2005 Clark C. Evans (c) 2005 Ben Bangert (c) 2005 Ian Bicking and contributors (c) 2005 Bob Ippolito. All rights Reserved. Copyright (c) 2006-2007 Ian Bicking and Contributors (c) 2005 Clark C. Evans and contributors (c) 2010 Ch. Zwerschke and contributors Copyright (c) 2005 Imaginary Landscape LLC and Contributors. Copyright (c) 2001, 2002 Zope Corporation and Contributors. Copyright (C) 2006, Heiko Wundram. (c) 2007 Philip Jenvey; written for Paste (http://pythonpaste.org) (c) 2007 Ian Bicking and Philip Jenvey; written for Paste (http://pythonpaste.org) License: MIT License Please see above. Software: bottle 0.12.17 Copyright notice: Copyright (c) 2016, Marcel Hellkamp. Copyright (c) 2012, Marcel Hellkamp. License: MIT License Please see above. Software: snappy 1.1. 8 Copyright notice: Copyright 2019 Google Inc. All Rights Reserved. Copyright 2013 Steinar H. Gunderson, and is licensed under the Creative Commons Attribution 3.0 license CC-BY-3.0). Copyright 2011 Martin Gieseking <martin.gieseking@uos.de>. Copyright 2011 Google Inc. All Rights Reserved. Copyright 2008 Google Inc. All Rights Reserved. Copyright 2005 and onwards Google Inc. Copyright 2005 Google Inc. All Rights Reserved. License: MIT License Please see above. Software: python-cffi 1.12.3 Copyright notice: ffi.c - Copyright (c) 1996, 1998, 1999, 2001 Red Hat, Inc. Copyright (c) 2002 Ranjit Mathew Copyright (c) 2002 Bo Thorsen Copyright (c) 2002 Roger Sayle libffi 2.00-beta - Copyright (c) 1996-2003 Red Hat, Inc. ffitarget.h - Copyright (c) 1996-2003 Red Hat, Inc. fficommon.h - Copyright (c) 1996 Red Hat, Inc. prepcif.c - Copyright (c) 1996, 1998 Red Hat, Inc. types.c - Copyright (c) 1996, 1998 Red Hat, Inc. win32.S - Copyright (c) 1996, 1998, 2001, 2002 Red Hat, Inc. Copyright (c) 2001 John Beniton License: MIT License Please see above. Software: asn1crypto 1.2.0 Copyright notice: Copyright (c) 2015-2019 Will Bond <will@wbond.net> Copyright (c) 2009 Raymond Hettinger License: MIT License Please see above. Software: Netifaces 0.10.9 Copyright notice: Copyright (c) 2007-2018 Alastair Houghton License: MIT License Please see above. Software: llvm 10 .0.0 Copyright notice: Copyright 2015 Google Inc. All rights reserved. Copyright 2018 Google Inc. All rights reserved. Copyright 2016 Ismael Jimenez Martinez. All rights reserved. Copyright 2017 Roman Lebedev. All rights reserved. Copyright 2011 The Go Authors. All rights reserved. Copyright (c) 2012 Alexandre K. I. de Mendonca <alexandre.keunecke@gmail.com>,Paulo Pizarro <paulo.pizarro@gmail.com> Copyright (c) 2012 Alexandre K. I. de Mendonca <alexandre.keunecke@gmail.com> Copyright (c) 2013 Imagination Technologies Copyright (c) 2013 Imagination Technologies Ltd. Copyright (c) 2014,2015 Advanced Micro Devices, Inc. Copyright (c) 1998 Cygnus Solutions Copyright (c) 2004 Simon Posnjak Copyright (c) 2005 Axis Communications AB Copyright (C) 2007 Free Software Foundation, Inc. Copyright (c) 2012 Anthony Green Copyright (c) 1996-2003 Red Hat, Inc. Copyright (c) 2011-2019 by the contributors listed in CREDITS.TXT Copyright 2008, Google Inc. Copyright 2005, Google Inc. Copyright 2007, Google Inc. Copyright 2008 Google Inc. Copyright (c) 2000, 2007 Software AG Copyright (c) 2008 Red Hat, Inc Copyright (c) 2015 Advanced Micro Devices, Inc. Copyright (c) 2009-2019 by the contributors listed in CREDITS.TXT Copyright (c) 2009-2015 by the contributors listed in CREDITS.TXT Copyright (c) 2019 The LLVM Developers Copyright 2008-2010 Apple, Inc. Permission is hereby granted, free of charge,to any person obtaining a copy of this software and associated documentation Copyright (c) 2014 Advanced Micro Devices, Inc. Copyright (c) 2014, 2015 Advanced Micro Devices, Inc. Copyright (c) 2013 Victor Oliveira <victormatheus@gmail.com> Copyright (c) 2013 Jesse Towner <jessetowner@lavabit.com> Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. Copyright (c) 2016 Aaron Watry Copyright (c) 2016 Aaron Watry <awatry@gmail.com> Copyright (c) 2011-2014 by the contributors listed in CREDITS.TXT Copyright © 2012 Peter Harris Copyright (c) 2007, 2009, 2010 Red Hat, Inc. Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc Copyright (c) 2011 Plausible Labs Cooperative, Inc. Copyright (c) 1996 Red Hat, Inc. Copyright (c) 1999, 2007, 2008 Red Hat, Inc. Copyright (c) 2011, 2012 Anthony Green Copyright (c) 1996, 1998, 2007 Red Hat, Inc. Copyright (c) 1999, 2008 Red Hat, Inc. Copyright (c) 1996, 1998 Red Hat, Inc. Copyright (c) 2012 Anthony Green Copyright (c) 1998, 2001, 2007, 2008 Red Hat, Inc. Copyright (C) 2012-2015 Free Software Foundation, Inc. Copyright (C) 2013-2015 Free Software Foundation, Inc. Copyright (c) 2009-2019 Polly Team Copyright (c) 1996-2014 Anthony Green, Red Hat, Inc and others. Copyright (c) 2013 Mentor Graphics. Copyright (c) 2007-2019 University of Illinois at Urbana-Champaign. Copyright (c) 2014 Red Hat, Inc. Copyright (C) 2011, 2012, 2013 Anthony Green Copyright (C) 2007 Free Software Foundation, Inc Copyright (c) 1996 Red Hat, Inc. Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd. Copyright (c) 2013 Synopsys, Inc. (www.synopsys.com) Copyright (c) 2013 Synopsys, Inc. (www.synopsys.com) Copyright (c) 2011 Timothy Wall Copyright (c) 2011 Anthony Green Copyright (c) 2011 Free Software Foundation Copyright (c) 1998, 2008, 2011 Red Hat, Inc. Copyright (c) 2010 CodeSourcery Copyright (c) 2011 Anthony Green Copyright (c) 2009 Bradley Smith <brad@brad-smith.co.uk> Copyright (C) 2004 Anthony Green Copyright (C) 2007 Free Software Foundation, Inc. Copyright (C) 2008 Red Hat, Inc. Copyright (c) 1996-2004 Red Hat, Inc. Copyright (c) 1998, 2007, 2008, 2012 Red Hat, Inc. Copyright (c) 2000 Hewlett Packard Company Copyright (c) 2000 Hewlett Packard Company Copyright (c) 2004 Renesas Technology Copyright (c) 2008 Red Hat, Inc. Copyright (c) 2004 Renesas Technology. Copyright (c) 2013 Miodrag Vallat. <miod@openbsd.org> Copyright (c) 2012, 2013 Xilinx, Inc Copyright (c) 2012, 2013 Xilinx, Inc Copyright (c) 2008 David Daney Copyright (c) 1996, 2007, 2008, 2011 Red Hat, Inc. Copyright (C) 2012, 2013 Anthony Green Copyright (c) 2012, 2013 Anthony Green Copyright (c) 2014 Sebastian Macke <sebastian@macke.de> Copyright (c) 2014 Sebastian Macke <sebastian@macke.de> (c) 2011 Anthony Green (c) 2008 Red Hat, Inc. (c) 2006 Free Software Foundation, Inc. (c) 2003-2004 Randolph Chung <tausq@debian.org> Copyright (c) 1998 Geoffrey Keating Copyright (C) 2013 IBM Copyright (C) 2011 Anthony Green Copyright (C) 2011 Kyle Moffett Copyright (C) 2008 Red Hat, Inc Copyright (C) 2007, 2008 Free Software Foundation, Inc Copyright (c) 1998 Geoffrey Keating Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc Copyright (C) 1998 Geoffrey Keating Copyright (C) 2001 John Hornkvist Copyright (C) 2002, 2006, 2007, 2009, 2010 Free Software Foundation, Inc. Copyright (C) 2013 IBM Copyright (c) 2002-2008, 2012 Kaz Kojima Copyright (c) 2008 Red Hat, Inc. Copyright (c) 2012 Anthony Green Copyright (c) 2003, 2004, 2006, 2007, 2012 Kaz Kojima Copyright (c) 2008 Anthony Green Copyright (c) 2011, 2013 Anthony Green Copyright (c) 1996, 2003-2004, 2007-2008 Red Hat, Inc. Copyright (c) 2012 Tilera Corp. Copyright (c) 2012 Tilera Corp. Copyright (c) 20011 Anthony Green Copyright (c) 2008, 2010 Red Hat, Inc. Copyright (c) 2002, 2007 Bo Thorsen <bo@suse.de> Copyright (c) 1996, 1998, 1999, 2001, 2007, 2008 Red Hat, Inc. Copyright (c) 2002 Ranjit Mathew Copyright (c) 2002 Bo Thorsen Copyright (c) 2002 Roger Sayle Copyright (C) 2008, 2010 Free Software Foundation, Inc. Copyright (c) 2013 The Written Word, Inc. Copyright (c) 2011 Anthony Green Copyright (c) 2012, 2014 Anthony Green Copyright (c) 1996-2003, 2010 Red Hat, Inc. Copyright (C) 2008 Free Software Foundation, Inc. Copyright (c) 2014 Red Hat, Inc. Copyright (c) 2013 Tensilica, Inc. Copyright (c) 2013 Tensilica, Inc. Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,2007, 2008, 2009 Free Software Foundation, Inc. Copyright 2009 The Go Authors. All rights reserved. Copyright 2012 The Go Authors. All rights reserved. Copyright 2009 The Go Authors. All rights reserved. Copyright 2014 The Go Authors. All rights reserved. Copyright 2013 The Go Authors. All rights reserved. Copyright 2010 The Go Authors. All rights reserved. Copyright 2012 The Go Authors. All rights reserved. Copyright (c) 2009 The Go Authors. All rights reserved. Copyright 2014 The Go Authors. All rights reserved. Copyright 2015 The Go Authors. All rights reserved. Copyright 2009, 2010 The Go Authors. All rights reserved. Copyright 2013 The Go Authors. All rights reserved. Copyright 2001-2004 Unicode, Inc. Copyright (C) 2004 eXtensible Systems, Inc. Copyright (c) 2001 Alexander Peslyak and it is hereby released to the general public under the following terms: Copyright (C) 2012-2016, Yann Collet. Copyright (c) 2003-2019 University of Illinois at Urbana-Champaign. Copyright (c) 2013-2014, Pexpect development team Copyright (c) 2012, Noah Spurrier <noah@noah.org> Copyright (c) 2009-2016 by the contributors listed in CREDITS.TXT Copyright 2015, Google Inc. Copyright (c) 1999-2003 Steve Purcell Copyright (c) 2003-2010 Python Software Foundation Copyright (c) 1999-2007 Apple Inc. All rights reserved. Copyright (c) 2017-2019 by the contributors listed in CREDITS.TXT Copyright (c) 2010 Apple Inc. Copyright (c) 2013-2016, Pexpect development team Copyright (c) 2010-2015 Benjamin Peterson Copyright 2004 Free Software Foundation, Inc. Copyright 2006, Google Inc. Copyright (c) 2007-2018 University of Illinois at Urbana-Champaign. Copyright 2013, Google Inc. Copyright (c) 2009 Google Inc. All rights reserved. Copyright (c) 2006 Kirill Simonov Copyright © 2006-2009 Steven J. Bethard <steven.bethard@gmail.com>. Copyright 2008-2009 Katholieke Universiteit Leuven Copyright 2006-2007 Universiteit Leiden Copyright 2012,2014 Ecole Normale Superieure Copyright 2013 Ecole Normale Superieure Copyright 2017 Sven Verdoolaege Copyright 2011 INRIA Saclay Copyright 2011 Sven Verdoolaege Copyright 2012-2014 Ecole Normale Superieure Copyright 2014 INRIA Rocquencourt Copyright 2010 INRIA Saclay Copyright 2012 Ecole Normale Superieure Copyright 2012-2013 Ecole Normale Superieure Copyright 2016 Sven Verdoolaege Copyright 2010-2011 INRIA Saclay Copyright 2016 INRIA Paris Copyright 2005-2007 Universiteit Leiden Copyright 2012 Universiteit Leiden Copyright 2014 Ecole Normale Superieure Copyright 2015 INRIA Paris-Rocquencourt Copyright 2014-2015 INRIA Rocquencourt Copyright 2015-2016 Sven Verdoolaege Copyright 2013-2014 Ecole Normale Superieure Copyright 2016-2017 Sven Verdoolaege Copyright 2018 Sven Verdoolaege Copyright 2016-2017 Tobias Grosser Copyright 2015 INRIA Paris-Rocquencourt Copyright (C) 1996-2015 Free Software Foundation, Inc. Copyright (c) 2012 Qualcomm Innovation Center, Inc. All rights reserved. Copyright (C) 2002-2007 Michael J. Fromberger, All Rights Reserved. Copyright (c) 1992, 1993 UNIX International, Inc. Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. Copyright (c) 1994 Copyright (c) 1992, 1993, 1994 Henry Spencer. Copyright (c) 1992, 1993, 1994 Copyright (c) 1992 Henry Spencer. Copyright (c) 1992, 1993 Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> Copyright (C) 2012-2016, Yann Collet Copyright (c) 1997-2019 Intel Corporation Copyright (c) 2009-2014 by the contributors listed in CREDITS.TXT Copyright 2012 INRIA Paris-Rocquencourt Copyright 2012 Ecole Normale Superieure Copyright 2015 Sven Verdoolaege Copyright (C) Microsoft Corporation. All rights reserved. Copyright 2003 Google Inc. Copyright 2009 Google Inc. Copyright 2016, 2017 Tobias Grosser. All rights reserved. Copyright 2011 Sven Verdoolaege. All rights reserved. Copyright 2011,2015 Sven Verdoolaege. All rights reserved. License: MIT License Please see above. Software: libxml2 2.9.9 Copyright notice: Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved. Copyright (C) 2003-2012 Daniel Veillard. Copyright (C) 2000,2012 Bjorn Reese and Daniel Veillard. Copyright (C) 2000 Gary Pennington and Daniel Veillard. Copyright (C) 1996-2015 Free Software Foundation, Inc. Copyright (c) 2010-2017 Christopher Swenson. Copyright (c) 2012 Vojtech Fried. Copyright (c) 2012 Google Inc. All Rights Reserved. Copyright (C) 1998 Bjorn Reese and Daniel Stenberg. Copyright (C) 2001 Bjorn Reese <breese@users.sourceforge.net> Copyright (C) 2000 Bjorn Reese and Daniel Stenberg. Copyright (C) 2001 Bjorn Reese and Daniel Stenberg. License: MIT License Please see above. Software: cJSON 1.7. 13 Copyright notice: Copyright (c) 2009-2017 Dave Gamble and cJSON contributors Copyright (c) 2007-14 Mike Karlesky, Mark VanderVoord, Greg Williams Copyright (c) 2009-2017 Dave Gamble and cJSON contributors Copyright (c) 2009-2019 Dave Gamble and cJSON contributors Copyright (c) 2010 James Grenning and Contributed to Unity Project Copyright (c) 2007 Mike Karlesky, Mark VanderVoord, Greg Williams Copyright (c) 2007 - 2017 Unity Project by Mike Karlesky, Mark VanderVoord, and Greg Williams Copyright 2014 The Authors Copyright (c) 2015 Alexander Mueller / XelaRellum@web.de Copyright (c) 2009-2017 Dave Gamble and cJSON contributors License: MIT License Please see above. Software: c-ares 1.15.0 Copyright notice: Copyright 2008, Google Inc. Copyright 2005, Google Inc. Copyright 2007, Google Inc. Copyright 2015, Google Inc. Copyright 1998 by the Massachusetts Institute of Technology. Copyright (C) 2007-2013 by Daniel Stenberg Copyright (C) 2017 by John Schember <john@nachtimwald.com> Copyright (C) 2009 - 2013 by Daniel Stenberg et al Copyright (C) 2004 by Daniel Stenberg et al Copyright (C) 2009-2013 by Daniel Stenberg Copyright (C) 2004-2011 by Daniel Stenberg Copyright 1998, 2011 by the Massachusetts Institute of Technology. Copyright 2000 by the Massachusetts Institute of Technology. Copyright 1998, 2011, 2013 by the Massachusetts Institute of Technology. Copyright 2005 by Dominick Meglio Copyright (c) 1987-2001 The Regents of the University of California. Copyright (C) 2005 - 2010, Daniel Stenberg Copyright (C) 2005-2013 by Daniel Stenberg et al Copyright (C) 2004 - 2011 by Daniel Stenberg et al Copyright (C) 2005 by Dominick Meglio Copyright (C) 2004-2009 by Daniel Stenberg Copyright (C) 2010-2013 by Daniel Stenberg Copyright (C) 2010-2012 by Daniel Stenberg Copyright (C) 2008-2013 by Daniel Stenberg Copyright 2005 Dominick Meglio Copyright (C) 2010 Jeremy Lal <kapouer@melix.org> Copyright (C) 2009 by Jakub Hrozek <jhrozek@redhat.com> Copyright (C) 2012 Marko Kreen <markokr@gmail.com> Copyright (C) 2004-2010 by Daniel Stenberg Copyright (C) 2004-2017 by Daniel Stenberg Copyright (C) 2009 by Daniel Stenberg et al Copyright (C) 2004 - 2012 by Daniel Stenberg et al Copyright (C) 2018 by John Schember <john@nachtimwald.com> Copyright (C) 2008 by Daniel Stenberg et al Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") Copyright (c) 1996,1999 by Internet Software Consortium. Copyright (C) 2005, 2013 by Dominick Meglio Copyright (c) 1996-1999 by Internet Software Consortium. Copyright (c) 2007 - 2018, Daniel Stenberg with many contributors, see AUTHORS Copyright (C) 1996-2015 Free Software Foundation, Inc. Copyright (C) 2004 - 2013 by Daniel Stenberg et al License: MIT License Please see above. Software: brotli v 1.0.7 Copyright notice: Copyright 2018 Google Inc. All Rights Reserved. Copyright 2017 Google Inc. All Rights Reserved. Copyright 2016 The Brotli Authors. All rights reserved. Copyright 2016 Google Inc. All Rights Reserved. Copyright 2015 The Chromium Authors. All rights reserved. Copyright 2015 The Brotli Authors. All rights reserved. Copyright 2015 Google Inc. All Rights Reserved. Copyright 2014 Google Inc. All Rights Reserved. Copyright 2013 Google Inc. All Rights Reserved. Copyright 2010 Google Inc. All Rights Reserved. Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors. License: MIT License Please see above. Software: numactl 2.0.13 Copyright notice: Copyright (C) 2010 Intel Corporation Copyright (C) 2005 Andi Kleen, SuSE Labs. Copyright (C) 2003,2004,2005,2008 Andi Kleen,SuSE Labs andCliff Wickman,SGI. Copyright (C) 1989, 1991 Free Software Foundation, Inc.,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Copyright (C) 1991, 1999 Free Software Foundation, Inc. Copyright (C) 2003,2004 Andi Kleen, SuSE Labs. Copyright (C) 2005 Christoph Lameter, Silicon Graphics, Incorporated. Copyright (C) 2007 Silicon Graphics, Inc. Christoph Lameter <clameter@sgi.com> Copyright (C) 2012 Bill Gray (bgray@redhat.com), Red Hat Inc. Copyright (C) 1996-2015 Free Software Foundation, Inc. Copyright (C) 2006 Silicon Graphics, Inc. License: LGPL V2.1 GNU Lesser General Public License Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. one line to give the library's name and an idea of what it does. Copyright (C) year name of author This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. signature of Ty Coon, 1 April 1990 Ty Coon, President of Vice That's all there is to it! Software: unixODBC 2.3. 9 Copyright notice: copyright (c) 1999 Nick Gorham \license Copyright unixODBC Project 2007-2008, LGPL copyright (c) 2005 Eric Sharkey Copyright (C) 1991, 1999 Free Software Foundation, Inc. Copyright (C) 1996-2015 Free Software Foundation, Inc. Copyright Patrick Powell 1995 Copyright (C) 1998-2000, 2004, 2006-2008, 2011-2015 Free Software Copyright (C) 1998-2000, 2004-2008, 2010-2015 Free Software Comments: See "notice.txt" for copyright and license information. Comments: See "notice.txt" for copyright and license information. Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group Portions Copyright (c) 1994, Regents of the University of California Comments: See "notice.txt" for copyright and license information. Copyright (C) 1998; Insight Distribution Systems Christian Czezatke and Dan McGuirk, (C) 1996. Copyright (C) 1995, 1996 by Ke Jin <kejin@visigenic.com> Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. Copyright (c) 1999 Easysoft Ltd. All rights reserved. Add description and copyright. Copyright (C) 1999-2001, 2004-2005, 2007, 2011-2015 Free Software Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. Copyright (C) 2000, 2004, 2007-2009, 2011-2015 Free Software Copyright (C) 2004, 2007-2008, 2011-2015 Free Software Foundation, Inc. Copyright (C) 1999, 2003, 2011-2015 Free Software Foundation, Inc. Copyright (C) 1998-2000, 2004-2005, 2007-2008, 2011-2015 Free Copyright (C) 2004, 2006-2007, 2011-2015 Free Software Foundation, Copyright (C) 2001, 2004, 2011-2015 Free Software Foundation, Inc. "copyright" line and a pointer to where the full notice is found. Copyright (C) 1998-2000, 2004-2008, 2011-2015 Free Software Copyright (C) 2004, 2006-2008, 2011-2015 Free Software Foundation, Copyright (C) 1989, 1991 Free Software Foundation, Inc. copyright (c) 2004 Nick Gorham Copyright (C) 2001, 2004, 2006, 2011-2015 Free Software Foundation, Copyright (C) 2004, 2006, 2011-2015 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2004, 2007, 2011-2015 Free Software Copyright (C) 2004, 2007, 2010-2015 Free Software Foundation, Inc. Copyright (C) 2000, 2004, 2009, 2011-2015 Free Software Foundation, Copyright (C) 2004-2008, 2011-2015 Free Software Foundation, Inc. License: LGPL V2.1 Please see above. Software: paramiko 2.6.0 Copyright notice: Copyright (C) 1991, 1999 Free Software Foundation, Inc. "copyright" line and a pointer to where the full notice is found. Copyright (C) 2003-2008 Robey Pointer <robeypointer@gmail.com> Copyright (C) 2003-2007 Robey Pointer <robeypointer@gmail.com> Copyright (C) 2003-2009 Robey Pointer <robeypointer@gmail.com> Copyright (C) 2008 Robey Pointer <robeypointer@gmail.com> Copyright (C) 2006-2007 Robey Pointer <robeypointer@gmail.com> Copyright (C) 2013-2014 science + computing ag Copyright (C) 2003-2007 John Rochester <john@jrochester.org> Copyright (C) 2012 Olle Lundberg <geek@nerd.sh> Copyright (C) 2013 Torsten Landschoff <torsten@debian.org> Copyright (C) 2019 Edgar Sousa <https://github.com/edgsousa> Copyright (C) 2012 Yipit, Inc <coders@yipit.com> Copyright (C) 2003-2006 Robey Pointer <robeypointer@gmail.com> Copyright (C) 2005 John Arbash-Meinel <john@arbash-meinel.com> Copyright (C) 2003-2011 Robey Pointer <robeypointer@gmail.com> Copyright (C) 2010 Sofian Brabez <sbz@6dev.net> License: LGPL V2.1 Please see above. Software: openGauss-connector-odbc 1.0.0 Copyright notice: Copyright (C) 1991 Free Software Foundation, Inc. Copyright (C) 1998 Insight Distribution Systems Copyright (C) 1998 - 2013 The PostgreSQL Global Development Group Multibyte support was added by Sankyo Unyu Service, (C) 2001. Christian Czezatke and Dan McGuirk, (C) 1996. Christian Czezatke and Dan McGuirk, (C) 1996. . Copyright Patrick Powell 1995 Copyright (C) 1991, 1999 Free Software Foundation, Inc. Copyright (C) 1996-2015 Free Software Foundation, Inc. Copyright (c) 1999 Easysoft Ltd. All rights reserved. Copyright (C) 1998-2000, 2004-2008, 2011-2015 Free Software Copyright (C) 1998-2000, 2004-2005, 2007-2008, 2011-2015 Free Copyright (C) 2004, 2007-2008, 2011-2015 Free Software Foundation,Inc. Copyright (C) 1999-2001, 2004-2005, 2007, 2011-2015 Free Software Copyright (C) 2004, 2006-2007, 2011-2015 Free Software Foundation, Copyright (C) 2004, 2006-2008, 2011-2015 Free Software Foundation, Copyright (C) 2001, 2004, 2011-2015 Free Software Foundation, Inc. Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. Copyright (C) 1999, 2003, 2011-2015 Free Software Foundation, Inc. Copyright (C) 2000, 2004, 2007-2009, 2011-2015 Free Software Copyright unixODBC Project 2007-2008, LGPL copyright (c) 2005 Eric Sharkey Copyright (C) 1995, 1996 by Ke Jin <kejin@visigenic.com> Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. Copyright (C) 1998-2000, 2004, 2006-2008, 2011-2015 Free Software Copyright (C) 1998-2000, 2004-2008, 2010-2015 Free Software Copyright (C) 1999-2001, 2004, 2007, 2011-2015 Free Software Copyright (C) 2004, 2007, 2010-2015 Free Software Foundation, Inc. Copyright (C) 2001, 2004, 2006, 2011-2015 Free Software Foundation, Copyright (C) 2004-2008, 2011-2015 Free Software Foundation, Inc. Copyright (C) 2004, 2006, 2011-2015 Free Software Foundation, Inc. Copyright (C) 2000, 2004, 2009, 2011-2015 Free Software Foundation, Copyright (C) 1989, 1991 Free Software Foundation, Inc. copyright (c) 2004 Nick Gorham Copyright (c) 1996-2002, PostgreSQL Global Development Group Copyright (c) 1994, Regents of the University of California Copyright (C) 1998; Insight Distribution Systems Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. License: LGPL V2.0 GNU Library General Public License Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to other libraries whose authors who decide to use it. You can use it for your libraries too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license, which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. one line to give the library's name and an idea of what it does. Copyright (C) year name of author This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,Boston, MA 02110-1301, USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. signature of Ty Coon, 1 April 1990 Ty Coon, President of Vice That's all there is to it! Software: libiconv 1.16 Copyright notice: Copyright (C) 1999-2001, 2003, 2011 Bruno Haible. Copyright (C) 1999-2001 Bruno Haible. Copyright (C) 1996-2015 Free Software Foundation, Inc. Copyright (C) 1999-2003, 2008 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2005, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2006, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2006, 2010 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2005, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001 Free Software Foundation, Inc. Copyright (C) 1999-2002 Free Software Foundation, Inc. Copyright (C) 1999-2005, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2004-2011, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2004, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2011, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2005, 2016 Free Software Foundation, Inc. Copyright (C) 2005, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2005, 2007, 2016 Free Software Foundation, Inc. Copyright (C) 2001, 2005, 2016 Free Software Foundation, Inc. Copyright (C) 2001, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2007, 2016 Free Software Foundation, Inc. Copyright (C) 2001 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2005, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2005, 2011, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2005, 2008, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2000, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2003, 2005, 2008, 2012, 2017 Free Software Foundation, Inc. Copyright (C) 1999-2003, 2005, 2008, 2012 Free Software Foundation, Inc. Copyright (C) 2000-2002, 2005-2006, 2008-2009, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2003, 2005, 2011-2012, 2016, 2018 Free Software Foundation, Inc. Copyright (C) 1999-2006, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2010, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2008, 2011, 2016, 2018 Free Software Foundation, Inc. Copyright (C) 1999-2008, 2011, 2018 Free Software Foundation, Inc. Copyright (C) 1999-2009 Free Software Foundation, Inc. Copyright (C) 1999-2004, 2008, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2008, 2011-2012, 2016, 2018 Free Software Foundation, Inc. Copyright (C) 1999-2004, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2004, 2012 Free Software Foundation, Inc. Copyright (C) 1999-2007, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 2000 Free Software Foundation, Inc. Copyright (C) 1999-2003, 2005-2006, 2008 Free Software Foundation, Inc. Copyright (C) 2000-2002, 2005-2006, 2008-2009, 2011 Free Software Foundation, Inc. Copyright (C) 2003-2006, 2008-2018 Free Software Foundation, Inc. ISSLASH(C) tests whether C is a directory separator character. Copyright (C) 2003, 2005, 2008-2017 Free Software Foundation, Inc. Copyright (C) 1999-2007, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2004, 2016, 2019 Free Software Foundation, Inc. Copyright (C) 1999-2003 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2008, 2011, 2016 Free Software Foundation, Inc. Copyright (C) 2001, 2004, 2011 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2016, 2019 Free Software Foundation, Inc. Copyright (C) 1991 Free Software Foundation, Inc. Our method of protecting your rights has two steps: (1) copyright "copyright" line and a pointer to where the full notice is found. Copyright (C) 1999-2002, 2011-2012, 2016, 2018 Free Software Foundation, Inc. Copyright (C) 1999-2004, 2006-2007, 2010, 2012, 2016, 2018 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2012, 2018 Free Software Foundation, Inc. Copyright (C) 2001-2002, 2005-2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2001-2002, 2006-2019 Free Software Foundation, Inc. Copyright (C) 2005, 2012 Free Software Foundation, Inc. Copyright (C) 2000, 2004-2005, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 2000-2002, 2004-2005 Free Software Foundation, Inc. Copyright (C) 2008, 2018 Free Software Foundation, Inc. Copyright (C) 2009, 2011 Free Software Foundation, Inc. Copyright (C) 86, 91, 1995-1998, 1999, 2012 Free Software Foundation, Inc. Copyright (C) 2000-2006, 2008-2018 Free Software Foundation, Inc. Copyright (C) 2018 Free Software Foundation, Inc. Copyright (C) 2000-2009, 2011-2012, 2016-2019 Free Software Foundation, Inc. Copyright (C) 2006, 2011-2018 Free Software Foundation, Inc. Copyright (C) 2006 Free Software Foundation, Inc. Copyright (C) 2007 Free Software Foundation, Inc. <http:fsf.org/> (1) assert copyright on the software, and (2) offer you this License "Copyright" also means copyright-like laws that apply to other kinds of in a fashion requiring copyright permission, other than the making of an copyright on the Program, and are irrevocable provided the stated not control copyright. Those thus making or running the covered works for which you have or can give appropriate copyright permission. Copyright (C) 1995, 1999, 2001-2007 Free Software Foundation, Inc. Copyright (C) 2001-2004, 2006 Free Software Foundation, Inc. Copyright (C) 1990-1996, 2000-2003, 2005-2007 Free Software Foundation, Inc. Copyright (C) 1990, 1996, 2000-2003, 2005-2006 Free Software Foundation, Inc. Copyright Copyright (C) 2011-2019 Free Software Foundation, Inc. Copyright (C) 2001, 2003-2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2001, 2003-2004, 2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2009-2019 Free Software Foundation, Inc. Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2019 Free Software Copyright 2017-2019 Free Software Foundation, Inc. Copyright (C) 2001, 2003, 2005, 2008-2019 Free Software Foundation, Inc. Copyright (C) 2010-2019 Free Software Foundation, Inc. Copyright (C) 2000-2003, 2006, 2008-2019 Free Software Foundation, Inc. Copyright (C) 1996-2019 Free Software Foundation, Inc. Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2019 Free Software Copyright (C) 1998, 2001, 2003-2006, 2009-2019 Free Software Foundation, Copyright (C) 2000-2001, 2004-2006, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2008-2019 Free Software Foundation, Inc. Copyright (C) 1990-1998, 2000-2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 1995-1997, 2003, 2006, 2008-2019 Free Software Foundation, Copyright (C) 2006-2019 Free Software Foundation, Inc. Copyright (C) 2001-2004, 2007-2019 Free Software Foundation, Inc. Copyright (C) 2016-2019 Free Software Foundation, Inc. Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2019 Free Software Copyright (C) 2001-2019 Free Software Foundation, Inc. Copyright 2016-2019 Free Software Foundation, Inc. Copyright (C) 2000-2003, 2009-2019 Free Software Foundation, Inc. Copyright (C) 1997-2006, 2008-2019 Free Software Foundation, Inc. Copyright (C) 1997-1998, 2006-2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2003, 2006-2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2003-2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2019 Free Software Copyright (C) 2001-2003, 2005-2019 Free Software Foundation, Inc. Copyright (C) 2001-2004, 2006, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2003-2019 Free Software Foundation, Inc. Copyright (C) 2002-2003, 2005-2006, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2003-2006, 2008-2019 Free Software Foundation, Inc. Copyright (C) 2003, 2005, 2008-2019 Free Software Foundation, Inc. Copyright (C) 2003, 2005-2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 1993-1994, 1998, 2002-2006, 2009-2019 Free Software Copyright (C) 2002, 2006, 2009-2019 Free Software Foundation, Inc. Copyright (C) 1992, 1995-2003, 2005-2019 Free Software Foundation, Inc. Copyright (C) 2005, 2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2017-2019 Free Software Foundation, Inc. Copyright (C) 2001-2003, 2006-2019 Free Software Foundation, Inc. Copyright (C) 2001-2002, 2004-2019 Free Software Foundation, Inc. Copyright (C) 2004, 2007-2019 Free Software Foundation, Inc. Copyright (C) 1995, 2001-2004, 2006-2019 Free Software Foundation, Inc. Copyright (C) 2001-2002, 2007, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2007-2019 Free Software Foundation, Inc. Copyright (C) 1995-1996, 2001-2019 Free Software Foundation, Inc. Copyright (C) 1990, 2001, 2003-2006, 2009-2019 Free Software Foundation, Copyright 2018-2019 Free Software Foundation, Inc. Copyright (C) 2005-2019 Free Software Foundation, Inc. Copyright (C) 2002, 2005-2006, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2001-2002, 2005, 2007, 2009-2019 Free Software Foundation, Copyright (C) 2001-2004, 2009-2019 Free Software Foundation, Inc. Copyright (C) 2005-2006, 2009-2019 Free Software Foundation, Inc. Copyright (C) 1990-2000, 2003-2004, 2006-2019 Free Software Foundation, Inc. License: LGPL V2.0 Please see above. Software: Kerberos 5 (KRB5) 1.17.1 Copyright notice: Copyright 1997, 1998, 1999 Computing Research Labs, Copyright 1998-2008 The OpenLDAP Foundation. Copyright 1999 Computing Research Labs, New Mexico State University Copyright 2001 Computing Research Labs, New Mexico State University Copyright 1990,1991 by the Massachusetts Institute of Technology. Copyright 1990,2004,2008 by the Massachusetts Institute of Technology. Copyright 2006, 2007 by the Massachusetts Institute of Technology. Copyright 1990, 2007, 2008 by the Massachusetts Institute of Technology. Copyright 1990 by the Massachusetts Institute of Technology. Copyright 2000, 2007, 2008 by the Massachusetts Institute of Technology. Copyright (C) 2014 by the Massachusetts Institute of Technology. Copyright (C) 2011 by the Massachusetts Institute of Technology. Copyright (C) 2017 by Red Hat, Inc. Copyright 1990,1991,1992,1993,1994,2000,2004,2007 Massachusetts Institute of Technology. copyright 1995 by Cygnus Support. Copyright 1990,1991,1992,1993,1994,2000,2004 Massachusetts Institute of Copyright 1990,1991,2000,2004,2008 by the Massachusetts Institute of Copyright 2007 Secure Endpoints Inc. Copyright 2003,2004 by the Massachusetts Institute of Technology. Copyright 2000 by Carnegie Mellon University Copyright 1990,1991,1999,2007,2008 by the Massachusetts Institute of Technology. Copyright 1995 by the Massachusetts Institute of Technology. Copyright 2000 by the Massachusetts Institute of Technology. Copyright (C) 2013 by the Massachusetts Institute of Technology. Copyright 2011 by the Massachusetts Institute of Technology. Copyright 1991 by the Massachusetts Institute of Technology. Copyright 2005,2006 by the Massachusetts Institute of Technology Copyright 2007 by Secure Endpoints Inc. Copyright 2005 by the Massachusetts Institute of Technology Copyright (C) 2016 by Red Hat, Inc. Copyright (C) 2010 by the Massachusetts Institute of Technology. Copyright 2009 by the Massachusetts Institute of Technology. All Copyright (C) 2009 by the Massachusetts Institute of Technology. Copyright (c) 2006-2008, Novell, Inc. Copyright 2010 by the Massachusetts Institute of Technology. Copyright 1991, 2008, 2009 by the Massachusetts Institute of Technology. Copyright (C) 2004 by the Massachusetts Institute of Technology. Copyright 2001, 2007 by the Massachusetts Institute of Technology. Copyright 1994 by OpenVision Technologies, Inc. Copyright 1992 by the Massachusetts Institute of Technology. Copyright 1994,1999,2000, 2002, 2003, 2007, 2008, 2009 by the Massachusetts Institute of Technology. Copyright (C) 1998 by the FundsXpress, INC. Copyright 1990,1991,2009 by the Massachusetts Institute of Technology. Copyright 1990, 2009 by the Massachusetts Institute of Technology. Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. Copyright 1990,1991,2007-2009 by the Massachusetts Institute of Technology. Copyright 2009 by the Massachusetts Institute of Technology. Copyright 1991, 2002 by the Massachusetts Institute of Technology. Copyright 1990, 2008, 2010 by the Massachusetts Institute of Technology. Copyright (C) 2017 by Cloudera, Inc. Copyright 1990,1991, 2003, 2008 by the Massachusetts Institute of Technology. Copyright (C) 2002, 2003, 2008 by the Massachusetts Institute of Technology. Copyright (C) 2002 by the Massachusetts Institute of Technology. Copyright 1990,1991 the Massachusetts Institute of Technology. Copyright 1990,1991, 2008 by the Massachusetts Institute of Technology. Copyright 2006 Massachusetts Institute of Technology. Copyright 1990-1998, 2009 by the Massachusetts Institute of Technology. Copyright 2008 by the Massachusetts Institute of Technology. Copyright 1990,1991,2008,2012 by the Massachusetts Institute of Technology. Copyright (C) 2016 by the Massachusetts Institute of Technology. Copyright 1995, 2003, 2008, 2012 by the Massachusetts Institute of Technology. All Copyright (C) 2009, 2011 by the Massachusetts Institute of Technology. Copyright 1995, 2003, 2008, 2011 by the Massachusetts Institute of Technology. All Copyright 2011 NORDUnet A/S. All rights reserved. Copyright 2011 Red Hat, Inc. All rights reserved. Copyright 2013 Red Hat, Inc. All rights reserved. Copyright 1990,1991,2007 by the Massachusetts Institute of Technology. Copyright 1994-2009,2014 by the Massachusetts Institute of Technology. Copyright (c) 1994 CyberSAFE Corporation. Copyright 1990,1991,2007,2008 by the Massachusetts Institute of Technology. Copyright 2012 Red Hat, Inc. Copyright 2010 by the Massachusetts Institute of Technology. All Copyright 1991, 2009 by the Massachusetts Institute of Technology. Copyright 1990,1991,2009,2013 by the Massachusetts Institute of Technology. Copyright 1995, 2008 by the Massachusetts Institute of Technology. Copyright 1995, 2007, 2008 by the Massachusetts Institute of Technology. Copyright 1997 by the Massachusetts Institute of Technology. Copyright 2006, 2008 by the Massachusetts Institute of Technology. Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. Copyright 1995, 1999, 2007 by the Massachusetts Institute of Technology. Copyright (C) 2012 by the Massachusetts Institute of Technology. Copyright 1999 by the Massachusetts Institute of Technology. Copyright 2009 by the Massachusetts Institute of Technology. Copyright (C) 2018 by the Massachusetts Institute of Technology. Copyright (C) 2010,2012 by the Massachusetts Institute of Technology. Copyright (c) 2006 Kungliga Tekniska H 枚 gskolan Copyright (C) 2015 by the Massachusetts Institute of Technology. Copyright (c) 2003 Kungliga Tekniska H 枚 gskolan Copyright (C) 2017 by the Massachusetts Institute of Technology. Copyright 1990, 2008 by the Massachusetts Institute of Technology. Copyright (C) 1998, 2011, 2012 by the Massachusetts Institute of Technology. Copyright 1990,1991,2008,2009 by the Massachusetts Institute of Technology. Copyright 2001, 2008 by the Massachusetts Institute of Technology. Copyright 1993 OpenVision Technologies, Inc., All Rights Reserved Copyright 1995,2001,2008,2009 by the Massachusetts Institute of Technology. Copyright 2004 Sun Microsystems, Inc. All rights reserved. Copyright 1993 OpenVision Technologies, Inc., All Rights Reserved. Copyright 1995, 2007 by the Massachusetts Institute of Technology. Copyright (C) 1995-2015 by the Massachusetts Institute of Technology. Copyright (C) 2007 Apple Inc. Copyright 1990, 1991, 2007, 2008, 2009, 2013, 2014 by the Massachusetts Institute of Technology. All Rights Reserved. Copyright 1990, 1991, 2001, 2007, 2008, 2009, 2013, 2014 by the Copyright 1990,2001,2007,2009 by the Massachusetts Institute of Technology. Copyright (C) 2009, 2015 by the Massachusetts Institute of Technology. Copyright 2013 by the Massachusetts Institute of Technology. Copyright (C) 2007 Apple Inc. All Rights Reserved. Copyright (C) 2008, 2009 by the Massachusetts Institute of Technology. Copyright 2008,2009 by the Massachusetts Institute of Technology. Copyright 1995, 2003, 2007, 2009 by the Massachusetts Institute of Copyright (C) 1995, 2003, 2007, 2011 by the Massachusetts Institute of Technology. Copyright 1990,1991,2007,2008,2009 by the Massachusetts Institute of Technology. Copyright 1990, 2007, 2014 by the Massachusetts Institute of Technology. Copyright 1990,2001,2008,2009,2016 by the Massachusetts Institute of Copyright (c) 1990, 1993, 1994 Copyright (c) 1991, 1993, 1994 Copyright (c) 2004-2005, Novell, Inc. Copyright (c) 2015-2016 the fiat-crypto authors (see the AUTHORS file). Copyright (c) 2015-2016, Google Inc. Copyright (C) 2012 by the Red Hat Inc. Copyright (C) 2005 by the Massachusetts Institute of Technology. Copyright (C) 1995 by the Massachusetts Institute of Technology. Copyright (C) 2003, 2004, 2005 by the Massachusetts Institute of Technology. Copyright (C) 2003, 2004 by the Massachusetts Institute of Technology. Copyright (C) 2004,2005 by the Massachusetts Institute of Technology. Copyright 1993 by OpenVision Technologies, Inc. Copyright 2003 Sun Microsystems, Inc. All rights reserved. Copyright (C) 2006,2008 by the Massachusetts Institute of Technology. Copyright (c) 1990, 1993 Copyright 1987, 1989 by the Student Information Processing Board Copyright 1987, 1988, 1989 Massachusetts Institute of Technology Copyright 2007 Massachusetts Institute of Technology. Copyright 1987, 1988, 1989 by MIT Student Information Processing Copyright 1987, 1988, 1989 by Massachusetts Institute of Technology Copyright 1987, 1988 by MIT Student Information Processing Board Copyright 1987 by the Student Information Processing Board Copyright 1987, 1988, 1989 by MIT Copyright (C) 2010,2013 by the Massachusetts Institute of Technology. Copyright 2006 by the Massachusetts Institute of Technology. Copyright 1997,2006,2007-2009 by the Massachusetts Institute of Technology. Copyright 2004 by the Massachusetts Institute of Technology Copyright (C) 1985-2012 by the Massachusetts Institute of Technology.\par Individual source code files are copyright MIT, Cygnus Support, OpenVision, Oracle, Sun Soft, FundsXpress, and others.\par Copyright, OpenVision Technologies, Inc., 1996, All Rights Reserved\par Copyright 2000 by Zero-Knowledge Systems, Inc.\par Copyright (c) 2001, Dr Brian Gladman <brg@gladman.uk.net>, Worcester, UK.\par Copyright (C) 2006 by the Massachusetts Institute of Technology. Copyright 1998-2008 The OpenLDAP Foundation. All rights reserved. Copyright 1997 by the Regents of the University of Michigan Copyright 1997 by the Regents of the University of Michigan. Copyright 2006, 2007 Massachusetts Institute of Technology. Copyright (C) 2019 by the Massachusetts Institute of Technology. Copyright 1997 by Massachusetts Institute of Technology Copyright 1988, Student Information Processing Board of the Copyright 1995 by Cygnus Support. Copyright 1997,2000,2001,2004,2008 by Massachusetts Institute of Technology Copyright 1988 by the Student Information Processing Board of the Copyright 1987 by MIT Student Information Processing Board Copyright 1987, 1988 by the Student Information Processing Board Copyright 1995, 1996, 2008 by the Massachusetts Institute of Technology. (C) Copyright 1995, 1996 by the Massachusetts Institute of Technology. Copyright (C) 2003,2004 by the Massachusetts Institute of Technology. Copyright (C) 2003 by the Massachusetts Institute of Technology. Copyright 1990,1991,2001, 2002, 2008 by the Massachusetts Institute of Technology. (C) Copyright 1990,1991, 1996, 2008 by the Massachusetts Institute of Technology. Copyright (C) 1998 by Danilo Almeida. All rights reserved. Copyright 2008 Massachusetts Institute of Technology. Copyright (c) 2007,2008,2009,2010,2011,2012,2013 Marc Alexander Lehmann <libev@schmorp.de> Copyright (c) 2007,2008,2009,2010,2011,2012,2015 Marc Alexander Lehmann <libev@schmorp.de> Copyright (c) 2007,2008,2009,2010,2011 Marc Alexander Lehmann <libev@schmorp.de> Copyright (c) 2007,2008,2009 Marc Alexander Lehmann <libev@schmorp.de> Copyright 2011 Red Hat, Inc. Copyright (C) 2008 by the Massachusetts Institute of Technology. Copyright 1995 by Richard P. Basch. All Rights Reserved. Copyright 1995 by Lehman Brothers, Inc. All Rights Reserved. Copyright 1987, 1988, 1990, 2002 by the Massachusetts Institute of Copyright (C) 1990 by the Massachusetts Institute of Technology. Copyright 1985, 1986, 1987, 1988, 1990 by the Massachusetts Institute Copyright 1988, 1990 by the Massachusetts Institute of Technology. Copyright 1989,1990 by the Massachusetts Institute of Technology. Copyright 2012 by the Massachusetts Institute of Technology. Copyright 1996, Massachusetts Institute of Technology. Copyright 2015 Red Hat, Inc. Copyright 2014 by the Massachusetts Institute of Technology. Copyright 2010 by the Massachusetts Institute of Technology. Copyright (c) 2010, Oracle America, Inc. Copyright (c) 2000 The Regents of the University of Michigan. Copyright (c) 2000 Dug Song <dugsong@UMICH.EDU>. Copyright |copy| 1985-2019 by the Massachusetts Institute of Copyright |copy| 1985-2019 by the Massachusetts Institute of Technology. Copyright |copy| 2006 Red Hat, Inc. copyright |copy| 2006 Massachusetts Institute of Technology Copyright 2013,2014 Red Hat, Inc. Copyright |copy| 2004 Sun Microsystems, Inc. Copyright |copy| 1983 Regents of the University of California. Copyright |copy| 2004-2005, Novell, Inc. COPYRIGHT |copy| 2006-2007 Copyright 2006 g10 Code GmbH Copyright 2006 Andreas Jellinghaus Copyright 2004-2008 Apple Inc. All Rights Reserved. Copyright 1999-2003 The OpenLDAP Foundation, Redwood City,California, USA. All Rights Reserved. Permission to copy and distribute verbatim copies of this document is granted. Copyright |copy| 2006 Kungliga Tekniska H 枚 gskola Copyright |copy| 2009 Kungliga Tekniska H 枚 gskola Copyright |copy| 2009 Apple Inc. All rights reserved. Copyright |copy| 2010, Oracle America, Inc. Copyright |copy| 2006,2007,2009 Copyright |copy| 2002 Naval Research Laboratory (NRL/CCS) Copyright |copy| 1991, 1992, 1994 by Cygnus Support. Copyright |copy| 2006 Secure Endpoints Inc. Copyright |copy| 2005 Marko Kreen Copyright |copy| 1994 by the University of Southern California Copyright |copy| 1995 Copyright |copy| 2008 by the Massachusetts Institute of Technology. Copyright 1995 by Richard P. Basch. All Rights Reserved. Copyright 1995 by Lehman Brothers, Inc. All Rights Reserved. Copyright |copy| 1997, 1998 The NetBSD Foundation, Inc. Copyright 1997, 1998, 1999 Computing Research Labs, Copyright |copy| 1998 Todd C. Miller ``Todd.Miller@courtesan.com`` Copyright 1999 by Theodore Ts'o. Copyright |copy| 1999-2000, The University of Chicago Copyright |copy| 2000 The Regents of the University of Michigan. Copyright |copy| 2000 Dug Song ``dugsong@UMICH.EDU``. Copyright |copy| 1990, RSA Data Security, Inc. All rights reserved. Copyright |copy| 1990-2, RSA Data Security, Inc. Created 1990. All Copyright |copy| 1994 CyberSAFE Corporation. Copyright 1990,1991,2007,2008 by the Massachusetts Copyright (c) 2011, PADL Software Pty Ltd. Copyright (C)2007,2008,2009 Marc Alexander Lehmann. Copyright |copy| 2010, Intel Corporation Copyright 1994, 2008 by the Massachusetts Institute of Technology. Copyright 2001 by the Massachusetts Institute of Technology. Copyright 1994 by the Massachusetts Institute of Technology. Copyright @1998 Massachusetts Institute of Technology - All rights reserved. Copyright @1998 Massachusetts Institute of Technology - All rights reserved. Copyright (C) 2015, 2017 by the Massachusetts Institute of Technology. Copyright (c) 1995 - 2001 Kungliga Tekniska H 枚 gskolan Copyright (c) 2006, 2010 Kungliga Tekniska H 枚 gskolan Copyright (c) 2002 Naval Research Laboratory (NRL/CCS) Copyright (C) 2009, 2010 by the Massachusetts Institute of Technology. Copyright 1989,1991 by the Massachusetts Institute of Technology. Copyright JS Foundation and other contributors (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors Copyright 1995-2004, 2007, 2008, 2017 by the Massachusetts Institute of Copyright 1994 OpenVision Technologies, Inc., All Rights Reserved Copyright 1990,1991,2008 by the Massachusetts Institute of Technology. Copyright 2008 Sun Microsystems, Inc. All rights reserved. Copyright 2004-2006 by the Massachusetts Institute of Technology. Copyright (C) 1990, RSA Data Security, Inc. All rights reserved. Copyright (C) 2002, 2016 by the Massachusetts Institute of Technology. Copyright 2000, 2004, 2007, 2008 by the Massachusetts Institute of Technology. Copyright 2000, 2007-2010 by the Massachusetts Institute of Technology. Copyright 1997,2007 by the Massachusetts Institute of Technology. Copyright 1997, 2007 by the Massachusetts Institute of Technology. Copyright 2000, 2008 by the Massachusetts Institute of Technology. Copyright 1995,2004,2007,2008 by the Massachusetts Institute of Technology. Copyright 2000, 2002, 2003, 2007, 2008 by the Massachusetts Institute of Copyright 2000, 2007 by the Massachusetts Institute of Technology. Copyright 2008, 2009 by the Massachusetts Institute of Technology. Copyright 2003,2004,2007 by the Massachusetts Institute of Technology. Copyright 2004, 2008 by the Massachusetts Institute of Technology. Copyright 1995, 2004, 2008 by the Massachusetts Institute of Technology. Copyright 2004 by the Massachusetts Institute of Technology. Copyright 1999, 2003 by the Massachusetts Institute of Technology. Copyright 2001, 2009 by the Massachusetts Institute of Technology. Copyright 1997, 2007 by Massachusetts Institute of Technology Copyright (C) 2009, 2018 by the Massachusetts Institute of Technology. Copyright (C) 2003, 2007, 2008, 2009 by the Massachusetts Institute of Technology. Copyright (C) 2003, 2007, 2008, 2009, 2010 by the Massachusetts Institute of Copyright (c) 2000 by Computer Science Laboratory,Rensselaer Polytechnic Institute Copyright 1996 by Sun Microsystems, Inc. Copyright (c) 1996,1997, by Sun Microsystems, Inc. Copyright 2008-2010 by the Massachusetts Institute of Technology. Copyright (c) 1995, by Sun Microsystems, Inc. Copyright 1998, 1999, 2006, 2008 by the Massachusetts Institute of Copyright (C) 2003, 2004, 2008 by the Massachusetts Institute of Technology. Copyright (C) 2004,2008 by the Massachusetts Institute of Technology. Copyright 2002, 2008, 2009 by the Massachusetts Institute of Technology. Copyright 1990, 2007 by the Massachusetts Institute of Technology. Copyright 1990,1999,2001,2008 by the Massachusetts Institute of Technology. Copyright 2004, 2009 by the Massachusetts Institute of Technology. Copyright 2004 by the Massachusetts Institute of Technology. Copyright 1990,2000,2001,2002,2003 by the Massachusetts Institute of Technology. Copyright (c) 2009, Secure Endpoints Inc. Copyright (C) 1990,1991,2002,2008,2009,2013 by the Massachusetts Institute Copyright (C) 2015 by the Massachusetts Institute Copyright 1994, 2007, 2008, 2009 by the Massachusetts Institute of Technology. Copyright (c) Hewlett-Packard Company 1991 Copyright 1990,1991,2000,2001,2002,2004,2007,2008 by the Massachusetts Copyright (C) 2013 by the Massachusetts Institute of Technology. All rights Copyright (C) 1990,1993,2007,2013 by the Massachusetts Institute Copyright (C) 1990,1991,2007,2008,2013 by the Massachusetts Copyright 1990,2000,2001,2002,2003,2004,2006,2008 Massachusetts Institute of Copyright 1990, 1998 by the Massachusetts Institute of Technology. Copyright 1995, 2009 by the Massachusetts Institute of Technology. Copyright 1987, 1988, 1990 by the Massachusetts Institute of Technology. Copyright 1987, 1988, 1990, 2009 by the Massachusetts Institute of Copyright 1990,1991,2001,2002,2004,2005,2007,2008 by the Massachusetts Institute of Technology. Copyright 2013,2014 Red Hat, Inc. Copyright 1991,2002 by the Massachusetts Institute of Technology. Copyright 2005 by the Massachusetts Institute of Technology. Copyright 1988,1991 by the Massachusetts Institute of Technology. Copyright (C) 2004-2006 by the Massachusetts Institute of Technology. Copyright 2006 Sun Microsystems, Inc. All rights reserved. Copyright 2006 g10 Code GmbH Copyright 2006 Andreas Jellinghaus Copyright 1995,1996,1997,1998 by the Massachusetts Institute of Technology. Copyright 1995, 2007,2008,2009 by the Massachusetts Institute of Technology. Copyright (C) 1989-1994 by the Massachusetts Institute of Technology,Cambridge, MA, USA. All Rights Reserved. Copyright 1998-2006 Massachusetts Institute of Technology. Copyright (C) 2001,2002,2003,2004 by the Massachusetts Institute of Technology, Copyright 1990,1991,2000,2001,2002,2004 by the Massachusetts Institute of Technology. Copyright (c) 1995, 1996, 1997 Kungliga Tekniska H 枚 gskolan COPYRIGHT (C) 2006 Copyright (C) 1989,1990,1991,1992,1993,1994,1995,2000,2001,2003,2006,2007,2008,2009 by the Massachusetts Institute of Technology, Copyright (c) 2010 Kungliga Tekniska H 枚 gskolan Copyright (c) 2010 Apple Inc. All rights reserved. Copyright 2003, 2004, 2005, 2007, 2008, 2009 Massachusetts Institute of Technology. Copyright (C) 2006 Massachusetts Institute of Technology. Copyright 2004,2005,2006,2007,2008 by the Massachusetts Institute of Technology. Copyright (C) 2008 by the Massachusetts Institute of Technology, Copyright (C) 2000 Novell, Inc. All Rights Reserved. Copyright (C) 1989-1998,2002 by the Massachusetts Institute of Technology, Copyright 1990, 1991, 2016 by the Massachusetts Institute of Technology. Copyright 2009 Sun Microsystems, Inc. All rights reserved. Copyright (C) 2001,2005 by the Massachusetts Institute of Technology, Copyright 1990,1991,2001,2006,2008,2009,2013 by the Massachusetts Institute Copyright 1990,1991,2001, 2002, 2008 by the Massachusetts Institute of (C) Copyright 1990,1991, 1996, 2008, 2009 by the Massachusetts Institute of Technology. Copyright 1992, 2008, 2009 by the Massachusetts Institute of Technology. Copyright (c) 1988 Regents of the University of California. Copyright 2006-2008 Massachusetts Institute of Technology. Copyright (c) 2006 Red Hat, Inc. copyright (c) 2006, 2011 Massachusetts Institute of Technology Copyright 1989, 1990, 1995, 2001, 2003, 2007, 2011 by the Massachusetts Copyright (C) 2004, 2009 by the Massachusetts Institute of Technology. Copyright 2002,2005 by the Massachusetts Institute of Technology. Copyright 2001,2002 by the Massachusetts Institute of Technology. Copyright (C) 1990-2, RSA Data Security, Inc. Created 1990. All Copyright 2002 by the Massachusetts Institute of Technology. Copyright (C) 2001 by the Massachusetts Institute of Technology. Copyright (c) 1995 - 2002 Kungliga Tekniska H 枚 gskolan Copyright (C) 1985-2019 by the Massachusetts Institute of Technology. Copyright, OpenVision Technologies, Inc., 1993-1996, All Rights Copyright (C) 2001, Dr Brian Gladman "brg@gladman.uk.net", Copyright (C) 2006 Red Hat, Inc. copyright (C) 2006 Massachusetts Institute of Technology Copyright (C) 2004 Sun Microsystems, Inc. Copyright (C) 1983 Regents of the University of California. Copyright (C) 2004-2005, Novell, Inc. Copyright (C) 2006 Kungliga Tekniska H 枚 gskola Copyright (C) 2009 Kungliga Tekniska H 枚 gskola Copyright (C) 2009 Apple Inc. All rights reserved. Copyright (C) 2010, Oracle America, Inc. Copyright (C) 2006,2007,2009 NTT (Nippon Telegraph and Telephone Copyright (C) 2002 Naval Research Laboratory (NRL/CCS) Copyright (C) 1991, 1992, 1994 by Cygnus Support. Copyright (C) 2006 Secure Endpoints Inc. Copyright (C) 2005 Marko Kreen Copyright (C) 1994 by the University of Southern California Copyright (C) 1997, 1998 The NetBSD Foundation, Inc. Copyright (C) 1998 Todd C. Miller "Todd.Miller@courtesan.com" Copyright (C) 1999-2000, The University of Chicago Copyright (C) 2000 The Regents of the University of Michigan. All Copyright (C) 2000 Dug Song "dugsong@UMICH.EDU". All rights Copyright (C) 1994 CyberSAFE Corporation. Copyright 1990,1991,2007,2008 by the Massachusetts Copyright (c) 2011, PADL Software Pty Ltd. All rights reserved. Copyright (C)2007,2008,2009 Marc Alexander Copyright (C) 2010, Intel Corporation All rights reserved. Copyright (c) 2015-2016 the fiat-crypto authors (see the AUTHORS Copyright (C) 1985-2019 by the Massachusetts Institute of Technology Copyright (C) 2009, 2015 by the Massachusetts Institute of Technology. All Copyright 1990, 2002 by the Massachusetts Institute of Technology. Copyright (C) 1986 Gary S. Brown. You may use this program, or Copyright (C) 2001, 2014 by the Massachusetts Institute of Technology. Copyright 2008, 2009, 2010 by the Massachusetts Institute of Technology. Copyright (C) 2002, 2005 by the Massachusetts Institute of Technology. Copyright (C) 2004, 2009 by the Massachusetts Institute of Technology. Copyright (C) 2001, 2002, 2004, 2007, 2008, 2010 by the Massachusetts Institute of Technology. Copyright (c) 2005 Marko Kreen Copyright (C) 2010, 2011 by the Massachusetts Institute of Technology. Copyright (c) 2007 Kungliga Tekniska H 枚 gskolan Copyright (c) 2013 Red Hat, Inc. Copyright 2007, 2008 by the Massachusetts Institute of Technology. Copyright 1995 by OpenVision Technologies, Inc. Copyright (c) 1994 by the University of Southern California Copyright (c) 1987 Regents of the University of California. Copyright (c) 1990 The Regents of the University of California. Copyright 1990,2000,2007,2008,2009,2010,2016 by the Massachusetts Institute Copyright 2016 by the Massachusetts Institute of Technology. Copyright 2006, 2009, 2010, 2016 by the Massachusetts Institute of Copyright 2005 Sun Microsystems, Inc. All rights reserved. Copyright 1995, 2009, 2014 by the Massachusetts Institute of Technology. Copyright 1990,2008 by the Massachusetts Institute of Technology. Copyright 2001,2008 by the Massachusetts Institute of Technology. Copyright 1990,1991,1995,2007,2008 by the Massachusetts Institute of Technology. Copyright 1990,1991,2002,2007,2008 by the Massachusetts Institute of Technology. Copyright (C) 2007 by the Massachusetts Institute of Technology. Copyright 1990, Daniel J. Bernstein. All rights reserved. Copyright 2011 by the Massachusetts Copyright (c) 2004 Sun Microsystems, Inc. Copyright (c) 2001, Dr Brian Gladman <brg@gladman.uk.net>, Worcester, UK. Copyright 2002, 2008 by the Massachusetts Institute of Technology. Copyright (C) 1994 by the Massachusetts Institute of Technology. Copyright (C) 1992,1993 Trusted Information Systems, Inc. Copyright (C) 1994 Massachusetts Institute of Technology Copyright (c) 1995-2001 Kungliga Tekniska H 枚 gskolan Copyright (C) 2004 by the Massachusetts Institute of Technology, Copyright (C) 2001,2002,2003,2004,2005,2006 by the Massachusetts Institute of Technology, Copyright 2006, 2007, 2009 Massachusetts Institute of Technology. Copyright 2003, 2004, 2005, 2007, 2008 Massachusetts Institute of Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> Copyright 2004,2005,2006,2007,2008 by the Massachusetts Institute of Copyright (c) 1999 - 2001 Kungliga Tekniska H 枚 gskolan Copyright 2008, 2017 by the Massachusetts Institute of Technology. Copyright (C) 1999, 2000 Novell, Inc. All Rights Reserved. Copyright 2009 Massachusetts Institute of Technology. Copyright (C) 2003, 2007, 2008 by the Massachusetts Institute of Technology. License: Krb5-MIT License krb5 License Copyright © 1985-2002 by the Massachusetts Institute of Technology.Export of software employing encryption from the United States of Americamay require a specific license from the United States Government. It is theresponsibility of any person or organization contemplating export to obtain sucha license before exporting. WITHIN THAT CONSTRAINT, permission to use, copy, modify, and distribute thissoftware and its documentation for any purpose and without fee is herebygranted, provided that the above copyright notice appear in all copies and thatboth that copyright notice and this permission notice appear in supportingdocumentation, and that the name of M.I.T. not be used in advertising orpublicity pertaining to distribution of the software without specific, writtenprior permission. Furthermore if you modify this software you must label yoursoftware as modified software and not distribute it in such a fashion that itmight be confused with the original MIT software. M.I.T. makes norepresentations about the suitability of this software for any purpose. It isprovided "as is" without express or implied warranty. Software: curl 7. 71.1 Copyright notice: Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2018 - 2020 Jeroen Ooms <jeroenooms@gmail.com> Copyright (c) 2000 - 2019 David Odin (aka DindinX) for MandrakeSoft Copyright (c) 2003 - 2020 The OpenEvidence Project. All rights reserved. Copyright (c) 2003 - 2019 Simtec Electronics Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2012 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (c) 2011 - 2019, Jim Hollinger Copyright (C) 2013 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2001 - 2020, Eric Lavigne Copyright (C) 2009 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2010, Mandy Wu, <mandy.wu@intel.com> Copyright (C) 2011 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2005 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (c) 1983, Regents of the University of California. Copyright (C) 2015 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2018 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2019 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2014 - 2016, Steve Holme, <steveholme@hotmail.com>. Copyright (C) 2015 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2014 - 2019, Steve Holme, <steveholme@hotmail.com>. Copyright (C) 2015, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2014 - 2020, Steve Holme, <steveholme@hotmail.com>. Copyright (C) 2019 - 2020, Michael Forney, <mforney@mforney.org> Copyright (C) 2019, Michael Forney, <mforney@mforney.org> Copyright (C) 2010 - 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com> Copyright (C) 2012 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com> Copyright (C) 2013 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2010, 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com> Copyright (C) 2017 - 2018, Yiming Jing, <jingyiming@baidu.com> Copyright (C) 2017-2018, Yiming Jing, <jingyiming@baidu.com> Copyright (C) 2012 - 2016, Marc Hoersken, <info@marc-hoersken.de> Copyright (C) 2012, Mark Salisbury, <mark.salisbury@hp.com> Copyright (C) 2012, Marc Hoersken, <info@marc-hoersken.de>, et al. Copyright (C) 2012 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2012 - 2017, Nick Zitzmann, <nickzman@gmail.com>. Copyright (C) 2012 - 2014, Nick Zitzmann, <nickzman@gmail.com>. (c) CopyRight 2000 - 2020, EdelWeb for EdelKey and OpenEvidence Copyright (C) 2006-2015 wolfSSL Inc. COPYRIGHT AND PERMISSION NOTICE Copyright (c) 1996 - 2020, Daniel Stenberg, <daniel@haxx.se>, and many Copyright (C) 1996-2015 Free Software Foundation, Inc. Copyright (C) 2017 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2008 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2018 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2017 - 2020 Red Hat, Inc. Copyright 2013, John Malmberg Copyright 2009 - 2020, John Malmberg Copyright 2012 - 2020, John Malmberg Copyright (C) 2013 - 2018, Linus Nielsen Feltzing <linus@haxx.se> Copyright (C) 2013 - 2020, Linus Nielsen Feltzing <linus@haxx.se> Copyright (C) 1998 - 2015, 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2014, Vijay Panghal, <vpanghal@maginatics.com>, et al. Copyright (C) 1998 - 2020, Vijay Panghal, <vpanghal@maginatics.com>, et al. Copyright (C) 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2013 - 2020, Linus Nielsen Feltzing, <linus@haxx.se> Copyright (C) 1998 - 2011, 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2013, 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2011, 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2017-2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2012 - 2016, Linus Nielsen Feltzing, <linus@haxx.se> Copyright (C) 2012 - 2014, Linus Nielsen Feltzing, <linus@haxx.se> Copyright (C) 2015 - 2019, Steve Holme, <steveholme@hotmail.com>. Copyright (C) 2011 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2011 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2010, Howard Chu, <hyc@highlandsun.com> Copyright (C) 2010 - 2019, Howard Chu, <hyc@highlandsun.com> Copyright (C) 2012 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2017, Florin Petriuc, <petriuc.florin@gmail.com> Copyright (C) 2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2010 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2010 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2009 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1996-2019 Internet Software Consortium. Copyright (c) 1996 - 2019 by Internet Software Consortium. Copyright (c) 1995, 1996, 1997, 1998, 1999 Kungliga Tekniska Högskolan Copyright (c) 2004 - 2019 Daniel Stenberg Copyright (C) 1999 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2019, Björn Stenberg, <bjorn@haxx.se> Copyright (C) 2019 - 2020, Björn Stenberg, <bjorn@haxx.se> Copyright (C) 2010, Howard Chu, <hyc@openldap.org> Copyright (c) 1998, 1999, 2017 Kungliga Tekniska Högskolan Copyright (C) 2001 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2014, Bill Nagel <wnagel@tycoint.com>, Exacq Technologies Copyright (C) 2016-2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2009, Markus Moeller, <markusmoeller@compuserve.com> Copyright (C) 2009, 2011, Markus Moeller, <markusmoeller@compuserve.com> Copyright (C) 1997 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2004 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2016 - 2020, Steve Holme, <steveholme@hotmail.com>. Copyright (C) 2016 - 2019, Steve Holme, <steveholme@hotmail.com>. License: Curl License Curl License Copyright (c) 1996 - 2003, Daniel Stenberg, <daniel@haxx.se>. All rights reserved. Permission to use, copy, modify, and distribute this software for any purposewith or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USEOR OTHER DEALINGS IN THE SOFTWARE. Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder. Software: Boost 1.7 2 .0 Copyright notice: Copyright Abel Sinkovics (abel@sinkovics.hu) 2011. Copyright (c) 2003-2019 Christopher M. Kohlhoff (chris at kohlhoff dot com) Copyright (c) 2009-2016 Vladimir Batov. Copyright Abel Sinkovics (abel@sinkovics.hu) 2014. Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 2010. Copyright Abel Sinkovics (abel@sinkovics.hu) 2011. Copyright Abel Sinkovics (abel@sinkovics.hu) 2010 - 2011. Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 2011. Copyright Abel Sinkovics (abel@sinkovics.hu) 2015. Copyright Abel Sinkovics (abel@sinkovics.hu) 2009 - 2012. Copyright Abel Sinkovics (abel@sinkovics.hu) 2017. Copyright Abel Sinkovics (abel@sinkovics.hu) 2012. Copyright Abel Sinkovics (abel@sinkovics.hu) 2011 - 2012. Copyright Abel Sinkovics (abel@sinkovics.hu) 2015. Copyright Abel Sinkovics (abel@sinkovics.hu) 2014. Copyright Abel Sinkovics (abel@sinkovics.hu) 2011. Copyright Abel Sinkovics (abel@sinkovics.hu) 2018. Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. Copyright 2010 Vicente J. Botet Escriba Copyright 2013 Krzysztof Czainski Copyright 2013 Vicente J. Botet Escriba Copyright Louis Dionne 2013-2017 Copyright John Maddock 2013. Copyright Jens Maurer 2000 Copyright 1997, 1998, 1999, 2000 University of Notre Dame. Copyright Jeremy Siek 2004 Copyright Thomas Claveirole 2010 Copyright Ignacy Gawedzki 2010 Copyright Jeremiah Willcock 2004 Copyright Jeremy Siek 2004. Copyright David Abrahams 2003. Copyright David Abrahams and Jeremy Siek 2003. Copyright Jeremy Siek 2006 Copyright 2004 The Trustees of Indiana University. Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc. Copyright (c) 2012 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2012 Bruno Lalande, Paris, France. Copyright (c) 2012 Mateusz Loskot, London, UK. Copyright (c) 2007-2012 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2008-2012 Bruno Lalande, Paris, France. Copyright (c) 2009-2012 Mateusz Loskot, London, UK. Copyright (c) 1995-2010 Geodan, Amsterdam, the Netherlands. Copyright (c) 2014 Samuel Debionne, Grenoble, France. Copyright (c) 2015, Oracle andor its affiliates. Copyright (c) 2014, Oracle andor its affiliates. Copyright (c) 2014-2015 Oracle andor its affiliates. Copyright Vicente J. Botet Escriba 2013-2017. Copyright (c) 2016 Oracle andor its affiliates. Copyright (c) 2007-2014 Barend Gehrels, Amsterdam, the Netherlands. Copyright John Maddock 2006-7. Copyright (c) 2007-2011 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2008-2011 Bruno Lalande, Paris, France. Copyright (c) 2009-2011 Mateusz Loskot, London, UK. Copyright (c) 2009-2012 Mateusz Loskot (mateusz@loskot.net), London, UK Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland Copyright (c) 2018, Oracle and/or its affiliates. Copyright (c) 2009-2011 Mateusz Loskot, London, UK Copyright (c) 2008-2014 Bruno Lalande, Paris, France. Copyright (c) 2009-2014 Mateusz Loskot, London, UK. Copyright (c) 2014-2017 Adam Wulkiewicz, Lodz, Poland. Copyright (c) 2017, 2019 Oracle andor its affiliates. Copyright (c) 2007-2015 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2008-2015 Bruno Lalande, Paris, France. Copyright (c) 2009-2015 Mateusz Loskot, London, UK. Copyright (c) 2014-2015 Adam Wulkiewicz, Lodz, Poland. Copyright (c) 2014-2019 Oracle andor its affiliates. Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland Copyright (c) 2013-2018, Oracle andor its affiliates. Copyright (c) 2013 Mateusz Loskot Copyright (c) 2001-2011 Joel de Guzman Copyright (c) 2005-2006 Dan Marsden Copyright 2010 Eric Niebler. Distributed under the Boost Copyright 2012 Eric Niebler. Distributed under the Boost Copyright 2012 Vicente J. Botet Escriba Copyright 2011 Vicente J. Botet Escriba Copyright 2008 Howard Hinnant Copyright 2008 Beman Dawes Copyright 2009 Vicente J. Botet Escriba Copyright 2010 Vicente J. Botet Escriba Copyright (c) 2007-2009 Ben Hanson (http:www.benhanson.net) Copyright 2012 Eric Niebler Copyright John Maddock 2001 - 2003. Copyright David Abrahams 2002 - 2003. Copyright Aleksey Gurtovoy 2002. Copyright Douglas Gregor 2010 Copyright John Maddock 2001. Copyright Douglas Gregor 2001. Copyright Peter Dimov 2001. Copyright Aleksey Gurtovoy 2003. Copyright Beman Dawes 2003. Copyright Jens Maurer 2003. Copyright John Maddock 2001 - 2002. Copyright Jens Maurer 2001. Copyright David Abrahams 2002. Copyright Markus Schoepflin 2005. Copyright 2011 John Maddock Copyright 2013, 2017-2018 Cray, Inc. Copyright Brian Kuhl 2016. Copyright (C) Christof Meerwald 2003 Copyright (C) Dan Watkins 2003 Copyright Darin Adler 2001 - 2002. Copyright Jens Maurer 2001 - 2002. Copyright Beman Dawes 2001 - 2003. Copyright Douglas Gregor 2002. Copyright Synge Todo 2003. Copyright John Maddock 2006. Copyright Jens Maurer 2001 - 2003. Copyright Toon Knapen 2003. Copyright Boris Gubenko 2006 - 2007. Copyright John Maddock 2001-8. Copyright Aleksey Gurtovoy 2002 - 2003. Copyright Guillaume Melquiond 2002 - 2003. Copyright Martin Wille 2003. Copyright Darin Adler 2001. Copyright David Abrahams 2001 - 2002. Copyright Stefan Slapeta 2004. Copyright Eric Jourdanneau, Joel Falcou 2010 Copyright Bryce Lelbach 2011 Copyright Noel Belcourt 2007. Copyright 2017, NVIDIA CORPORATION. Copyright Peter Dimov 2002. Copyright Toon Knapen 2001 - 2003. Copyright Lie-Quan Lee 2001. Copyright Markus Schoepflin 2002 - 2003. Copyright Beman Dawes 2002 - 2003. Copyright (c) 2017 Dynatrace Copyright 2011, John Resig Copyright 2011, The Dojo Foundation Copyright (c) 2001-2010 Hartmut Kaiser Copyright (c) 2009 Francois Barel Copyright Paul Mensonides 2005. Copyright Paul Mensonides 2002. Copyright Vladimir Prus 2003. Copyright 2003 Vladimir Prus Copyright 2011-2012 Mario Mulansky Copyright 2011 Karsten Ahnert Copyright 2011-2013 Mario Mulansky Copyright 2011-2012 Karsten Ahnert Copyright 2012 Karsten Ahnert Copyright 2012 Mario Mulansky Copyright 2008 CodeRage, LLC (turkanis at coderage dot com) Copyright 2003-2007 Jonathan Turkanis Copyright Sergey Shandar 2005, Alexander Nasonov, 2007. Copyright Antony Polukhin, 2012-2019. Copyright Antony Polukhin, 2011-2019. Copyright Antony Polukhin, 2013-2019. Copyright Terje Sletteb and Kevlin Henney, 2005. Copyright Antony Polukhin, 2015-2019. Copyright Antony Polukhin, 2012-2014. Copyright Antony Polukhin, 2014-2019. Copyright (c) 2009-2011 Artyom Beilis (Tonkikh) Copyright Louis Dionne 2013-2017 Copyright Gonzalo Brito Gadeschi 2015 Copyright Darin Adler 2000 Copyright Beman Dawes 2006, 2009, 2014 Copyright Peter Dimov 2019 Copyright Beman Dawes 2010, 2011, 2014 Copyright Beman Dawes 2015 Copyright (c) 2008-2009: Joachim Faulhaber Copyright (c) 2017 Paul Fultz II Copyright Paul Fultz II 2016-2018 Copyright (c) 2018 Yaghyavardhan Singh Khangarot, Hyderabad, India. Copyright (c) 2018 Oracle andor its affiliates. Copyright (c) 2018, Oracle andor its affiliates. Copyright (c) 2005-2010 Joel de Guzman Copyright (c) 2010 Thomas Heller Copyright (c) 2001-2010 Joel de Guzman Copyright (c) 2016 Kohei Takahashi Copyright 2008 Rene Rivera Copyright Rene Rivera 2016 Copyright (c) Marshall Clow 2017. Copyright (C) 2013 Christian Henning Copyright (c) 2001-2002 Joel de Guzman Copyright (c) 2001-2003 Joel de Guzman Copyright (c) 2001-2003 Hartmut Kaiser Copyright (c) 2002-2003 Martin Wille Copyright (c) 2003 Vaclav Vesely Copyright (c) 2002 Joel de Guzman Copyright (c) 2002-2003 Hartmut Kaiser Copyright (C) 2018-2019 Niall Douglas <http:www.nedproductions.biz/> Copyright (c) Copyright Juergen Hunold 2011 Copyright (c) Copyright Juergen Hunold 2008 Copyright (c) Copyright Juergen Hunold 2009 Copyright (c) Copyright Juergen Hunold 2008-2011 Copyright (c) Copyright Juergen Hunold 2012 Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com) Copyright 2008 Eric Niebler. Distributed under the Boost Copyright (c) 2006 Dan Marsden Copyright (c) 2011-2012 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2010 Eric Niebler Copyright (c) 2004 Daniel Wallin Copyright (c) 2001-2007 Joel de Guzman Copyright (c) 2011 Thomas Heller Copyright (c) 2010-2015 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2015-2016, Oracle andor its affiliates. Copyright (c) 2015-2017, Oracle andor its affiliates. Copyright (c) 2014-2015, Oracle andor its affiliates. Copyright (c) 2019, Oracle andor its affiliates. Copyright (c) 2013-2015 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2017 Adam Wulkiewicz, Lodz, Poland. Copyright (c) 2016-2019, Oracle andor its affiliates. Copyright (c) 2014-2017, Oracle andor its affiliates. Copyright (c) 2006-2007 Tobias Schwinger Copyright David Abrahams, Matthias Troyer, Michael Gauckler Copyright (c) 2001-2011 Hartmut Kaiser Copyright (C) 2011 Vicente J. Botet Escriba Copyright (c) 2007 Dan Marsden Copyright (c) 2009-2011 Christopher Schmidt Copyright (c) 2010-2011 Christopher Schmidt Copyright (c) 2013-2014 Damien Buhl Copyright (c) 2009-2010 Hartmut Kaiser Copyright (c) 2012 Nathan Ridge Copyright (c) 2001 Daniel C. Nuffer. Copyright (c) 2001-2012 Hartmut Kaiser. Copyright (c) 2001 Daniel C. Nuffer Copyright (C) 2003-2008 Matthias Christian Schabel Copyright (C) 2008 Steven Watanabe Copyright (C) 2014 Erik Erlandson Copyright Daniel Wallin 2005. Use, modification and distribution is Copyright Andrey Semashev 2007 - 2015. Copyright 2002, 2005 Daryle Walker. Use, modification, and distribution Copyright (c) 2012-2015 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2015 Oracle andor its affiliates. Copyright (c) 2006-2007 Matias Capeletto Copyright Aleksey Gurtovoy 2000-2004 Copyright Peter Dimov 2001-2002 Copyright Aleksey Gurtovoy 2001-2004 Copyright Peter Dimov 2001 Copyright Jaap Suter 2003 Copyright David Abrahams 2001-2002 Copyright Peter Dimov 2001-2003 Copyright Aleksey Gurtovoy 2002-2004 Copyright (c) 2002, 2003 Peter Dimov Copyright Andrey Semashev 2015. Copyright (c) 2016-2017 Vinnie Falco (vinnie dot falco at gmail dot com) Copyright (C) 2017-2019 Niall Douglas <http:www.nedproductions.biz/> Copyright (c) 2014 Paul Fultz II Copyright (c) 2015 Paul Fultz II Copyright (c) 2012 Paul Fultz II Copyright (c) 2016 Paul Fultz II Copyright (C) 1995-2003 Mark Adler Copyright (C) 2003 Chris Anderson <christop@charm.net> Copyright (C) 2007-2008 Steven Watanabe Copyright Gennadiy Rozental 2001. Copyright (c) 2011-2012 Akira Takahashi Copyright (c) 2018 Adeel Ahmad, Islamabad, Pakistan. Copyright Aleksey Gurtovoy 2004-2009 Copyright John Maddock 2003 Copyright John Maddock 2003. Copyright 2017 Peter Dimov. Copyright 2001 John Maddock. Copyright John Maddock 2008 Copyright David Abrahams 2002. Copyright Samuli-Petrus Korhonen 2017. Copyright Jim Bosch 2010-2012. Copyright Stefan Seefeld 2016. Copyright (c) 2001-2003 Daniel Nuffer Copyright (c) 2006 Tobias Schwinger Copyright (c) 1998-2003 Joel de Guzman Copyright (c) 2002-2003 Joel de Guzman Copyright (c) 2002-2003 Juan Carlos Arevalo-Baeza Copyright (c) 2003 Hartmut Kaiser Copyright (c) 2003 Joel de Guzman Copyright (c) 2002 Raghavendra Satish Copyright (c) 2002 Jeff Westfahl Copyright (c) 2003 Martin Wille Copyright (C) 2006 Douglas Gregor <doug.gregor -at- gmail.com> Copyright Alain Miniussi 2014. Copyright (C) 2005-2006 Douglas Gregor <doug.gregor -at- gmail.com>. Copyright (C) 2005, 2006 Douglas Gregor <doug.gregor -at- gmail.com>. Copyright (C) 2016 K. Noel Belcourt <kbelco -at- sandia.gov>. Copyright 2005 Matthias Troyer. Copyright 2006 Douglas Gregor <doug.gregor -at- gmail.com>. Copyright (C) 2006 Douglas Gregor <doug.gregor -at- gmail.com>. Copyright (C) 2018 Alain Miniussi <alain.miniussi -at- oca.eu>. Copyright (C) 2007 Trustees of Indiana University Copyright (C) 2005-2006 Alain Miniussi <alain.miniussi -at- oca.eu>. Copyright (C) 2007 The Trustees of Indiana University. Copyright (C) 2004 The Trustees of Indiana University. Copyright (C) 2005-2006 Douglas Gregor <doug.gregor -at- gmail.com> Copyright 2005 Matthias Troyer Copyright 2006 Douglas Gregor <doug.gregor -at- gmail.com> Copyright 2006 Douglas Gregor <doug.gregor -at gmail.com> Copyright 2019 Sam Day Modifications copyright (c) 2014, Oracle andor its affiliates. Modifications copyright (c) 2017-2018 Oracle andor its affiliates. Modifications copyright (c) 2014-2015 Oracle andor its affiliates. Copyright (c) 2014 Adam Wulkiewicz, Lodz, Poland. Modifications copyright (c) 2017, Oracle andor its affiliates. Modifications copyright (c) 2017 Oracle andor its affiliates. Copyright (c) 2017 Barend Gehrels, Amsterdam, the Netherlands. Modifications copyright (c) 2013-2017 Oracle andor its affiliates. Modifications copyright (c) 2014-2017 Oracle andor its affiliates. Copyright (c) 2017-2018, Oracle andor its affiliates. Modifications copyright (c) 2017, 2019, Oracle andor its affiliates. Copyright (c) 2013-2014 Adam Wulkiewicz, Lodz, Poland. Modifications copyright (c) 2013-2014, Oracle andor its affiliates. Modifications copyright (c) 2015, Oracle andor its affiliates. Copyright (c) 2014-2015 Samuel Debionne, Grenoble, France. Modifications copyright (c) 2013-2017, Oracle andor its affiliates. Copyright (c) 2015 Barend Gehrels, Amsterdam, the Netherlands. Modifications copyright (c) 2014-2015, Oracle andor its affiliates. Copyright (c) 2018, 2019 Oracle andor its affiliates. Copyright (c) 2007-2013 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2008-2013 Bruno Lalande, Paris, France. Copyright (c) 2009-2013 Mateusz Loskot, London, UK. Copyright (c) 2013-2017 Adam Wulkiewicz, Lodz, Poland. Modifications copyright (c) 2015-2019 Oracle andor its affiliates. Copyright (c) 2013-2015 Adam Wulkiewicz, Lodz, Poland. Copyright (c) 2002 Juan Carlos Arevalo-Baeza Copyright (c) 2011 Aaron Graham Copyright (c) 2009 Chris Hoeppler Copyright (c) 2011 Thomas Bernard Copyright (c) 2001-2009 Hartmut Kaiser Copyright (c) 2011 Jamboree Modifications copyright (c) 2013-2019 Oracle andor its affiliates. Modifications copyright (c) 2013-2018 Oracle andor its affiliates. Copyright (c) 2017, 2019 Oracle andor its affiliates. Modifications copyright (c) 2013-2019, Oracle andor its affiliates. Modifications copyright (c) 2013, Oracle andor its affiliates. Copyright (c) 2007-2009: Joachim Faulhaber Copyright (c) 1999-2006: Cortex Software GmbH, Kantstrasse 57, Berlin Copyright Louis Dionne 2013-2016 (C) Copyright Tobias Schwinger (C) Copyright 2007-2009 Andrew Sutton (C) Copyright Andrew Sutton 2007 Copyright (c) 2001-2008 Joel de Guzman Copyright (c) 2001-2008 Hartmut Kaiser Copyright (c) 1998-2008 Joel de Guzman Copyright (c) 2010 Bryce Lelbach Copyright (c) 2001-2012 Joel de Guzman Copyright (c) 2011 Thomas Heller Copyright (c) 2001-2013 Hartmut Kaiser Copyright (c) 2001-2012 Hartmut Kaiser Copyright (c) 2001-2009, Hartmut Kaiser Copyright Vladimir Prus 2004. Copyright 2004 Vladimir Prus Copyright 2017 Rene Rivera Copyright Steven J. Ross 2001 - 2014 Copyright Steven J. Ross 2001 - 2014. Copyright (C) Vladimir Prus 2002. Copyright 2005-2010 Vladimir Prus. Copyright (C) Christopher Currie 2003. Copyright 2006 Rene Rivera Copyright 2001 David Abrahams. Copyright 2002-2006 Rene Rivera. Copyright 2002-2003 Vladimir Prus. Copyright (c) 2005 Reece H. Dunn. Copyright 2006 Ilya Sokolov. Copyright 2007 Roland Schwarz Copyright 2007 Boris Gubenko. Copyright 2008 Steven Watanabe Copyright 2003 Dave Abrahams Copyright 2003 Douglas Gregor Copyright 2002, 2003, 2004, 2005, 2006 Vladimir Prus Copyright (c) 2005 Alexey Pakhunov. Copyright (c) 2011 Juraj Ivancic Copyright 2008, 2010 Vladimir Prus Copyright (c) 2003 David Abrahams. Copyright (c) 2005 Vladimir Prus. Copyright (c) 2006 Bojan Resnik. Copyright (c) 2006 Ilya Sokolov. Copyright (c) 2007 Rene Rivera Copyright (c) 2008 Jurko Gospodnetic Copyright (c) 2005-2010 Vladimir Prus. Copyright (c) 2005, 2010 Vladimir Prus. Copyright 2006 Rene Rivera. Copyright 2006 Ilya Sokolov Copyright (c) 2008 Steven Watanabe Copyright (C) Andre Hentz 2003. Permission to copy, use, modify, sell and Copyright (c) 2006 Rene Rivera. Copyright 2005, 2006 Rene Rivera Copyright 2002, 2003, 2004, 2005, 2006, 2010 Vladimir Prus Copyright 2002, 2003 Rene Rivera Copyright 2002, 2003, 2004, 2005 Vladimir Prus Copyright 2005 Dave Abrahams Copyright 2002, 2003, 2004, 2005, 2010 Vladimir Prus Copyright (c) 2004 Vladimir Prus. Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. Copyright (c) 2011-2014 Adam Wulkiewicz, Lodz, Poland. Copyright (c) 2017 Daniel James Copyright (c) 2013 Daniel James Copyright (c) 2015 Daniel James Copyright (c) 2011 Daniel James Copyright (c) 2012 Daniel James Copyright (c) 2004 Joao Abecasis Copyright (c) 2003 Martin Wille Copyright (c) 2010-2011 Daniel James Copyright (c) 2015 Kyle Lutz <kyle.r.lutz@gmail.com> Copyright (c) 2013-2014 Kyle Lutz <kyle.r.lutz@gmail.com> Copyright (c) 2013 Kyle Lutz <kyle.r.lutz@gmail.com> Copyright 2016 Klemens Morgenstern Copyright 2016 Antony Polukhin. Copyright 2016 Klemens D. Morgenstern. Copyright John Maddock 2014. Copyright Paul A. Bristow 2014. Copyright John Maddock 2006. Copyright Paul A. Bristow 2007. Copyright Paul A. Bristow 2006. Copyright John Maddock 2006, 2007. Copyright Paul A. Bristow 2008, 2010. Copyright Paul A. Bristow 2006. Copyright Nick Thompson 2019. Copyright John Maddock 2007. Copyright Paul A. Bristow 2007, 2010, 2012, 2014. Copyright John Maddock 2010. Copyright Paul A. Bristow 2010. Copyright 2014 Marco Guazzone (marco.guazzone@gmail.com) Copyright 2008 Gautam Sewani Copyright 2008 John Maddock Copyright Thijs van den Berg, 2008. Copyright John Maddock 2008. Copyright Paul A. Bristow 2008, 2014. Copyright Paul A. Bristow 2006, 2007. Copyright Paul A. Bristow 2007, 2009 Copyright Benjamin Sobotta 2012 Copyright Paul A. Bristow 2006, 2012, 2017. Copyright Thomas Mang 2012. Copyright (c) 2001-2014 Joel de Guzman Copyright Oliver Kowalke 2009. Copyright (c) 2010-2012 Barend Gehrels, Amsterdam, the Netherlands. Copyright (C) 2013 Eurodecision Copyright 2004-5 The Trustees of Indiana University. Copyright 2012, Philipp Moeller Copyright Jeremy Siek 1999-2001. Copyright (C) 2006 Trustees of Indiana University Copyright Jeremy Siek, 2001. Copyright (C) 2009 Trustees of Indiana University Copyright (C) Vladimir Prus 2003. Copyright (C) 2003-2009 Matthias Christian Schabel Copyright (C) 2007-2009 Steven Watanabe Copyright (C) 2007-2010 Steven Watanabe Copyright Vladimir Prus 2002-2004. Copyright (C) 2002-2006 Marcin Kalicinski Copyright (C) 2009 Sebastian Redl Copyright (C) 2015 Sebastian Redl Copyright (c) Marshall Clow 2010-2012. Copyright Aleksey Gurtovoy 2000-2008 Copyright (c) Microsoft Corporation 2014 Copyright (c) 2004 Joel de Guzman Copyright 2013 Niall Douglas additions for colors and alignment. Copyright 2013 Paul A. Bristow additions for more colors and alignments. Copyright 2017 Tom Westerhout font fixes to support Sphinx Copyright (c) 2006 Michael Stevens Copyright Nasos Iliopoulos, Gunter Winkler 2009. Copyright Beman Dawes 2003 Copyright Beman Dawes, 2002-2005 Copyright Vladimir Prus, 2002 Copyright Beman Dawes 2002-2009 Copyright Jan Langer 2002 Copyright Dietmar Kuehl 2001 Copyright Vladimir Prus 2002 Copyright Andrey Semashev 2019 Copyright Beman Dawes 2002 Copyright Beman Dawes 2002-2005, 2009 Copyright Beman Dawes 2009 Copyright (c) 2003 Jonathan de Halleux (dehalleux@pelikhan.com) Copyright (c) 2002-2003 Martin Wille Copyright (c) 2001 Bruce Florman Copyright (c) 2003 Giovanni Bajo Copyright Oliver Kowalke Nat Goodspeed 2015. Copyright Oliver Kowalke 2013. Copyright Oliver Kowalke 2015. Copyright 2008-10 Anthony Williams Copyright 2015 Oliver Kowalke Copyright (C) 2001-2003 Copyright (C) 2007 Anthony Williams Copyright (C) 2008-2018 Lorenzo Caminiti Copyright John Maddock 2011. Copyright John Maddock 2012. Copyright 2011 Steven Watanabe Copyright 2015 Steven Watanabe Copyright 2011-2012 Steven Watanabe Copyright 2012 Steven Watanabe Copyright 2012-2013 Steven Watanabe Copyright (c) Henrik Ravn 2004 Copyright Barend Gehrels 2010, Geodan, Amsterdam, the Netherlands Copyright (c) 2018 Jakub Szuppe <j.szuppe@gmail.com> Copyright (c) 2016 Jakub Szuppe <j.szuppe@gmail.com> Copyright (c) 2013-2015 Kyle Lutz <kyle.r.lutz@gmail.com> Copyright (c) 2018 Emil Dotchevski. Distributed under the [Boost Software License, Version 1.0](http:www.boost.org/LICENSE10.txt). Copyright (c) 1998-2002 Copyright (c) 2009 Ion Gaztanaga Copyright (c) 2012-2013 Adam Wulkiewicz, Lodz, Poland. Copyright (c) 2012-2014 Adam Wulkiewicz, Lodz, Poland. Copyright (c) 2012-2013 Andrew Hundt. Copyright Ion Gaztanaga 2007-2013. Distributed under the Boost Copyright Ion Gaztanaga 2013-2013. Distributed under the Boost Copyright Ion Gaztanaga 2013-2014. Distributed under the Boost Copyright 2011-2013 Andrew Hundt <ATHundt@gmail.com> Copyright 2013-2013 Ion Gaztanaga Copyright (c) 2011-2013 Andrew Hundt. Copyright (c) 2014-2014 Ion Gaztanaga Copyright Andrey Semashev 2016. Copyright Andrey Semashev 2007 - 2018. Copyright 2019 Mike Dev Copyright (c) 2017 Andrey Semashev Copyright (c) 2018 Andrey Semashev Copyright 2004 Aleksey Gurtovoy Copyright 2003 Beman Dawes Copyright 2005 Eric Niebler Copyright 2005 Hartmut Kaiser Copyright 2004 John Maddock Copyright (c) 2015 John Fletcher Copyright (c) 2010-2011 Thomas Heller Copyright (c) 2005-2011 Joel de Guzman Copyright (c) 2014 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2013 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2007-2008 Steven Watanabe Copyright (c) 2009 Christopher Schmidt Copyright (c) 2011 Eric Niebler Copyright Douglas Gregor 2001-2004. Copyright Frank Mori Hess 2009. Copyright Keith MacDonald 2005. Copyright 2003-2004 Joaquín M López Muñoz. Copyright David Abrahams 2004. Copyright David Abrahams 2006. Copyright 2017 - 2019 James E. King, III. Copyright 2012 Christian Henning, Andreas Pokorny, Lubomir Bourdev Copyright 2010 Fabien Castan, Christian Henning Copyright Gennadiy Rozental 2011-2015. Copyright Gennadiy Rozental 2001-2015. Copyright Gennadiy Rozental 2015. Copyright Marek Kurdej 2014. Copyright Paul A. Bristow 2013 Copyright Christopher Kormanyos 2013. Copyright Raffi Enficiaud 2019 Copyright Raffi Enficiaud 2017. Copyright Tony Lewis 2016. Copyright Raffi Enficiaud, 2019 Copyright Raffi Enficiaud 2015 Copyright 2018 Paul Fultz II Copyright Douglas Gregor 2002-2003. Copyright Douglas Gregor 2001-2006 Copyright Emil Dotchevski 2007 Copyright (C) Douglas Gregor 2008 Copyright (c) 2024 John Fletcher Copyright (C) 2009-2012 Lorenzo Caminiti Copyright Beman Dawes 2003, 2006, 2008 Copyright 2010 Howard Hinnant Copyright 2009-2010 Vicente J. Botet Escriba Copyright (c) 2002-2003 Beman Dawes, William E. Kempf. Copyright Jason Rice 2017 Copyright 2001, 2003, 2004 Daryle Walker. Copyright 2011 Daryle Walker. Copyright 2006 - 2010 John Maddock and Paul A. Bristow. Copyright (C) 2003, 2012, 2013 Mark Adler Copyright 2018 James E. King III. Use, modification and Copyright 2009-2013 Karsten Ahnert Copyright 2009-2013 Mario Mulansky Copyright 2011-2013 Karsten Ahnert Copyright 2011-2015 Mario Mulansky Copyright 2012 Christoph Koke Copyright 2012-2015 Mario Mulansky Copyright (c) 2001-2009 Daniel Nuffer Copyright Beman Dawes 2008 Copyright 2009 Howard Hinnant Copyright Beman Dawes 2006, 2008 Copyright 20092010 Vicente J. Botet Escriba Copyright Andrey Semashev 2019. Copyright (c) 2017 Francisco José Tapia (fjtapia@gmail.com ) Copyright (c) 2016 Francisco José Tapia (fjtapia@gmail.com ) Copyright Christopher Kormanyos 2014. Copyright Paul Bristow 2014. Modifications copyright (c) 2014-2018, Oracle andor its affiliates. Modifications copyright (c) 2015-2018, Oracle andor its affiliates. Copyright (c) 2010 Eric Niebler Copyright (c) 2014-2015 John Fletcher Copyright (c) 2016 Kohei Takahashi Copyright (c) 2006 Daniel Wallin Copyright (c) 2005 Dan Marsden Copyright (c) 2007 Joel de Guzman Copyright (c) 2005-2008 Hartmut Kaiser Copyright (C) 2004-2006 The Trustees of Indiana University. Copyright (C) 2007 Douglas Gregor <doug.gregor@gmail.com> Copyright (C) 2007 Matthias Troyer <troyer@boost-consulting.com> Copyright Daniel James 2005-2009 Copyright Steven Ross 2014. Use, modification and Copyright Steven Ross 2009-2014. Use, modification and Copyright Steven Ross 2009. Use, modification and Copyright (c) 2016 Francisco Jose Tapia (fjtapia@gmail.com ) Copyright Orson Peters 2017. Use, modification and Copyright 2015 John Maddock and Paul A. Bristow. Copyright (c) 2010-2010: Joachim Faulhaber Copyright (c) 2011-2011: Joachim Faulhaber Copyright Neil Groves 2009. Use, modification and Copyright Neil Groves 2010. Use, modification and Copyright (c) 2003 Thomas Witt Copyright (c) 2001, Daniel C. Nuffer Copyright (c) 2003, Hartmut Kaiser Copyright (c) 2002-2006 Hartmut Kaiser Copyright (c) 2019 Mateusz Loskot <mateusz at loskot dot net> Copyright 2018 Mateusz Loskot <mateusz at loskot dot net> Copyright 2019 Mateusz Loskot <mateusz at loskot dot net> Copyright (c) 2005-2012 Joel de Guzman Copyright (c) 2005-2013 Joel de Guzman Copyright (c) 2005-2007 Dan Marsden Copyright 2014 Renato Tegon Forti, Antony Polukhin. Copyright 2015-2019 Antony Polukhin. Copyright (c) 2001-2003 Dan Nuffer Copyright (c) 2003 Pavel Baranov Copyright (c) 2003 Martin Wille Copyright (c) 2003 2003 Vaclav Vesely Copyright (c) 2007 Hartmut Kaiser Copyright (c) 2005 Joao Abecasis Copyright (c) 2004 Martin Wille Copyright (c) 2004 Stefan Slapeta Copyright (c) 2006 Joao Abecasis Copyright (c) 2004 Hartmut Kaiser Copyright (c) 2002-2004 Martin Wille Copyright (c) 2019 Nikita Kniazev Copyright (c) 2004 Chris Hoeppler Copyright (c) 2005 Jordan DeLong Copyright (C) 2003 Martin Wille Copyright (c) 2004 Vyacheslav E. Andrejev Copyrigh (c) 2003 Martin Wille Copyright (c) 2004 Angus Leeming Copyright (c) 2017 Nikita Kniazev Copyright (c) 2001-2007 Hartmut Kaiser Copyright Ion Gaztanaga 2006-2013 Copyright Ion Gaztanaga 2008-2013 Copyright Ion Gaztanaga 2007-2013 Copyright Ion Gaztanaga 2007-2013 Copyright Ion Gaztanaga 2006-2014 Copyright Ion Gaztanaga 2010-2013 Copyright Ion Gaztanaga 2015-2015 Copyright Ion Gaztanaga 2009-2013 Copyright 2002 The Trustees of Indiana University. Copyright 2019 Glen Joseph Fernandes Copyright 2007 The Trustees of Indiana University. Copyright 2010-2011 Mario Mulansky Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc. Copyright 2013 Karsten Ahnert Copyright 2013 Mario Mulansky Copyright 2010-2012 Karsten Ahnert Copyright 2011 Mario Mulansky Copyright 2010 Mario Mulansky Modifications copyright (c) 2015-2017 Oracle andor its affiliates. Copyright (c) 2007-2016 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2008-2016 Bruno Lalande, Paris, France. Copyright (c) 2009-2016 Mateusz Loskot, London, UK. Modifications copyright (c) 2016-2017, Oracle andor its affiliates. Copyright (c) 2017, Oracle andor its affiliates. Copyright (c) 2017-2019, Oracle andor its affiliates. Modifications copyright (c) 2016, Oracle andor its affiliates. Copyright (C) 1995-2013 Jean-loup Gailly and Mark Adler Copyright Frank Mori Hess 2008 Copyright Frank Mori Hess 2019 Copyright (C) Douglas Gregor 2001-2006. Use, modification and Copyright Frank Mori Hess 2007-2008. Copyright Douglas Gregor 2001-2003. Copyright Frank Mori Hess 2009 Copyright Douglas Gregor 2002-2004. Use, modification and Copyright Douglas Gregor 2001-2003. Use, modification and Copyright Frank Mori Hess 2008-2009. Copyright Douglas Gregor 2001-2006. Copyright Frank Mori Hess 2007 Copyright 2007-2008 Andreas Pokorny, Christian Henning Copyright 2008 Christian Henning, Lubomir Bourdev Copyright 2009 Christian Henning Copyright 2007-2012 Christian Henning, Lubomir Bourdev Copyright 2012 Christian Henning Copyright 2007-2008 Christian Henning, Andreas Pokorny, Lubomir Bourdev Copyright 2019 Peter Dimov Copyright 2018 Peter Dimov Copyright 2015, 2017 Peter Dimov. Copyright 2015 Peter Dimov. Copyright 2017, 2019 Peter Dimov. Copyright 2015, 2016 Peter Dimov. Copyright 2015, 2016, 2017 Peter Dimov. Copyright 2015-2017 Peter Dimov. Copyright 2015, 2016, 2019 Peter Dimov. Copyright 2019 Peter Dimov. Copyright 2015, 2019 Peter Dimov Copyright 2015, 2017, 2019 Peter Dimov. Copyright 2016 Peter Dimov. Copyright 2016, 2017 Peter Dimov. Copyright 2018 Glen Joseph Fernandes Copyright 2012 Beman Daves Copyright 2009-2012 Karsten Ahnert Copyright 2009-2012 Mario Mulansky Copyright 2010-2012 Mario Mulansky Copyright 2010-2011 Karsten Ahnert Copyright 2013 Pascal Germroth Copyright 2014 LRI UMR 8623 CNRSUniv Paris Sud XI Copyright 2014 NumScale SAS Copyright 2010-2013 Mario Mulansky Copyright (c) 2018 Stefan Seefeld Copyright 2018, 2019 Peter Dimov Copyright (c) 2010 Tim Blechmann Copyright (c) 2005-2007 Hartmut Kaiser Copyright 2007, 2009 Tim Blechmann Copyright Charly Chevalier 2015 Copyright Joel Falcou 2015 Copyright (c) 2010 Alfredo Correa Copyright Akira Takahashi 2011 Copyright (c) 2019 Barend Gehrels, Amsterdam, the Netherlands. Modifications copyright (c) 2019, Oracle andor its affiliates. Copyright (c) 2002-2003 William E. Kempf. Copyright 2017 James E. King III Copyright Peter Dimov and Multi Media Ltd. 2001, 2002, 2003 Copyright Ion Gaztanaga 2006. Copyright Peter Dimov 2004-2005 Copyright Ion Gaztanaga 2006-2012. Copyright Ion Gaztanaga 2007-2012. Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd. Copyright 2004-2005 Peter Dimov Copyright 2007-2012 Ion Gaztanaga Copyright 2006 Ion Gaztanaga Copyright 2018 Rene Rivera Copyright 2018 Mike Dev Copyright (c) 2014 Rene Rivera Copyright 2002-2006 Andreas Huber Doenni Copyright (C) 2012 Vicente J. Botet Escriba Copyright (c) 2018 Kohei Takahashi Copyright (c) 2018-2019, Cem Bassoy, cem.bassoy@gmail.com Copyright (c) 2018, Cem Bassoy, cem.bassoy@gmail.com Copyright (c) 2018-2019 Copyright Abel Sinkovics (abel@sinkovics.hu) 2016. Copyright 2018 Peter Dimov. Copyright (c) 2008-2009 Ben Hanson Copyright (c) 2008-2011 Hartmut Kaiser Copyright (c) 2014 Joel de Guzman Copyright 2005-2007 Jonathan Turkanis Copyright (c) 2011 David Bellot Copyright (c) 2000-2002 Copyright (c) 2004 Michael Stevens Copyright (c) 2000-2011 Joerg Walter, Mathias Koch, David Bellot Copyright (c) 2009-2011 Gunter Winkler, David Bellot Copyright (c) 2010 Athanasios Iliopoulos Copyright 2010 Gunter Winkler <guwi17@gmx.de> Copyright 2008 Gunter Winkler <guwi17@gmx.de> Copyright (c) 2013 Joaquim Duran Copyright (c) 2012, Marco Guazzone Copyright (c) 2009-2012, Marco Guazzone Copyright (c) 2001 Samuel Krempp Copyright Aleksey Gurtovoy 2003-2004 Copyright (c) 2001-2015 Joel de Guzman Modifications copyright (c) 2013-2016, Oracle andor its affiliates. Modifications copyright (c) 2013-2015, Oracle andor its affiliates. Copyright (c) 2016 Oracle andor its affiliates. Copyright (C) 2007, 2008, 2012 Mark Adler Copyright (C) 2003, 2005, 2008, 2010, 2012 Mark Adler Copyright (C) 2003, 2012 Mark Adler, all rights reserved Copyright (C) 2004, 2005, 2012 Mark Adler, all rights reserved Copyright (C) 2004, 2008, 2012, 2016 Mark Adler, all rights reserved Copyright (C) 2004, 2008, 2012 Mark Adler, all rights reserved Copyright (C) 2005, 2012 Mark Adler Copyright Beman Dawes 2002. Distributed under the Boost Copyright (C) 2017 Tom Hughes Copyright (c) 2011 Hartmut Kaiser Copyright 2016 Peter Dimov Copyright (c) 2008 Peter Dimov Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd. Copyright (c) 2001 David Abrahams Copyright (c) 2004 Peter Dimov Copyright (c) 2005 Peter Dimov Copyright (c) 2004, 2005, 2009 Peter Dimov Copyright (c) 2004, 2005 Peter Dimov Copyright (c) 2005, 2008 Peter Dimov Copyright (c) 2015 Peter Dimov Copyright (C) Markus Schoepflin 2005. Copyright (c) 2016 Peter Dimov Copyright 2017 Peter Dimov Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. Copyright (c) 2006 Peter Dimov Copyright (c) 2009 Peter Dimov Copyright (c) 2006 Douglas Gregor <doug.gregor@gmail.com> Copyright (c) 2014 Agustin Berge Copyright (c) 2001 Peter Dimov and Multi Media Ltd. Copyright 2015 Peter Dimov Copyright (c) 2009 Steven Watanabe Copyright (c) 2018 Mateusz Loskot <mateusz at loskot dot net> Copyright (c) 2018 Mateusz Loskot <mateusz@loskot.net> Copyright (c) 2007-2015 Andrey Semashev Copyright (c) 2003 Vladimir Prus Copyright (c) 2007 Tobias Schwinger Copyright Louis Dionne 2015 Modified Work Copyright Barrett Adair 2015-2017 Copyright 2015-2016 Barrett Adair Copyright Barrett Adair 2016-2017 Copyright 2006 Vladimir Prus Copyright (C) 2013 Vicente J. Botet Escriba Copyright (C) 2014 Vicente J. Botet Escriba Copyright (C) 2013-2014 Vicente J. Botet Escriba Copyright (c) 2016-2017 Oracle andor its affiliates. Copyright (c) 2012-2014 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2016-2018 Oracle andor its affiliates. Copyright (c) 2018 Oracle andor its affiliates. Copyright (c) 2016-2017, Oracle andor its affiliates. Modifications copyright (c) 2015-2016 Oracle andor its affiliates. Copyright (c) 2018, Oracle andor its affiliates. Copyright (c) 2015-2018, Oracle andor its affiliates. Copyright (c) 2006, 2007 Julio M. Merino Vidal Copyright (c) 2008 Ilya Sokolov, Boris Schaeling Copyright (c) 2009 Boris Schaeling Copyright (c) 2010 Felipe Tanus, Boris Schaeling Copyright (c) 2011, 2012 Jeff Flinn, Boris Schaeling Copyright (c) 2016 Klemens D. Morgenstern Copyright (c) 2019 Klemens D. Morgenstern Copyright (c) 2008 Beman Dawes Copyright Neil Groves 2011. Use, modification and distribution is subject Copyright 2017-2019 Peter Dimov Copyright (c) 2009 Hartmut Kaiser Copyright 2007-2008 Christian Henning Copyright (C) 1995-2008 Mark Adler Copyright (C) 2003 Mark Adler Copyright (C) 1995-2017 Mark Adler Copyright Rene Rivera 2008-2015 Copyright Rene Rivera 2008-2017 Copyright Benjamin Worpitz 2018 Copyright Louis Dionne 2015 Copyright (c) 2006-2010 Emil Dotchevski and Reverge Studios, Inc. Copyright (C) 2017-2019 Niall Douglas <http:www.nedproductions.biz/>and Andrzej Krzemieński <akrzemi1@gmail.com> Copyright Oliver Kowalke 2017. Copyright 2018 Andrey Semashev Copyright 2014 Daniel James. Copyright David Abrahams 2004. Copyright 2005-2009 Daniel James. Copyright 2010 Daniel James. Copyright 2011 Daniel James. Copyright Andreas Huber Doenni 2002-2005, Eric Niebler 2006 Copyright 2007 David Jenkins. Copyright 2007 Eric Niebler. Copyright Aleksey Gurtovoy 2000-2006 Copyright David Abrahams 2003-2004 Copyright Aleksey Gurtovoy 2004 Copyright Aleksey Gurtovoy 2000-2009 Copyright Eric Niebler 2008 Copyright Eric Friedman 2002 Copyright Aleksey Gurtovoy 2000-2002 Copyright Sergey Krivonos 2017 Copyright Aleksey Gurtovoy 2002-2006 Copyright David Abrahams 2002-2003 Copyright Daniel Walker 2007 Copyright Eric Friedman 2003 Copyright David Abrahams 2004 Copyright Eric Friedman 2002-2003 Copyright David Abrahams 2003 Copyright John R. Bandela 2000-2002 Copyright Dave Abrahams 2001-2002 Copyright Aleksey Gurtovoy 2000-2003 Copyright Eric Niebler 2009 Copyright Aleksey Gurtovoy 2000-2010 Copyright David Abrahams 2000-2002 Copyright 2017 Valentin Noah Hartmann Copyright (C) 2005, 2006 Douglas Gregor. Copyright (C) 2006 The Trustees of Indiana University Copyright (C) 2010 Bryce Lelbach Copyright 2018-2019 Rene Rivera Copyright 2013 John Maddock. Distributed under the Boost Copyright (c) Alexander Zaitsev <zamazan4ik@gmail.com>, 2017 Copyright Jesse Williamson 2009 Copyright (c) Marshall Clow 2012. Copyright (c) Marshall Clow 2011-2012. Copyright (c) Marshall Clow 2013. Copyright (c) T. Zachary Laine 2018. Copyright (c) Alexander Zaitsev <zamazan4ik@gmail.com>, 2016 Copyright (c) Marshall Clow 2011-2012, Alexander Zaitsev <zamazan4ik@gmail.com>, 2017. Copyright (c) Marshall Clow 2008-2012. Copyright (c) 2010 Nuovation System Designs, LLC Copyright (c) Marshall Clow 2014. Copyright (c) 1999-2003 Jaakko Jarvi Copyright 2005-2007 Adobe Systems Incorporated Copyright Daniel Wallin 2006. Copyright (c) 2009-2010 Christopher Schmidt Copyright (c) 2015 Kohei Takahashi Copyright Daniel James 2013-2018 Copyright (c) 2011 Bryce Lelbach Copyright (c) 2010-2011 Bryce Lelbach Copyright (c) 2015 Artyom Beilis (Tonkikh) Copyright (c) 2010 Artyom Beilis (Tonkikh) Copyright 2009 Vladimir Prus Copyright (c) 2001-2010 Hartmut Kaiser. Copyright Nick Thompson, 2017 Copyright Nick Thompson, 2019 Copyright Nick Thompson 2019. Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek Copyright (c) 2003-2006, 2008 Gennaro Prota Copyright (c) 2014 Ahmed Charles Copyright (c) 2014 Glen Joseph Fernandes Copyright (c) 2014 Riccardo Marcangelo Copyright (c) 2018 Evgeny Shulgin Copyright (c) 2015 Seth Heeren Copyright 2008 Intel Corporation Copyright Andrii Sydorchuk 2010-2012. Copyright 2018 John Maddock. Copyright Christopher Kormanyos 2002 - 2013. Copyright 2011 -2013 John Maddock. Copyright 2012 John Maddock. Copyright 2011 John Maddock. Copyright Jens Maurer 2006-1011 Copyright Steven Watanabe 2011 Copyright Ion Gaztanaga 2005-2012. Copyright Peter Dimov 2008. Copyright Oliver Kowalke 2014. Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler. Copyright (C) 1998 by Bob Dellaca. Copyright (C) 2003 by Cosmin Truta. Copyright (C) 1995-2003 by Jean-loup Gailly. Copyright (C) 1998,1999,2000 by Jacques Nomssi Nzali. Copyright (c) 2013-2017 Vinnie Falco (vinnie dot falco at gmail dot com) Modifications copyright (c) 2014 Oracle andor its affiliates. Copyright (c) 2017 Oracle andor its affiliates. Copyright (c) 2019 Oracle andor its affiliates. Copyright (c) 2019 Tinko Bartels Copyright (c) 2016-2018, Oracle andor its affiliates. Copyright (c) 2016, Oracle andor its affiliates. Copyright (c) 2011-2015 Barend Gehrels, Amsterdam, the Netherlands. Modifications copyright (c) 2014, 2019 Oracle andor its affiliates. Modifications copyright (c) 2014-2016 Oracle andor its affiliates. Copyright 2004-2007 Jonathan Turkanis Copyright (c) 2008-2010: Joachim Faulhaber Copyright (c) 2010-2011: Joachim Faulhaber Copyright (c) 2008-2011: Joachim Faulhaber Copyright Paul Mensonides 2002-2011. Copyright Edward Diener 2011. Copyright Paul Mensonides 2011. Copyright Daryle Walker 2001, 2006. Copyright Nick Thompson 2018. Copyright John Maddock 2017. Copyright John Maddock 2009. Copyright Daryle Walker 2001. Copyright Beman Dawes 1999. Copyright Daryle Walker 2001. Copyright (C) 1995-2006, 2011, 2016 Jean-loup Gailly Copyright (C) 2011, 2016 Mark Adler Copyright (C) 1995-2006, 2010, 2011, 2016 Jean-loup Gailly Copyright 2007-2008 Christian Henning, Andreas Pokorny Copyright 2007-2012 Christian Henning, Andreas Pokorny Copyright 2007-2012 Christian Henning, Andreas Pokorny, Lubomir Bourdev Copyright Samuel Krempp 2003. Copyright (c) 2014, 2019, Oracle andor its affiliates. Copyright Daniel K. O. 2005. Copyright Ion Gaztanaga 2007-2014 Copyright Ion Gaztanaga 2013-2014 Copyright Ion Gaztanaga 2007-2014 Copyright Olaf Krzikalla 2004-2006. Copyright Ion Gaztanaga 2006-2015 Copyright Ion Gaztanaga 2013-2013 Copyright Ion Gaztanaga 2010-2013 Copyright Ion Gaztanaga 2014-2014. Copyright Pablo Halpern 2009. Copyright Ion Gaztanaga 2011-2014. Copyright Ion Gaztanaga 2008 Copyright Ion Gaztanaga 2006-2014. Copyright (c) 2004 Ralf Mattethat Copyright Ion Gaztanaga 2008-2013 Copyright Fernando Luis Cacciola Carballal 2000-2004 Copyright Beman Dawes, Dave Abrahams 1999. Copyright (C) 2003, Fernando Luis Cacciola Carballal. Copyright (C) 2005, Fernando Luis Cacciola Carballal. Copyright (c) 2012 Robert Ramey Copyright (c) 2015 Robert Ramey Copyright (c) 2019 Robert Ramey Copyright (c) 2017 Robert Ramey Copyright (c) 2018 Robert Ramey Copyright (c) 2014 Robert Ramey Copyright Paul Moore 1999. Copyright (c) 2019Robert Ramey Copyright 2003-2013 Joaquin M Lopez Munoz. Copyright 2003-2018 Joaquin M Lopez Munoz. Copyright 2003-2016 Joaquin M Lopez Munoz. Copyright 2003-2014 Joaquin M Lopez Munoz. Copyright 2003-2019 Joaquin M Lopez Munoz. Copyright 2003-2008 Joaquin M Lopez Munoz. Copyright 2003-2015 Joaquin M Lopez Munoz. Copyright 2003-2017 Joaquin M Lopez Munoz. Modifications copyright (c) 2019 Oracle andor its affiliates. Copyright (c) 2011-2018 Adam Wulkiewicz, Lodz, Poland. Copyright (c) 2011-2017 Adam Wulkiewicz, Lodz, Poland. Copyright (c) 2008 Federico J. Fernandez. Copyright (C) 2010 Tim Blechmann Copyright (C) 2011 Tim Blechmann Copyright (c) 2014 Christoph Weiss Copyright (c) 2003 Institute of Transport Copyright 2017-2018 Steven Watanabe Copyright 2017 Steven Watanabe Copyright 2018 Steven Watanabe Copyright (c) 2017 Steven Watanabe Copyright 2019 Hans Dembinski Copyright 2015-2018 Hans Dembinski Copyright 2018-2019 Hans Dembinski Copyright 2015-2019 Hans Dembinski Copyright Ion Gaztanaga 2006-2012 Copyright Markus Schoepflin 2007 Copyright Bryce Lelbach 2010 Copyright Ion Gaztanaga 2012-2012. Copyright Ion Gaztanaga 2009-2012. Copyright Ion Gaztanaga 2007-2012. Copyright Stephen Cleary 2000. Copyright Ion Gaztanaga 2005-2012. Copyright Ion Gaztanaga 2010-2012. Copyright Ion Gaztanaga 2005-2016. Copyright Ion Gaztanaga 2014-2015. Copyright Ion Gaztanaga 2005-2013. Copyright (c) 2002 Peter Dimov and Multi Media Ltd. Copyright Gennaro Prota 2003 - 2004. Copyright Ion Gaztanaga 2010-2012. Copyright Ion Gaztanaga 2007-2014. Copyright Ion Gaztanaga 2005-2015. Copyright John Maddock 2000. Copyright Ion Gaztanaga 2008-2012. (C) Copyright Ion Gaztanaga 2005-2015. (C) Copyright 2002 Robert Ramey - http:www.rrsd.com . (C) Copyright 2002-4 Robert Ramey - http:www.rrsd.com . (C) Copyright 2018 Robert Ramey - http:www.rrsd.com . (C) Copyright 2018Robert Ramey - http:www.rrsd.com . (C) Copyright 2018 Alexander Grund (C) Copyright 2009 Brian Ravnsgaard and Kenneth Riddile (C) Copyright 2009 Robert Ramey (C) Copyright 2005 Matthias Troyer . (C) Copyright 2002 Vahan Margaryan. (C) Copyright 2002-2009 Vladimir Prus and Robert Ramey. (C) Copyright 2002-2009 Vladimir Prus, Robert Ramey and Takatoshi Kondo. (C) Copyright 2008 Joaquin M Lopez Munoz. (C) Copyright 2014 Jim Bell (C) Copyright 2009 Robert Ramey. (C) Copyright 2002 Martin Ecker. (C) Copyright 2004 Pavel Vozenilek (C) Copyright 2009 Robert Ramey - http:www.rrsd.com . (C) Copyright 2009 Eric Moyer - http:www.rrsd.com . (C) Copyright 2002 Robert Ramey- http:www.rrsd.com - David Tonge . (C) Copyright 2002 Robert Ramey- http:www.rrsd.com and Takatoshi Kondo. (C) Copyright Jonathan Turkanis 2004. (C) Copyright 2016 Ashish Sadanandan (C) Copyright 2002-14 Robert Ramey - http:www.rrsd.com . Copyright (C) 2006 Marcin Kalicinski Copyright (c) 2005-2006 Joao Abecasis Copyright Nat Goodspeed 2013. Copyright (C) 2016-2018 T. Zachary Laine Copyright (c) 2011 Helge Bahmann Copyright (c) 2013-2014 Andrey Semashev Copyright David Abrahams 2001. Copyright Stefan Seefeld 2005. Copyright David Abrahams 2000. Copyright (c) 2004 Jonathan Brandmeyer Copyright David Abrahams 2004. Copyright Klemens Morgenstern, 2012-2015. Copyright 2012-2019 Antony Polukhin. Copyright (c) 2012-2019 Antony Polukhin. Copyright Antony Polukhin, 2018. Copyright Chris Glover, 2016. Copyright (C) 2008 Jurko Gospodnetic Copyright (C) 2016 Edward Diener Copyright (C) 2011 John Maddock Copyright (C) 2011 Kwan Ting Chan Copyright (C) 2000, 2001 Stephen Cleary Copyright (c) 2012-2014 Torstein Honsi Copyright (c) 2010-2014 Torstein Honsi Copyright (c) 2009-2014 Torstein Honsi Copyright (C) 2010-2011 Tim Blechmann Copyright 2010 Andy Tompkins. Copyright (c) 2017, 2018 James E. King III Copyright 2006 Andy Tompkins. Copyright (c) 2018 James E. King III Copyright 2009 Andy Tompkins. Copyright 2007 Andy Tompkins. Copyright Ankit Daftery 2011-2012. Copyright 2011 Stefan Seefeld. Copyright Jim Bosch 2011-2012. Copyright (c) 2017 Mateusz Loskot <mateusz at loskot dot net> Copyright 2019 Miral Shah <miralshah2211@gmail.com> Copyright 2019 Pranam Lashkari <plashkari628@gmail.com> Copyright Steven J. Ross 2001 - 2009. Copyright 1998-2002 John Maddock Copyright (c) 2011 Copyright Lingxi Li 2015. Copyright Steven Watanabe 2010 Copyright Justinas Vygintas Daugmaudis, 2010. Copyright John Maddock 2015 Copyright Justinas Vygintas Daugmaudis, 2010-2018. Copyright Jens Maurer 2000, 2002 Copyright Steven Watanabe 2014 Copyright Marco Guazzone 2014 Copyright Thijs van den Berg 2014 Copyright (c) 2010 Steven Watanabe Copyright Thorsten Ottosen 2003-2008. Copyright (c) 2008-2012 Barend Gehrels, Amsterdam, the Netherlands. Modifications copyright (c) 2017-2018, Oracle andor its affiliates. Modifications copyright (c) 2018, 2019, Oracle andor its affiliates. Copyright Jim Bosch & Ankit Daftery 2010-2012. Copyright (c) 2001-2006 CrystalClear Software, Inc. Copyright &169; 2002 CrystalClear Software, Inc. Copyright (c) 2002-2006 CrystalClear Software, Inc. Copyright (c) 2004-2005 CrystalClear Software, Inc. Copyright 2005 The Trustees of Indiana University. Copyright 2012, Trustees of Indiana University Copyright Jeremy Siek 2001. Copyright 2005 David Abrahams and Aleksey Gurtovoy. Distributed Copyright (c) 2001 Peter Dimov Copyright (c) 2002 Peter Dimov Copyright (c) 2005 Markus Schoepflin Copyright Aleksey Gurtovoy 2001-2006 Copyright Peter Dimov 2000-2002 Copyright (c) 2002-2003 Eric Friedman Copyright (c) 2014-2019 Antony Polukhin Copyright (c) 2002-2003 Copyright (c) 2003 Eric Friedman Copyright (c) 2016-2019 Antony Polukhin Copyright (c) 2015-2019 Antony Polukhin Copyright (c) 2011-2019 Antony Polukhin Copyright (c) 2002-2003 Eric Friedman, Itay Maman Copyright (c) 2013-2019 Antony Polukhin Copyright (c) 2002 by Andrei Alexandrescu Copyright Antony Polukhin, 2013-2014. Copyright (C) 2002 David Abrahams Copyright (c) 2018-2019 Antony Polukhin Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi) Copyright (C) 2000-2003 Gary Powell (powellg@amazon.com) Copyright (C) 2010 Steven Watanabe Copyright (c) 2007 Peter Dimov Copyright (C) 2009 Steven Watanabe Copyright John Maddock 2015. Copyright 2003, 2005 Dave Abrahams Copyright 2003, 2004, 2005, 2006, 2007 Vladimir Prus Copyright Pedro Ferreira 2005. Copyright 1963-1965 Jane Doe, 2018 Joe Blow, John Coe Copyright 1977,1985 Someone else Copyright Aleksey Gurtovoy 2004-2008 Copyright (c) 2014 John Fletcher Copyright Thorsten Ottosen 2003-2005. (C) Copyright Jonathan Turkanis 2004-2005. (C) Copyright Thorsten Ottosen 2005 (C) Copyright Howard Hinnant 2004 (C) Copyright Jonathan Turkanis 2004 Copyright Thorsten Ottosen 2008. (C) Copyright Daniel Wallin 2004. Copyright Sebastian Ramacher, 2007. Copyright Thorsten Ottosen 2003-2007. (C) Copyright Thorsten Ottosen 2005. Copyright Thorsten Ottosen 2006. Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc. Copyright 2001-2006 David Abrahams. Copyright 2003-2006 Vladimir Prus. Copyright Daniel Wallin 2006. (C) Copyright Jeremy Siek 2000. (C) Copyright Jeremy Siek, David Abrahams 2000-2006. Copyright Jeremy Siek, David Abrahams 2000-2006. (C) Copyright Jeremy Siek 2000-2002. Copyright 2008 Adobe Systems Incorporated Copyright (c) Alexander Zaitsev <zamazan4ik@gmail.by>, 2017. (C) Copyright Herve Bronnimann 2004. Copyright Pavol Droba 2002-2004. Copyright (c) 2008 Copyright (c) 2018-2019, Oracle andor its affiliates. Modifications copyright (c) 2014-2018 Oracle andor its affiliates. Copyright 2014 Agustin Berge Copyright 2001, 2003 Daryle Walker. Copyright (c) 2006, 2007 Matthew Calabrese Copyright 2010, Niels Dekker. Copyright Jeremy Siek 1999. Copyright Beman Dawes 1999. Copyright Douglas Gregor 2003-2004. Copyright (c) Marshall Clow 2012-2012. Copyright Andrey Semashev 2013. Copyright (c) Marshall Clow 2017-2017. Copyright 2002-2008, Fernando Luis Cacciola Carballal. Copyright 2002, Fernando Luis Cacciola Carballal. Copyright Thorsten Ottosen 2003-2004. Copyright Eric Niebler 2004. Copyright Shunsuke Sogame 2005-2006. Copyright Neil Groves 2014. Copyright Neil Groves 2014 Copyright Thorsten Ottosen & Larry Evans 2003-2005. Copyright Akira Takahashi 2013. Copyright Neil Groves 2011. Copyright (C) 2015 Vicente J. Botet Escriba Copyright (c) Aleksey Gurtovoy 2001-2009 Copyright 2005 Eric Niebler. Copyright Nat Goodspeed 2015. Copyright Nat Goodspeed 2014. Copyright Nat Goodspeed + Oliver Kowalke 2015. Copyright Edward Diener 2014. Copyright Raffi Enficiaud 2014. Copyright 2015-2017 Hans Dembinski Copyright 2018 Hans Dembinski Modifications copyright (c) 2013-2015 Oracle andor its affiliates. Copyright (c) 2018 Adam Wulkiewicz, Lodz, Poland. Copyright (C) 2012 Lorenzo Caminiti Copyright 2008-2009 Daniel James. Copyright 2006-2009 Daniel James. Copyright 2005-2010 Daniel James. Copyright 2012 Daniel James. Copyright 2009 Daniel James. Copyright Beman Dawes 2014 Copyright Beman Dawes, 2006 Copyright Beman Dawes 2013 Copyright (c) 2009, Marco Guazzone Copyright (c) 2009, Gunter Winkler Modifications copyright (c) 2014-2017, Oracle andor its affiliates. Copyright (c) 2014-2018, Oracle andor its affiliates. Copyright (c) 2018 Barend Gehrels, Amsterdam, the Netherlands. Copyright (C) 2006 Arkadiy Vertleyb Copyright (c) 2011 John Maddock Copyright 2019 John Maddock. Distributed under the Boost Copyright 2012 John Maddock. Copyright Christopher Kormanyos 2013. Distributed under the Boost Copyright 2016 John Maddock. Distributed under the Boost Copyright (c) 2014-2015 Kohei Takahashi Copyright (c) 2014,2018 Kohei Takahashi Copyright 2009-2011 Karsten Ahnert Copyright 2009-2011 Mario Mulansky Copyright 2012 Denis Demidov Copyright Beman Dawes 2003, 2006, 2011 Copyright Beman Dawes 1994-99. Copyright Peter Dimov 2019. Copyright Beman Dawes 1994-2007, 2011 Copyright (c) 2003-2008 Matthias Christian Schabel Copyright (c) 2010 Joel de Guzman Copyright (c) 2010 Hartmut Kaiser (C) Copyright John Maddock 1999-2005. Copyright 2004 Eric Niebler. Copyright (c) 2005-2010 Hartmut Kaiser Copyright (c) 2009 Edward Grace Copyright (c) 2014-2015 Adam Wulkiewicz, Lodz, Poland Modifications copyright (c) 2016-2019 Oracle andor its affiliates. Copyright (c) 2018-2019 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2012-2019 Barend Gehrels, Amsterdam, the Netherlands. Modifications copyright (c) 2016-2018 Oracle andor its affiliates. Copyright (c) 2015-2017, Oracle andor its affiliates. Copyright (C) 2007 Peder Holt Copyright Beman Dawes 2010 Copyright Beman Dawes 2006 Copyright Beman Dawes 2007 Copyright Christoper Kohlhoff 2007 Copyright (c) 2014 Benoit Dequidt <benoit.dequidt@gmail.com> Copyright (c) 2014 Fabian Köhler <fabian2804@googlemail.com> Copyright (c) 2013-2014 Mageswaran.D <mageswaran1989@gmail.com> Copyright (c) 2014 Kyle Lutz <kyle.r.lutz@gmail.com> Copyright (c) 2013 Muhammad Junaid Muzammil <mjunaidmuzammil@gmail.com> Copyright 2002 Vladimir Prus (C) Copyright Ion Gaztanaga. Distributed under the Boost Copyright 2012 Daryle Walker. Copyright Vicente J. Botet Escriba 2010 Copyright (c) 2015 John Fletcher Copyright 2012-2013 Karsten Ahnert Copyright 2015 Mario Mulansky Copyright 2012-2013 Mario Mulansky Copyright 2009-2014 Karsten Ahnert Copyright 2009-2014 Mario Mulansky Copyright 2012 Andreas Angelopoulos Copyright 2012-2013 Rajeev Singh Copyright 2011-2015 Karsten Ahnert Copyright 2016 Karsten Ahnert Copyright 2016 Mario Mulansky Modifications copyright (c) 2014-2019, Oracle andor its affiliates. Copyright (c) 2015-2019, Oracle andor its affiliates. Copyright (c) 2011-2012 Bruno Lalande, Paris, France. Copyright (c) 2011-2012 Mateusz Loskot, London, UK. Copyright (c) Charles Karney (2008-2017) <charles@karney.com> and licensed Copyright (c) 2016-2019 Oracle andor its affiliates. Copyright (c) 2016, 2019 Oracle andor its affiliates. Copyright Daniel James 2006-2009 Copyright Daniel James 2012 Copyright 2013 Daniel James. (C) Copyright Ion Gaztanaga 2004-2012. (C) Copyright Peter Dimov 2002-2005. (C) Copyright Peter Dimov 2002-2005, 2007. (C) Copyright Ion Gaztanaga 2006-2012. Copyright (c) 2001 Jeremy Siek Copyright (c) 2003-2006 Gennaro Prota Copyright (C) 2018 James E. King III Copyright (C) 2019 James E. King III Copyright 2002, 2003 Daryle Walker. Copyright 2003 Daryle Walker. Copyright Beman Dawes 2002, 2006 Copyright Peter Dimov 2018 (C) Copyright Edward Diener 2012 (C) Copyright Edward Diener 2011,2012 Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com) Copyright (c) 2005 Stefan Arentz (stefan at soze dot com) Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com) Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com) Copyright (c) 2011 Boris Schaeling (boris@highscore.de) (C) Copyright Ion Gaztanaga 2015-2016. (C) Copyright Ion Gaztanaga 2017-2018. (C) Copyright Ion Gaztanaga 2014-2014. (C) Copyright Ion Gaztanaga 2017-2018. (C) Copyright Orson Peters 2017. Copyright (c) 2015 Orson Peters (C) Copyright Ion Gaztanaga 2017-2017. Copyright (c) 2001-2012 Hartmut Kaiser. Copyright (c) 2005 Copyright (c) 2005 João Abecasis Copyright (c) 2014 fqiang Copyright Abel Sinkovics (abel@sinkovics.hu) 2016. Copyright (c) 2013 Peter Dimov Copyright (c) 2002 Lars Gullik Bjønnes <larsbj@lyx.org> Copyright 2003-2005 Peter Dimov Copyright 2007 Peter Dimov Copyright 2013 Peter Dimov Copyright (c) 2001-2005 Peter Dimov Copyright (c) 2006 Michael van der Westhuizen Copyright (c) 2002, 2003 Peter Dimov and Multi Media Ltd. Copyright (c) 2001-2009, 2012 Peter Dimov Copyright (c) 2003 David Abrahams Copyright (c) 2003 Peter Dimov Copyright (c) 2008, 2011 Peter Dimov Copyright (c) 2014 Peter Dimov Copyright 2008 Peter Dimov Copyright 2005-2013 Peter Dimov Copyright 2007 Baruch Zilber Copyright 2007 Boris Gubenko Copyright 2006 Michael van der Westhuizen Copyright (c) 2007, 2013, 2015 Peter Dimov Copyright 2005 Rene Rivera Copyright 2004-2006 Peter Dimov Copyright 2005 Ben Hutchings Copyright (c) 2009, Spirent Communications, Inc. Copyright (c) 2006 Piotr Wyderski Copyright (c) 2006 Tomas Puverle Copyright (c) 2011 Emil Dotchevski Copyright 2004-2008 Peter Dimov Copyright (c) 2007, 2013 Peter Dimov Copyright 2012 IBM Corp. Copyright 2008,2012 Peter Dimov Copyright (c) 2008, 2009 Peter Dimov Copyright 2005, 2014 Peter Dimov Copyright 2016, 2017 Peter Dimov Copyright 2007, 2019 Peter Dimov Copyright (c) 2003 Sam Nabialek Copyright (c) 2003-2004 Joel de Guzman Copyright (c) 2005 Joel de Guzman Copyright 2012 Daryle Walker Copyright 2013 Christian Henning Copyright Hans Dembinski 2019 Copyright Hans Dembinski 2018-2019 Copyright 2014-2015 Glen Joseph Fernandes (C) Copyright Nicolai M. Josuttis 2001. Copyright (c) 2007, 2014 Peter Dimov Copyright (c) Beman Dawes 2011 Copyright (c) 2015 Ion Gaztanaga Copyright (c) 2009, 2015 Peter Dimov @Copyright Barrett Adair 2015-2017 (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000. (C) Copyright Antony Polukhin 2014. Copyright Beman Dawes 2005. Copyright (c) 2014 Glen Fernandes (C) Copyright Vicente J. Botet Escriba 2010. Copyright (c) 2003-2008 Jan Gaspar (C) Copyright John Maddock 2002. Copyright 2001, 2004, 2011 Daryle Walker. \copyright Boost Software License, version 1.0 (C) Copyright Beman Dawes 1999. (C) Copyright Jens Mauer 2001 (C) Copyright John Maddock 2001 Copyright Beman Dawes 2001. Distributed under the Boost Copyright 2002-2018 Peter Dimov Copyright Beman Dawes 2011 Copyright (c) 2006 CrystalClear Software, Inc. Copyright (c) 2003-2004, 2008 Gennaro Prota Copyright (c) 2003-2004 Gennaro Prota Copyright 2006-2008 Joaquin M Lopez Munoz. Copyright 2010 Eric Niebler. Copyright (c) 2000 Cadenza New Zealand Ltd Copyright Douglas Gregor 2004. Copyright 2005 Peter Dimov (C) Copyright Andrey Semashev 2017. Copyright Peter Dimov and David Abrahams 2002. Copyright 2018 Stefan Seefeld Copyright Beman Dawes and Daryle Walker 1999. (C) Copyright Dave Abrahams and Daryle Walker 2001. Copyright (c) 2001, 2002 Peter Dimov Copyright 2002 Daryle Walker. (C) Copyright Beman Dawes 2000. Copyright Kevlin Henney, 2000-2005. (C) Copyright John maddock 1999. (C) David Abrahams 2002. Copyright (c) 2007, 2008 Peter Dimov Copyright 2014 Glen Joseph Fernandes (C) Copyright Hubert Holin and Daryle Walker 2001-2002. (C) Copyright Dave Abrahams and Daniel Walker 1999-2003. Copyright (c) Andrey Semashev 2017 Copyright (C) 2014, 2015 Andrzej Krzemienski. (C) Copyright Gennaro Prota 2003. (C) Copyright David Abrahams, Jeremy Siek, Daryle Walker 1999-2001. (C) Copyright Daniel Frey 2002-2017. Copyright David Abrahams, Daniel Wallin 2005. (C) Copyright Ion Gaztanaga 2005. Copyright (c) 2005 Peter Dimov. (C) Copyright Kevlin Henney and Dave Abrahams 1999. (C) Copyright Boris Rasin 2014. (C) Copyright Boris Rasin and Antony Polukhin 2014-2019. Copyright (c) 2011 Jeff Flinn, Boris Schaeling Copyright (c) 2012 Boris Schaeling Copyright Vladimir Prus 2002. Copyright Beman Dawes 1994-99. Copyright Jens Maurer 2000-2001 (C) Copyright Paul Moore 1999. (C) Copyright Greg Colvin and Beman Dawes 1998, 1999. Copyright (C) 2006-2009, 2012 Alexander Nasonov (C) Copyright Ronald Garcia 2002. Copyright (c) 2001-2008 Peter Dimov Copyright (c) 2008-2009 Frank Mori Hess Copyright (c) 2003 Peter Dimov Copyright Antony Polukhin, 2016-2019. (C) Copyright 2008-9 Anthony Williams Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc. (c) Copyright Jeremy Siek and John R. Bandela 2001. Copyright John R. Bandela 2001. Copyright John R. Bandela 2001 (C) Copyright David Abrahams 2001. Copyright (C) 2003-2004 Jeremy B. Maitin-Shepard. Copyright (C) 2005-2008 Daniel James. Copyright 1999-2003 Aleksey Gurtovoy. (C) Copyright John maddock 1999. Copyright (c) 2001, 2002, 2003 Peter Dimov Copyright 2007 John Maddock. Copyright Oliver Kowalke 2016. Copyright (c) 2002 Douglas Gregor <doug.gregor -at- gmail.com> Copyright (c) 2008-2010 Hartmut Kaiser Copyright Douglas Gregor 2003. Use, modification and Copyright (c) 2011-2015 Adam Wulkiewicz, Lodz, Poland. Copyright (c) 2013 Mateusz Loskot, London, UK. Copyright (c) 2011 Joel de Guzman Copyright Abel Sinkovics (abel@sinkovics.hu) 2010. Copyright (c) 2014 Kohei Takahashi Copyright (c) 2012-2014 Kohei Takahashi Copyright (c) 2003-2005 Peter Dimov Copyright 2019 Damian Jarek Copyright Andrey Semashev 2018. Copyright (c) 2001 Alexander Peslyak Copyright (c) 2017 James E. King III Copyright 2008 Christian Henning Copyright 2010 Christian Henning Copyright 2012 Olivier Tournaire Copyright 2007 Christian Henning Copyright 2012 Olivier Tournaire, Christian Henning Copyright 2010 Kenneth Riddile Copyright 2012 Kenneth Riddile, Christian Henning Copyright 2010-2012 Kenneth Riddile, Christian Henning Copyright 2012 Andreas Pokorny Copyright 2012 Chung-Lin Wen Copyright 2012 Chung-Lin Wen, Davide Anastasia Copyright 2013 Juan V. Puertos G-Cluster, Christian Henning Copyright 2013 Christian Henning and Juan V. Puertos Copyright 2014 Bill Gallafent Copyright 2018 Mateusz Loskot <mateusz@loskot.net> Copyright (c) 2013, 2014 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2011-2014 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2018, Oracle andor its affiliates Copyright (c) 2015, Oracle andor its affiliates Copyright (c) 2014, Oracle andor its affiliates Copyright Paul Mensonides 2003 Copyright 2017-2019 Peter Dimov. Copyright 2012-2013 Andreas Angelopoulos Copyright Howard Hinnant 2007-2010. Copyright Vicente J. Botet Escriba 2012. (C) Copyright 2002 Robert Ramey - http:www.rrsd.com . (C) Copyright 2010 Robert Ramey - http:www.rrsd.com . (C) Copyright 2002-7 Robert Ramey - http:www.rrsd.com . Copyright (C) 2017 Michel Morin. (C) Copyright Jeremy Siek 2002. Copyright David Abrahams 2003, Jeremy Siek 2004. Copyright 2010 (c) Dean Michael Berris Copyright 2014 Peter Dimov (C) Copyright Jeremy Siek 2004. Copyright Thomas Witt 2003. Copyright (c) Thomas Witt 2002. Copyright David Abrahams 2003. Copyright (C) 2004 Jeremy Siek <jsiek@cs.indiana.edu> (C) Copyright Thomas Witt 2003. Copyright Thomas Witt 2004. Copyright Andrey Semashev 2014. Copyright 2003 Daniel Walker. (C) Copyright Toon Knapen 2001. (C) Copyright Roland Richter 2003. Copyright (C) 2018 Andrey Semashev Copyright Thomas Witt 2003, Jeremy Siek 2004. Copyright 2003 The Trustees of Indiana University. Copyright (c) 2014 Kohei Takahashi. Copyright 2012-2013 Daniel James Copyright 2010 Christophe Henry Copyright for the original version: Copyright 2000-2009 Michael Stevens, Mathias Koch, Joerg Walter, Gunter Winkler. (C) Copyright 2015 Boost.Test team. (C) Copyright Raffi Enficiaud 2015. (C) Copyright Andrzej Krzemienski 2015. (C) Copyright Raffi Enficiaud 2019. (C) Copyright 2015 Boost.test team Copyright (c) 2018 Raffi Enficiaud Copyright (c) 2019 Raffi Enficiaud Copyright (c) 2015 Boost.Test team Copyright (c) 2000-2003 Brian McNamara and Yannis Smaragdakis Copyright (c) 2009-2009: Joachim Faulhaber (C) Copyright Edward Diener 2015 Copyright 2010 Thomas Heller Copyright 2011 Eric Niebler Copyright 2011 Eric Niebler. Copyright 2009 Eric Niebler. Copyright Pierre Esterie & Joel Falcou. Modifications copyright (c) 2016-2018, Oracle andor its affiliates. Modifications copyright (c) 2015, 2018, Oracle andor its affiliates. Copyright (c) 2009-2015 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2008-2014 Barend Gehrels, Amsterdam, the Netherlands. Modifications copyright (c) 2014, 2018, Oracle andor its affiliates. Copyright (c) 2018-2019 Oracle andor its affiliates. Modifications copyright (c) 2015-2019, Oracle andor its affiliates. Copyright (c) 2017-2018 Oracle andor its affiliates. Copyright (c) 2013-2015 Adam Wulkiewicz, Lodz, Poland Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland. Copyright 2011 - 2013 John Maddock. Copyright Christopher Kormanyos 2002 - 2011. Copyright (c) 2017 Christopher M. Kohlhoff (chris at kohlhoff dot com) (C) Copyright Vicente J. Botet Escriba 2014. (C) Copyright Vicente J. Botet Escriba 2013-2014. Copyright (C) 2014 Ian Forbed Copyright (C) 2014-2017 Vicente J. Botet Escriba Copyright (c) 2002-2003 The Trustees of Indiana University. Copyright (c) 2000-2001 University of Notre Dame. Copyright 2002-2003, Trustees of Indiana University. Copyright 2000-2001, University of Notre Dame. Copyright (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc. Copyright Jeremy Siek 2002. Copyright (c) 2009-2011: Joachim Faulhaber Copyright (c) 2007-2012: Joachim Faulhaber Copyright (c) 2007-2011: Joachim Faulhaber Copyright (c) 2008-2012: Joachim Faulhaber Copyright (c) 2007-2010: Joachim Faulhaber Copyright Beman Dawes 2003, 2006, 2010 Copyright Beman Dawes 2003, 2006 Copyright Beman Dawes 2006, 2007 Copyright Peter Dimov 2017, 2018 Copyright 2012,2014 Advanced Micro Devices, Inc. Copyright 2013 Google Inc. All rights reserved. Copyright (c) 2011 Hannes Hofmann Copyright (c) 2017 Kristian Popov <kristian.popov@outlook.com> Copyright Andrey Semashev 2017. Copyright 2006 Alexander Nasonov. Copyright Antony Polukhin, 2017-2019. Copyright (C) 2013,2015 Vicente J. Botet Escriba Copyright 2005 Felix Höfling, Guillaume Melquiond Copyright 2000 Jens Maurer Copyright 2002 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion Copyright 2003 Guillaume Melquiond, Sylvain Pion Copyright 2006-2007 Boris Gubenko Copyright 2000 Maarten Keijzer Copyright 2005 Guillaume Melquiond Copyright 2005-2007 Daniel James. (C) Copyright Gennadiy Rozental 2005-2010. (C) Copyright Gennadiy Rozental 2006-2010. (C) Copyright Gennadiy Rozental 2011. (C) Copyright 2016 Raffi Enficiaud. Copyright (C) 2014 Vicente Botet Copyright (C) 2012-2013 Vicente Botet Copyright Rene Rivera 2014 Copyright Rene Rivera 2013-2018 Copyright Rene Rivera 2013 Copyright Rene Rivera 2011-2012 Copyright Rene Rivera 2011-2015 (c) Copyright John R. Bandela 2001. Copyright (C) 2014,2015 Vicente J. Botet Escriba Copyright (C) 2019 Austin Beer Copyright (C) 2019 Vicente J. Botet Escriba For copyright reasons the complete is available here: Copyright 2005-2008 Redshift Software, Inc. Copyright 2005-2006 Redshift Software, Inc. Copyright Joel de Guzman 2004. Copyright Nicolas Lelong, 2010. Copyright David Abrahams 2005. Copyright 2004 Jonathan Brandmeyer Copyright Jonathan Brandmeyer, 2004. Copyright (C) 2003 Rational Discovery LLC. Copyright (C) 2003 Rational Discovery LLC Copyright Gottfried Ganßauge 2006. Copyright David Abrahams & Ralf W. Grosse-Kunsteve 2004-2006. Copyright Stefan Seefeld 2006. Copyright Stefan Seefeld 2007. Copyright David Abrahams and Gottfried Ganssauge 2003. Copyright Gottfried Ganßauge 2003..2006. Copyright Ralf W. Grosse-Kunstleve 2002-2004. Copyright Ralf W. Grosse-Kunstleve 2004. Copyright Joel de Guzman 2005-2006. Copyright David Abrahams and Nikolay Mladenov 2003. Copyright Eric Niebler 2005. Copyright Troy D. Straszheim 2009 Copyright Niall Douglas 2005. Copyright Sascha Ochsenknecht 2009. Copyright Leo Goodstadt 2012 (C) Copyright Ion Gaztanaga 2014-2014 (C) Copyright Joaquin M Lopez Munoz 2006-2013 (C) Copyright Ion Gaztanaga 2014-2014 (C) Copyright Ion Gaztanaga 2009-2013. Copyright 2007 Alexandre Courpron (C) Copyright Ion Gaztanaga 2014-2015 (C) Copyright Ion Gaztanaga 2006-2014 (C) Copyright Microsoft Corporation 2014 (C) Copyright Ion Gaztanaga 2006-2013. (C) Copyright Ion Gaztanaga 2015-2015. Copyright Vicente J. Botet Escriba 2009-2010 Copyright Beman Dawes, 2010 (C) Copyright 2010 Daniel James (C) Copyright 2002, 2003 Beman Dawes Boost.Filesystem Copyright (c) 2013-2014 Agustin Berge Copyright (c) 2011 Bryce Lelbach Copyright (c) 2019 Christian Mazakas Copyright (c) 2014 Lee Clagett Copyright (c) 2001-2013 Joel de Guzman Copyright (c) 2018 Nikita Kniazev Copyright (c) 2019 Joel de Guzman Copyright (c) 2001-2017 Joel de Guzman Copyright (c) 2017 think-cell GmbH Copyright (c) 2013 Agustin Berge Copyright (c) 2013 Carl Barron Copyright (c) 2015 Joel de Guzman Copyright (c) 2011 Jan Frederick Eick Copyright (c) 2001-2016 Joel de Guzman (C) Copyright 2007-10 Anthony Williams (C) Copyright 2011-2012 Vicente J. Botet Escriba (C) Copyright 2007-8 Anthony Williams (C) Copyright 2011,2012,2015 Vicente J. Botet Escriba (C) Copyright 2013 Andrey Semashev (C) Copyright 2013 Vicente J. Botet Escriba (C) Copyright 2006-8 Anthony Williams (C) Copyright 2012 Vicente J. Botet Escriba (C) Copyright 2007 Anthony Williams (C) Copyright 2008 Anthony Williams Copyright (c) 2009-2015 Artyom Beilis (Tonkikh) Copyright (c) 2017 Jakub Szuppe <j.szuppe@gmail.com> (C) Copyright 2011-2012,2017-2018 Vicente J. Botet Escriba (C) Copyright 2005-8 Anthony Williams (C) Copyright 2017 Andrey Semashev (C) Copyright 2005-7 Anthony Williams (C) Copyright 2005 John Maddock (C) Copyright 2011-2013 Vicente J. Botet Escriba (C) Copyright 2006-7 Anthony Williams (C) Copyright 2007 David Deakins (C) Copyright Edward Diener 2019. Copyright (C) 2014-2015 Vicente J. Botet Escriba Modifications copyright (c) 2014, 2019, Oracle andor its affiliates. Copyright (c) Chris Glover, 2016. (C) Copyright 2011 Vicente J. Botet Escriba (C) Copyright 2011Vicente J. Botet Escriba Copyright (c) 1999-2003 Jeremiah Willcock Copyright Andrii Sydorchuk 2015. Copyright Andrii Sydorchuk 2012. Copyright Andrii Sydorchuk 2014. Copyright Andrii Sydorchuk 2010-2011. Copyright (c) 2002,2003 CrystalClear Software, Inc. Copyright (c) 2004 CrystalClear Software, Inc. Copyright (c) 2005 CrystalClear Software, Inc. Copyright (c) 2002,2003,2005 CrystalClear Software, Inc. Copyright (c) 2002-2005 CrystalClear Software, Inc. Copyright (c) 2003-2004 CrystalClear Software, Inc. Copyright (C) 2002-2013 Mark Adler Copyright (C) 2002-2013 Mark Adler, all rights reserved Copyright (c) 2014 Roshan <thisisroshansmail@gmail.com> Copyright (c) 2015 Jakub Szuppe <j.szuppe@gmail.com> Copyright (c) 2014 Benoit Copyright (c) 2013-2014 Rastko Anicic <anicic.rastko@gmail.com> Copyright 2017, 2018 Peter Dimov. Copyright (c) 2014-2018 Oracle andor its affiliates. Copyright (c) 2017-2019 Oracle andor its affiliates. Copyright (C) 1998-2005 Gilles Vollant Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http:www.winimage.com/zLibDll/minizip.html ) Copyright (C) 2009-2010 Mathias Svensson ( http:result42.com ) Copyright (C) 2007-2008 Even Rouault Copyright (c) 1990-2000 Info-ZIP. All rights reserved. Copyright (C) 1998 - 2010 Gilles Vollant, Even Rouault, Mathias Svensson Copyright (C) 2007 Douglas Gregor Copyright (c) 2003-2005 CrystalClear Software, Inc. (C) Copyright Edward Diener 2015. (C) Copyright Edward Diener 2016. Copyright (C) 2014 Andrzej Krzemienski. Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal. Copyright (C) 2018 Andrzej Krzemienski. Copyright (C) 2014, Andrzej Krzemienski. Copyright 2017 Vinnie NotDefaultConstructible Copyright 2018 Andrzej Krzemienski Copyright (C) 2016 Andrzej Krzemienski. Copyright (C) 2017 Andrzej Krzemienski. Copyright (C) 2018, Andrzej Krzemienski. Copyright (C) 2015, Andrzej Krzemienski. Copyright (C) 2015 Andrzej Krzemienski. Copyright (C) 2014-2015 Andrzej Krzemienski. Copyright (C) 2014 - 2015 Andrzej Krzemienski. Copyright (C) 2014 - 2018 Andrzej Krzemienski. Copyright (C) 2014, andrzej Krzemienski. Copyright (C) 2014, 2016 andrzej Krzemienski. Copyright (C) 2015 - 2018 Andrzej Krzemienski. Copyright (C) 2005-2008 The Trustees of Indiana University. Copyright (C) 2006 The Trustees of Indiana University. Copyright (C) 2004-2008 The Trustees of Indiana University. Copyright (C) 2005-2006 The Trustees of Indiana University. Copyright (C) 2007 Douglas Gregor Copyright (C) 2007 Hartmut Kaiser Copyright (C) 2006-2010 The Trustees of Indiana University. Copyright (C) 2002 Brad King and Douglas Gregor Copyright 2004, 2005 The Trustees of Indiana University. Copyright Daniel Wallin 2007. (C) Copyright Ion Gaztanaga 2011-2013. (C) Copyright Ion Gaztanaga 2017-2017. (C) Copyright Ion Gaztanaga 2004-2013. (C) Copyright Ion Gaztanaga 2008. (C) Copyright Ion Gaztanaga 2004-2019. (C) Copyright Ion Gaztanaga 2012-2013. Copyright (C) 2013 Cromwell D. Enage (C) Copyright Howard Hinnant 2014. (C) Copyright Ion Gaztanaga 2016-2016. (C) Copyright Ion Gaztanaga 2007-2017. Copyright (c) 1998-2002 Joel de Guzman Copyright (c) 2017 Levon Tarakchyan Copyright (c) 2019 Antony Polukhin Copyright (c) 2017-2019 Antony Polukhin Copyright (c) 2003 Eric Friedman, Itay Maman Copyright (c) 2017 Copyright (c) 2012-2019 Antony Polukhin Copyright (c) 2017-2017 Albert Sverdlov Copyright (c) 2009 ArtVPS Ltd. Copyright (c) 2013-2019 Antony Polukhin. Copyright (c) 2018 Louis Dionne, Antony Polukhin Copyright 2017 John Maddock Copyright Paul A. Bristow 2008, 2009, 2012, 2016 Copyright John Maddock 2018. Copyright Paul A. Bristow 2016 Copyright (c) 2008-2015 Barend Gehrels, Amsterdam, the Netherlands. Modifications copyright (c) 2017-2019, Oracle andor its affiliates. Copyright (c) 1995, Gerald Evenden Copyright (c) 2008 Gerald I. Evenden Copyright (c) 2002, Frank Warmerdam Copyright (c) 2004 Gerald I. Evenden Copyright (c) 2012 Martin Raspaud Copyright (c) 2001, Thomas Flemming, tf@ttqv.com Copyright (c) 2000, Frank Warmerdam Copyright (c) 2003, 2006 Gerald I. Evenden Copyright (c) 2011, 2012 Martin Lambers <marlam@marlam.de> Copyright (c) 2003 Gerald I. Evenden Copyright (c) 2005-2007 Joel de Guzman Copyright (c) 2014 John Fletcher Copyright (c) 2010 Bryce Lelbach Copyright (c) 2014 Tomoki Imai Copyright (c) 2006-2017 Emil Dotchevski and Reverge Studios, Inc. Copyright (c) 2006-2015 Emil Dotchevski and Reverge Studios, Inc. Copyright 2017 Andrey Semashev (C) Copyright John Maddock 2005. Copyright (c) 1998-2003 @copyright Louis Dionne 2013-2016 @copyright Louis Dionne 2016 @copyright Jason Rice 2016 @copyright Jason Rice 2017 Copyright (c) 2016 Adam Wulkiewicz, Lodz, Poland. Copyright (c) 2014-2019 Oracle andor its affiliates. Copyright 2003-2004 Douglas Gregor Copyright (c) 2009-2012 Barend Gehrels, Amsterdam, the Netherlands. Copyright Bryce Lelbach 2010 (C) Copyright Daryle Walker 2001-2002. Copyright Paul A. Bristow 2006, 2007, 2009, 2010. (C) Copyright Hubert Holin 2001. Copyright John Maddock 2006, 2007, 2012, 2014. Copyright Paul A. Bristow 2006, 2007, 2012 Copyright (c) 2013 Paul A. Bristow Doxygen comments changed. Copyright (c) 2013 Antony Polukhin Move semantics implementation. Copyright 2014,2018 Glen Joseph Fernandes Copyright (c) 2011 Christopher Jefferson Copyright (c) 2006 Stephen Nutt (C) Copyright Ion Gaztanaga 2007-2017. (C) Copyright David Abrahams, Vicente Botet, Ion Gaztanaga 2009-2012. Copyright David Abrahams 2009. (C) Copyright Ion Gaztanaga 2016-2016. (C) Copyright Ion Gaztanaga 2009-2014. (C) Copyright Ion Gaztanaga 2014. (C) Copyright Ion Gaztanaga 2015-2015. (C) Copyright Howard Hinnant 2009 Copyright 2016-2017 Joaquin M Lopez Munoz. Copyright 2017 Joaquin M Lopez Munoz. Copyright Jens Maurer 2002 Copyright Steven Watanabe 2009-2011 Copyright Jason Rhinelander 2016 Copyright Justinas Vygintas Daugmaudis 2010-2018 Copyright Steven Watanabe 2010-2011 Copyright (c) 2011 Steven Watanabe Copyright Zach Laine 2014 Copyright (c) 2015 Adam Wulkiewicz, Lodz, Poland. Copyright (c) 2016 Barend Gehrels, Amsterdam, the Netherlands. Copyright John Maddock 2017. Copyright Nick Thompson 2018. Copyright Nick Thompson 2017. Copyright Paul A. Bristow 2007, 2010. Copyright John Maddock 2015. Copyright 2006 Matias Capeletto Copyright Jason Rice 2016 Copyright 2005 Douglas Gregor. Copyright (C) 2005 Douglas Gregor. Copyright (C) 2005-2006 Douglas Gregor <doug.gregor@gmail.com> Copyright (C) 2006 Douglas Gregor. Copyright Daniel James 2009 Copyright (c) 2001 Ronald Garcia, Indiana University (garcia@osl.iu.edu) Copyright (c) 2001-2011 Thomas Bernard Copyright (c) 2017-2019 Mateusz Loskot <mateusz at loskot dot net> Copyright 2010-2013 Karsten Ahnert Copyright 2010-2015 Mario Mulansky Copyright 2009-2015 Mario Mulansky Copyright 2005-2014 Daniel James. Copyright Felix E. Klee, 2003 (C) Copyright Paul Mensonides 2003. (C) Copyright Edward Diener 2014,2019. Copyright 2006-2007 Daniel James. Copyright (c) 2019 Hans Dembinski Copyright 2019 Hans Dembinski, Henry Schreiner (C) Copyright Hans Dembinski 2019. Copyright 2019 Przemyslaw Bartosik Copyright 2019 Henry Schreiner, Hans Dembinski Copyright 2003 David Abrahams and Jeremy Siek Copyright Thorsten Ottosen 2009. Use, modification and Modifications copyright (c) 2014, 2018 Oracle andor its affiliates. Copyright (c) 1995, 2007-2015 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 1995 Maarten Hilferink, Amsterdam, the Netherlands Copyright (C) 2005-2011 Daniel James. Copyright (C) 2008-2011 Daniel James. Copyright Szabolcs Toth (thszabi@gmail.com) 2016. Copyright 2002-2003 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion Copyright 2003 Guillaume Melquiond Copyright 2013 Cromwell D. Enage Copyright Andrey Semashev 2007 - 2014. Copyright 2016 Bogumił Chojnowski Copyright 2017 Christophe Henry (C) Copyright Raffi Enficiaud 2016. (C) Copyright Raffi Enficiaud 2018. (C) Copyright Gennadiy Rozental 2003-2015. Copyright Aleksey Gurtovoy 2008 Copyright David Abrahams 2002 Copyright Aleksey Gurtovoy 2001-2008 Copyright Eric Niebler 2014 Copyright Aleksey Gurtovoy 2006 Copyright (c) 2017 Denis Demidov <dennis.demidov@gmail.com> Copyright Gottfried Ganßauge 2003. Copyright David Abrahams 2002, Joel de Guzman, 2002. Copyright David Abrahams 2005. // Copyright David Abrahams 2002. Copyright (c) 2001, 2002 Python Software Foundation; All Rights Copyright Nikolay Mladenov 2007. Copyright Shreyans Doshi 2017. (C) Copyright Daryle Walker and Stephen Cleary 2001-2002. (C) Copyright Jeremy William Murphy 2016. Copyright (C) 2001 Daryle Walker. Copyright (C) 2003 Vesa Karvonen. Copyright (C) 2003 Gennaro Prota. Copyright 2017-2018 Glen Joseph Fernandes (C) Copyright 2009-2011 Frederic Bron, Robert Stewart, Steven Watanabe & Roman Perepelitsa. (C) Copyright John Maddock and Steve Cleary 2000. Copyright 2000 John Maddock (john@johnmaddock.co.uk) Copyright 2002 Aleksey Gurtovoy (agurtovoy@meta-comm.com) (C) Copyright John Maddock 2018. (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000. (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard Copyright (C) 2017 Daniela Engert Copyright (C) 2004 Arkadiy Vertleyb Copyright (C) 2005 Arkadiy Vertleyb Copyright (C) 2004, 2005 Arkadiy Vertleyb Copyright (C) 2004 Peder Holt Copyright (C) 2005 Peder Holt Copyright (C) 2010 Peder Holt Copyright (C) 2006 Tobias Schwinger (C) Copyright Gennadiy Rozental 2001-2014. (C) Copyright 2010 Bryce Lelbach (C) Copyright Beman Dawes 2001. Copyright Rene Rivera 2013-2015 Copyright Rene Rivera 2017 (C) Copyright Jeremy Siek 2000-2004. (C) Copyright Jeremy Siek 1999-2004. (C) Copyright Jeremy Siek 2001-2004. (C) Copyright 2011-2018 Vicente J. Botet Escriba (C) Copyright 2018 Andrey Semashev (C) Copyright Michael Glassford 2004. (C) Copyright Aaron W. LaFramboise, Roland Schwarz, Michael Glassford 2004. (C) Copyright 2007 Roland Schwarz Copyright 2002-2003 Guillaume Melquiond Copyright 2002-2003 Hervé Brönnimann Copyright 2004 Guillaume Melquiond Copyright 2002-2003 Guillaume Melquiond, Sylvain Pion Copyright (c) 2008-2009 Ben Hanson (http:www.benhanson.net) Copyright (c) 2009 Ben Hanson (http:www.benhanson.net) (C) Copyright Eric Niebler 2004-2005 (C) Copyright Daryle Walker 2000-2001. Copyright (c) 2014 Eric Niebler Copyright (c) 2014,2015,2018 Kohei Takahashi Copyright (c) 2006 Eric Niebler (C) Copyright Edward Diener 2011,2012,2013 (C) Copyright Edward Diener 2012,2013 (C) Copyright 2014 Jorge Lodos (C) Copyright 2011 Steven Watanabe (C) COPYRIGHT 2017 ARM Limited (C) Copyright Jorge Lodos 2008 (C) Copyright Daniel James 2011. (C) Copyright 2018 Mario Suvajac (C) Copyright 2007 Jonathan Turkanis (C) Copyright Frank Birbacher 2007 (C) Copyright 2012 Boris Schaeling (C) COPYRIGHT 2018 Reimar Döffinger Copyright 2015 Vicente J. Botet Escriba Copyright 2016 Vicente J. Botet Escriba Copyright (c) 2001-2019 Joel de Guzman Copyright © 2008 , 2009, 2010, 2012 Paul A. Bristow, John Maddock Copyright (C) 2007 Matthias Troyer Copyright (c) 2002 2004 2006 Joel de Guzman Copyright (c) 2004 Eric Niebler Copyright (c) 2005 Thomas Guest Copyright (c) 2002 2004 2006Joel de Guzman Copyright (c) 2010.2017 Daniel James Copyright (c) 2006 Joel de Guzman Copyright (c) 2011, 2013 Daniel James Copyright (c) 2011,2013 Daniel James Copyright (c) 2011-2013 Daniel James Copyright (c) 2010 Daniel James Copyright (c) 2009 Daniel James Copyright (c) 2013, 2017 Daniel James Copyright (c) 2005 2006 Joel de Guzman Copyright (c) 2011-2013, 2017 Daniel James Copyright (c) 2015, 2018, Oracle andor its affiliates. Copyright (c) 2016 Barrett Adair Copyright (c) 2016 arett Adair Copyright Barrett Adair 2015-2017 Copyright Abel Sinkovics (abel@sinkovics.hu) 2013. Copyright 2005 Daniel James. Copyright (c) 2015-2016 Vinnie Falco (vinnie dot falco at gmail dot com) Copyright (c) 2013-2016 Vinnie Falco (vinnie dot falco at gmail dot com) Copyright 2019 Olzhas Zhumabek <anonymous.from.applecity@gmail.com> Copyright Markus J. Weber 2015 Copyright 2005-2009 Ion Gaztanaga Copyright 2013-2019 Antony Polukhin Copyright Aleksey Gurtovoy 2001-2007 Copyright Peter Dimov 2000-2003 Copyright Peter Dimov and Multi Media Ltd 2001, 2002 Copyright David Abrahams 2001 Copyright (C) 2005, 2007 Douglas Gregor <doug.gregor -at- gmail.com> Copyright 2013-2015 Mario Mulansky Copyright 2015 Gregor de Cillia Copyright 2015 Mario Mulansky <mario.mulansky@gmx.net> (C) Copyright John Maddock 2008. Copyright (c) 2005-2006 Danny Havenith Copyright (C) 1997-2017 by Dimitri van Heesch Copyright (c) 2009 John Resig Copyright (c) 2008 samaxes.com (C) Copyright Edward Diener 2011-2015 Copyright (C) 2014-2016 Andrzej Krzemienski. Copyright (C) 2015 - 2017 Andrzej Krzemienski. Copyright (C) 2015-2018 Andrzej Krzemienski. Copyright (c) 2013 Christopher Kormanyos Copyright 2013 John Maddock Copyright (c) 2013 Anton Bikineev Copyright (c) 2006 Xiaogang Zhang Copyright (c) 2017 John Maddock Copyright (c) 2007 John Maddock Copyright (c) 2006 Johan Rade Copyright 2014 Anton Bikineev Copyright 2014 Christopher Kormanyos Copyright 2014 John Maddock Copyright 2014 Paul Bristow Copyright 2018 John Maddock Copyright 2019 John Maddock Copyright Paul A. Bristow 2007 Copyright (c) 2009 John Maddock Copyright 2013 Nikhar Agrawal Copyright 2013 Christopher Kormanyos Copyright 2013 Paul Bristow Copyright (C) 2004 The Trustees of Indiana University Copyright (C) 2011 Júlio Hoffimann. Copyright (C) 2005-2006 Douglas Gregor <doug.gregor@gmail.com>. Copyright (C) 2011-2013 Tim Blechmann Copyright (c) 2005 Eric Niebler Copyright 2004, 2006 Vladimir Prus Copyright (c) 2014 Mageswaran.D <mageswaran1989@gmail.com> Copyright (c) 2015 Jakub Pola <jakub.pola@gmail.com> Copyright (c) 2001-2009 Joel de Guzman Copyright (c) 2010 Christopher Schmidt Copyright 2014-2015 Renato Tegon Forti, Antony Polukhin. Copyright 2016-2019 Antony Polukhin. Copyright 2006-2014 Joaquin M Lopez Munoz. Copyright 2006-2019 Joaquin M Lopez Munoz. Copyright 2006-2018 Joaquin M Lopez Munoz. Copyright 2006-2009 Joaquin M Lopez Munoz. Copyright 2006-2013 Joaquin M Lopez Munoz. Copyright 1999 Beman Dawes Copyright 1999 Dave Abrahams Copyright 2014 Boris Rasin, Antony Polukhin Copyright (c) 2014, 2018, Oracle andor its affiliates. Copyright Thomas Kent 2016 Copyright (c) 2002-2004 CrystalClear Software, Inc. Copyright (c) 2002,2003, 2004 CrystalClear Software, Inc. Copyright (c) 2002,2003, 2007 CrystalClear Software, Inc. Copyright (c) 2016 Frank Hein, maxence business consulting gmbh Copyright 2005 Jonathan Turkanis Copyright (C) 2007, Tobias Schwinger. Copyright Douglas Gregor 2004. Use, modification and Copyright Daniel Walker, Eric Niebler, Michel Morin 2008-2012. Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc. Copyright (c) 2018 agate-pris Copyright 2015-2019 Peter Dimov Copyright 2015-2019 Peter Dimov. Copyright 2015, 2019 Peter Dimov. Copyright Rene Rivera 2015-2019 Copyright 2017 James E. King, III Copyright Ruslan Baratov 2017 Copyright Rene Rivera 2015 Copyright James E. King III, 2017 Copyright Vladimir Prus 2005. Copyright 2010-2011 Vicente J. Botet Escriba Copyright (c) 2014, 2018 Oracle andor its affiliates. Copyright (c) 2017, 2018 Oracle andor its affiliates. Copyright (c) 2017, 2018, Oracle andor its affiliates. Copyright Henrik Ravn 2004 Copyright 2017-2019 Glen Joseph Fernandes Copyright 2012-2019 Glen Joseph Fernandes Copyright 2002, 2009, 2014 Peter Dimov Copyright 2008-2009 Frank Mori Hess Copyright 2002, 2009 Peter Dimov Copyright Andrey Semashev 2007 - 2013. Copyright (c) 2007, 2008, 2012 Peter Dimov Copyright (c) 2008 Frank Mori Hess Copyright (c) 2001, 2002, 2012 Peter Dimov Copyright 2006 Daniel Egloff, Olivier Gygi. Copyright 2005 Daniel Egloff. Copyright 2006 Olivier Gygi, Daniel Egloff. Copyright 2006 Eric Niebler, Olivier Gygi. Copyright 2005 Daniel Egloff, Olivier Gygi. Copyright (C) 2008 Eric Niebler. Copyright (C) 2012 Pieter Bastiaan Ober (Integricom). Copyright 2005 Eric Niebler. Copyright (C) 2014 Pieter Bastiaan Ober (Integricom). Copyright (C) 2005 Eric Niebler Copyright 2010 Gaetano Mendola, 2011 Simon West. Copyright 2005 Eric Niebler, Michael Gauckler. Copyright 2006 Eric Niebler. Copyright 2005 Daniel Egloff, Eric Niebler. Copyright 2006, Eric Niebler, Olivier Gygi. Copyright 2011 Simon West. Copyright John Maddock 2007. Copyright Barrett Adair 2015-2018 Copyright Douglas Gregor 2003-2004. Copyright Rene Rivera 2012-2015 Copyright (c) 2017 Francisco Jose Tapia (fjtapia@gmail.com ) Copyright(c) 2016 Francisco José Tapia (fjtapia@gmail.com ) Copyright (c) 2010 2015 Francisco José Tapia (fjtapia@gmail.com ) Copyright(c) 2016 Francisco Jose Tapia (fjtapia@gmail.com ) Copyright Sergey Nizovtsev 2016 Copyright Steven Watanabe 2009 Copyright Jens Maurer 2006 Copyright (c) 2001 Daniel Nuffer Copyright (c) 2002 Hartmut Kaiser Copyright (C) 2005 Igor Chesnokov, mailto:ichesnokov@gmail.com (VC 6.5,VC 7.1 + counter code) Copyright (C) 2005-2007 Peder Holt (VC 7.0 + framework) Copyright (C) 2006 Steven Watanabe (VC 8.0) Copyright 2018 Joaquin M Lopez Munoz. Copyright 2016 Joaquin M Lopez Munoz. Copyright 2016-2018 Joaquin M Lopez Munoz. Copyright 2017-2018 Joaquin M Lopez Munoz. Copyright 2016-2019 Joaquin M Lopez Munoz. Copyright 2005-2007 Matthias Troyer Copyright (C) 2018 Alain Miniussi <alain.miniussi@oca.eu>. Copyright 2015 John Maddock. Distributed under the Boost Copyright 2008 Christophe Henry Copyright (c) 2011-2019 Adam Wulkiewicz, Lodz, Poland. Copyright (c) 2012-2015 Adam Wulkiewicz, Lodz, Poland. (C) Copyright Ion Gaztanaga 2005-2014. Distributed under the Boost (C) Copyright Ion Gaztanaga 2008-2013. Distributed under the Boost (C) Copyright Ion Gaztanaga 2004-2015. Distributed under the Boost (C) Copyright Ion Gaztanaga 2008-2015. Distributed under the Boost Copyright 2008 Joaquin M Lopez Munoz. Copyright (c) 2013-2014 Ion Gaztanaga Copyright 2011, Andrew Ross Copyright Daniel Wallin 2005. Copyright Cromwell D. Enage 2017. Copyright Cromwell D. Enage 2018. Copyright Cromwell D. Enage 2019. Copyright David Abrahams 2006. Copyright Bruno Dutra 2015 Copyright 2017, 2019 Peter Dimov Copyright (c) 2010 Barend Gehrels, Amsterdam, the Netherlands. Copyright Steven J. Ross 2014 Copyright 2013 Christian Shelton Copyright 2013 Ankur Sinha Copyright 2014-2019 Niall Douglas Copyright 2003, 2004, 2006 Vladimir Prus Copyright David Abrahams 2002. Copyright (c) 2010 Vladimir Prus. Copyright Pedro Ferreira 2005. Copyright Vladimir Prus 2007. Copyright 2007 Vladimir Prus Copyright 2001, 2002, 2003 Dave Abrahams Copyright 2002, 2006 Rene Rivera Copyright Rene Rivera 2006. Copyright 2002, 2003 Dave Abrahams Copyright 2002, 2005, 2006 Rene Rivera Copyright 2001, 2002 Dave Abrahams Copyright Vladimir Prus 2002-2007. Copyright Andy Tompkins 2008. Copyright Andy Tompkins 2009. Copyright 2017 - 2019 James E. King III Copyright 2014 Andrey Semashev (C) Copyright Andy Tompkins 2010. (C) Copyright Andy Tompkins 2007. (C) Copyright Andy Tompkins 2011. Copyright (c) 2014 Oliver Kowalke (oliver dot kowalke at gmail dot com) Copyright 2014 LASMEA UMR 6602 CNRSUniv. Copyright 2014 MetaScale SAS Copyright 2013 Kyle Lutz Copyright 2013-2014 Karsten Ahnert Copyright 2013-2014 Mario Mulansky Copyright 2010-2014 Mario Mulansky Copyright (C) 2008 Anthony Williams Copyright (C) 2017 Austin J. Beer Copyright (C) 2011,2014 Vicente J. Botet Escriba Copyright (C) 2018 Tom Hughes Copyright 2013 Ruslan Baratov Copyright (C) 2015 Vicente Botet Copyright (C) 2017 Vicente Botet Copyright (C) 2018 Vicente Botet Copyright (C) 2010 Vicente Botet Copyright (C) 2008 Vicente J. Botet Escriba Copyright (C) 2012 Vicente Botet Copyright (C) 2013 Vicente Botet Copyright (C) 2007-8 Anthony Williams Copyright (C) 2013 Tim Blechmann Copyright 2009 Anthony Williams Copyright (C) 2008 Peter Dimov Copyright (C) 2007-9 Anthony Williams Copyright (C) 2009 Anthony Williams Copyright Beman Dawes, 2007 Copyright (C) 2013,2014 Vicente J. Botet Escriba Copyright 2013,2014 Vicente J. Botet Escriba Copyright 2012 Phil Endecott Copyright (c) 2008-2017 Emil Dotchevski and Reverge Studios, Inc. Copyright 2005 Daniel Wallin. Copyright 2005 Joel de Guzman. Copyright 2005 Dan Marsden. Modeled after rangeex, Copyright 2004 Eric Niebler Copyright 2008 Hartmut Kaiser. Copyright 2015 John Fletcher. Copyright Marshall Clow 2007. Copyright Eric Niebler 2010. Copyright Beman Dawes 2002. Copyright Beman Dawes 2002, 2003. Copyright Rene Rivera 2004. Copyright Daniel James 2009. Copyright Rene Rivera 2004-2006. Copyright Gennaro Prota 2006. Copyright Beman Dawes 2002-2003. Copyright Beman Dawes 2002. Copyright Beman Dawes 2002 Copyright Rene Rivera 2004. Copyright Gennaro Prota 2006 Copyright Beman Dawes, 2003. Modifications copyright (c) 2013-2014 Oracle andor its affiliates. Modifications copyright (c) 2016-2017 Oracle andor its affiliates. Copyright (c) 2005 Carl Barron. Distributed under the Boost Copyright Rene Rivera 2011-2013 Copyright James E. King, III - 2017 Copyright Rene Rivera 2011-2017 Copyright Andrey Semashev 2007 - 2016. Copyright AlainMiniussi 20014 - 20015. Copyright Matthias Troyer Copyright (C) 2013 Andreas Hehn <hehn@phys.ethz.ch>, ETH Zurich Copyright (C) 2013 Alain Miniussi <alain.miniussi@oca.eu> Copyright (C) 2018 Steffen Hirschmann Copyright Alain Miniussi 20014. Copyright (C) 2017 Alain Miniussi & Vincent Chabannes Copyright (C) 2017 Alain Miniussi & Steffen Hirschmann Copyright (c) 2017 Kohei Takahashi Copyright (c) 2014 Andrey Semashev Copyright (c) 2013 Tim Blechmann Copyright (c) 2009 Helge Bahmann Copyright (c) 2012 Tim Blechmann Copyright (c) 2013 - 2018 Andrey Semashev Copyright (c) 2009 Phil Endecott Copyright (c) 2010 Helge Bahmann Copyright (c) 2013 - 2014 Andrey Semashev Copyright (c) 2009, 2011 Helge Bahmann Copyright (c) 2012 - 2014 Andrey Semashev Copyright (c) 2012 Hartmut Kaiser Copyright (c) 2017 - 2018 Andrey Semashev Copyright (c) 2015 Andrey Semashev Copyright (c) 2012 - 2014, 2017 Andrey Semashev Copyright (c) 2014 - 2018 Andrey Semashev Copyright (c) 2014, 2019 Andrey Semashev Copyright 2013 Tim Blechmann Copyright Robin Eckert 2015. Copyright (C) 2018 Tobias Loew Copyright (C) 2006 Peder Holt Copyright iamvfx@gmail.com 2014 Copyright Duncan Exon Smith 2012 Copyright Beman Dawes 2012 Copyright Beman Dawes 2014. Copyright (c) 2014 Grav Copyright (c) 2016 MATHIEU CORNIC Copyright (c) 2017 Valere JEANTET Copyright 2006-2011 Daniel James. Copyright 2015 Klemens Morgenstern Copyright John Maddock 2007-8. (C) Copyright John Maddock 2001 - 2003 (C) Copyright Jens Maurer 2001 (C) Copyright Peter Dimov 2001 (C) Copyright Darin Adler 2001 (C) Copyright Beman Dawes 2002 Modifications copyright (c) 2018-2019, Oracle andor its affiliates. (C) Copyright Vicente J. Botet Escriba 2014-2015. (C) Copyright Howard Hinnant 2007-2010. Copyright (c) 1991-2009 Unicode, Inc. table builder) (c) Peter Kankowski, 2008 (C) Copyright Gennadiy Rozental 2002-2015. Copyright 2016 Andrey Semashev Copyright 2015 Andrey Semashev Copyright 2015-2018 Andrey Semashev Copyright 2013, 2017 Andrey Semashev Copyright 2014 Antony Polukhin Copyright 2016 Jorge Lodos Copyright 2017 Vinnie Falco Copyright 2014 Renato Tegon Forti, Antony Polukhin Copyright 2015 Antony Polukhin Copyright 2016 Klemens D. Morgenstern Copyright 2016-2018 Andrey Semashev Copyright 2015, 2017 Andrey Semashev Copyright 2016, 2017 Andrey Semashev Copyright 2013 Andrey Semashev Copyright 2008 Roland Schwarz Copyright (c) 2011 Brandon Kohn Copyright John Maddock 2006-15. Copyright Paul Fultz II 2016-2018 Copyright (c) 2001 by Andrei Alexandrescu. Copyright 2017 Daniel James Copyright 2014 Paul A. Bristow Copyright (c) 2011 Roji Philip Copyright (c) 2011 Matthias Born Copyright (c) 2011 Joerg Becker Copyright (c) 2010 Carl Philipp Reh Copyright (c) 2011 Robert Nelson Copyright (c) 2011 Bryce Lelbach Copyright (c) 2010 Daniel James Copyright (c) 2010 Josh Wilson Copyright (c) 2010 Olaf Peter Copyright (c) 2010 Head Geek Copyright (c) 2012 Louis Dionne Copyright (c) 2011 Dean Michael Berries Copyright (c) 2011 Brian O'Kennedy Copyright (c) 2008 Francois Barel Copyright 2010 Daniel Wallin, Eric Niebler. Copyright 2003 - 2011 LASMEA UMR 6602 CNRSUniv. Copyright 2009 - 2011 LRI UMR 8623 CNRSUniv Paris Sud XI Copyright 2011 Eric Niebler Copyright (c) 2013 Agustín Bergé Copyright John Maddock 2002-4. Copyright 2007 Aaron Windsor Copyright (c) Aaron Windsor 2007 Copyright (c) 2013, Petr Machata, Red Hat Inc. Copyright 2005, 2008 Peter Dimov Copyright 2005-2006 Andreas Huber Doenni Copyright 2010 Igor R (http:thread.gmane.orggmane.comp.lib.boost.user62985) Copyright 2010 Andreas Huber Doenni Copyright 2004-2006 Andreas Huber Doenni Copyright 2005-2008 Andreas Huber Doenni Copyright 2004-2007 Andreas Huber Doenni Copyright 2009 Andreas Huber Doenni Copyright David Abrahams 2002, Nikolay Mladenov 2007. Copyright 2015 John Fletcher Copyright Mike Dev 2018 Copyright Rene Rivera 2018 Copyright Edward Diener 2011-2015,2019 Copyright 2006, 2007, 2008, 2009, 2010, 2012, 2013, 2015, 2016 John Maddock and Paul A. Bristow. Copyright Pavol Droba 2002-2003. Copyright (C) 2001-2003 Douglas Gregor Copyright (C) Douglas Gregor 2001-2005. Copyright Douglas Gregor 2008. Copyright 2014 Antony Polukhin. Copyright Gunter Winkler 2004 - 2009. Copyright (c) 2001 Doug Gregor Copyright Oliver Kowalke 2018. Copyright 2012: Eric Niebler Copyright Raffi Enficiaud 2018 Copyright Gennadiy Rozental 2007-2015. Copyright Edward Diener 2018. Copyright (2) Beman Dawes 2011 Copyright 2004 Robert Ramey - http:www.rrsd.com . Copyright (c) 2004 Robert Ramey, Indiana University (garcia@osl.iu.edu) Copyright 2005 Robert Ramey - http:www.rrsd.com . Copyright Antony Polukhin 2012-2014. Copyright Hubert Holin 2003. Copyright Nick Thompson, 2019 Copyright John Maddock 2005. Copyright Paul A. Bristow 2010 Copyright Paul A. Bristow 2009, 2011 Copyright (C) Benjamin Sobotta 2012 Copyright Bruno Lalande 2008. Copyright John Maddock 2012 Copyright (c) 2011 Paul A. Bristow Copyright Paul A. Bristow 2014. Copyright Matthew Pulver 2018 - 2019. Copyright (c) 2011 Paul A. Bristow comments Copyright Paul A. Bristow 2007, 2012. Copyright John Maddock 2013. Copyright John Maddock 2013 Copyright Paul A. Bristow 2013. Copyright John Maddock 2006, 2007 Copyright Paul A. Bristow 2007, 2009, 2010, 2012. Copyright Paul A. Bristow 2007. Copyright 2006 John Maddock Copyright Paul Bristow 2007, 2011. Copyright John Maddock 2006, 2011. Copyright Xiaogang Zhang 2006 Copyright Paul A. Bristow 2006-7. Copyright John Maddock 2006-7. Copyright 2014 Marco Guazzone (marco.guazzone@gmail.com). Copyright Paul A. Bristow Copyright Gautam Sewani Copyright Paul A. Bristow 2016, 2017, 2018. Copyright John Maddock 2016. Copyright Paul A. Bristow 2008, 2009, 2014. Copyright (c) 2011 Paul A. Bristow incorporated Boost.Math Copyright 2013 Paul A. Bristow Copyright John Maddock 2009 Copyright John Maddock 2008, 2012. Copyright Paul A. Bristow 2012. Copyright 2011 Paul A. Bristow Copyright Nick Thompson, 2018 Copyright Benjamin Sobotta 2012. Copyright Paul A. Bristow 2007, 2009. Copyright John Maddock 2014. Copyright John Maddock 20 Copyright Jeremy Murphy 2015. Copyright John Maddock 2010 Copyright John Maddock 2006 Copyright John Maddock 2014 Copyright Paul A. Bristow 2011 (added tests for changesign) Copyright 2006 Johan Rade Copyright 2011 Paul A. Bristow To incorporate into Boost.Math Copyright 2012 Paul A. Bristow with new tests. Copyright Paul A. Bristow 2006, 2017. Copyright Paul Bristow 2006, 2007. Copyright Paul Bristow 2007. Copyright Paul A. Bristow 2017. Copyright John Maddock 2006, 2012. Copyright Paul A. Bristow 2007, 2012. Copyright John Maddock 2018 Copyright Pierre Talbot 2013. Copyright Vicente J. Botet Escriba 2013,2014. Copyright (C) 2002 Brad King (brad.king@kitware.com) Copyright (C) 2002, 2008, 2013 Peter Dimov Copyright (C) 2017 Glen Joseph Fernandes (glenjofe@gmail.com) Copyright (c) 2003 Daniel Frey Copyright (c) 2003 Howard Hinnant Copyright 2003 (c) The Trustees of Indiana University. Copyright (c) 2002, 2009, 2014 Peter Dimov Copyright (2) Beman Dawes 2010, 2011 Copyright (3) Ion Gaztanaga 2013 Copyright Beman Dawes 1999-2003. Copyright 2004 Pavel Vozenilek. Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi) Copyright (C) 2001, 2002 Peter Dimov Copyright (C) 2014 Glen Joseph Fernandes Copyright (C) 2014 Agustin Berge Copyright Beman Dawes, 2009 Copyright (C) 2011-2012 Vicente J. Botet Escriba Copyright (C) 2012 Anthony Williams Copyright (C) 2007, 2008 Steven Watanabe, Joseph Gauterin, Niels Dekker Copyright 2007, 2014 Peter Dimov Copyright (C) 2014 Andrey Semashev Copyright (c) 2016-2019, Oracle andor its affiliates. Copyright Thorsten Ottosen, Neil Groves 2006 - 2008. Use, modification and Copyright Thorsten Ottosen, Neil Groves 2006. Use, modification and Copyright Neil Groves 2014. Copyright 2014 Neil Groves Copyright (c) 2010 Ilya Murav'jov Copyright Robin Eckert 2015. Copyright Neil Groves 2007. Use, modification and (C) Copyright Ion Gaztanaga 2012-2015. (C) Copyright Ion Gaztanaga 2010-2016. (C) Copyright Ion Gaztanaga 2014-2017. Copyright Ion Gaztanaga 2015-2015. Copyright Ion Gaztanaga 2017-2017 Copyright Ion Gaztanaga 2012-2012. Copyright Steven Watanabe 2009. Copyright 2017 James E. King, III Copyright John Maddock 2010, 2012. Copyright Paul A. Bristow 2011, 2012. Copyright John Maddock 2005-2006, 2011. Copyright Paul A. Bristow 2006-2011. Copyright 2010, Jeffrey Hellrung. Copyright 2018 Daniel James. Copyright 2010 Barend Gehrels. Copyright Eric Niebler 2005. Copyright Eric Niebler 2008. Copyright (c) 2011-2012 Copyright (c) 2002-2006 Pavol Droba. Copyright Beman Dawes, 2013 Copyright 2015 Glen Joseph Fernandes Copyright Beman Dawes 2017 Copyright Beman Dawes, 2002 Copyright (c) 2004 Beman Dawes Copyright Beman Dawes 2004. Copyright Beman Dawes 2002, 2009. Copyright Beman Dawes 2008, 2009, 2015 Copyright Beman Dawes 2002, 2008 Copyright Beman Dawes 2008, 2009 Copyright Beman Dawes 2009, 2010 Copyright Jeremy Siek 2002. Copyright Thomas Witt 2002. Copyright Nick Thompson, 2018 Copyright Milan Svoboda 2008. (C) Copyright Jonathan Turkanis 2003. (C) Copyright Craig Henderson 2002 'boostmemmap.hpp' from sandbox (C) Copyright Jonathan Graehl 2004. (C) Copyright Jorge Lodos 2008. (C) Copyright Reimar Döffinger 2018. Copyright (C) 2006 Douglas Gregor <doug.gregor@gmail.com> Copyright (C) 2005-2006 Matthias Troyer Copyright 2008 Lubomir Bourdev and Hailin Jin Copyright 2006-2015 Joaquin M Lopez Munoz. Copyright 2006-2011 Joaquin M Lopez Munoz. Copyright Jason Rice 2015 Copyright 2018 Nick Thompson. Distributed under the Boost Copyright John Maddock 2019. Copyright John Maddock 2017 Copyright Christopher Kormanyos 2013 - 2014. Copyright Christopher Kormanyos Copyright 2005 Vladimir Prus Copyright 2011-2014 Karsten Ahnert Copyright 2011-2014 Mario Mulansky Copyright (C) 2013-2019 Niall Douglas <http:www.nedproductions.biz/> Copyright 2014 John Maddock. (C) Copyright Beman Dawes 2002. (C) Copyright John Maddock 2011. Copyright Beman Dawes 2000. (C) Copyright John Maddock 2014-9. Copyright Bryce Lelbach 2010. (C) Copyright Gennadiy Rozental 2005-2014. Copyright (c) 2007-2019 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2014-2019 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2017-2019 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2015-2019 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2010-2019 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2014-2015 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2014-2015 Bruno Lalande, Paris, France. Copyright (c) 2014-2015 Mateusz Loskot, London, UK. Modifications copyright (c) 2015, 2019, Oracle andor its affiliates. Copyright (c) 2013 Bruno Lalande, Paris, France. Copyright (c) 2019-2019 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2014 Bruno Lalande, Paris, France. Copyright (c) 2014 Mateusz Loskot, London, UK. Copyright Kohei Takahashi 2016. Copyright Nicolai M. Josuttis 2001, Copyright Craig Henderson 2002. Copyright (C) 2001-2008 Joel de Guzman Copyright (C) 2001-2008 Hartmut Kaiser (C) Copyright David Abrahams 2004. (C) Copyright Vicente J. Botet Escriba 20010. Copyright 2004. Vladimir Prus Copyright 2013 Steven Watanabe Copyright 2003. Vladimir Prus Copyright Vladimir Prus 2003. Copyright (c) 2002 Institute of Transport, Copyright Cromwell D. Enage 2004 Copyright 2006 The Trustees of Indiana University. (C) Copyright Andrew Sutton 2009 Copyright (c) 2004 Kristopher Beevers Copyright 2001 University of Notre Dame. Copyright 2002 Indiana University. (C) Copyright 2004 Douglas Gregor and Jeremy Siek Copyright (c) 2010 Matthias Walter (xammy@xammy.homelinux.net) Copyright (c) 2006, Stephan Diederich (C) Copyright David Gleich 2007 Copyright 2013 University of Warsaw. Copyright (C) 2006-2009 Dmitry Bufistov and Andrey Parfenov Copyright 2013 Louis Dionne Copyright (C) 2002 Trustees of Indiana University Copyright 2009 Trustees of Indiana University. Copyright (C) 2005 Jong Soo Park <jongsoo.park -at- gmail.com> Copyright 2002 Rensselaer Polytechnic Institute Copyright 2009 The Trustees of Indiana University. Copyright (C) 2006 Tiago de Paula Peixoto <tiago@forked.de> Copyright 2004-5 Trustees of Indiana University Copyright (C) 2001-20044 Douglas Gregor (dgregor at cs dot indiana dot edu) Copyright 2008 Aaron Windsor Copyright 2009 Andrew Sutton Copyright Fernando Vilas 2012. Copyright (c) 2005 Aaron Windsor Copyright 2017 Felix Salfelder Copyright (C) 2007-2008 The Trustees of Indiana University. Copyright 2010 The Trustees of Indiana University. Copyright (c) 2013 Alberto Santini Copyright 2009 Dmitry Bufistov, Andrew Sutton Copyright Michael Drexl 2005, 2006. Copyright Daniel Trebbien 2010. Copyright 2014 Alexander Lauser. Copyright (C) Ben Pope 2014. Copyright 2009-2010 Andrew Sutton Copyright (C) 2001 Vladimir Prus <ghost@cs.msu.su> Copyright (C) 2001 Jeremy Siek <jsiek@cs.indiana.edu> Copyright (C) 2012, Michele Caini. Copyright (C) 2012 Flavio De Lorenzi (fdlorenzi@gmail.com) Copyright (C) 2013 Jakob Lykke Andersen, University of Southern Denmark (jlandersen@imada.sdu.dk) Copyright (c) 2018 Yi Ji Copyright (c) 2008 Dan Marsden Copyright (c) 2011-2016 Adam Wulkiewicz, Lodz, Poland. Copyright 2008-2010 Gordon Woodhull Copyright 2010 Gordon Woodhull Copyright (C) 2010 Paul A. Bristow added Doxygen comments. Copyright Gennadiy Rozental 2008-2015. Copyright (c) 2018 Oxford Nanopore Technologies Copyright (c) 2018 Klemens D. Morgenstern Copyright (c) 2015 Klemens D. Morgenstern Copyright (c) 1998-2004 John Maddock Copyright 2011 Garmin Ltd. or its subsidiaries Copyright (c) 2002 Copyright (c) 2004 John Maddock Copyright (c) 2003-2005 Copyright (c) 1998-2009 Copyright (c) 1998-2009 John Maddock Copyright 2008 Eric Niebler. Copyright (c) 1998-2005 Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler Copyright Abel Sinkovics (abel@sinkovics.hu) 2010 - 2011. Copyright Robert Ramey 2004 Copyright 2002-2008 Robert Ramey and Joaquin M Lopez Munoz Copyright 2002-2009, 2014 Beman Dawes Copyright 2001 Dietmar Kuehl Copyright 2019 Andrey Semashev Copyright 2002-2005 Beman Dawes Copyright David Abrahams, Daniel Wallin 2003. Copyright David Abrahams, Matthias Troyer, Michael Gauckler 2005. Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) Copyright (c) 2016 Jeffrey E. Trull Copyright (c) 2014 Tomoki Imai Copyright (c) 2011 Laurent Gomila Copyright (c) 2010 Larry Evans Copyright (c) 2010 Peter Schueller Copyright (c) 2010 Chris Hoeppler Copyright 2010 Intel Corporation Copyright (C) 2000 Gary Powell (powellg@amazon.com) Copyright (C) 2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi) Copyright (C) 2000 Gary Powell (gary.powell@sierra.com) Copyright 2011-2014 Mario Mulansky Copyright 2011-2014 Karsten Ahnert Copyright Paul A. Bristow 2006, 2007, 2012. Copyright 2017 Glen Joseph Fernandes Copyright 2009 Peter Dimov Copyright 2014, 2017 Peter Dimov Copyright (c) 2017 Bjorn Reese Copyright (c) 2017 Hans Dembinski Copyright 2014, 2019 Peter Dimov Copyright 2017 Kohei Takahashi Copyright (c) 2014, 2018 Peter Dimov Copyright Beman Dawes 1999. Copyright David Abrahams and Aleksey Gurtovoy 2002-2004. Copyright (c) 2017 Peter Dimov Copyright (C) 1995-2011, 2016 Mark Adler Copyright (C) 1995-2005, 2014, 2016 Jean-loup Gailly, Mark Adler Copyright (C) 1995-2006, 2010, 2011, 2012, 2016 Mark Adler Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler Copyright (C) 1995-2016 Jean-loup Gailly Copyright (C) 2004, 2010 Mark Adler Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler Copyright (C) 2004-2017 Mark Adler Copyright (C) 1995-2016 Mark Adler Copyright (C) 1995-2003, 2010 Mark Adler Copyright (C) 1995-2005, 2010 Mark Adler Copyright (C) 1995-2017 Jean-loup Gailly Copyright (C) 1995-2003, 2010, 2014, 2016 Jean-loup Gailly, Mark Adler Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler Copyright Paul A. Bristow & John Maddock 2009, 2010 Copyright Paul A. Bristow 2007, 2009, 2012. Copyright Paul A. Bristow & John Maddock 2009 Copyright Paul A. Bristow 2007, 2009, 2010, 2012 Copyright (c) 2015 John Maddock Copyright Jeremy Murphy 2016. Copyright 2017 John Maddock. Distributed under the Boost Copyright 2003-2013 Christopher M. Kohlhoff Copyright Oliver Kowalke, Nat Goodspeed 2015. Copyright Arnaud Kapp, Oliver Kowalke 2016 Copyright (c) 2010 Mathias Gaunard Copyright (c) 2009 Carl Barron Copyright (c) 2009 Pavel Baranov Copyright (c) 2013 Andreas Pokorny Copyright (c) 2011 Ryan Molden Copyright (c) 2009 Jean-Francois Ostiguy Copyright (c) 2010 Sergey "GooRoo" Olendarenko Copyright (c) 2009 Tor Brede Vekterli Copyright (C) 2012 David Stone Copyright (C) 2003 Vladimir Prus Copyright 2001, 2002, 2003, 2005 Dave Abrahams Copyright 2003, 2005 Vladimir Prus Copyright David Abrahams 2001. Copyright Jessica Hamilton 2014 Copyright Rene Rivera 2014-2015 Copyright Franz Detro 2014 Copyright Beman Dawes 1994, 2006, 2008 Copyright Ion Gaztanaga 2007-2015. copyright John Maddock 2005 Copyright (C) 2000 Stephen Cleary Copyright (c) 2006, 2007 Marcin Kalicinski Copyright (C) 2006, 2009 Marcin Kalicinski Copyright (c) 2014-2019, Oracle andor its affiliates. Copyright 2008 David Jenkins. Copyright 2008 David Jenkins. Copyright (c) 2018 Fady Essam Copyright (c) 2015 Orson Peters <orsonpeters@gmail.com> Copyright (c) 2019 Damian Jarek(damian.jarek93@gmail.com) Copyright (c) 2017 Vinnie Falco (vinnie dot falco at gmail dot com) Copyright Eric Niebler 2013-present Copyright (c) 2016-2019Damian Jarek (damian dot jarek93 at gmail dot com) Copyright (c) 2001, Daniel C. Nuffer. Copyright 2018 Daniel James Copyright 2019 Dmitry Arkhipov Copyright (c) 2018Robert Ramey Copyright Nuxi, https:nuxi.nl 2015. (C) Copyright Jessica Hamilton 2014. (C) Copyright Bill Kempf 2002. (C) Copyright Jim Douglas 2005. (C) Copyright Yuriy Krasnoschek 2009. (C) Copyright Artyom Beilis 2010. (C) Copyright Dustin Spicuzza 2009. (C) Copyright Bill Kempf 2001. (C) Copyright Rene Rivera 2005. (C) Copyright Peter Dimov 2002 (C) Copyright Peter Dimov 2001, 2002 (C) Copyright Peter Dimov 2001, 2002, 2003 (C) Copyright Ion Gaztanaga 2006-2014. Copyright (c) 2003-2013 Hartmut Kaiser. Copyright (c) 1998, 2002-2005 Kiyoshi Matsui <kmatsui@t3.rim.or.jp> Copyright (c) 1998, 2002-2006 Kiyoshi Matsui <kmatsui@t3.rim.or.jp> Copyright (c) 2017 Abel Sinkovics. Copyright (c) 2001-2013 Hartmut Kaiser. Copyright (c) 2019 Tom Tan Copyright 2018-2019 Antony Polukhin. Copyright 2015-2018 Klemens D. Morgenstern Copyright Christopher Kormanyos 2016. Copyright 2013 Christopher Kormanyos. Copyright Andrey Semashev 2018. Copyright John Maddock 2016. Copyright Beman Dawes 2007, 2011 Copyright Beman Dawes 1994-2006, 2011 Copyright 2018-2019 Niall Douglas <http:www.nedproductions.biz/> Copyright 2017-2018 Daniel James Copyright Rene Rivera 2008-2013 Copyright Guillaume Melquiond 2003. Copyright (c) 2001-2003 John Maddock Copyright (c) 2001 Darin Adler Copyright (c) 2002 Bill Kempf Copyright (c) 2002 Jens Maurer Copyright (c) 2002-2003 David Abrahams Copyright (c) 2003 Gennaro Prota Copyright (c) 2010 Eric Jourdanneau, Joel Falcou Copyright Joel de Guzman 2002-2004. Copyright Joel de Guzman 2002-2007. Copyright Vicente J. Botet Escriba 2009-2011 Copyright (c) 2015-2019 Vinnie Falco (vinnie dot falco at gmail dot com) Copyright 2017, 2018 James E. King III Copyright 2018 James E. King III Copyright 2002, 2005 Vladimir Prus Copyright (c) 2002 Eric Friedman, Itay Maman Copyright (c) 2003 Gustavo Guerra Copyright Marshall Clow 2018 Copyright 2014-2016 Glen Joseph Fernandes Copyright 2015 NumScale SAS Copyright 2015 LRI UMR 8623 CNRS/University Paris Sud XI Copyright (C) 2008-2019 Lorenzo Caminiti Copyright Stephen Silver, 2001. Copyright 2002 Dave Abrahams Copyright John Maddock 2004. Copyright Darin Adler 2000 Copyright Beman Dawes 2006, 2009 Copyright Joel de Guzman 2003. Copyright Keld Helsgaun 2000, Oliver Kowalke 2014. Modifications copyright (c) 2013, 2014 Oracle andor its affiliates. Copyright (c) 2012-2014 Bruno Lalande, Paris, France. Copyright (c) 2012-2014 Mateusz Loskot, London, UK. Copyright (c) 2013 Jamboree Copyright Pavol Droba 2002-2003. Copyright Pavol Droba 2002-2006. Copyright (c) 2003 Paul Mensonides Copyright Steve Cleary & John Maddock 2000. Copyright 2005 Redshift Software, Inc. Copyright (C) 2008-2016 Daniel James. Copyright (C) 2005-2016 Daniel James Copyright (c) 2011-2012 Thomas Bernard Copyright (c) 2014 Jamboree Copyright 2013,2015 Vicente J. Botet Escriba Copyright 2014 Vicente J. Botet Escriba Copyright 2011-2015 Vicente J. Botet Escriba Copyright Vicente J. Botet Escriba 2008-2009,2012. Copyright 2012 Vicente Botet Copyright 2009-2012 Vicente J. Botet Escriba Copyright 2009-2012 Anthony Williams Copyright 2008-2009,2012 Vicente J. Botet Escriba Copyright 2010 Just Software Solutions Ltd http:www.justsoftwaresolutions.co.uk Copyright Peter Dimov, Hans Dembinski 2018-2019 Copyright Hans Dembinski 2016 - 2019. Copyright 2005-2013 Ion Gaztanaga Copyright (c) 2016 Modified Work Barrett Adair Copyright (c) 2010-2013 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2011-2014 Bruno Lalande, Paris, France. Copyright Barend Gehrels 2010, 2011, Geodan, Amsterdam, the Netherlands Copyright (c) 2011-2015 Bruno Lalande, Paris, France. (C) Copyright Ion Gaztanaga 2006-2015. (C) Copyright Ion Gaztanaga 2015-2015. (C) Copyright Matei David 2014 (C) Copyright Ion Gaztanaga 2014 (C) Copyright Matei David 2014-2014. (C) Copyright Ion Gaztanaga 2014-2014. (C) Copyright Ion Gaztanaga 2007-2015 (C) Copyright Andrey Semashev 2018. Copyright 2019 Henry Schreiner Copyright 2015-2016 Hans Dembinski Copyright 2019 Glen Joseph Fernandes (glenjofe@gmail.com) Copyright (c) 2012 Steven Watanabe Copyright Andreas Schwab 2019 Copyright 2016-2019 Peter Dimov (C) Copyright Edward Diener 2013. (C) Copyright Edward Diener 2011,2013. Copyright Cromwell D. Enage 2013. Copyright (c) 2018-2019 Mateusz Loskot <mateusz at loskot dot net> Copyright Beman Dawes 2006, 2011 Copyright Beman Dawes 1998. Distributed under the Boost Copyright (C) 2007 Alexey Baskakov Copyright (C) 2007 Marcin Kalicinski Copyright (C) 2013 Sebastian Redl Copyright (C) 2002-2007 Marcin Kalicinski Copyright (C) 2017-2019 Niall Douglas <http:www.nedproductions.biz/> Copyright Vicente J. Botet Escriba 2009 Copyright (c) Intel Corporation 2008. Copyright (c) 2008-2012 Simonson Lucanus. Copyright (c) 2012-2012 Andrii Sydorchuk. Copyright 2012 Lucanus Simonson (C) Copyright Gennadiy Rozental 2003-2014. (C) Copyright Gennadiy Rozental 2001-2006. (C) Copyright Gennadiy Rozental 2005. (C) Copyright Gennadiy Rozental 2002-2014. (C) Copyright Gennadiy Rozental & Ullrich Koethe 2001. Copyright Louis Dionne 2016 Copyright Zach Laine 2016 Copyright Neil Groves 2013. Use, modification and Copyright (c) 2009-2010: Joachim Faulhaber Copyright (C) 2001 Gary Powell (gary.powell@sierra.com) Copyright (c) 2011 Paul Heil Copyright (C) 2004,2009 The Trustees of Indiana University. Copyright 2004-9 Trustees of Indiana University Copyright 2009-2011 Vicente J. Botet Escriba Copyright 2009-2012 Vicente J. Botet Escriba Copyright (c) 2018 Vinnie Falco (vinnie dot falco at gmail dot com) Copyright (c) 2018 Kohei Takahashi Copyright (c) 2018 Kohei Takahshi Modifications copyright (c) 2017-2019 Oracle andor its affiliates. Modifications copyright (c) 2015-2018 Oracle andor its affiliates. Copyright (c) 2013 Adam Wulkiewicz, Lodz, Poland Copyright (c) 2017-2017 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2013-2017 Adam Wulkiewicz, Lodz, Poland Copyright (c) 2015-2016 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2002-2010 Hartmut Kaiser Copyright (c) 2002-2010 Joel de Guzman Copyright Edward Diener 2011,2014. Copyright (c) 2106 Klemens D. Morgenstern Copyright Rene Rivera 2008-2019 Copyright 2005-2011 Ion Gaztanaga Copyright Eric Niebler 2006. Copyright Beman Dawes 2014, 2015 Copyright Beman Dawes 1999-2008 Copyright (c) 2016 Lee Clagett Copyright (c) 2015,2018 Kohei Takahashi Copyright (c) 2018 Louis Dionne Copyright Raffi Enficiaud 2017. Copyright (c) 2008 Michael Marcin Copyright (c) 2009 Frank Mori Hess Copyright Frank Mori Hess 2008. Copyright Frank Mori Hess 2007-2010. Copyright Frank Mori Hess 2007. Copyright Frank Mori Hess 2007-2008 Copyright Frank Mori Hess 2007-2009. Copyright Timmo Stange 2007. Copyright Douglas Gregor 2001-2004. Use, modification and Copyright Frank Mori Hess 2007-2009 Copyright Frank Mori Hess 2007,2009. Copyright (c) 2003 Jonathan de Halleux Copyright Juergen Hunold 2015 Copyright Juergen Hunold 2016 Copyright 2007, 2008 Steven Watanabe, Joseph Gauterin, Niels Dekker Copyright David Abrahams, Vicente Botet 2009. Copyright Ion Gaztanaga 2009-2012. Copyright 2017 Antony Polukhin. Copyright 2017-2018 Daniel James. Copyright (c) Alexander Zaitsev <zamazan4ik@gmail.by>, 2016 Copyright (c) Alexander Zaitsev <zamazan4ik@gmail.by>, 2017 Copyright 2007-2009 Daniel James. Copyright 2006-2010 Daniel James. Copyright 2017 Daniel James. Copyright 2016 Daniel James. Copyright Ion Gaztanaga 2012-2016. Copyright 2008 Eric Niebler. Distributed Copyright (c) 2013 John Maddock, Antony Polukhin Copyright (c) 2000 David Abrahams. Copyright Beman Dawes 1995-2001. Copyright 2005-2011 Daniel James. Copyright 2013 Rene Rivera Copyright Matthias Troyerk 2006. Copyright 2018, 2019 Andrey Semashev Copyright (c) 2008, 2018 Peter Dimov Copyright David Abrahams 2001, Howard Hinnant 2001. Copyright 2012 Lee Hodgkinson Copyright (c) 2014 Anton Bikineev Copyright John Maddock 2009. Copyright Paul A. Bristow 2017, 2018 Copyright John Z. Maddock 2017 Copyright (c) 2018 Mike Dev Copyright (C) 2017 Minmin Gong Copyright (C) 2011-2013, 2016 Tim Blechmann Copyright (C) 2011, 2016 Tim Blechmann Copyright (C) 2008-2016 Tim Blechmann Copyright (C) 2009, 2016 Tim Blechmann Copyright (C) 2008, 2016 Tim Blechmann Copyright (C) 2008, 2009, 2016 Tim Blechmann, based on code by Cory Nelson Copyright Aleksey Gurtovoy 2009 Copyright Aleksey Gurtovoy 2007-2009 Copyright (C) 2008 Matthias Christian Schabel Copyright (c) 2015-2017 Oracle andor its affiliates. Copyright (c) 2015-2018 Oracle andor its affiliates. Copyright (c) 2016, 2018 Oracle andor its affiliates. Copyright (c) 2014-2016 Oracle andor its affiliates. Copyright (c) 2015-2016 Oracle andor its affiliates. Copyright 2010 Thomas Claveirole Copyright 2001 Universite Joseph Fourier, Grenoble. Copyright 2006 Trustees of Indiana University Copyright 2005 Jeremy G. Siek Copyright (c) Jeremy Siek 2001, Marc Wintermantel 2002 Copyright (c) Jeremy Siek 2001 Copyright (c) Douglas Gregor 2004 Copyright 2005-2009 The Trustees of Indiana University. Copyright 1997-2001 University of Notre Dame. Copyright 2007 Stanford University Copyright 2004, 2005 Trustees of Indiana University Copyright 2003 Bruce Barr Copyright 2003 Jeremy Siek Copyright (C) 2005-2009 Jongsoo Park <jongsoo.park -at- gmail.com> Copyright 2013 Maciej Piechotka Copyright 2000 University of Notre Dame. Copyright (C) 2004 The Trustees of Indiana University. Copyright 2009, Andrew Sutton Copyright (C) 2009 Andrew Sutton Copyright Louis Dionne 2013 Copyright (C) 2001 Jeremy Siek, Douglas Gregor, Brian Osman Copyright 2001 Indiana University Copyright 2007 University of Karlsruhe Copyright 2009 Trustees of Indiana University Copyright 2012 Fernando Vilas Copyright 2010 Daniel Trebbien Copyright (C) 2005-2010 The Trustees of Indiana University. Copyright 2002 Brad King and Douglas Gregor Copyright 2004-2006 The Trustees of Indiana University. Copyright 2002 Marc Wintermantel (wintermantel@even-ag.ch) Copyright Francois Faure, iMAGIS-GRAVIR UJF, 2001. Copyright (C) Vladimir Prus 2003 Copyright 2004 The Trustees of Indiana University Copyright 2005 Trustees of Indiana University Copyright 2009 Eric Bose-Wolf Copyright (C) 2004-2009 The Trustees of Indiana University. Copyright 2002 William E. Kempf Copyright 2019 Rene Rivera Copyright 2014 John Maddock. Copyright Christopher Brown 2013 Copyright Paul Mensonides 2012. Copyright 2013 Davide Anastasia <davideanastasia@users.sourceforge.net> Copyright (c) 2015, 2019, Oracle andor its affiliates. Copyright 2003-2019 Christopher M. Kohlhoff Copyright (C) 2017 James E. King III Copyright (C) 2018 Peter Dimov Copyright (C) 2001 Stephen Cleary Copyright Thorsten Ottosen 2003-2006. Copyright Antony Polukhin, 2012-2019. Copyright Daniel James 2008-2009 Copyright (c) 2001 Ralf W. Grosse-Kunstleve. Copyright 2008 Eric Niebler Copyright 2010 Eric Niebler Copyright Eric Ford 2001 & Hubert Holin. Copyright Eric Ford & Hubert Holin 2001. Copyright (c) 2007, 2013 John Maddock Copyright Nick Thompson 2017. Copyright (c) 2006 John Maddock Copyright (c) 2006 Xiaogang Zhang, 2015 John Maddock Copyright (c) 2006 Xiaogang Zhang, 2015 John Maddock. Copyright John Maddock 2006, 2010. Copyright John Maddock 2005-2008. Copyright (c) 2006-2008 Johan Rade Copyright John Maddock 2006-7, 2013-14. Copyright Paul A. Bristow 2007, 2013-14. Copyright Nikhar Agrawal 2013-14 Copyright Christopher Kormanyos 2013-14 Copyright John Maddock 2005-2006. Copyright Nicholas Thompson 2018 Copyright 2012 K R Walker Copyright 2011, 2012 Paul A. Bristow Copyright John Maddock 2006, 2015 Copyright Johan Rade 2006. Copyright Paul A. Bristow 2011 (added changesign). Copyright John Maddock 2007, 2014. Copyright 2002 Robert Ramey - http://www.rrsd.com . Copyright 2007-2009, 2017 Peter Dimov Copyright 2007-2009, 2014 Peter Dimov Copyright 2012-2015 Glen Joseph Fernandes Copyright 2007-2009 Peter Dimov Copyright (c) 2012 Peter Dimov Copyright 2017, 2018 Peter Dimov Copyright 2008, 2017 Peter Dimov Copyright (c) 2016 Karolin Varner Copyright (c) 2002, 2011 Peter Dimov Copyright 2002, 2011, 2017 Peter Dimov Copyright 2002, 2017 Peter Dimov Copyright (c) 2002-2005 Peter Dimov Copyright 2011 Peter Dimov Copyright 2002, 2003, 2017 Peter Dimov Copyright 2012, 2017 Peter Dimov Copyright 2007-2009, 2017, 2018 Peter Dimov Copyright 2007-2009, 2018 Peter Dimov Copyright 2010 Georg Fritzsche Copyright 2016 Giel van Schijndel Copyright 2009 Frank Mori Hess Copyright (c) 2005 Ion Gaztanaga Copyright 2012, 2013 Peter Dimov Copyright (c) 2002, 2003, 2014 Peter Dimov Copyright (c) 2008, 2014 Peter Dimov Copyright 2009, 2014 Peter Dimov Copyright (c) 2005, 2014 Peter Dimov Copyright 2006 Peter Dimov Copyright (c) 2016 Chris Glover Copyright Beman Dawes 1998, 1999. Copyright (c) 2012, 2015 Peter Dimov Copyright 2011, 2015 Peter Dimov Copyright 2012 Peter Dimov Copyright (c) 2014, 2015 Peter Dimov Copyright 2014, 2015, 2019 Peter Dimov Copyright (c) 2002, 2003, 2015 Peter Dimov Copyright (C) 2007 Douglas Gregor Copyright (C) 2005, 2006 The Trustees of Indiana University. Copyright 2001 Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee, Copyright 2004 Douglas Gregor Copyright Nakhar Agrawal 2013. Copyright Christopher Kormanyos 2012. Copyright Paul A. 2007, 2010 Copyright John Maddock 2007 Copyright Paul A. Bristow 2007, 2009, 2010 Copyright Paul A. Bristow 2015, 2018. Copyright Nicholas Thompson 2017. Copyright Paul Bristow 2013. Copyright Paul A. Bristow 2016. Copyright Paul A. Bristow 2007, 2010, 2012. Copyright Datasim Education BV 2009-2010 Copyright John Maddock and Paul A. Bristow 2010 Copyright Christopher Kormanyos 2012, 2013. Copyright John Maddock 2016 Copyright Paul A. Bristow 2015. Copyright Paul A. Bristow 2007, 2008, 2010 Copyright John Maddock, 2017 Copyright Thomas Mang 2011. Copyright Paul A. Bristow 2011. Copyright Thomas Mang 2010. Copyright Paul A. Bristow, 2019 Copyright Paul A. Bristow 2018 Copyright John Z. Maddock 2016 Copyright Paul A. Bristow 2017 Copyright Paul A. Bristow 2016, 2018. Copyright Paul A. Bristow 2016, 2017. Copyright (c) 2011 Paul A. Bristow Copyright Paul A. Bristow 2010, 2013 Copyright Paul A. Bristow 2007, 2010 Copyright (c) 2011 Francois Mauger Copyright (c) 2012 Paul A. Bristow Copyright Paul A. Bristow 2007, 2010, 2014, 2016. Copyright Paul A> Bristow 2010 Copyright Paul a. Bristow 2010 Copyright Jeremy W. Murphy 2015. Copyright Paul A. Bristow 2015 Copyright Paul A. Bristow 2010, 2015 Copyright Paul A. Bristow 2014, 2015. Copyright A N Other, 2019. Copyright Robin Linden 2018 Copyright Aleksey Gurtovoy 2003-2006 Copyright Aleksey Gurtovoy 2003-2007 Copyright Aleksey Gurtovoy 2000-2005 Copyright Aleksey Gurtovoy 2002-2010 Copyright (c) 2006-7 John Maddock Copyright Jeremy William Murphy 2015. Copyright John Maddock 2005-2006. Copyright Anton Bikineev 2014 Copyright John Maddock 2010. Copyright Thorsten Ottosen 2009. Copyright 2010 Beman Dawes Copyright Peter Dimov 2015 Copyright Peter Dimov 2017 Copyright John Maddock & Thorsten Ottosen 2005. Copyright Frederic Bron 2009-2011. Copyright 2009-2011 Frederic Bron. Copyright Antony Polukhin 2013. Copyright Rani Sharoni,Robert Ramey, Pavel Vozenilek and Christoph Ludwig 2004. Copyright Peter Dimov 2018. Copyright 2005 Alexander Nasonov. Copyright 2009 Alexander Nasonov. Copyright 2005-2006 Alexander Nasonov. Copyright Peter Dimov 2017. Copyright Dave Abrahams 2003. Copyright Peter Dimov 2015. Copyright Ralf W. Grosse-Kunstleve 2006. Copyright (c) 2002-2018 Joel de Guzman Copyright (c) 2002-2015 Joel de Guzman Copyright (c) 2015 Ahmed Charles Copyright 2016 Klemens Morgenstern, Antony Polukhin Copyright Francois Faure 2001 Copyright 2001 Indiana University. Copyright W.P. McNeill 2010. Copyright (c) 2002 Trustees of Indiana University Copyright 2001 Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee Copyright 2008 Trustees of Indiana University Copyright 2012 David Doria Copyright 2004 Trustees of Indiana University Copyright 2002 Marc Wintermantel (wintermantel@imes.mavt.ethz.ch) Copyright 2002 Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee, Copyright 2007 Trustees of Indiana University Copyright (c) 2012 Kohei Takahashi Copyright 2005 Eric Niebler, Daniel Egloff. Copyright (c) 2000-2013 Copyright (c) 2010-2011 David Bellot Copyright (c) 2000-2009 Copyright (c) 2000-2010 Copyright (c) 2014, Athanasios Iliopoulos Copyright (c) 2000-2007 Copyright (c) 2012 Oswin Krause Copyright (c) 2013 Antony Polukhin Copyright 2013 Paul A. Bristow. Copyright (c) 2009 Jan Gaspar Copyright 2009 (C) Dean Michael Berris <me@deanberris.com> Copyright 2012 (C) Google, Inc. Copyright 2012 (C) Jeffrey Lee Hellrung, Jr. Copyright (c) David Abrahams 2001. Copyright (c) Jeremy Siek 2001-2003. Copyright David Abrahams 2003. Copyright David Abrahams and Thomas Becker 2000-2006. Copyright Kohei Takahashi 2012-2014. Copyright Barend Gehrels 2011, Geodan, Amsterdam, the Netherlands Modifications copyright (c) 2013, 2014, Oracle andor its affiliates. Copyright Neil Groves 2014. Use, modification and distribution is subject Copyright Craig Rodrigues 2005. Copyright Vladimir Prus 2010. Copyright (C) 2016 Andrzej Krzemienski Copyright (c) 2011 Nathan Ridge Copyright 2011 Christophe Henry Copyright Thorsten Ottosen 2003-2005. Copyright 2011-2012 Renato Tegon Forti Copyright 2015-2019 Antony Polukhin Copyright 2018-2019 Antony Polukhin Copyright 2011-2012 Renato Tegon Forti. Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org> Copyright (C) 1996-2010 Julian R Seward. Copyright (c) 2001-2018 Joel de Guzman Copyright 2003-2017 Beman Dawes Copyright Alisdair Meredith 2006. Copyright Marshall Clow 2012 Copyright Nicolai M. Josuttis 1999. Copyright Hans Dembinski 2018 - 2019. Copyright (c) 2015 Francisco José Tapia (fjtapia@gmail.com ) Copyright Steven Ross 2009-2014. Copyright Steven Ross 2009. Copyright Steven Ross 2014 Copyright 2014 Mario Mulansky Copyright Barrett Adair 2016-2017 Copyright 2016 Rene Rivera Copyright (c) 2007-2017 Barend Gehrels, Amsterdam, the Netherlands. Copyright (c) 2008-2017 Bruno Lalande, Paris, France. Copyright (c) 2009-2017 Mateusz Loskot, London, UK. Copyright 2001, 2003, 2004, 2012 Daryle Walker. Copyright (c) 2005 Matthew Calabrese Copyright (c) Marshall Clow 2012-2015. Copyright (c) Glen Joseph Fernandes 2019 (glenjofe@gmail.com) Copyright (c) Beman Dawes 2015 Copyright 2002-2008, Fernando Luis Cacciola Carballal. Copyright (C) 2005 Arkadiy Vertleyb, Peder Holt. Copyright (C) 2011-2013 Vicente J. Botet Escriba Copyright (C) 2012-2013 Vicente J. Botet Escriba Copyright 2006 Roland Schwarz. Copyright 2007-2010 Anthony Williams Copyright 2007-9 Anthony Williams Copyright 2005 Robert Ramey - http:www.rrsd.com Copyright 2007 Robert Ramey - http:www.rrsd.com . Copyright Orson Peters 2017. Copyright 2003-2008 Jan Gaspar. Copyright 2013 Paul A. Bristow. Copyright Samuel Krempp 2003. Copyright (c) 2013-2014 Denis Demidov Copyright (c) 2014 Denis Demidov Copyright (c) 2016 Jason Rhinelander <jason@imaginary.ca> Copyright Ion Gaztanaga 2009-2013. Modifications copyright (c) 2018, 2019 Oracle andor its affiliates. (C) Copyright 2005 Daniel Egloff, Eric Niebler (C) Copyright 2006 Eric Niebler, Olivier Gygi. (C) Copyright 2006 Eric Niebler, Olivier Gygi (C) Copyright Eric Niebler, Olivier Gygi 2006. Copyright (C) Eric Niebler 2008. Copyright (C) Pieter Bastiaan Ober 2014. Copyright (C) Eric Niebler 2005. (C) Copyright Pieter Bastiaan Ober 2014. (C) Copyright Gaetano Mendola 2010, Simon West 2011. (C) Copyright Simon West 2011. Copyright (c) 2009 Matthias Vallentin Copyright (c) 2011 Colin Rundel Copyright (c) 2012 yyyy yyyy <typhoonking77@hotmail.com> Copyright (c) 2011 Jeroen Habraken Copyright (c) 2012 Benjamin Schindler Copyright (c) 2013 Louis Dionne Copyright (c) 2012 Agustin K-ballo Berge Copyright (c) 2013 Alex Korobka Copyright (c) 2010 Lars Kielhorn Copyright (c) 2010 Michael Caisse Copyright (c) 2012 David Bailey Copyright 2007 Tobias Schwinger Copyright (c) 2007-2008 Tobias Schwinger Copyright and license Copyright 2001-2014, Gennadiy Rozental. Copyright 2013-2018, Boost.Test team. Copyright (c) 2009-2010, Marco Guazzone Copyright (c) 2008 Gordon Woodhull Copyright Ion Gaztanaga 2009. Copyright Ion Gaztanaga 2008-2012. Copyright Daniel Wallin, David Abrahams 2005. Copyright (c) 2014-2018 Adam Wulkiewicz, Lodz, Poland. Copyright 2005 The Trustees of Indiana University. Copyright (C) 2005 The Trustees of Indiana University. Copyright (c) 2015 Agustin K-ballo Berge Copyright 2011-2013 Thorsten Ottosen Copyright (C) 2009 Tim Blechmann Copyright 2005-2012 Daniel James. Copyright Daniel Wallin, David Abrahams 2010. Copyright Ion Gaztanaga 2005-2013. Copyright Ion Gaztanaga 2007-2013. Copyright Stephen Cleary 2000 Copyright Ion Gaztanaga 2015-2017. Copyright (C) 2008 Ion Gaztanaga Copyright Ion Gaztanaga 2018-2018. Copyright (c) 2009 Hartmut Kaiser Copyright (c) 2014 Joel de Guzman Copyright (C) 2009 The Trustees of Indiana University. Copyright (C) 2010 Daniel Trebbien. Copyright (C) 2001 Douglas Gregor (gregod@cs.rpi.edu) Copyright (c) 2013-2015 Louis Dionne Copyright 2014, Raffi Enficiaud Copyright (C) 2002 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi) Copyright (C) 2002 Gary Powell (gwpowell@hotmail.com) Copyright (C) 1999-2001 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi) Copyright (C) 2000 Gary Powell (gwpowell@hotmail.com) Copyright (C) 2001-2002 Joel de Guzman Copyright (c) 2005 Voipster Indrek dot Juhani at voipster dot com Copyright (c) 2005-2019 Christopher M. Kohlhoff (chris at kohlhoff dot com) Copyright (c) 2008 Gennaro Prota Copyright Ralf W. Grosse-Kunstleve 2006. Copyright Gottfried Ganßauge 2003..2006. Copyright (C) 2001 Peter Dimov Copyright Ralf W. Grosse-Kunstleve & David Abrahams 2006. Copyright Andrey Semashev 2018 Copyright (c) 2015 Mario Lang Copyright (c) 2014 Thomas Bernard Copyright (c) 2011-2015 Akira Takahashi Copyright (c) 2016 Norbert Wenzel Copyright Rene Rivera 2015-2016 Copyright Rene Rivera 2005-2016 Copyright 2008 Jurko Gospodnetic Copyright 2011-2012,2015 Vicente J. Botet Escriba Copyright 2012 Howard Hinnant Copyright 2013 Andrey Copyright 2014 Vicente Botet Copyright (c) 2018-2019 Cem Bassoy Copyright (C) 2002 Beman Dawes Copyright (C) 2001 Dietmar Kuehl Copyright Ion Gaztanaga 2009. Copyright (c) 2015 Muhammad Junaid Muzammil <mjunaidmuzammil@gmail.com> Copyright (C) 2002-2005 Marcin Kalicinski Copyright (C) 2009-2010 Sebastian Redl Copyright (c) Dan Marsden Copyright 2002-2007 Andreas Huber Doenni Copyright 2002-2008 Andreas Huber Doenni Copyright 2002-2010 Andreas Huber Doenni Copyright 2008 Andreas Huber Doenni Copyright Bertolt Mildner 2004. Copyright Ronald Garcia, Jeremy Siek 2002. Copyright R.W. Grosse-Kunstleve 2002. Copyright Neil Groves 2009. Copyright (C) 2007 Douglas Gregor and Matthias Troyer Copyright (c) 2009 Erik Bryan Copyright (c) 2007-2010 Hartmut Kaiser Copyright (c) 2011 Michael Caisse Copyright (c) 2010 Jeroen Habraken Copyright Ion Gaztanaga 2011-2012. Copyright 2003-2009 Joaquin M Lopez Munoz. Copyright 2014-2017 Peter Dimov Copyright 2007 Eric Niebler. Distributed under the Boost Copyright Edward Diener 2011 Copyright Edward Diener 2013 Copyright (c) 2014 Louis Dionne Copyright (c) 2016,2018 Kohei Takahashi Copyright (c) 2010, 2012 Christopher Schmidt, Nathan Ridge Copyright (c) 2016-2018 Kohei Takahashi Copyright (c) 2010, 2012 Christopher Schmidt, nathan Ridge Copyright (c) 2015 Louis Dionne Copyright (c) 2012 Joel de Guzman Copyright (C) 2015 Kohei Takahshi Copyright (C) 1999-2003 Jaakko Jarvi Copyright (c) 2012 Joel falcou Copyright (C) 2013 Mateusz Loskot <mateusz@loskot.net> Copyright (c) 2009 Joel de Guzman Copyright (C) 2016 Lee Clagett Copyright (C) 2018 Kohei Takahashi Copyright John Maddock 2002 - 2003. Copyright Jens Maurer 2002 - 2003. Copyright Christopher Jefferson 2011. Copyright Boris Gubenko 2007. Copyright Vladimir Prus, 2003 Copyright 2010 Vladimir Prus Copyright (c) 2005, 2014 Eric Niebler Copyright 2004 Eric Niebler. Copyright (c) 2019 Andrey Semashev Copyright (c) 2009 Dr John Maddock Copyright (c) 2003 Dr John Maddock Copyright (c) 2003-7 John Maddock Copyright (c) 2007 Bjorn Roald Copyright (arg) 2001-2014 Joel de Guzman Copyright 2002-2004 Pavol Droba Copyright John Maddock 2019. Copyright Deniz Bahadir 2015 Copyright Aleksey Gurtovoy 2003-2008 Copyright Thorsten Ottosen, 2009. Copyright Frank Mori Hess 2007. Copyright 2019 Mike Dev <mike.dev@gmx.de> Copyright 2016, 2018, 2019 Peter Dimov. Copyright 1995-2012 Barend Gehrels Copyright 2008-2012 Bruno Lalande Copyright 2010-2012 Mateusz Loskot Copyright (c) 2007-2011 Hartmut Kaiser Copyright (c) Christopher Diggins 2005 Copyright (c) Pablo Aguilar 2005 Copyright (c) Kevlin Henney 2001 Copyright 2002-2019 Rene Rivera. Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc. Copyright 2005-2006 Vladimir Prus. Copyright 1993, 1995 Christopher Seiwald. Copyright 2001-2004 David Abrahams. Copyright 1994 Christopher Seiwald. Copyright 1993, 2000 Christopher Seiwald. Copyright 2002-2018 Rene Rivera. Copyright 2002. Vladimir Prus Copyright 2005. Rene Rivera Copyright 2005, 2016. Rene Rivera Copyright 2007 Noel Belcourt. Copyright 2007 Rene Rivera. Copyright 2015 Artur Shepilko. Copyright 2005 Rene Rivera. Copyright 1994 Christopher Seiwald. Copyright 1993-2002 Christopher Seiwald and Perforce Software, Inc. Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,Inc. Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. Copyright (C) 1999, 2002 Aladdin Enterprises. Copyright 2006. Rene Rivera Copyright 2003. David Abrahams Copyright 2007 Rene Rivera Copyright (c) 1986 by University of Toronto. Copyright 2004. David Abrahams Copyright 2005 Reece H. Dunn. Copyright Paul Lin 2003. Copyright 2006 Bojan Resnik. Copyright 2002 Rene Rivera. Copyright (c) 2002-2003,2005 CrystalClear Software, Inc. Copyright (c) 2014, 2018, 2019, Oracle andor its affiliates. Copyright Thorsten Ottosen 2002-2003. Copyright Jeremy Siek 2001. Copyright Arno Schoedl & Neil Groves 2009. Copyright Neil Groves 2009. Copyright Eric Niebler 2014. Copyright Jonathan Turkanis 2005. Copyright (c) 2010 Neil Groves Copyright (c) 2008 Joseph Gauterin, Niels Dekker Copyright 2018 Andrzej Krzemieński Copyright (c) 2007 Joseph Gauterin Copyright (c) 2008 - 2010 Joseph Gauterin, Niels Dekker Copyright (c) 2007-2008 Joseph Gauterin Copyright (c) 2006-2013 Emil Dotchevski and Reverge Studios, Inc. Copyright 2005 Matthias Troyer and Dave Abrahams Copyright 2008 Robert Ramey Copyright 2004 Brian Ravnsgaard Riis Copyright 2007 Matthias Troyer . Copyright 2006 David Abrahams - http:www.boost.org. Copyright 2007 Matthias Troyer Copyright 2010 Robert Ramey Copyright 2002-2014 Robert Ramey - http:www.rrsd.com . Copyright 2002-4 Pavel Vozenilek . Copyright 2014 Robert Ramey - http:www.rrsd.com . Copyright (c) 2003 Vladimir Prus. Copyright 2004 Robert Ramey and Martin Ecker Copyright 2004-2009 Robert Ramey, Martin Ecker and Takatoshi Kondo Copyright David Abrahams 2006. Original version Copyright Robert Ramey 2007. Changes made to permit Copyright 2003-4 Pavel Vozenilek and Robert Ramey - http:www.rrsd.com. Copyright Robert Ramey 2003. Jonathan Turkanis 2004. Copyright 2005 Matthias Troyer Copyright 2008 Matthias Troyer Copyright 2002-2009 Robert Ramey - http:www.rrsd.com . Copyright 2005-2006 Matthias Troyer Copyright (c) 2017 - 2019 Andrey Semashev Copyright Neil Groves 2007. Copyright Thorsten Ottosen 2006. Copyright 2009 Neil Groves. Copyright Daniel Walker 2006. Copyright Neil Groves & Thorsten Ottosen & Pavol Droba 2003-2004. Copyright Adam D. Walling 2012. Copyright 2009-2014 Neil Groves. Copyright 2006 Thorsten Ottosen. Copyright Neil Groves 2003-2004. Copyright (c) 2017-2018 Daniel James Copyright 2009 Daniel James Copyright John Maddock 2006-8. Copyright (c) 2017 Klemens D. Morgenstern Copyright 2003, 2004 Vladimir Prus Copyright 2003, 2006 Vladimir Prus Copyright 2016 Steven Watanabe Copyright 2002-2005 Vladimir Prus. Copyright 2002-2003 Dave Abrahams. Copyright 2002, 2003, 2005 Vladimir Prus Copyright (C) 2006. Vladimir Prus Copyright (C) 2008. Jurko Gospodnetic Copyright (C) Vladimir Prus 2006. Copyright 2014 Steven Watanabe Copyright 2015 Artur Shepilko Copyright 2012. Jurko Gospodnetic Copyright (C) 2013 Steven Watanabe Copyright 2002, 2003 Vladimir Prus Copyright 2015 Aaron Boman Copyright 2012 Jurko Gospodnetic Copyright 2002, 2003, 2004 Vladimir Prus Copyright 2008, 2012 Jurko Gospodnetic Copyright 2001 Dave Abrahams Copyright 2008 Jurko Gospodnetic, Vladimir Prus Copyright 2003, 2004, 2005 Vladimir Prus Copyright 2002, 2003, 2005, 2006 Vladimir Prus Copyright (C) 2003. Vladimir Prus Copyright (C) Vladimir Prus 2010. Copyright (c) Steven Watanabe 2018. Copyright (C) Steven Watanabe 2018 Copyright 2003, 2004, 2005, 2006 Vladimir Prus Copyright 2014-2015 Steven Watanabe Copyright 2004 Vladimir Prus. Copyright (C) Vladimir Prus 2005. Copyright 2006 Vladimir Prus. Copyright (C) 2012. Jurko Gospodnetic Copyright 2002, 2003, 2004, 2006 Vladimir Prus Copyright 2002, 2006 Vladimir Prus Copyright (C) Craig Rodrigues 2005. Copyright (C) 2003. Pedro Ferreira Copyright (C) FILL SOMETHING HERE 2006. Copyright 2000 Steven Knight Copyright 2002-2005 Dave Abrahams. Copyright 2002-2006 Vladimir Prus. Copyright 2005 David Abrahams Copyright 2001, 2002 Vladimir Prus Copyright (c) 2001 Sam Tobin-Hochstadt. Copyright 2007 Andrew Sutton Copyright 2012 The Trustees of Indiana University. Copyright (C) 2008-2013 Tim Blechmann Copyright (C) 2009-2013 Tim Blechmann Copyright John Maddock 20010. Copyright Paul A. Britow 2009 Copyright (c) Aleksey Gurtovoy 2008-2009 Copyright 2010 John Maddock Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu) Copyright 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi) Copyright 2003 The Trustees of Indiana University Copyright Runar Undheim, Robert Ramey & John Maddock 2008. Copyright Eric Friedman 2002-2003. Copyright 2002 Rani Sharoni (ranisharoni@hotmail.com) and Robert Ramey Copyright Rani Sharoni 2003. Copyright Rani Sharoni 2003-2005. Copyright Howard Hinnant and John Maddock 2000. Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 2001 Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000-2005. Copyright Howard Hinnant and John Maddock 2000, 2010. Copyright Daniel Frey and Robert Ramey 2009. Copyright Balint Cserni 2017 Copyright Steve Cleary, Beman Dawes, Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000. Copyright 2008 The Trustees of Indiana University. Copyright 2001-2007 Beman Dawes, Vesa Karvonen, John Copyright 2003-2010 Joaquin M Lopez Munoz. Copyright 2003-20015 Joaquin M Lopez Munoz. Copyright Beman Dawes, 2004 Copyright Beman Dawes 2005 Copyright Beman Dawes 2005 Copyright Jeff Garland and Beman Dawes, 2002 License: Boost Software License V1.0 Boost Software License - Version 1.0 August 17th, 2003 Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following: The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Software: Double-conversion 3.1.1 Copyright notice: Copyright 2006-2011, the V8 project authors. All rights reserved. Copyright 2008 the V8 project authors. All rights reserved. Copyright 2006-2008 the V8 project authors. All rights reserved. Copyright 2010 the V8 project authors. All rights reserved. Copyright 2011 the V8 project authors. All rights reserved. Copyright 2011, the V8 project authors. All rights reserved. Copyright 2012 the V8 project authors. All rights reserved. License: BSD 3-Clause License Copyright (c) <YEAR>, <OWNER> All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Software: PCRE 8.4 4 Copyright notice: Copyright (c) 1997-2018 University of Cambridge Copyright(c) 2010-2018 Zoltan Herczeg Copyright(c) 2009-2018 Zoltan Herczeg Copyright (c) 2007-2012 Google Inc Copyright (c) 1997-2012 University of Cambridge Copyright (C) 1996-2017 Free Software Foundation, Inc. Copyright (c) 1997-2013 University of Cambridge Copyright (c) 2010, Google Inc. Copyright (c) 2005, Google Inc. Copyright (c) 2005 - 2010, Google Inc. Copyright (c) 1997-2014 University of Cambridge Copyright (c) 1997-2016 University of Cambridge Copyright (c) 1997-2017 University of Cambridge Copyright (c) 2010-2013 Copyright (c) 2010-2012 Copyright 2003 and onwards Google Inc. Copyright Zoltan Herczeg (hzmester@freemail.hu). All rights reserved. Copyright 2013-2013 Tilera Corporation(jiwang@tilera.com). All rights reserved. License: BSD 3-Clause License Please see above. Software: google/glog 0.4.0 Copyright notice: Copyright (c) 2007, Google Inc. Copyright (c) 2008, Google Inc. Copyright (c) 2006, Google Inc. Copyright (c) 2009, Google Inc. Copyright (c) 1999, Google Inc. Copyright (c) 2002, Google Inc. Copyright (c) 2000 - 2007, Google Inc. Copyright (c) 2005 - 2007, Google Inc. Copyright (c) 2004, Google Inc. Copyright (c) 2003, Google Inc. Copyright (c) 1999, 2007, Google Inc. Copyright (c) 2003-2008, Jouni Malinen <j@w1.fi> and contributors License: BSD 3-Clause License Please see above. Software: Zstandard 1.4.4 Copyright notice: Copyright (c) 2016-present, Facebook, Inc. Copyright (C) 2013-present, Yann Collet. Copyright (C) 2013-2016, Yann Collet. Copyright (c) 2016-present, Yann Collet, Facebook, Inc. Copyright (c) 2016-present, Przemyslaw Skibinski, Yann Collet, Facebook, Inc. Copyright (c) 2018-present lzutao <taolzu(at)gmail.com> Copyright (c) 2018-present lzutao <taolzu(at)gmail.com> Copyright (c) 2018-present Dima Krasner <dima@dimakrasner.com> Copyright (c) 2016-present, Przemyslaw Skibinski, Facebook, Inc. Copyright (C) 1989, 1991 Free Software Foundation, Inc., Copyright (c) 2016-present, Facebook, Inc. All rights reserved. Copyright (c) 2018-present, Yann Collet, Facebook, Inc. Copyright (C) 2013-2015, Yann Collet. Copyright (c) 2017-present, Yann Collet, Facebook, Inc. Copyright (C) 2012-2016, Yann Collet. Copyright (C) 2016, Yann Collet. Copyright (c) 2017-present, Facebook, Inc. Copyright (c) 1995-2006, 2011 Jean-loup Gailly Copyright (C) 1995-2006, 2010, 2011 Jean-loup Gailly. Copyright (c) 2018-present, Facebook, Inc. Copyright (c) 2016 Tino Reichardt Copyright (C) 2012-2016, Yann Collet Copyright (c) 2015-present, Yann Collet, Facebook, Inc. Copyright 2015-2016 Free Software Foundation, Inc. Copyright (C) 2010-2016 Free Software Foundation, Inc. Copyright (C) 2000-2016 Free Software Foundation, Inc. Copyright (C) 2009-2016 Free Software Foundation, Inc. Copyright (C) 2013-2016 Free Software Foundation, Inc. Copyright 2016 Free Software Foundation, Inc. Copyright (C) 2012-2016 Free Software Foundation, Inc. Copyright 2014-2016 Free Software Foundation, Inc. Copyright (c) 2019-present, Yann Collet, Facebook, Inc. Copyright (C) Yann Collet 2014-present Copyright (c) 2003-2008 Yuta Mori All Rights Reserved. Copyright (C) 2004, 2010 Mark Adler Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler Copyright (C) 2004-2017 Mark Adler License: BSD 3-Clause License Please see above. Software: pycparser 2. 20 Copyright notice: Copyright (c) 2008-2017, Eli Bendersky Copyright (C) 2017 David Beazley (http://www.dabeaz.com) Copyright (C) 2001-2017 David M. Beazley (Dabeaz LLC) License: BSD 3-Clause License Please see above. Software: psutil 5. 7.0 Copyright notice: BSD 3-Clause License Copyright (c) 2009, Jay Loden, Dave Daeschler, Giampaolo Rodola' All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the psutil authors nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD 3-Clause License Please see above. Software: PostgreSQL PL/Java 1.5.2 Copyright notice: Copyright (c) 2004-2016 Tada AB and other contributors, as listed below. Copyright (c) 2018 Tada AB and other contributors, as listed below. Copyright (c) 2004, 2005, 2006 TADA AB - Taby Sweden Copyright (c) 2004-2018 Tada AB and other contributors, as listed below. Copyright (c) 2015 Tada AB and other contributors, as listed below. Copyright (c) 2004-2016 TADA AB and other contributors, as listed below. Copyright (c) 2010, 2011 PostgreSQL Global Development Group Copyright (c) 2004-2015 Tada AB and other contributors, as listed below. Copyright (c) 2015- Tada AB and other contributors, as listed below. Copyright (c) 2015-2016 Tada AB and other contributors, as listed below. Copyright (c) 2004-2013 Tada AB and other contributors, as listed below. Copyright (c) 2005-2018 Tada AB and other contributors, as listed below. Copyright (c) 2018- Tada AB and other contributors, as listed below. Copyright (c) 2016 Tada AB and other contributors, as listed below. Copyright (c) 2004, 2005 TADA AB - Taby Sweden Copyright (c) 2004 TADA AB - Taby Sweden Copyright (c) 2003 - 2013 Tada AB - Taby Sweden License: BSD 3-Clause License Please see above. Software: libevent 2.1.11 Copyright notice: Copyright (c) 2010 Chris Davis, Niels Provos, and Nick Mathewson Copyright (c) 2010-2012 Niels Provos and Nick Mathewson Copyright (c) 1996, David Mazieres <dm@uun.org> Copyright (c) 2008, Damien Miller <djm@openbsd.org> Copyright (c) 2002-2007 Niels Provos <provos@citi.umich.edu> Copyright (c) 2007-2012 Niels Provos and Nick Mathewson Copyright (c) 2008-2012 Niels Provos and Nick Mathewson Copyright (c) 2007-2012 Niels Provos, Nick Mathewson Copyright (c) 2009-2012 Niels Provos and Nick Mathewson Copyright (c) 2002-2006 Niels Provos <provos@citi.umich.edu> Copyright (c) 2009-2012 Niels Provos, Nick Mathewson Copyright (c) 1991, 1993 Copyright 2000-2009 Niels Provos <provos@citi.umich.edu> Copyright 2009-2012 Niels Provos and Nick Mathewson Copyright 2000-2007 Niels Provos <provos@citi.umich.edu> Copyright 2007-2012 Niels Provos, Nick Mathewson Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu> Copyright 2003-2009 Niels Provos <provos@citi.umich.edu> Copyright 2006-2007 Niels Provos Copyright 2007-2012 Nick Mathewson and Niels Provos Copyright (c) 2005-2007 Niels Provos <provos@citi.umich.edu> Copyright (c) 2003-2009 Niels Provos <provos@citi.umich.edu> Copyright 2007-2012 Niels Provos and Nick Mathewson Copyright (c) 2007 Sun Microsystems. All rights reserved. Copyright (c) 2006-2007 Niels Provos <provos@citi.umich.edu> Copyright (c) 2008-2012 Niels Provos, Nick Mathewson Copyright 2002 Christopher Clark Copyright 2005-2012 Nick Mathewson Copyright 2001-2007 Niels Provos <provos@citi.umich.edu> Copyright (c) 2012 Niels Provos and Nick Mathewson Copyright (c) 2000 Dug Song <dugsong@monkey.org> Copyright (c) 1993 The Regents of the University of California. Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> Copyright (c) 2003 Michael A. Davis <mike@datanerds.net> Copyright (c) 2007 Sun Microsystems Copyright (c) 2002 Christopher Clark Copyright (c) 2006 Maxim Yegorushkin <maxim.yegorushkin@gmail.com> Copyright (c) 2010 BitTorrent, Inc. Copyright (c) 2005-2012 Niels Provos and Nick Mathewson Copyright (c) 1993 Copyright (C) 1996-2018 Free Software Foundation, Inc. Copyright 2003 Michael A. Davis <mike@datanerds.net> Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (c) 1996 - 2013, Daniel Stenberg, <daniel@haxx.se>. Copyright (C) 2012, iSEC Partners. Copyright (c) 1987, 1993, 1994, 1995 Copyright (c) 1987, 1993, 1994, 1996 Copyright 2002 Niels Provos <provos@citi.umich.edu> Copyright 2003-2007 Niels Provos <provos@citi.umich.edu> Copyright 2008-2012 Niels Provos and Nick Mathewson Copyright (c) 2003-2007 Niels Provos <provos@citi.umich.edu> Copyright (c) 2013 Niels Provos and Nick Mathewson Copyright (c) 2009-2012 Nick Mathewson and Niels Provos Copyright (c) 2007-2013 Niels Provos and Nick Mathewson Copyright (c) 2012 Ross Lagerwall <rosslagerwall@gmail.com> Copyright 2009-2012 Nick Mathewson Copyright 2009-2012 Nick Mathewson Copyright 2009-2012 Nick Mathewson Copyright (c) 2009, Michihiro NAKAJIMA Copyright 2002-2011 Kitware, Inc. Copyright 2000-2013 Kitware, Inc. Copyright 2000-2011 Insight Software Consortium notices of original copyright by their contributors Copyright 2010 Kitware, Inc. License: BSD 3-Clause License Please see above. Software: google/protobuf 3. 11.3 Copyright notice: Copyright 2008 Google Inc. All rights reserved. Copyright 2007 Google Inc. All Rights Reserved. Copyright 2008 Google Inc. License: BSD 3-Clause License Copyright (c) <YEAR>, <OWNER> All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Software: enum34 1.1.9 Copyright notice: Copyright (c) 2013, Ethan Furman. License: BSD 3-Clause License Please see above. Software: Editline Library - libedit 3.1-20190324 Copyright notice: Copyright (c) 1992, 1993 Copyright (C) 1996-2015 Free Software Foundation, Inc. Copyright (c) 1997 The NetBSD Foundation, Inc. Copyright (c) 2009 The NetBSD Foundation, Inc. Copyright (c) 2017 The NetBSD Foundation, Inc. Copyright (c) 2001 The NetBSD Foundation, Inc. Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> Copyright (c) 1989, 1993 Copyright (c) 1999, 2005 The NetBSD Foundation, Inc. Copyright (c) 1990, 1993 Copyright (C) 2006 Aleksey Cheusov License: BSD 3-Clause License Please see above. Software: jemalloc 5.2.1 Copyright notice: Copyright (C) 2002-present Jason Evans <jasone@canonware.com>. Copyright (C) 2007-2012 Mozilla Foundation. All rights reserved. Copyright (C) 2009-present Facebook, Inc. All rights reserved. Copyright (c) 2006-2008 Alexander Chemeris Copyright (c) 2010-2012 Austin Appleby Copyright (c) 2006,2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima Copyright (C) 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima Copyright (C) 2006, 2007 Mutsuo Saito, Makoto Matsumoto and Hiroshima License: BSD 2-Clause License BSD Two Clause License Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Software: pyasn1 0.4.7 Copyright notice: Copyright (c) 2005-2019, Ilya Etingof <etingof@gmail.com> Copyright (c) 2005-2019, [Ilya Etingof](mailto:etingof@gmail.com). License: BSD 2-Clause License Please see above. Software: openGauss-connector-jdbc 1.0.0 Copyright notice: Copyright (c) 2017, PostgreSQL Global Development Group Copyright (c) 2016, PostgreSQL Global Development Group Copyright (c) 2004, PostgreSQL Global Development Group Copyright (c) 2007, PostgreSQL Global Development Group Copyright (c) 2008, PostgreSQL Global Development Group Copyright (c) 2005, PostgreSQL Global Development Group Copyright (c) 2018, PostgreSQL Global Development Group Copyright (c) 2009, PostgreSQL Global Development Group Copyright (c) 2003, PostgreSQL Global Development Group Copyright (c) 2015, PostgreSQL Global Development Group Copyright (c) 2004, Open Cloud Limited. Copyright (c) 2003-2011, PostgreSQL Global Development Group Copyright (c) 2006, PostgreSQL Global Development Group Copyright (c) 2020, PostgreSQL Global Development Group Copyright (c) 2014, PostgreSQL Global Development Group Copyright (c) 2001, PostgreSQL Global Development Group Copyright (c) 2004, PostgreSQL Global Development Group. Copyright (c) 2011, PostgreSQL Global Development Group Copyright (c) 2012, PostgreSQL Global Development Group Copyright (c) 1997, PostgreSQL Global Development Group Copyright (c) 2019, PostgreSQL Global Development Group Copyright (c) 2010, PostgreSQL Global Development Group Copyright (C) 1989, 1991 Free Software Foundation, Inc. Copyright 1999-2019 The Apache Software Foundation License: BSD 2-Clause License Please see above. Software: lz4 1.9.2 Copyright notice: Copyright (c) 2016-present, Przemyslaw Skibinski copyright and related and neighboring rights to this software to Copyright (c) 2018-present lzutao <taolzu(at)gmail.com> Copyright (c) 2018-present lzutao <taolzu(at)gmail.com> Copyright (c) 2018-present lzutao <taolzu(at)gmail.com> Copyright (c) 2016-present, Facebook, Inc. Copyright (c) 2014, lpsantil Copyright (C) Yann Collet 2014-present Copyright (C) Yann Collet 2018 - present Copyright (C) 1989, 1991 Free Software Foundation, Inc., Copyright (C) Yann Collet 2012-2016 Copyright (C) Yann Collet 2014-2016 Copyright (C) Yann Collet 2012-2017 Copyright (c) 2016-present, Yann Collet, Facebook, Inc. Copyright (c) 2016-present, Przemyslaw Skibinski, Yann Collet, Facebook, Inc. Copyright (C) 2011-present, Takayuki Matsuoka Copyright (c) 2011-2016, Yann Collet Copyright (C) 2011-present, Yann Collet. Copyright (C) 2011-2016, Yann Collet. Copyright (C) 2011-2017, Yann Collet. Copyright (C) 2012-2016, Yann Collet Copyright (C) 2012-2016, Yann Collet. Copyright (C) Yann Collet 2011-2016 Copyright (C) Yann Collet 2011-2017 Copyright (C) 2016-present, Przemyslaw Skibinski, Yann Collet License: BSD 2-Clause License , GPL V2.0 BSD 2-Clause License , Please see above. GPL V2.0 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. one line to give the program's name and an idea of what it does. Copyright (C) yyyy name of author This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. signature of Ty Coon, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. Software: commons-logging 1.2 Copyright notice: Copyright 2003-2016 The Apache Software Foundation License: Apache License V2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] 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 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Software: pyOpenSSL 19.0.0 Copyright notice: Copyright (C) Jean-Paul Calderone Copyright (C) AB Strakt Copyright (C) Jean-Paul Calderone 2008-2015, All rights reserved Copyright (c) The pyOpenSSL developers Copyright (c) Jean-Paul Calderone Copyright (c) Frederick Dean Copyright (C) Twisted Matrix Laboratories. License: Apache License V2.0 Please see above. Software: flatbuffers 1.11.0 Copyright notice: Copyright (c) 2015 Google, Inc. Copyright 2014 Google Inc. All rights reserved. Copyright 2015 Google Inc. All rights reserved. Copyright 2017 Google Inc. All rights reserved. Copyright 2008 Google Inc. All rights reserved. 2. Grant of Copyright License. Subject to the terms and conditions of copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the (c) You must retain, in the Source form of any Derivative Works You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions Copyright 2014 Google Inc. Copyright (c) 2013 Google, Inc. Copyright (c) 2014 Google, Inc. Copyright 2012, the Dart project authors. All rights reserved. Copyright 2018 Google Inc. All rights reserved. Copyright 2014 Stefan.Eilemann@epfl.ch Copyright 2016 Google Inc. All rights reserved. Copyright 2015 The Chromium Authors. All rights reserved. Copyright 2015, Google Inc. Copyright 2015 Google Inc. Copyright 2018 Dan Field. All rights reserved. Copyright 2018 Dan Field License: Apache License V2.0 Please see above. Software: huaweicloud-sdk-c-obs 3.1 9.9.3 Copyright notice: Copyright (C) 2009-2012 Siemens AG Copyright (c) 2009 Alberto Panizzo <maramaopercheseimorto@gmail.com> Copyright 2008 Analog Devices Inc. Copyright (C) 2009 Marek Vasut <marek.vasut@gmail.com> Copyright 2008 Embedded Alley Solutions, Inc. Copyright 2009-2011 Freescale Semiconductor, Inc. Copyright (C) 2005 Stephen Street / StreetFire Sound Labs Copyright (C) 2012 Renesas Solutions Corp. Copyright (c) 2006 Simtec Electronics Copyright (C) 2011 Kuninori Morimoto Copyright (C) 2005 David Brownell Copyright (C) 2006 SWAPP Copyright 2007 Simtec Electronics Copyright (C) 2009-2010 Nokia Corporation (C) 2002 Harald Welte <laforge@gnumonks.org> (C) 2000 by Harald Welte <laforge@gnumonks.org> (C) 2000-2002 by Harald Welte <laforge@gnumonks.org> (C) 2000 James Morris, this code is GPL. Copyright (C) 2005-2013 Free Software Foundation, Inc. Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. Copyright 2019 Huawei Technologies Co.,Ltd. Copyright (c) 2002-2003 Patrick Mochel Copyright (c) 2002-2003 Open Source Development Labs configfs Copyright (C) 2005 Oracle. All rights reserved. Copright (C) 2008-2009 Nicholas A. Bellinger <nab@linux-iscsi.org> Copyright (c) 1998-1999 by Frank van de Pol <fvdpol@coil.demon.nl> (c) 1998-1999 by Jaroslav Kysela <perex@perex.cz> Copyright (c) 1994-2003 by Jaroslav Kysela <perex@perex.cz>,Abramo Bagnara <abramo@alsa-project.org> Copyright (c) 1994-98 by Jaroslav Kysela <perex@perex.cz>,4Front Technologies Copyright (C) 2011 Intel Corporation Copyright (c) 2007-2010 The Khronos Group Inc. Copyright (c) by Jaroslav Kysela <perex@perex.cz>,Creative Labs, Inc. Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org) Copyright (C) 2003 Winfried Ritsch (IEM) Copyright (c) 1999 by Uros Bizjak <uros@kss-loka.si> Copyright (C) 1999-2000 Takashi Iwai Copyright (C) 2007, 2008 Karsten Wiese <fzu@wemgehoertderstaat.de> Copyright (C) 1999-2003, 2005-2006, 2008-2011 Free Software Foundation, Inc. Copyright (C) 2003 Free Software Foundation, Inc. Copyright (C) 2000-2003 Free Software Foundation, Inc. Copyright (C) 1991, 1992, 1993, 1995, 1996, 1997, 2004 Copyright (C) 1997, 1999 Free Software Foundation, Inc. Copyright (C) 2005, 2006 Free Software Foundation, Inc. Copyright (c) 1996,1997 Copyright (c) 1994 Copyright 1997 by Carsten Paeth <calle@calle.de> Copyright 1999 by Carsten Paeth <calle@calle.de> Copyright (C) 2009 Karsten Keil <keil@b1-systems.de> 2002 Wolfgang Mües <wolfgang@iksw-muees.de> 2001 Frode Isaksen <fisaksen@bewan.com> 2001 Kai Germaschewski <kai.germaschewski@gmx.de> Copyright (C) 2004-2013 Free Software Foundation, Inc. Copyright (C) 2000-2013 Free Software Foundation, Inc. Copyright (C) 1997-2013 Free Software Foundation, Inc. Copyright (C) 2001-2013 Free Software Foundation, Inc. Copyright (C) 2007-2013 Free Software Foundation, Inc. Copyright (C) 2006-2013 Free Software Foundation, Inc. Copyright (C) 2012-2013 Free Software Foundation, Inc. Copyright (C) 2003-2013 Free Software Foundation, Inc. Copyright (C) 1999 David A. Hinds. All Rights Reserved. (C) 1999 David A. Hinds (C) 1999 David A. Hinds (C) 2003 - 2004 David Woodhouse (C) 2003 - 2004 Dominik Brodowski (C) 2003 - 2008 Dominik Brodowski Copyright (C) 2007 Atmel Corporation Copyright (C) 2012 Heiko Stuebner <heiko@sntech.de> Copyright (C) 2008 by Jaya Kumar Copyright 1999 Jeff Garzik <jgarzik@pobox.com> Copyright (C) 1997 Jes Sorensen Copyright (C) 1996 Frank Neumann Copyright (c) 1998-1999 Ilario Nardinocchi (nardinoc@CS.UniBO.IT) Copyright (C) 2008-2009 MontaVista Software Inc. Copyright (C) 2008-2009 Texas Instruments Inc Copyright 2012 Steffen Trumtrar <s.trumtrar@pengutronix.de> Copyright (C) 2012 Samsung Electronics Co., Ltd. Copyright (c) 2012 Samsung Electronics Co., Ltd Copyright (C) 1999 Silicon Graphics, Inc. (Jeffrey Newquist) Copyright (C) 2002 STMicroelectronics Copyright (C) 2004 Paul Mundt Copyright (C) 1997 Michael AK Tesch Copyright (C) 1999 by Michael Engel <engel@unix-ag.org> and Karsten Merker <merker@guug.de> Copyright (C) 2010 Guennadi Liakhovetski <g.liakhovetski@gmx.de> Copyright (C) 2006 Nokia Corporation Copyright (C) 2012 Marvell Technology Group Ltd. Copyright (c) 2001 Denis Oliver Kropp <dok@convergence.de> Copyright (C) 1996 David S. Miller (davem@davemloft.net) Copyright (C) 2013 Texas Instruments Copyright (C) 2011 Texas Instruments Copyright (C) 2010 Canonical Ltd. Copyright (C) 2008 Nokia Corporation Copyright (C) 2009 Nokia Corporation Copyright (c) 1998-2000 Ilario Nardinocchi (nardinoc@CS.UniBO.IT) Copyright 2008 Simtec Electronics Copyright (C) 2001 Romain Dolbeau <dolbeau@irisa.fr> Copyright (C) 2001 Sven Luther, <luther@dpt-info.u-strasbg.fr> Copyright (C) 1999, 2000, 2001 by Michael Engel <engel@unix-ag.org>,Karsten Merker <merker@linuxtag.org> Copyright (c) 2005 Maciej W. Rozycki Michael Engel <engel@unix-ag.org> and Copyright (C) 2009 Marvell International Ltd. (c) 2004 Simtec Electronics (c) 2005 Thibaut VARENE <varenet@parisc-linux.org> Copyright (C) 1999 Eric A. Thomas Based on acornfb.c Copyright (C) Russell King. Copyright 2008 Openmoko, Inc. Copyright (C) 1999 Silicon Graphics, Inc. Copyright (C) 2010, Guennadi Liakhovetski <g.liakhovetski@gmx.de> Copyright (C) 2001-2005 by Thomas Winischhofer, Vienna, Austria. Copyright (c) 2000,2001 Ghozlane Toumi <gtoumi@messel.emse.fr> Copyright (C) 1999,2000 Martin Lucina, Tom Zerucha Copyright 1999 Ben Pfaff and Petr Vandrovec (c) 1998 Gerd Knorr (c) 1993 Tommy Frandsen Multi-chipset support Copyright 1993 Harm Hanemaayer Copyright (c) 2004-2005 Richard Purdie Copyright (c) 2005 Ian Molton Copyright (C) 1999 Paul `Rusty' Russell & Michael J. Neuling Copyright 2009 Wolfson Microelectronics PLC. Copyright (C) 2007 Free Software Foundation, Inc. Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd. Copyright (C) 1998, 1999 Greg Colvin and Beman Dawes. Copyright (C) 2001, 2002, 2003 Peter Dimov Copyright (C) 2002 Peter Dimov Copyright (C) 2006 Free Software Foundation, Inc. Copyright (C) 2006, 2007 Free Software Foundation, Inc. Copyright (C) 2006 Copyright (C) ST-Ericsson AB 2010 Copyright (C) 1996-98 Ingo Molnar, Gadi Oxman Copyright (C) 1998 Ingo Molnar Copyright 2003 H. Peter Anvin - All Rights Reserved Copyright (c) 2009 Intel Corporation. All rights reserved. Copyright (c) 2005 Topspin Communications. All rights reserved. Copyright (c) 2004-2006 Intel Corporation. All rights reserved. Copyright (c) 2004 Topspin Corporation. All rights reserved. Copyright (c) 2004 Voltaire Corporation. All rights reserved. Copyright (c) 2005 Intel Corporation. All rights reserved. Copyright (c) 2004, 2005 Topspin Communications. All rights reserved. Copyright (c) 2005, 2006 Cisco Systems, Inc. All rights reserved. Copyright (c) 2005 PathScale, Inc. All rights reserved. Copyright (c) 2010 Intel Corporation. All rights reserved. Copyright (c) 2009 Voltaire, Inc. All rights reserved. Copyright (c) 2008 Lawrence Livermore National Lab. All rights reserved. Copyright (c) 2010,2011 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2005, 2006 Cisco Systems. All rights reserved. Copyright (c) 2004-2009 Voltaire Inc. All rights reserved. Copyright (c) 2009 HNR Consulting. All rights reserved. Copyright (c) 2009 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2004-2010 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2009-2010 Mellanox Technologies. All rights reserved. Copyright (c) 2004 Topspin Communications. All rights reserved. Copyright (c) 2005 Voltaire, Inc. All rights reserved. Copyright (c) 2011 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2004 Intel Corporation. All rights reserved. Copyright (c) 2005, 2006, 2007 Cisco Systems, Inc. All rights reserved. Copyright (C) 2010 Broadcom Copyright (C) 2013 Freescale Semiconductor, Inc. Copyright 2012 Maxime Ripard Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved. Copyright (C) 2012 National Instruments Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2018 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1996, Olaf Kirch <okir@monad.swb.de> Copyright (c) 2000 The Regents of the University of Michigan (c) 2008 NetApp. All Rights Reserved. Copyright (C) 2002 Neil Brown <neilb@cse.unsw.edu.au> Copyright (C) 1995, 1996, Olaf Kirch <okir@monad.swb.de> Copyright (c) 2000 The Regents of the University of Michigan. Copyright 1995 by the Massachusetts Institute of Technology. Copyright (c) 2002 The Regents of the University of Michigan. Copyright 1993 by OpenVision Technologies, Inc. Copyright (c) 2000-2008 The Regents of the University of Michigan. Copyright (C) 2005 Chuck Lever <cel@netapp.com> Copyright (c) 2003-2007 Network Appliance, Inc. All rights reserved. Copyright (C) 1996 Olaf Kirch <okir@monad.swb.de> Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de> Copyright (c) 2002 The Regents of the University of Michigan Copyright (c) 2005-2006 Network Appliance, Inc. All rights reserved. Copyright (C) 2002 Trond Myklebust <trond.myklebust@fys.uio.no> Copyright (C) 1995-1997 Olaf Kirch <okir@monad.swb.de> Copyright (C) 2007, 2008 Free Software Foundation, Inc. Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 Copyright (c) 1996-1998 Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. (C) 2010-2011 Thomas Graf <tgraf@redhat.com> (C) 2010-2011 Red Hat, Inc. (C) 2002 by Harald Welte <laforge@gnumonks.org> (C) 2010 Red Hat Inc Copyright (C) 2002,2004 MARA Systems AB <http://www.marasystems.com> GPL (C) 2001 Marc Boucher (marc@mbsi.ca). Copyright (C) 2004, 2010 Nokia Corporation (C) 2005 Harald Welte <laforge@netfilter.org> Copyright (c) 2003+ Evgeniy Polyakov <johnpol@2ka.mxt.ru> Copyright (C) 2005 by Latchesar Ionkov <lucho@ionkov.net> Copyright (C) 2004 by Eric Van Hensbergen <ericvh@gmail.com> Copyright (C) 2002 by Ron Minnich <rminnich@lanl.gov> Copyright (C) 2008 by Eric Van Hensbergen <ericvh@gmail.com> Copyright (C) 2007 by Latchesar Ionkov <lucho@ionkov.net> Copyright (C) 2004-2008 by Eric Van Hensbergen <ericvh@gmail.com> Copyright (C) 2011-2013 Free Software Foundation, Inc. (C) 2006-2008 by Openmoko, Inc. Copyright (C) 2009-2010, Lars-Peter Clausen <lars@metafoo.de> Copyright (C) 1991, 92, 93, 95, 96, 97, 98 Free Software Foundation, Inc. Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc. Copyright (C) 2009-2013 Free Software Foundation, Inc. Copyright (C) 2013 Free Software Foundation, Inc. Copyright (c) 1983, 1989, 1993 Copyright (C) 1997, 1999, 2000, 2001, 2004 Free Software Foundation, Inc. Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") Copyright (c) 1996-1999 by Internet Software Consortium. Copyright (c) 1983, 1989 Copyright (c) 1983, 1993 Copyright (C) 2009 NXP Semiconductors Copyright (C) 2009, 2010 Imagination Technologies Ltd. Copyright 2002 Hewlett-Packard Company Copyright (C) 2005-2007 Pierre Ossman, All Rights Reserved. Copyright (C) 2010 ST Microelectronics Copyright (C) 2005-2008 Pierre Ossman, All Rights Reserved. Copyright 2006-2007 Pierre Ossman Copyright 2007-2008 Pierre Ossman Copyright (C) 2010 Renesas Solutions Corp. Copyright (C) 2011, Guennadi Liakhovetski <g.liakhovetski@gmx.de> Copyright (C) 2007 Ian Molton Copyright (C) 2004 Ian Molton Copyright 2007, 2008 Wolfson Microelectronics PLC Copyright 2007 Wolfson Microelectronics PLC Copyright 2002, LifeLine Networks BV (www.lifeline.nl). All rights reserved. Copyright 2002, Bastiaan Bakker. All rights reserved. Copyright 2002, Emiliano Martin emilianomc@terra.es All rights reserved. Copyright (C) 1997, 1998, 2000, 2002, 2003, 2007, 2008 Copyright (C) 1997, 1998, 2001, 2007 Free Software Foundation, Inc. Copyright (C) 1993,1995-1998,2000,2001,2003,2004,2007,2009 Copyright (C) 1996, 1997 Free Software Foundation, Inc. Copyright (C) 1996-2001, 2004 Free Software Foundation, Inc. Copyright (C) 1999, 2001, 2004, 2009 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1998, 1999, 2005 Free Software Foundation, Inc. Copyright (C) 2001,2002,2004,2006,2007,2009 Free Software Foundation, Inc. Copyright (C) 1997,1998,1999,2000,2001,2004 Free Software Foundation, Inc. Copyright (C) 1992, 1995, 1996, 1997, 1999, 2000, 2004 Copyright (C) 1992, 1996, 1997, 2004 Free Software Foundation, Inc. Copyright (C) 1991-1999, 2000, 2004, 2008 Free Software Foundation, Inc. Copyright (C) 2004 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1998, 2003 Free Software Foundation, Inc. Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc. Copyright (C) 2002 Free Software Foundation, Inc. Copyright (C) 1996-2003, 2005, 2007 Free Software Foundation, Inc. Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc. Copyright (C) 2001 Free Software Foundation, Inc. Copyright (C) 1993-1998,2000,2002-2004,2008 Free Software Foundation, Inc. Copyright (C) 1996-2002, 2003, 2006 Free Software Foundation, Inc. Copyright (C) 2001, 2004 Free Software Foundation, Inc. Copyright (C) 2002, 2003, 2004, 2007, 2009 Free Software Foundation, Inc. Copyright (C) 2001, 2003, 2005, 2006, 2009 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997, 2000, 2002 Free Software Foundation, Inc. Copyright (C) 1992,1996,1997,1999,2004,2006 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. Copyright (C) 1997, 2001, 2006 Free Software Foundation, Inc. Copyright (C) 1991-1993,96,98,2000-2003,2004 Free Software Foundation, Inc. Copyright (C) 1991, 1996, 1999, 2000, 2001 Free Software Foundation, Inc. Copyright (C) 1996-2004, 2006, 2008, 2009 Free Software Foundation, Inc. Copyright (C) 2002,2003,2004,2005,2006,2007 Free Software Foundation, Inc. Copyright (C) 1994, 1996, 1997, 1998, 1999, 2000, 2004, 2005, 2008, 2009 Copyright (C) 1996-1999,2001-2003,2005,2006,2007,2008,2009 Copyright (C) 1997,1998,1999,2001,2008,2009 Free Software Foundation, Inc. Copyright (C) 2002, 2004 Free Software Foundation, Inc. Copyright (C) 2001,2002,2003,2005,2006 Free Software Foundation, Inc. Copyright (C) 2009 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997, 2000, 2002, 2004, 2009 Copyright (C) 1993-1999, 2000 Free Software Foundation, Inc. Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc. Copyright (C) 1995,1996,1997,1998,1999,2003 Free Software Foundation, Inc. Copyright (C) 1991, 1992, 1994, 1996, 1997, 2007 Copyright (C) 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2000, 2002, 2009 Free Software Foundation, Inc. Copyright (C) 1995,1996,1997,1998,2000,2001 Free Software Foundation, Inc. Copyright (C) 1991, 1992, 1994-2001, 2004, 2006, 2007, 2008, 2009 Copyright (C) 2005, 2007 Free Software Foundation, Inc. Copyright (C) 1999,2000,2001,2002,2003,2009 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 2000, 2002, 2003 Free Software Foundation, Inc. Copyright (C) 1997,1998,2000,2001,2002,2006 Free Software Foundation, Inc. Copyright (C) 2006, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. Copyright (C) 1998, 2000, 2001, 2004, 2007 Free Software Foundation, Inc. Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 1994, 1997, 1998, 1999, 2009 Free Software Foundation, Inc. Copyright (C) 1997-2003, 2004, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc. Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2003, 2005 Copyright (C) 1996,1997,1999-2002,2003 Free Software Foundation, Inc. Copyright (C) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc. Copyright (C) 2002, 2003 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 2006 Free Software Foundation, Inc. Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 1997, 2002 Free Software Foundation, Inc. Copyright (C) 1993, 1996, 1997, 1998, 1999, 2002 Copyright (C) 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. Copyright (C) 1992,1996,1997,2000,2004,2005 Free Software Foundation, Inc. Copyright (C) 1992,1994,1996,1997,2000,2004 Free Software Foundation, Inc. Copyright (C) 2000 Free Software Foundation, Inc. Copyright (C) 2010 Nokia Corporation. All rights reserved. Copyright (c) 2006 by Jing Min Zhao <zhaojingmin@users.sourceforge.net> Copyright (c) 2006 Jing Min Zhao <zhaojingmin@users.sourceforge.net> Copyright © 2005 Samsung Electronics Copyright © 2000-2005 Copyright © 2003-2010 David Woodhouse <dwmw2@infradead.org> Copyright © 2000-2010 David Woodhouse <dwmw2@infradead.org> et al. Copyright © 2001-2010 David Woodhouse <dwmw2@infradead.org> Copyright © 2002 Robert Kaiser <rkaiser@sysgo.de> Copyright © 1999 Machine Vision Holdings, Inc. Copyright © 1999-2010 David Woodhouse <dwmw2@infradead.org> Copyright © 2002-2003 Greg Ungerer <gerg@snapgear.com> Copyright © 2002-2003 SnapGear Inc Copyright © 2000 Red Hat UK Limited Copyright © 2000-2010 David Woodhouse <dwmw2@infradead.org> Copyright © 2010 ST Microelectronics Copyright © 2001 Red Hat UK Limited (C) Copyright 2002, Greg Ungerer (gerg@snapgear.com) Copyright © 2008 MontaVista Software, Inc. <source@mvista.com> Copyright © 2012 Roland Stigge Copyright © 1999-2010 David Woodhouse <dwmw2@infradead.org> et al. Copyright © 2011 Ivan Djelic <ivan.djelic@parrot.com> Copyright (C) 2000-2010 Steven J. Hill <sjhill@realitydiluted.com> Copyright (c) 2006 Thomas Gleixner <tglx@linutronix.de> Copyright © 2005-2009 Samsung Electronics Copyright (C) 2005-2007 Samsung Electronics (C) 2000 Nicolas Pitre <nico@fluxnic.net> Copyright (C) 2003 MontaVista Software Inc. Copyright (C) 2008 Dmitry Baryshkov Copyright © 2008 Renesas Solutions Corp. Copyright © 2006 Red Hat, Inc. All Rights Reserved. Copyright (c) International Business Machines Corp., 2006 Copyright (C) 2000 Ralph Metzler <ralph@convergence.de> Copyright (C) 2000 Marcus Metzler <marcus@convergence.de> Copyright (C) 2001 Ralph Metzler <ralph@convergence.de> Copyright (C) 2000 Holger Waechtler <holger@convergence.de> Copyright (c) 2008 Jonathan Cameron Copyright (c) 2011 Jonathan Cameron Copyright (c) 2008-2011 Jonathan Cameron Copyright © International Business Machines Corp., 2006 Copyright (c) 2011 Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Copyright (c) 2011 Yu Ke <ke.yu@intel.com> Copyright (c) 2003-2005, K A Fraser Copyright (c) 2006, Ian Campbell Copyright (c) 2007, D G Murray Copyright (c) 2004-2005, K A Fraser Copyright (c) 2005, Christopher Clark Copyright (C) 2005 Rusty Russell, IBM Corporation Copyright (C) 2005 XenSource Ltd. Copyright (c) 2011 Bastian Blank <waldi@debian.org> Copyright (C) IBM Corp. 2006 Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) Copyright (c) 2000-2005 The OpenSSL Project. All rights reserved. Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com) Copyright (c) 1998-2018 The OpenSSL Project. All rights reserved. Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. Copyright (c) 2006 The OpenSSL Project. All rights reserved. Copyright (c) 2010 The OpenSSL Project. All rights reserved. Copyright (c) 2008 The OpenSSL Project. All rights reserved. Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved. Copyright (c) 2000 The OpenSSL Project. All rights reserved. Copyright (c) 1999-2005 The OpenSSL Project. All rights reserved. Copyright (c) 1998-2005 The OpenSSL Project. All rights reserved. Copyright (c) 2000-2002 The OpenSSL Project. All rights reserved. Copyright (c) 1999-2004 The OpenSSL Project. All rights reserved. Copyright (c) 1998-2000 The OpenSSL Project. All rights reserved. Copyright (c) 2008 The OpenSSL Project. All rights reserved. Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved. Copyright (c) 1999 The OpenSSL Project. All rights reserved. Copyright (c) 2007 KISA(Korea Information Security Agency). All rights reserved. Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved. Copyright (c) 2004 The OpenSSL Project. All rights reserved. Copyright (C) 2006, Network Resonance, Inc. Copyright (C) 2011, RTFM, Inc. Copyright 2005 Nokia. All rights reserved. Copyright (c) 2001 The OpenSSL Project. All rights reserved. Copyright 2012 Analog Devices Inc. Copyright (C) 2004, 2007, 2008 Free Software Foundation, Inc. Copyright (C) 1999, 2000, 2001, 2004, 2007 Free Software Foundation, Inc. Copyright (C) 2004, 2007 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation Copyright (C) 1998, 1999, 2000, 2001, 2004, 2005 Free Software Foundation Copyright (c) 2006 Mellanox Technologies. All rights reserved. Copyright (c) 2005-2006 Intel Corporation. All rights reserved. Copyright (C) 1999-2003, 2008 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2005, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2006, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2006, 2010 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2005, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001 Free Software Foundation, Inc. Copyright (C) 1999-2002 Free Software Foundation, Inc. Copyright (C) 1999-2005, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2004-2011, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2004, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2011, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2005, 2016 Free Software Foundation, Inc. Copyright (C) 2005, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2005, 2007, 2016 Free Software Foundation, Inc. Copyright (C) 1998-2005 Gilles Vollant Copyright (C) 2001, 2005, 2016 Free Software Foundation, Inc. Copyright (C) 2001, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2007, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2005, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2005, 2011, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2005, 2008, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2000, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2006, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2010, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2008, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2008, 2011 Free Software Foundation, Inc. Copyright (C) 1999-2009 Free Software Foundation, Inc. Copyright (C) 1998-2010 Gilles Vollant (minizip) ( http:www.winimage.com/zLibDll/minizip.html ) Copyright (C) 2009-2010 Mathias Svensson ( http:result42.com ) Copyright (C) 1999-2004, 2008, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2008, 2011-2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2004, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2004, 2012 Free Software Foundation, Inc. Copyright (C) 1999-2007, 2012, 2016 Free Software Foundation, Inc. Copyright (c) 2004-2009, Sara Golemon <sarag@libssh2.org> Copyright (c) 2009-2015 Daniel Stenberg Copyright (c) 2010 Simon Josefsson <simon@josefsson.org> Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org> Copyright (c) 2004-2008, Sara Golemon <sarag@libssh2.org> Copyright (C) 1999-2003, 2005-2006, 2008 Free Software Foundation, Inc. Copyright (C) 2000-2002, 2005-2006, 2008-2009, 2011 Free Software Foundation, Inc. Copyright (c) 1997-2014 University of Cambridge Copyright (c) 2005, Google Inc. Copyright (c) 1997-2012 University of Cambridge Copyright (C) 2003, 2005, 2008-2011 Free Software Foundation, Inc. Copyright (C) 1999-2007, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2004, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2003 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2008, 2011, 2016 Free Software Foundation, Inc. Copyright (C) 2007-2008 Even Rouault Copyright (C) 2001, 2004, 2011 Free Software Foundation, Inc. Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler Copyright 2013 Jeff Layton <jlayton@poochiereds.net> Copyright (c) 2010-2013, NVIDIA Corporation. Copyright (C) 2013 Shuah Khan <shuah.kh@samsung.com> Copyright (C) 2003 Eric J Bohm Copyright (C) IBM Corp. 2004-2005 Copyright 2012-2013 STMicroelectronics Inc. Copyright IBM Corp. 2007 Copyright IBM Corp. 2008 Copyright (C) 2006 Sony Computer Entertainment Inc. Copyright 2006, 2007 Sony Corporation Copyright (C) 2001 PPC64 Team, IBM Corp (C) Copyright 2006 IBM Corp. Copyright (C) 2007-2008 Intel Corporation. All rights reserved. Copyright (C) 1995 Olaf Kirch <okir@monad.swb.de> Copyright (C) 1995, 1996, 1997 Olaf Kirch <okir@monad.swb.de> Copyright 2005, Broadcom Corporation Copyright 2006, Michael Buesch <m@bues.ch> Copyright 2006, Michael Buesch Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. Copyright (c) 1998-2004,2005 Free Software Foundation, Inc. Copyright (c) 1998-2005,2007 Free Software Foundation, Inc. Copyright (c) 1998-2002,2003 Free Software Foundation, Inc. Copyright (c) 1998-2003,2004 Free Software Foundation, Inc. Copyright (c) 1998-2003,2007 Free Software Foundation, Inc. Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. Copyright (c) 2006 Free Software Foundation, Inc. Copyright (c) 1998-2001,2006 Free Software Foundation, Inc. Copyright (c) 1998,2000 Free Software Foundation, Inc. Copyright (c) 1998-2001,2004 Free Software Foundation, Inc. Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2016-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 1995-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2017-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2016 The OpenSSL Project Authors. All Rights Reserved. Copyright (C) 1998 Free Software Foundation, Inc. Copyright (C) 2012 Marvell International Ltd. Copyright (c) 2011, NVIDIA Corporation. Copyright (C) 2007-2009 ST-Ericsson AB Copyright 2009 Analog Devices Inc. Copyright (C) 2012 Renesas Electronics Corporation Copyright 2001 Compaq Computer Corporation. Copyright 2007-2008 OpenedHand Ltd. Copyright (c) 2006 Ian Molton Copyright (c) 2007 Dmitry Baryshkov Copyright (C) 2012 Google, Inc Copyright (C) 2010 Texas Instruments, Inc Copyright (C) STMicroelectronics 2009 Copyright (C) ST-Ericsson SA 2010 Copyright (C) ST Ericsson SA 2011 Copyright 2009 Daniel Ribeiro <drwyrm@gmail.com> Copyright (c) 2007 Philipp Zabel <philipp.zabel@gmail.com> Copyright (C) 2011, Intel Corporation Copyright (c) 2010 Ira W. Snyder <iws@ovro.caltech.edu> Copyright (C) 2011-2012 Texas Instruments Copyright 2012 Texas Instruments Copyright (c) 2012 Extreme Engineering Solution, Inc. Copyright (C) 2012 Samsung Electrnoics Copyright (C) 2010 Gyungoh Yoo <jack.yoo@maxim-ic.com> Copyright (C) 2012, NVIDIA CORPORATION. All rights reserved. Copyright (C) 2010 Samsung Electrnoics Copyright (C) 2009-2010 Samsung Electrnoics Copyright 2010 Yong Shen <yong.shen@linaro.org> Copyright 2009-2010 Pengutronix Copyright (C) 2001 Russell King, All Rights Reserved. Copyright 2011-2013 Texas Instruments Inc. Copyright (c) 2011-2012, NVIDIA CORPORATION. All rights reserved. Copyright (C) 2011 RICOH COMPANY,LTD Copyright(c) 2009-2013 Realtek Semiconductor Corp. All rights reserved. Copyright (C) 2012 Innovative Converged Devices(ICD) Copyright (C) 2013 Andrey Smirnov Copyright 2012 Texas Instruments Inc. Copyright (c) 2009-2011 Wind River Systems, Inc. Copyright (c) 2011 ST Microelectronics (Alessandro Rubini) Copyright (C) 2012 Freescale Semiconductor, Inc. Copyright (C) 2012 Linaro Ltd. (C) Copyright 2005 Ian Molton <spyro@f2s.com> Copyright(c) 2005-2006 Chris Humbert Copyright(c) 2005 Dirk Opfer Copyright(c) 2005 Ian Molton <spyro@f2s.com> Copyright(c) 2007 Dmitry Baryshkov Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/ Copyright (C) 2010 Texas Instruments Inc Copyright (C) 2011 ST-Ericsson SA Copyright (c) 2009 RidgeRun (todd.fischer@ridgerun.com) Copyright (C) 2012 NVIDIA Corporation Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ Copyright 2010-2011 Texas Instruments Inc. Copyright 2011 Texas Instruments Inc. Copyright (c) 2012, NVIDIA Corporation. (C) 2012 by Lemonage GmbH Copyright (C) 2010 Nokia Corporation Copyright 2008 Wolfson Microelectronics plc (C) Copyright 2007 Hewlett-Packard Development Company, L.P. Copyright (c) 1999-2001 Motorola, Inc. Copyright (c) 2001-2003 International Business Machines, Corp. (C) Copyright IBM Corp. 2001, 2004 Copyright (C) 1999-2001 Cisco, Motorola Copyright (c) 1999-2000 Cisco, Inc. Copyright (c) 2001 Intel Corp. Copyright (c) 2001-2003 Intel Corp. Copyright (c) 2001 Nokia, Inc. Copyright (c) 2001 La Monte H.P. Yarroll Copyright (C) 1999 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999, 2006, 2007, 2009 Copyright (c) 1991, Sun Microsystems Inc. Copyright (c) 1990 Sun Microsystems Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc. Copyright (c) 1986, 1990 by Sun Microsystems, Inc. Copyright (C) 2011 Intel Corporation. All rights reserved. Copyright (C) 2012 Intel Corporation. All rights reserved. Copyright (C) 2011 Texas Instruments, Inc. Copyright (C) 2011 Instituto Nokia de Tecnologia Copyright (C) 1996, 1997, 1998, 1999, 2007 Free Software Foundation, Inc. Copyright (C) 1992-2001, 2002, 2004, 2005, 2006, 2007, 2009 Copyright (C) 2001, 2003 Free Software Foundation, Inc. Copyright (C) 1991, 1996 Free Software Foundation, Inc. Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Free Software Foundation, Inc. Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. Copyright (C) 1991, 92, 96, 97, 98, 99 Free Software Foundation, Inc. Copyright (c) 1982, 1986, 1992, 1993 Copyright (C) 2005, 2006, 2008, 2009 Free Software Foundation, Inc. Copyright (C) 1996, 2000, 2002, 2009 Free Software Foundation, Inc. Copyright (C) 1991, 92, 93, 94, 96, 98, 99 Free Software Foundation, Inc. Copyright (C) 1995,1996,1997,1999,2002 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 2005 Free Software Foundation, Inc. Copyright (C) 1996, 1999 Free Software Foundation, Inc. Copyright (C) 1994-2000, 2003, 2004, 2005 Free Software Foundation, Inc. Copyright (C) 1996,1997,1998,1999,2000,2004 Free Software Foundation, Inc. Copyright (C) 1995-1997,1999,2000,2003,2006,2007 Copyright (C) 1995-1997,2000,2001,2003,2008 Free Software Foundation, Inc. Copyright (C) 1997 Free Software Foundation, Inc. Copyright (C) 1996, 1999, 2001 Free Software Foundation, Inc. Copyright (C) 2002, 2007 Free Software Foundation, Inc. Copyright (C) 1994,1996-2001,2004,2005,2006 Free Software Foundation, Inc. Copyright (C) 1996-1999,2000,2006,2007 Free Software Foundation, Inc. Copyright (c) 1991, 1993 Copyright (c) 1982, 1986 Regents of the University of California. Copyright (C) 2001, 2002 Free Software Foundation, Inc. Copyright (C) 1992,94,1996-2000,2002,2004 Free Software Foundation, Inc. Copyright (C) 1996-2003, 2009 Free Software Foundation, Inc. Copyright (C) 1995-1999, 2000, 2003 Free Software Foundation, Inc. Copyright (C) 1998,99,01,2002,2004 Free Software Foundation, Inc. Copyright (C) 1995-1999, 2000, 2002 Free Software Foundation, Inc. Copyright (C) 1991,92,1994-2001,2003,2005,2007,2008 Copyright (C) 1991, 1992, 1995-2004, 2005, 2006, 2007, 2009 Copyright (C) 1996, 1997, 1998, 1999, 2004 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2000, 2004 Free Software Foundation, Inc. Copyright (C) 1996, 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1996, 1999, 2002, 2003, 2004 Free Software Foundation, Inc. Copyright (c) 1982, 1986, 1988, 1993 Copyright (C) 1996, 1997, 1999, 2003, 2004, 2007 Copyright (C) 1991-1994,1996-2003,2005,2006,2009 Copyright (C) 1994, 1995, 1996, 1999 Free Software Foundation, Inc. Copyright (C) 2008 Free Software Foundation, Inc. Copyright (C) 1991, 1992, 1996, 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1995-1997, 1999, 2007, 2009 Free Software Foundation, Inc. Copyright (c) 1982, 1986, 1990, 1993 Copyright (c) 1982, 1986, 1993 (c) UNIX System Laboratories, Inc. Copyright (C) 1991,1992,1994,1995,1996,1997,1998,1999,2000,2001,2002,2006 Copyright (C) 1991,1992,1996-1999,2003,2009 Free Software Foundation, Inc. Copyright (C) 1991, 1995, 1996, 2001 Free Software Foundation, Inc. Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc. Copyright (C) 1991,92,94,96,97,99,2002 Free Software Foundation, Inc. Copyright (C) 1991, 1992, 1996, 1999 Free Software Foundation, Inc. Copyright (C) 1991-1994,1996-2001,2003,2004,2005,2007,2009 Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Copyright (C) 2004, 2005 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,2006, 2007 Free Software Foundation, Inc. Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Copyright (C) 2005 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004 Copyright (C) 2000, 2002 Free Software Foundation, Inc.2006, 2007 Free Software Foundation, Inc. Copyright (C) 2004, 2006, 2008 Free Software Foundation, Inc. Copyright (C) 1997, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Copyright (C) 1997, 1999, 2000, 2004 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 2004 Free Software Foundation, Inc. Copyright (C) 2003, 2007 Free Software Foundation, Inc. Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 1995-2017 The OpenSSL Project Authors. All Rights Reserved. Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved Copyright 2006-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2010-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2008-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2005-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2002-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2000-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2008-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 1999-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2001-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 1999-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2007-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2004-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2004, EdelKey Project. All Rights Reserved. Copyright 2011-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright 2016-2019 The OpenSSL Project Authors. All Rights Reserved. Copyright 2006-2018 The OpenSSL Project Authors. All Rights Reserved. Copyright 2005-2016 The OpenSSL Project Authors. All Rights Reserved. Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. Copyright (C) 2003, 2004, 2005, 2006, 2007 Copyright (C) 2003, 2004, 2005, 2006 Copyright (c) 2005 Voltaire Inc. All rights reserved. Copyright (c) 2005 Intel Corporation. All rights reserved. Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved. Copyright (c) 2004, 2005 Intel Corporation. All rights reserved. Copyright (c) 2004 Mellanox Technologies Ltd. All rights reserved. Copyright (c) 2004 Infinicon Corporation. All rights reserved. Copyright (c) 2004-2006 Voltaire Corporation. All rights reserved. Copyright (c) 2006, 2007, 2008, 2009, 2010 QLogic Corporation. Copyright (c) 2005, 2006 PathScale, Inc. All rights reserved. Copyright (c) 2005 Voltaire, Inc. All rights reserved. Copyright (c) 2006 Intel Corporation. All rights reserved. Copyright (c) 2007 Cisco Systems. All rights reserved. Copyright (c) 2014 Mellanox Technologies. All rights reserved. Copyright (c) 2005, 2006, 2007 Cisco Systems. All rights reserved. Copyright (c) 2005 Network Appliance, Inc. All rights reserved. Copyright (c) 2005 Open Grid Computing, Inc. All rights reserved. Copyright (c) 2014 Intel Corporation. All rights reserved. Copyright (c) 2014 Chelsio, Inc. All rights reserved. Copyright (c) 2014 Intel Corporation. All rights reserved. Copyright (c) 2005-2010 Intel Corporation. All rights reserved. Copyright (c) 2005-2011 Intel Corporation. All rights reserved. Copyright (c) 2010-2011 Intel Corporation. All rights reserved. Copyright (c) 1996-1997 2006, 2007, 2008 Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc. (C) Copyright Jeremy Siek 2000. Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Copyright (C) 2001, 2004, 2005 Free Software Foundation, Inc. Copyright (C) 2007,2008 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004, 2005, 2006 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2004, 2005 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006 Copyright (c) 1996 Copyright (c) 1996-1999 Copyright (c) 1997 Copyright (C) 2001, 2002, 2004, 2005, 2008 Free Software Foundation, Inc. Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Copyright (c) by Jaroslav Kysela <perex@perex.cz> Copyright (C) 1999-2000 by Massimo Piccioni <dafastidio@libero.it> Copyright 2003 Vivien Chappelier <vivien.chappelier@linux-mips.org> Copyright 2008 Thomas Bogendoerfer <tsbogend@franken.de> Copyright 2011 Analog Devices Inc. Copyright (C) 2012 Texas Instruments, Inc. Copyright (c) by Pavel Hofman <pavel.hofman@ivitera.com> Copyright 2009 Philipp Zabel Copyright (c) 2000 Jaroslav Kysela <perex@perex.cz> Copyright (c) 1994-2000 by Jaroslav Kysela <perex@perex.cz> Copyright (C) 2009 Atmel Corporation Copyright (C) 2005-2009 Atmel Corporation Copyright (c) 1994-2001 by Jaroslav Kysela <perex@perex.cz> Copyright (c) 2010 Alexander Sverdlin <subaparts@yandex.ru> Copyright (c) 2012 Cirrus Logic Inc. Copyright (c) 2013 Dialog Semiconductor Copyright (c) 2012 Dialog Semiconductor Copyright (ST) 2012 Rajeev Kumar (rajeev-dlh.kumar@st.com) Copyright (C) 2012, Analog Devices Inc. Copyright (C) 2000 Takashi Iwai <tiwai@suse.de> Copyright (C) 1999 Steve Ratcliffe Copyright (C) 1999-2000 Takashi Iwai <tiwai@suse.de> Copyright (c) 1999-2000 Takashi Iwai <tiwai@suse.de> Copyright (c) 2007 Takashi Iwai <tiwai@suse.de> Copyright (C) 2011, 2012 by Wolfram Sang, Pengutronix e.K. Copyright 2010 Maxim Integrated Products Copyright 2011-2012 Maxim Integrated Products Copyright 2011 Maxim Integrated Products Copyright (c) 2003 by Clemens Ladisch <clemens@ladisch.de> Copyright (c) by Takashi Iwai <tiwai@suse.de> Copyright (c) by Abramo Bagnara <abramo@alsa-project.org> Copyright (c) 2006 Jochen Voss <voss@seehuhn.de> Copyright (c) 1999 by Takashi Iwai <tiwai@suse.de> Copyright (c) 1998 by Frank van de Pol <fvdpol@coil.demon.nl> Copyright (C) 1998,99 Takashi Iwai <tiwai@suse.de>,Jaroslav Kysela <perex@perex.cz> Copyright (C) 1998,99 Takashi Iwai Copyright (C) 2000 Abramo Bagnara <abramo@alsa-project.org> Copyright (c) 2000 by Takashi Iwai <tiwai@suse.de>, Copyright (C) 2009 Rafael Ignacio Zurita <rizurita@yahoo.com> Copyright (C) 2009 Renesas Solutions Corp. Copyright (C) 2012 Renesas Solutions Corp. Copyright (c) 1999-2000 Takashi iwai <tiwai@suse.de> Copyright (ST) 2012 Vipin Kumar (vipin.kumar@st.com) Copyright (c) 2004 Jaroslav Kysela <perex@perex.cz> Copyright (c) 2006 by Jaroslav Kysela <perex@perex.cz> Copyright 2011 Vista Silicon S.L. Copyright (C) Nokia Corporation Copyright 2007 Dension Audio Systems Ltd. Copyright (c) 2002 by Takashi Iwai <tiwai@suse.de> Copyright (c) by Paul Barton-Davis <pbd@op.net> Copyright 2012 Wolfson Microelectronics PLC. Copyright 2011 Wolfson Microelectronics. PLC. Copyright 2010 Wolfson Microelectronics. PLC. Copyright 2012 Wolfson Microelectronics. PLC. Copyright 2009 Wolfson Microelectronics. PLC. Copyright 2009, 2010 Wolfson Microelectronics. PLC. Copyright 2011 Roland Stigge <stigge@antcom.de> Copyright (C) 2012 Peter Meerwald <pmeerw@pmeerw.net> Copyright © 2008 Red Hat, Inc. Copyright 2007-2008 by Sascha Hlusiak. <saschahlusiak@freedesktop.org> Copyright (C) 2005-2007 Intel Corporation Copyright (c) 2002-2006, Network Appliance, Inc. All rights reserved. Copyright (c) 2007-2011 Intel Corporation. All rights reserved. Copyright (c) 2008, Intel Corporation. Copyright 2002 Andy Grover <andrew.grover@intel.com> Copyright (C) 1997-1999 Richard Gooch copyright (c) 2011 Samsung Electronics Co., Ltd Copyright (c) 2011 Samsung Electronics Co., Ltd Copyright (C) 1996-2000,2003,2004,2007 Free Software Foundation, Inc. Copyright (C) 1992, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1996 Free Software Foundation, Inc. Copyright (C) 1995-1999, 2003, 2004, 2005, 2006, 2007, 2009 Copyright (C) 1995,96,97,98,99,2000,2004,2007 Free Software Foundation, Inc. Copyright (C) 1995-1999 Russell King Copyright (C) 1996-1998 Russell King. Copyright (C) 1996-2003 Russell King Copyright (C) 1997-1999 Russell King Copyright (C) 2001-2005 Russell King Copyright (C) 1999 Hewlett-Packard Co Copyright (C) 1999 David Mosberger-Tang <davidm@hpl.hp.com> Copyright (C) 1998, 1999, 2002, 2003 Hewlett-Packard Co Copyright (C) 2002,2003 Jun Nakajima <jun.nakajima@intel.com> Copyright (C) 2002,2003 Suresh Siddha <suresh.b.siddha@intel.com> Copyright (C) 2002,2003 Intel Corp. Copyright (C) 2005,2006 Hongjiu Lu <hongjiu.lu@intel.com> Copyright (C) 2002-2003 Hewlett-Packard Co Copyright (C) 2007 Xiantao Zhang <xiantao.zhang@intel.com> Copyright (C) 2001-2003 Hewlett-Packard Co Copyright (C) 1998-2004 Hewlett-Packard Co Copyright (C) 2003 Intel Co Copyright (C) 1999, 2003 Hewlett-Packard Co Copyright (C) 1998, 1999 Hewlett-Packard Co Copyright (C) 1998, 1999 David Mosberger-Tang <davidm@hpl.hp.com> Copyright (C) 1998, 1999, 2001 Hewlett-Packard Co Copyright (C) 1998, 1999, 2001 David Mosberger-Tang <davidm@hpl.hp.com> Copyright (C) 1998-2005 Hewlett-Packard Co Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu> Copyright (C) 2008-2009 PetaLogix Copyright (C) 2006 Atmark Techno, Inc. Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu> Copyright (C) 2007-2009 PetaLogix Copyright (C) 2007-2008 Michal Simek <monstr@monstr.eu> Copyright (C) 1999,2003 Matthew Wilcox < willy at debian . org > Copyright (C) 2000 Grant Grundler, Hewlett-Packard Copyright 2008 IBM Corp. (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000 EMC Symmetrix ioctl Copyright EMC Corporation, 2008 Copyright (C) 1999, 2000 IBM Deutschland Entwicklung GmbH,IBM Corporation Copyright (C) 1999,2000 IBM Deutschland Entwicklung GmbH, IBM Corporation Copyright (C) 2004 IBM Corporation Copyright IBM Corp. 1999,2006 Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation Copyright IBM Corp. 2001,2006 (C) Copyright IBM Corp. 2005 Copyright (C) 2001, 2006 IBM Corporation Copyright (C) 1991,1992,1994-2001,2003,2004,2007 Copyright 1991-1998 by Bell Labs Innovations for Lucent Copyright 1993-1998 Lucent Technologies, Inc. Copyright 1993-2000 Lucent Technologies, Inc. Copyright 2001 Silicon Metrics Corporation. Copyright (c) 1991-1993 The Regents of the University of California. Copyright (c) 1994 Sun Microsystems, Inc. Copyright 1998-1999 Lucent Technologies, Inc. Copyright (C) 2000, 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc. Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009 Copyright (C) 2002, 2003, 2004, 2007 Free Software Foundation, Inc. Copyright (C) 2005, 2006, 2008 Free Software Foundation, Inc. Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. Copyright (C) 2008-2013 Free Software Foundation, Inc. Copyright (C) 2010-2013 Free Software Foundation, Inc. Copyright (C) 2002-2013 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation Copyright (C) 1998, 1999, 2002 Free Software Foundation Copyright (C) 1998, 1999, 2000, 2004, 2006 Free Software Foundation Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,2008, 2009 Free Software Foundation Copyright (C) 1999, 2000 Free Software Foundation Copyright (C) 1997, 1998, 1999, 2000, 2006 Free Software Foundation, Inc. Copyright (C) 1992, 1998 Free Software Foundation, Inc. Copyright (C) 2004 Dominik Brodowski <linux@dominikbrodowski.de> Copyright (C) 1991,92,93,96,97,98,2000,2004 Free Software Foundation, Inc. Copyright (C) 1991,92,93,95,96,97,98,99,2001,2002,2004,2007,2008,2009 Copyright (c) 2002-2005, Network Appliance, Inc. All rights reserved. Copyright (C) 1990, 1991, 1993, 2008 Free Software Foundation, Inc. Copyright (C) 1991-2000,2003-2005,2009,2010 Free Software Foundation, Inc. Copyright (C) 1995-2001,2003,2004,2006,2009 Free Software Foundation, Inc. Copyright (C) 1995-2003,2004,2005,2006,2007,2008,2009 Copyright (C) 1992, 1996, 1997, 2000, 2008 Free Software Foundation, Inc. Copyright (C) 1995, 96, 98, 99, 2000 Free Software Foundation, Inc. Copyright (C) 1991,92,93,94,95,96,97,2002 Free Software Foundation, Inc. Copyright (C) 1995,1996,1997,2003,2006,2007 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2004, 2005 Free Software Foundation, Inc. Copyright (C) 1991,1992,1994-2001,2003,2004,2005,2006,2007, 2009 Copyright (C) 1991-1993,1995-2006,2007,2009 Free Software Foundation, Inc. Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc. Copyright (c) 1993 The Regents of the University of California. Copyright (C) 1997, 1999, 2000, 2003 Free Software Foundation, Inc. Copyright (C) 1991-93,96,97,98,99,2001,2004 Free Software Foundation, Inc. Copyright (C) 1993,1995,1996,1997,1998,2000,2001,2002 Free Software Foundation, Inc. Copyright 1996-1999 by David Turner, Robert Wilhelm, and Werner Lemberg. Copyright 1996-1999 by Juliusz Chroboczek, Copyright (c) 1980, 1993 Copyright (c) 1989, 1993 Copyright (C) 1992,1996-1999,2003,2004 Free Software Foundation, Inc. Copyright (C) 1997-1999, 2000-2002, 2007 Free Software Foundation, Inc. Copyright (C) 1990, 1991, 1993 Free Software Foundation, Inc. Copyright (C) 1989-1994,1996-1999,2001,2003,2004,2009 Copyright (C) 1999-2006 Brian Paul All Rights Reserved. Copyright (C) 2009 VMware, Inc. All Rights Reserved. Copyright (c) 1990, 1991, 2003 Linas Vepstas <linas@linas.org> Copyright (C) 1991,92,95-98,2000,2001,2004 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc. Copyright 1994,1995 rubini@linux.it (Alessandro Rubini) Copyright (C) 1998 Ian Zimmerman <itz@rahul.net> Copyright (C) 2002 Nico Schottelius <nico@schottelius.org> Copyright (C) 1991,1992,1995-2001,2003,2004 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999, 2000, 2003 Free Software Foundation, Inc. Copyright (C) 1992, 1995, 1996, 1999 Free Software Foundation, Inc. Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved. Copyright (c) 2002-2005 Mellanox Technologies LTD. All rights reserved. Copyright (c) 1996-2003 Intel Corporation. All rights reserved. Copyright (c) 2004, 2005 Voltaire, Inc. All rights reserved. Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved. Copyright (c) 2008 Voltaire, Inc. All rights reserved. Copyright (c) 2007 Lawrence Livermore National Lab Copyright (c) 2002-2010 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2004-2008 Voltaire, Inc. All rights reserved. Copyright (c) 2004-2007 Voltaire, Inc. All rights reserved. Copyright (c) 2002-2011 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2009 HNR Consulting. All rights reserved. Copyright (c) 2004-2012 Mellanox Technologies LTD. All rights reserved. Copyright (C) 2010-2011, Mellanox Technologies Ltd. ALL RIGHTS RESERVED. Copyright (c) 2009 Sun Microsystems, Inc. All rights reserved. Copyright (c) 2005-2007 Voltaire, Inc. All rights reserved. Copyright (c) 2007 The Regents of the University of California. Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2002-2009 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2008,2009 System Fabric Works, Inc. All rights reserved. Copyright (c) 2002-2008 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2007-2009 Voltaire, Inc. All rights reserved. Copyright (c) 2010 Sun Microsystems, Inc. All rights reserved. Copyright (c) 2002-2005,2008 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2008 Xsigo Systems Inc. All rights reserved. Copyright (c) 2008 Xsigo Systems Inc. All rights reserved. Copyright (c) 2009 System Fabric Works, Inc. All rights reserved. Copyright (c) 2008 Mellanox Technologies LTD. All rights reserved. Copyright (c) 2007 Simula Research Laboratory. All rights reserved. Copyright (c) 2007 Silicon Graphics Inc. All rights reserved. Copyright (C) 1997-2001, 2004, 2007 Free Software Foundation, Inc. Copyright (c) 1997-2007 Jean Tourrilhes <jt@hpl.hp.com> Copyright (C) 1995-2002,2003,2004,2005,2009 Free Software Foundation, Inc. Copyright 2000,2001,2002 Red Hat, Inc. Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc. Copyright (C) 1995-2002, 2004, 2005 Free Software Foundation, Inc. Copyright (C) 1991-1995,1997-2006,2007,2009 Free Software Foundation, Inc. Copyright (c) 1998 - 2004 Mike D. Schiffman <mike@infonexus.com> Copyright 1988, 1989 by Carnegie Mellon University Copyright (c) 1998 - 2001 Mike D. Schiffman <mike@infonexus.com> Copyright (C) 1998 by Josh Vanderhoof Copyright (C) 1991, 1992, 1996, 1997, 1998, 1999, 2000, 2005 Copyright (C) 1995-2001, 2004, 2005, 2006 Free Software Foundation, Inc. Copyright (C) 1995 - 1997 Marco van Wieringen - ELM Consultancy B.V. Copyright (C) 2001 Paul Diefenbaugh <paul.s.diefenbaugh@intel.com> Copyright (C) 2013, Intel Corporation Copyright (C) 2006 Intel Corp. Copyright (C) 1999 Jeff Hartmann Copyright (C) 1999 Precision Insight, Inc. Copyright (C) 1999 Xi Graphics, Inc. Copyright (C) 2004 Silicon Graphics, Inc. Copyright (C) 2002-2003 Dave Jones Copyright 2004-2005 Red Hat, Inc. Copyright 2010 MontaVista Software, LLC. Copyright 2000,2001,2002 Red Hat. Copyright (C) 2003 Deep Blue Solutions Ltd, All Rights Reserved. Copyright (C) 2001 ARM Limited Copyright (C) 2000 Deep Blue Solutions Ltd. Copyright (C) 2008-2009 ST-Ericsson AB Copyright (C) 2006 STMicroelectronics Pvt. Ltd. Copyright (C) 2005 ARM Ltd Copyright (C) 2010 ST-Ericsson SA Copyright (c) 2008 Simtec Electronics Copyright (C) 2010 Samsung Electronics Co. Ltd. Copyright (C) ARM Limited Copyright (C) 2009 ST Microelectronics Copyright (C) 2007-2010 Advanced Micro Devices, Inc. Copyright (C) 2007 Davide Libenzi <davidel@xmailserver.org> (C) 2003 zecke@handhelds.org Copyright 1994-2001 Stephen Rothwell (sfr@canb.auug.org.au) Copyright (C) 2012 Red Hat, Inc. All Rights Reserved. Copyright (C) 2013 Red Hat, Inc. All Rights Reserved. (C) Copyright 2009 Intel Corporation Copyright © 2006, Intel Corporation. Copyright 2003-2004 Red Hat, Inc. All rights reserved. Copyright 2003-2004 Jeff Garzik Copyright (c) 2008 Atheros Communications Inc. Copyright (c) 2009 Gabor Juhos <juhosg@openwrt.org> Copyright (c) 2009 Imre Kaloz <kaloz@openwrt.org> Copyright (C) 2005 Ivan Kokshaysky Copyright (C) SAN People (C) INESC 1998 Copyright (c) 2005 - James Bottomley <James.Bottomley@steeleye.com> Copyright 2003-2004 Red Hat Inc., Durham, North Carolina. Copyright 2008 Red Hat, Inc. All rights reserved. Copyright 2008 Ian Kent <raven@themaw.net> Copyright 1997 Transmeta Corporation - All Rights Reserved Copyright 1999-2000 Jeremy Fitzhardinge <jeremy@goop.org> Copyright 1996 by Carsten Paeth (calle@calle.in-berlin.de) Copyright 1999 by Carsten Paeth (calle@calle.in-berlin.de) Copyright (C) 2003,2004 Hewlett-Packard Company Copyright (C) 2012, Red Hat, Inc. Rafael Aquini <aquini@redhat.com> Copyright 2008 MontaVista Software, Inc. Copyright 2008,2010 Anton Vorontsov <cbouatmailru@gmail.com> (C) 1997-1998 by Thomas Sailer, HB9JNX/AE4WA Copyright © 2011 Parrot S.A. Copyright 2004-2010 Analog Devices Inc. Copyright (C) 1999 Tigran Aivazian <tigran@veritas.com> Copyright (C) 2001 Jens Axboe <axboe@suse.de> Copyright (c) 2011 Bosch Sensortec GmbH Copyright (c) 2011 Unixphere Copyright (C) 2008 James Smart, Emulex Corporation Copyright (C) 2011 Red Hat, Inc. All rights reserved. Copyright (C) 2011 Mike Christie Copyright (c) 2007 Rodolfo Giometti <giometti@linux.it> Copyright (c) 2007 Eurotech S.p.A. <info@eurotech.it> Copyright (c) 2002-2007 Volkswagen Group Electronic Research Copyright (C) 2006 Andrey Volkov <avolkov@varma-el.com> Copyright (C) 2008 Wolfgang Grandegger <wg@grandegger.com> Copyright 2012, Fabio Baltieri <fabio.baltieri@gmail.com> Copyright (c) 2009 Wolfgang Grandegger <wg@grandegger.com> Copyright (C) 2010 Marc Kleine-Budde <kernel@pengutronix.de> Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/ Copyright (C) 2012 Oliver Hartkopp <socketcan@hartkopp.net> Copyright 1997 by Carsten Paeth (calle@calle.in-berlin.de) Copyright by Michał Mirosław, 2008-2009 Copyright (C) 1996-1998 Stallion Technologies Copyright (C) 1994-1996 Greg Ungerer. Copyright (C) 1992 David Giller, rafetmad@oxy.edu 1994, 1995 Eberhard Mönkeberg, emoenke@gwdg.de 1996 David van Leeuwen, david@tm.tno.nl 1997, 1998 Erik Andersen, andersee@debian.org 1998-2002 Jens Axboe, axboe@suse.de Copyright (C) Miguel Ojeda Sandonis Copyright (C) 2003 BULL SA Copyright (C) 2004-2006 Silicon Graphics, Inc. Copyright IBM Corporation, 2007 Copyright (c) 2010-2011 Jeremy Kerr <jeremy.kerr@canonical.com> Copyright (C) 2011-2012 Linaro Ltd <mturquette@linaro.org> Copyright (C) 2004 ARM Limited. Copyright (C) 2008 Russell King. Copyright (C) ST-Ericsson SA 2011 Copyright (C) Matt Helsley, IBM Corp. 2005 Copyright (C) 2005 Nguyen Anh Quynh <aquynh@gmail.com> Copyright (C) 2005 Guillaume Thouvenin <guillaume.thouvenin@bull.net> Copyright (c) 1987-1999 Carnegie Mellon University Copyright 1993 United States Government as represented by the Director, National Security Agency. This software may only be used (C) Copyright 2001 Linus Torvalds Copyright 1997 by Henner Eisen <eis@baty.hanse.de> 2004-2005 Copyright (c) Evgeniy Polyakov <zbr@ioremap.net> Copyright (C) 1993 Hamish Macdonald Copyright (c) 2011 Broadcom Corporation Copyright (C) 2010, Intel Corp. Copyright (C) 2001 Russell King (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de> (C) 2007 Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> Copyright (C) 2012 Samsung Electronics Co., Ltd(http://www.samsung.com) Copyright (C) 2012 Amit Daniel <amit.kachhap@linaro.org> Copyright (C) 2011 Google, Inc. Copyright 2011 Solarflare Communications Inc. Copyright (c) 2005 Ben Gardner <bgardner@wabtec.com> Copyright (C) 2008 Red Hat, Inc. All Rights Reserved. Copyright (c) 2002 James Morris <jmorris@intercode.com.au> Copyright (c) 2002 David S. Miller (davem@redhat.com) Copyright (c) 2005 Herbert Xu <herbert@gondor.apana.org.au> Copyright (C) 2011 secunet Security Networks AG Copyright (C) 2011 Steffen Klassert <steffen.klassert@secunet.com> Copyright (C) 2006 Advanced Micro Devices, Inc. Copyright (C) 2009 Andres Salomon <dilinger@collabora.co.uk> Copyright (C) 1996 Paul Mackerras. 2007 (c) Deep Root Systems, LLC. Copyright(c) 2007 - 2009 Intel Corporation. All rights reserved. Copyright 2002 John Levon <levon@movementarian.org> Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com> Copyright (C) 2004 IBM Inc. Copyright (C) 1993 Linus Torvalds Copyright (C) Shailabh Nagar, IBM Corp. 2006 Copyright (C) 2011 Samsung Electronics Copyright (C) 2001 Sistina Software (UK) Limited. Copyright (C) 2004-2008 Red Hat, Inc. All rights reserved. Copyright (c) 2001-2003 Patrick Mochel <mochel@osdl.org> Copyright (c) 2004-2009 Greg Kroah-Hartman <gregkh@suse.de> Copyright (c) 2008-2009 Novell Inc. Copyright 1998-2004 H. Peter Anvin -- All Rights Reserved Copyright (C) 2011 Nokia Corporation Copyright (C) Peter Maydell 05/1998 <pmaydell@chiark.greenend.org.uk> Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. Copyright (C) 2004-2011 Red Hat, Inc. All rights reserved. Copyright (C) 2004-2007 Red Hat, Inc. All rights reserved. Copyright (C) 2007 Red Hat, Inc. All rights reserved. Copyright (C) 2005-2008 Red Hat, Inc. All rights reserved. Copyright (C) 2003 Sistina Software Copyright (C) 2004 - 2008 Red Hat, Inc. All rights reserved. Copyright (C) 2001 - 2003 Sistina Software (UK) Limited. Copyright (C) 2004 - 2005 Red Hat, Inc. All rights reserved. Copyright (C) 2001 - 2003 Sistina Software Copyright (C) 2006-2009 Red Hat, Inc. Copyright (C) 2003 Sistina Software Limited. Copyright (c) 2004 Simtec Electronics Copyright (C) 2008 Copyright (C) 2005-2007 Freescale Semiconductor, Inc. Copyright(C) 2011 Linaro Limited. All rights reserved. Copyright (c) 2010-2011 by Samsung Electronics. Copyright (C) 2008 Advanced Micro Devices, Inc. Copyright(c) 2004 - 2006 Intel Corporation. All rights reserved. Copyright (c) 2006, Intel Corporation. Copyright (C) Ashok Raj <ashok.raj@intel.com> Copyright (C) Shaohua Li <shaohua.li@intel.com> Copyright (C) 2000,2002 Stephen Rothwell Copyright (c) International Business Machines Corp., 2008 Copyright (c) 1995-2001,2004 Silicon Graphics, Inc. All Rights Reserved. Copyright (C) 2001-2008, LINBIT Information Technologies GmbH. Copyright (C) 2001-2008, Philipp Reisner <philipp.reisner@linbit.com>. Copyright (C) 2001-2008, Lars Ellenberg <lars.ellenberg@linbit.com>. Copyright (C) 1998, 1999, 2003 Ralf Baechle (C) 2003 Guido Guenther <agx@sigxcpu.org> Copyright (C) 2010-2011 ST Microelectronics Copyright (c) 2011, Tom Herbert <therbert@google.com> 2006-2008 (c) MontaVista Software, Inc. This file is licensed under Copyright (C) 2002, 2003, 2004 Dell Inc. Copyright (C) 2004 - 2006 rt2x00 SourceForge Project Copyright (C) 1999 VA Linux Systems Copyright (C) 1999 Walt Drummond <drummond@valinux.com> Copyright (C) 1999, 2002-2003 Hewlett-Packard Co. Copyright (c) 1999 Al Smith (c) 1988 Silicon Graphics (c) 1985 MIPS Computer Systems, Inc. Copyright (C) 2003 Red Hat, Inc. All Rights Reserved. Copyright (C) 2008 James Bottomley <James.Bottomley@HansenPartnership.com> Copyright (C) 1998 David S. Miller (davem@redhat.com) Copyright 2001 Jeff Garzik <jgarzik@pobox.com> Copyright 2001 Sun Microsystems (thockin@sun.com) Copyright 2002 Intel (eli.kupermann@intel.com,christopher.leech@intel.com,scott.feldman@intel.com) Copyright (C) Sun Microsystems 2008 Copyright (C) 2001,...,2006 Davide Libenzi Copyright (c) 2009 IBM Corporation Copyright (C) 1992, 1993, 1994, 1995 Copyright (C) 1991, 1992 Linus Torvalds Copyright (C) 2012 Samsung Electronics Copyright (C) 2008 Google, Inc. Copyright (c) 2012 Samsung Electronics Co., Ltd. Copyright (C) 2007, Riku Voipio <riku.voipio@iki.fi> Copyright (c) 2009 Orex Computed Radiography Copyright (C) 2010 Freescale Semiconductor, Inc. Copyright (C) 2012 Canonical Ltd Copyright (C) 2012 Texas Instruments copyright (C) 2007 Cluster File Systems, Inc Copyright (C) 2005-2006 Kristian Hoegsberg <krh@bitplanet.net> Copyright (C) 2008 SUSE LINUX Products GmbH Copyright (c) 2002 Johann Deneux Copyright (C) 2002-2003 David McCullough <davidm@snapgear.com> Copyright (C) 1998 Kenneth Albanowski <kjahds@kjahds.com> Copyright (C) 2011, SUSE, Jan Kara <jack@suse.cz> Copyright (C) 2004-2007 Red Hat, Inc. All Rights Reserved. Copyright (C) 2006 Freescale - John Rigby Copyright (C) 2006 Sylvain Munaut <tnt@246tNt.com> Copyright (C) 2006 Sylvain Munaut <tnt@246tNt.com> Copyright (C) 2005 Varma Electronics Oy,( by Andrey Volkov <avolkov@varma-el.com> ) Copyright (C) 2003-2004 MontaVista, Software, Inc. Copyright (C) 2006-2007 Sylvain Munaut <tnt@246tNt.com> Copyright (C) 2007 Sylvain Munaut <tnt@246tNt.com> Copyright (C) 2006 AppSpec Computer Technologies Corp. Copyright 2011 Freescale Semiconductor, Inc. All Rights Reserved. Copyright 2008 Freescale Semiconductor, Inc. All Rights Reserved. Copyright (C) 2004 S.Hauer, Pengutronix Copyright 2004,2012 Freescale Semiconductor, Inc Copyright (C) 2008-2011 Freescale Semiconductor, Inc. (C) Copyright 2005 Robert Love Copyright (C) 2008 Red Hat, Inc., Eric Paris <eparis@redhat.com> Copyright (c) 2003 Intracom S.A. 2005 (c) MontaVista Software, Inc. 2006 (c) MontaVista Software, Inc. Copyright (C) 2001-2008 Miklos Szeredi <miklos@szeredi.hu> Copyright (c) 1999-2002 Vojtech Pavlik Copyright (C) 1998 R.E.Wolff@BitWizard.nl Copyright (C) 1992 Drew Eckhardt Copyright (C) Sistina Software, Inc. 1997-2003 All rights reserved. Copyright (C) 2004-2006 Red Hat, Inc. All rights reserved. Copyright (c) 2004 by Hansjoerg Lipp <hjlipp@web.de> (C) 2002 Nadia Yvette Chambers, IBM / (C) 2012 Sasha Levin <levinsasha928@gmail.com> Copyright (C) 1999-2005 Krzysztof Halasa <khc@pm.waw.pl> (C) 1996-1998 by Thomas Sailer, HB9JNX/AE4WA Copyright (C) 2012 Avionic Design GmbH Copyright (c) 2007-2009 Jiri Kosina Copyright (c) 2010 Stefan Achatz <erazorde@users.sourceforge.net> Copyright (c) 2012, Intel Corporation. Copyright (c) 1999 Andreas Gal Copyright (c) 2000-2001 Vojtech Pavlik Copyright (c) 2006-2007 Jiri Kosina Copyright (c) 1999-2000 Vojtech Pavlik Copyright (c) 2007 Jiri Kosina Copyright (c) 2001 Brian S. Julin Copyright(C) 2005, Thomas Gleixner <tglx@linutronix.de> Copyright(C) 2005, Red Hat, Inc., Ingo Molnar Copyright IBM Corporation, 2012 Copyright (C) 2005 Yani Ioannou <yani.ioannou@gmail.com> Copyright (c) 2002 Mark D. Studebaker <mdsxyz123@yahoo.com> Copyright (C) 2005 Mark M. Hoffman <mhoffman@lightlink.com> Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com Copyright (c) 2011, Microsoft Corporation. Copyright 1999 by Werner Cornelius (werner@titro.de) Copyright 2009-2010 Analog Devices Inc. (C) Copyright 2010 Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). Copyright (C) 2010 Samsung Electronics Co.Ltd Copyright (c) 2012 Benjamin Tissoires <benjamin.tissoires@gmail.com> Copyright (c) 2012 Ecole Nationale de l'Aviation Civile, France Copyright (C) 2009 - 2010 Samsung Electronics Co.Ltd Copyright (C) 2012 Samsung Electronics Co.Ltd Copyright (c) 2008-2009 Rodolfo Giometti <giometti@linux.it> Copyright (c) 2008-2009 Eurotech S.p.A. <info@eurotech.it> Copyright (c) 2010, 2011 Ericsson AB. Copyright (C) 2002 Intrinsyc Software Inc. Copyright (c) 2010, Code Aurora Forum. All rights reserved. Copyright (C) 2004 Dirk Behme <dirk.behme@de.bosch.com> Copyright (C) 2005-2006 Texas Instruments, Inc. Copyright (c) by Kai Svahn <kai.svahn@nokia.com> Copyright (C) 1995-99 Simon G. Vogl Copyright (C) 1995-97 Simon G. Vogl 1998-99 Hans Berglund Copyright (C) 1998-99 Frodo Looijaard <frodol@dds.nl> 2004-2006 (c) MontaVista Software, Inc. This file is licensed under Copyright (C) 2010 Jean Delvare <khali@linux-fr.org> Copyright (c) 2009 Intel Corporation Copyright (C) 1995-2000 Simon G. Vogl (c) Copyright 1999, 2000 Red Hat Software Copyright 1994, Anders Klemets <klemets@it.kth.se> Copyright (C) 2001 Massimo Dal Zotto <dz@debian.org> Copyright (C) 1994-2002 Linus Torvalds & authors Copyright (C) 2002 by Concurrent Computer Corporation Copyright (c) 2001-2002, SSH Communications Security Corp and Jouni Malinen Copyright (c) 2002-2003, Jouni Malinen <jkmaline@cc.hut.fi> Copyright (c) 2005, Devicescape Software, Inc. Copyright (c) 2006, Michael Wu <flamingice@sourmilk.net> Copyright (c) 2013 - 2014 Intel Mobile Communications GmbH Original taken from Berkeley UNIX 4.3, (c) UCB 1982-1988 Copyright (C)2007 USAGI/WIDE Project, All Rights Reserved. Original taken from Berkeley UNIX 4.3, (c) UCB 1986-1988 Copyright 1995 Simon "Guru Aleph-Null" Janes (c) Copyright 1999, Thomas Davis, tadavis@lbl.gov Copyright 1998 Franco Venturi (c) Copyright 1995 Simon "Guru Aleph-Null" Janes Copyright (C) 2008 Nokia Corporation. All rights reserved. Copyright (c) 1989 Carnegie Mellon University. Copyright 1996 The Board of Trustees of The Leland Stanford Copyright (c) 2011 Jiri Pirko <jpirko@redhat.com> Copyright (C) 1999-2000 Maxim Krasnyansky <maxmk@yahoo.com> Copyright (c) 2011 Christian Strobel <christian.strobel@iis.fraunhofer.de> Copyright (c) 2011 Manuel Stahl <manuel.stahl@iis.fraunhofer.de> Copyright (c) 2012 Thorsten Nowak <thorsten.nowak@iis.fraunhofer.de> Copyright (C) 2008 IBM Corporation (C) Copyright IBM Corp. 2007 Copyright (C) 2005 John McCutchan Copyright 2009-2011 Analog Devices Inc. Copyright 2010-2011 Analog Devices Inc. Copyright (c) 2010, 2011 Fabien Marteau <fabien.marteau@armadeus.com> Copyright (c) 2011 Heiko Stuebner <heiko@sntech.de> Copyright (c) 2008 QUALCOMM Incorporated. Copyright (c) 2008 QUALCOMM USA, INC. Copyright (C) 2010 Texas Instruments Copyright (C) 2009, 2010, 2011 Cypress Semiconductor, Inc. Copyright (C) 2012 Javier Martinez Canillas <javier@dowhile0.org> Copyright (c) 2012 Simon Budig, <simon.budig@kernelconcepts.de> Copyright (C) 2011 Kionix, Inc. Copyright (C) 2012 Wolfram Sang, Pengutronix <w.sang@pengutronix.de> Copyright (c) 2010 Henrik Rydberg Copyright (C) 2012 Paul Parsons <lost.distance@yahoo.com> Copyright (c) 2011, Code Aurora Forum. All rights reserved. Copyright (c) 2010-2011, Code Aurora Forum. All rights reserved. Copyright (c) 2009 Dmitry Torokhov Copyright (C) 2011 Fuel7, Inc. All rights reserved. Copyright (c) 2007 Dmitry Torokhov Copyright (C) 2009 IBM Corporation Copyright (C) 2006-2008 Intel Corporation Copyright (C) 2008-10 Intel Corp (C) 2012 Michel Lespinasse <walken@google.com> Copyright © 2008 Keith Packard <keithp@keithp.com> Copyright 2006 PathScale, Inc. All Rights Reserved. Copyright (c) 2005 Stanislaw Skowronek <skylark@linux-mips.org> Copyright (c) 2005 Silicon Graphics, Inc. All Rights Reserved. Copyright (C) 2007-2008 Advanced Micro Devices, Inc. Copyright (C) 2011-2012 CERN (www.cern.ch) Copyright 2002 MontaVista Software Inc. Copyright (c) 1999 Dag Brattli, All Rights Reserved. Copyright (C) 2015 Red Hat, Inc. Copyright (c) 2015 Linaro Ltd. Copyright (C) 2002 ARM Limited, All Rights Reserved. Copyright (c) ARM Limited 2003. All rights reserved. Copyright (C) 2011 ARM Ltd. Copyright (C) 2012 Imagination Technologies Copyright (C) 2011 Imagination Technologies Copyright (C) 2009-2012 ST Microelectronics Copyright (C) 2012 Thomas Petazzoni Copyright (c) by Jaroslav Kysela <perex@suse.cz> Copyright (C) 2010 Red Hat, Inc. All rights reserved. Copyright (C) 2010 Mike Christie Copyright 2007 Red Hat, Inc. Copyright 2007 IBM, Inc. Copyright 2008 Copyright 1994,95,96 by Fritz Elfert (fritz@isdn4linux.de) Copyright 1995,96 by Thinking Objects Software GmbH Wuerzburg Copyright 1995,96 by Michael Hipp (Michael.Hipp@student.uni-tuebingen.de) Copyright 1995,96 Thinking Objects Software GmbH Wuerzburg Copyright by Werner Cornelius (werner@titro.de) Copyright 1994-1999 by Fritz Elfert (fritz@isdn4linux.de) Copyright 2000-2002 by Kai Germaschewski (kai@germaschewski.name) Copyright (C) 2003-2004 Kevin Thayer <nufanwfk at yahoo.com> Copyright (C) 2004-2007 Hans Verkuil <hverkuil@xs4all.nl> Copyright (C) 2006, 2007 Ian Armstrong <ian@iarmst.demon.co.uk> (c) Copyright 1999-2001 Quicknet Technologies, Inc. Copyright 1998-2000 Red Hat, Inc --- All Rights Reserved Copyright (C) 2001-2003 Red Hat, Inc. Copyright (C) 2006. Bob Jenkins (bobjenkins@burtleburtle.net) Copyright (C) 2009-2010 Jozsef Kadlecsik (kadlec@blackhole.kfki.hu) Copyright (C) 1996-2000 Vojtech Pavlik Copyright (C) 2009-2012 Jason Baron <jbaron@redhat.com> Copyright (C) 2011-2012 Peter Zijlstra <pzijlstr@redhat.com> Copyright 2002 Rusty Russell <rusty@rustcorp.com.au> IBM Corporation Copyright (c) 2000-2007 Silicon Graphics, Inc. All Rights Reserved. Copyright (C) 2000 Stephane Eranian <eranian@hpl.hp.com> Copyright (C) 2009 Jason Wessel <jason.wessel@windriver.com> (c) Copyright 1997 by Carsten Paeth (calle@calle.in-berlin.de) Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. Copyright (C) 2004, 2007 Red Hat, Inc. All Rights Reserved. Copyright (C) 2004, 2008 Red Hat, Inc. All Rights Reserved. Copyright (C) 2009/2010 Stefani Seibold <stefani@seibold.net> 2001-2004 (c) Amit S. Kale and 2003-2005 (c) MontaVista Software, Inc. Copyright (C) 2005 Patrick Mochel Copyright (C) 2008 ARM Limited Copyright (C) 2009 Net Insight AB Copyright (c) 2002-2003 Patrick Mochel Copyright (c) 2002-2003 Open Source Development Labs Copyright (c) 2006-2008 Greg Kroah-Hartman <greg@kroah.com> Copyright (c) 2006-2008 Novell Inc. Copyright (C) IBM Corporation, 2002, 2004 2002-Oct Created by Vamsi Krishna S <vamsikrishna@in.ibm.com> Kernel Copyright (C) 2004 IBM Corp. Copyright (C) 2002-2003 Patrick Mochel <mochel@osdl.org> Copyright (C) 2002-2003 Open Source Development Labs Copyright (c) 2010 Intel Corporation Copyright (c) 2012 BTicino S.p.A. (C) Copyright 2008 Intel Corporation Copyright (C) 2011 ST-Ericsson SA. Copyright (C) 2009 Motorola, Inc. Copyright (C) 2009 Samsung Electronics Copyright (C) 2009 Antonio Ospite <ospite@studenti.unina.it> Copyright (C) 2008 Riku Voipio <riku.voipio@movial.fi> Copyright (C) 2011 Neil Brown <neil@brown.name> Copyright (C) 2005 John Lenz <lenz@cs.wisc.edu> Copyright (C) 2005 Richard Purdie <rpurdie@openedhand.com> Copyright 2009, 2010, Nick Piggin, Novell Inc. Copyright 2003-2005 Red Hat, Inc. All rights reserved. Copyright 2003-2005 Jeff Garzik Copyright (C) 1999-2002 Vojtech Pavlik Copyright (C) 2004 Dmitry Torokhov Copyright (C) 1996 Larry Ewing (lewing@isc.tamu.edu) Copyright (C) 1996,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) Copyright (C) 2001 Greg Banks <gnb@alphalink.com.au> Copyright (C) 2001 Jan-Benedict Glaw <jbglaw@lug-owl.de> Copyright (C) 2003 Geert Uytterhoeven <geert@linux-m68k.org> Copyright (c) 2013 Red Hat, Inc. and Parallels Inc. All rights reserved. Copyright (C) 2014 Seth Jennings <sjenning@redhat.com> Copyright (C) 2014 SUSE Copyright (c) 2001 by Jay Schulist <jschlst@samba.org> Copyright 2010,2011 Intel Corp. Copyright (C) 2006,2007 Red Hat, Inc., Ingo Molnar <mingo@redhat.com> Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra <pzijlstr@redhat.com> Copyright (C) 2006 Red Hat, Inc. All Rights Reserved. Copyright 1993 by Theodore Ts'o. Redistribution of this file is copyright (C) 1992 Michael K. Johnson Copyright (C) 2003-2008, LINBIT Information Technologies GmbH. Copyright (C) 2003-2008, Philipp Reisner <philipp.reisner@linbit.com>. Copyright (C) 2003-2008, Lars Ellenberg <lars.ellenberg@linbit.com>. Copyright (C) 1996-2012 Markus F.X.J. Oberhumer <markus@oberhumer.com> Copyright (c) 2006 Tower Technologies Copyright (c) 2005 Henk Vergonet <Henk.Vergonet@gmail.com> (C) 2001 by Andreas Gruenbacher, <a.gruenbacher@computer.org> Copyright (C) 2008 Marvell Semiconductor Copyright Torsten Duwe <duwe@informatik.uni-erlangen.de> 1993 Copyright Motorola 1984 . copyright Joerg Dorchain (dorchain@mpi-sb.mpg.de) Copyright (C) 2008, Paulius Zaleckas <paulius.zaleckas@teltonika.lt> Copyright (C) 2011, 2012 Cavium, Inc. Copyright 2006-2009 Solarflare Communications Inc. Copyright (C) 2009, Guennadi Liakhovetski <g.liakhovetski@gmx.de> Copyright (C) 2001 Peter Bergner, IBM Corp. Copyright 2007 OpenVZ SWsoft Inc Copyright 2003,2004 Andi Kleen SuSE Labs Copyright (C) 2007 Alex Dubov <oakad@yahoo.com> Copyright (C) 2001-2003 Stelian Pop <stelian@popies.net> Copyright (C) 2001-2002 Alcôve <www.alcove.com> Copyright (C) 2000 Andrew Tridgell <tridge@valinux.com> Copyright ST-Ericsson 2012. Copyright (C) ST-Ericsson SA 2012 Copyright ST-Ericsson 2010. Copyright 2012 Wolfson Microelectronics plc Copyright(c) 2011 Dialog Semiconductor Ltd. Copyright(c) 2012 Dialog Semiconductor Ltd. Copyright (C) 2012 Dialog Semiconductor Ltd. (c) 2008 mGine Co.,LTD (c) 2008 unsik Kim <donari75@gmail.com> Copyright (C) 1996, 1999, 2001 David S. Miller (davem@redhat.com) Copyright 2008 by Karsten Keil <kkeil@novell.com> Copyright (c) 2006 Cisco Systems, Inc. All rights reserved. Copyright (c) 2007 Cisco Systems, Inc. All rights reserved. Copyright (c) 2006, 2007 Cisco Systems, Inc. All rights reserved. Copyright (c) 2005 Mellanox Technologies. All rights reserved. Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved. Copyright (c) 2013-2015, Mellanox Technologies, Ltd. All rights reserved. Copyright (c) 2001-2004 Silicon Graphics, Inc. All rights reserved. (C) Copyright 2001, 2002 Rusty Russell IBM Corporation Copyright (C) 1994, 1996, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. Copyright (C) 2003 Krzysztof Benedyczak & Michal Wronski Copyright (C) 2007 Google Incorporated Copyright (C) 2004, 2005, 2006 Red Hat, Inc., Ingo Molnar <mingo@redhat.com> Copyright 2002 Momentum Computer, Inc. Copyright 2002 GALILEO TECHNOLOGY, LTD. Copyright(C) 2010 Red Hat. 1999 Copyright (C) Pavel Machek, pavel@ucw.cz. This code is GPL. 1999/11/04 Copyright (C) 1999 VMware, Inc. (Regis "HPReg" Duchesne) 2001 Copyright (C) Steven Whitehouse Copyright (C) 1995 by Volker Lendecke Copyright (C) 1995, 1996 by Volker Lendecke Copyright (C) 2000-2002 Joakim Axelsson <gozem@linux.nu> Copyright (C) 2003-2013 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> (C)2002 Rusty Russell IBM -- This code is GPL. (C)1998 Rusty Russell -- This code is GPL. (C)1999 David Jeffery Copyright (C) 2002 Trond Myklebust (C) 2003 Andreas Gruenbacher <agruen@suse.de> Copyright (C) 1992 Rick Sladkey Copyright (C) 2005, 2006 Chuck Lever <cel@netapp.com> Copyright (C) 2000 Trond Myklebust Copyright (C) 2005-2008 Nippon Telegraph and Telephone Corporation. Copyright 2006, 2007, 2008 Johannes Berg <johannes@sipsolutions.net> Copyright 2008 Michael Wu <flamingice@sourmilk.net> Copyright 2008 Luis Carlos Cobo <luisca@cozybit.com> Copyright 2008 Michael Buesch <mb@bu3sch.de> Copyright 2008, 2009 Luis R. Rodriguez <lrodriguez@atheros.com> Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com> Copyright 2008 Colin McCabe <colin@cozybit.com> Copyright (C) 2007, 2008, 2009 Siemens AG Copyright (c) 2005 Jim Cromie <jim.cromie@gmail.com> Copyright(c) 2012 Intel Corporation. All rights reserved. Copyright (c) 2011-2014, Intel Corporation. Copyright (C) 2008 IBM Corp., Benjamin Krill <ben@codiert.org> Copyright by Philips Automation Projects Copyright (C) 1996-2005 Paul Mackerras. Copyright 2009 Benjamin Herrenschmidt, IBM Corp Copyright (c) 2007-2008 MontaVista Software, Inc. Copyright (c) 2009 Secret Lab Technologies, Ltd. Copyright 2012 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Copyright (C) 2010 Andres Salomon <dilinger@queued.net> Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp. Copyright (C) 2008-2009 Nokia Corporation Copyright (C) 2004 Nokia Corporation Copyright (c) 2007-2011 Nicira Networks. Copyright (C) 2009-2010 Texas Instruments Incorporated. @remark Copyright 2002 OProfile authors Copyright (C) 2008, 2009 secunet Security Networks AG Copyright (C) 2008, 2009 Steffen Klassert <steffen.klassert@secunet.com> Copyright (C) IBM Corporation, 2006 Copyright 1995 Linus Torvalds Copyright (C) 2011 ST Microelectronics Copyright (C) 2005 Stuart Brady Copyright (C) 2004 Intel Copyright (C) Tom Long Nguyen (tom.l.nguyen@intel.com) Copyright (C) 2007 Intel Corp. Copyright 1994, Drew Eckhardt Copyright 1997--1999 Martin Mares <mj@ucw.cz> Copyright (C) 1995,2001 Compaq Computer Corporation Copyright (C) 2001 Greg Kroah-Hartman (greg@kroah.com) Copyright (C) 2001 IBM Corp. Copyright © 2007 Anton Vorontsov <cbou@mail.ru> Copyright 2011 Red Hat, Inc. (C) 2012 Google, Inc. Copyright (C) 2008-2009, Thomas Gleixner <tglx@linutronix.de> Copyright (C) 2008-2009, Red Hat, Inc., Ingo Molnar Copyright (C) 2008-2009, Red Hat, Inc., Peter Zijlstra Copyright (C) 2008-2011, Red Hat, Inc., Ingo Molnar Copyright (C) 2008-2011, Red Hat, Inc., Peter Zijlstra (c) 1998 Grant R. Guenther <grant@torque.net> Copyright (C) 2005-2007 Jiri Slaby <jirislaby@gmail.com> Copyright (c) 2004 Freescale Semiconductor, Inc. Copyright (C) 2012 ST-Ericsson SA Copyright (C) 2000 Jens Axboe <axboe@suse.de> Copyright (C) 2001-2004 Peter Osterlund <petero2@telia.com> Copyright 2010 Analog Devices Inc. Copyright (c) 2012 Savoir-faire Linux Inc. Copyright (C) ST-Ericsson SA 2010-2013 Copyright (c) 2009 Samsung Electronics Co. Ltd Copyright (C) 2002 RidgeRun, Inc. (C) Copyright 2008 by Pengutronix (C) Copyright 2012 by Wolfram Sang Copyright (C) 2011 Free Electrons Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com> Copyright (c) 2010 Samsung Electronics Co., Ltd. Copyright (c) 2013 Broadcom Corporation Copyright (c) 2008, Paulius Zaleckas <paulius.zaleckas@teltonika.lt> Copyright (C) 2009, Darius Augulis <augulis.darius@gmail.com> Copyright (C) 2003, Intel Corporation Copyright (C) 2008, Guennadi Liakhovetski <kernel@pengutronix.de> Copyright (C) 2008, Sascha Hauer <s.hauer@pengutronix.de> Copyright (C) 2010, Baruch Siach <baruch@tkos.co.il> Copyright (C) 2008, Guennadi Liakhovetski, DENX Software Engineering, <lg@denx.de> Copyright (C) 2013 Philipp Zabel, Pengutronix Copyright (C) 2012 ST-Ericsson Copyright (C) 2008 Atmel Corporation Copyright (C) 2007-2013 ST-Ericsson Copyright 2004-2009 Freescale Semiconductor, Inc. All Rights Reserved. Copyright (c) 2011 Marvell Semiconductors Inc. Copyright (C) ST-Ericsson SA 2007-2010 Copyright (C) 2010-2011 Texas Instruments Incorporated - http://www.ti.com Copyright (C) 2012 Nobuhiro Iwamatsu <nobuhiro.iwamatsu.yj@renesas.com> Copyright (c) 2005 Sascha Hauer <s.hauer@pengutronix.de>, Pengutronix Copyright (C) 2010 Samsung Electronics Copyright (C) 2003-2005 Nokia Corporation Copyright (C) 2013 Magnus Damm Copyright 2005 Simtec Electronics Copyright (C) 2004-2009 Nokia Corporation 2007 (c) MontaVista Software, Inc. This file is licensed under Copyright (c) 2008, Darius Augulis <augulis.darius@gmail.com> Copyright (C) 2009 ST-Ericsson Copyright 2004-2009 Simtec Electronics Copyright (C) 2012 Lothar Felten <l-felten@ti.com> Copyright (C) 2012 Invensense, Inc. Copyright (C) 2006 Komal Shah <komalshah802003@yahoo.com> Copyright (C) 2009 Texas Instruments, Inc Copyright (C) 2006 Samsung Electronics Copyright 2012 bct electronic GmbH Copyright (C) 2011 National Semiconductor Copyright (C) 2004-2006 Atmel Corporation Copyright (C) 2012 Alexander Shiyan <shcwork@mail.ru> Copyright (c) 2012 Guenter Roeck <linux@roeck-us.net> Copyright (C) 2005 Russell King. Copyright (C) 2011 Tieto Poland Copyright (C) 2012 Intel Corporation. All rights reserved. Copyright (C) 2010 - 2012 Samsung Electronics Co., Ltd. Copyright 2010 Wolfram Sang <w.sang@pengutronix.de> Copyright 2010 (C) Texas Instruments, Inc. http://www.ti.com/ Copyright © 2006 Texas Instruments. Ported to 2.6.23 Copyright © 2008 by Sander Huijsen <Shuijsen@optelecom-nkf.com> Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved. Copyright 2008 Sascha Hauer, kernel@pengutronix.de Copyright (C) 2006 Micron Technology Inc. Copyright (C) 2011 Marvell International Ltd. All rights reserved. Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com Copyright (C) 2007-2012 ST-Ericsson AB Copyright (C) 2008 STMicroelectronics Copyright (C) 2009 Alessandro Rubini <rubini@unipv.it> Copyright 2010 Marvell Copyright (C) 2012 Guenter Roeck <linux@roeck-us.net> Copyright (C) 2008 by Sascha Hauer <kernel@pengutronix.de> Copyright (C) 2010 Texas Instruments. Copyright (C) 2012 Renesas Corporation Copyright (c) 2009 Jonathan Cameron Copyright (c) 2007 Wouter Horre Copyright (C) 2012 Hideki EIRAKU Copyright 2009 Texas Instruments. Copyright (c) 2009 Nuvoton technology corporation. Copyright (C) 2009 Samsung Electronics Ltd. Copyright (C) 2010 Google, Inc. Copyright (c) 2005 Arnaud Patard <arnaud.patard@rtp-net.org> Copyright (C) 2009, 2010 STMicroelectronics Copyright (C) 2010 Copyright (C) 2012 Damian Hobson-Garcia Copyright (C) 2010-11 Texas Instruments Incorporated - http://www.ti.com/ Copyright (C) 2009 MontaVista Software, Inc. <source@mvista.com> Copyright (C) 2011 Samsung Electronics Co.Ltd Copyright (C) 2008 Darius Augulis <augulis.darius@gmail.com> Copyright (C) 2009 Martin Fuzzey <mfuzzey@gmail.com> Copyright (C) 2010 CompuLab Ltd. Copyright (c) 2008 Nuvoton technology corporation Copyright (C) 2011, Texas Instruments, Inc. (C) 2002-2003 Intel Corp 2001-2005 (c) MontaVista Software, Inc. (C) 2005 Thomas Gleixner <tglx@linutronix.de> Copyright (C) 2000 Andrew Henroid Copyright (C) 2012 ST Ericsson Corporation Copyright (C) 1998 Paul Mackerras. Copyright (C) 2011 Rafael J. Wysocki <rjw@sisk.pl>, Renesas Electronics Corp. Copyright (C) 2009 Rafael J. Wysocki <rjw@sisk.pl> Copyright (C) 2008 Alan Stern Copyright (C) 2010 Rafael J. Wysocki, Novell Inc. Copyright (C) 2007 Panasas Inc. [year of first publication] Copyright by Adam Belay <ambx1@neo.rr.com> Copyright (C) 2008 Hewlett-Packard Development Company, L.P. Copyright (C) 2010 OMICRON electronics GmbH (C) 2002 Andreas Gruenbacher, <a.gruenbacher@computer.org> Copyright (C) 2000 by Andreas Gruenbacher <a.gruenbacher@computer.org> Copyright (C) 2002 SGI - Silicon Graphics, Inc <linux-xfs@oss.sgi.com> Copyright (C) ST-Ericsson 2013 Copyright (C) 2011-2012 Pali Rohár <pali.rohar@gmail.com> Copyright (C) 2011 Samsung Electronics Co., Ltd. Copyright (C) 2012, Anish Kumar <anish198519851985@gmail.com> Copyright (C) 2010, Lars-Peter Clausen <lars@metafoo.de> Copyright (C) 2009, Jiejing Zhang <kzjeef@gmail.com> Copyright (c) 2010, NVIDIA Corporation. Copyright (C) 2010 Texas Instruments, Inc. Copyright (C) 2007 Texas Instruments, Inc. Copyright (c) 2013, Intel Corporation. Copyright © 2007 Anton Vorontsov <cbou@mail.ru> Copyright © 2004 Szabolcs Gyurko Copyright © 2003 Ian Molton <spyro@f2s.com> Copyright (C) 1998-9 Tim Waugh <tim@cyberelk.demon.co.uk> Copyright 1994-1998 Paul Mackerras. Copyright 1999 Paul Mackerras. Copyright 1994-2000 Paul Mackerras. Copyright (C) 2011 James Nuss <jamesnuss@nanometrics.ca> Copyright (C) 2005-2009 Rodolfo Giometti <giometti@linux.it> Copyright (C) 2009 Rodolfo Giometti <giometti@linux.it> Copyright (C) 2010 Intel Corporation <tony.luck@intel.com> Copyright (C) 2010 Marco Stornelli <marco.stornelli@gmail.com> Copyright (C) 2011 Kees Cook <keescook@chromium.org> Copyright (C) Intel 2011 Copyright (C) 2003 Russell King, All Rights Reserved. (C) 2007, SGI. Christoph Lameter <clameter@sgi.com> Copyright (C) 2001 Momchil Velikov Copyright (C) 2001 Christoph Hellwig Copyright (C) 2006 Nick Piggin Copyright (C) 2012 Konstantin Khlebnikov Copyright (C) 2009 emlix GmbH, Oskar Schirmer <oskar@scara.com> (C) 1999 Andrea Arcangeli <andrea@suse.de> (C) 2002 David Woodhouse <dwmw2@infradead.org> Copyright IBM Corporation, 2001 Copyright IBM Corporation, 2008 Copyright 2011 Wolfson Microelectronics plc Copyright (C) 2007, 2008 Wolfson Microelectronics PLC. Copyright (C) 2012 Marvell Technology Ltd. Copyright 2008 Wolfson Microelectronics PLC. Copyright (c) 2009 Nokia Corporation Copyright 2011 Heiko Stuebner <heiko@sntech.de> Copyright (C) 2008 Robert Jarzmik Copyright (C) 2009-2010 Marvell International Ltd. Copyright (C) 2009 Wolfram Sang, Pengutronix e.K. Copyright (C) 2002, 2003 - Tom Zanussi (zanussi@us.ibm.com), IBM Corp Copyright (C) 1999, 2000, 2001, 2002 - Karim Yaghmour (karim@opersys.com) Copyright(c) 2011 Texas Instruments, Inc. Copyright(c) 2011 Google, Inc. Copyright (C) 2012-2013 Canonical Ltd Copyright (c) 2006-2009 VMware, Inc., Palo Alto, CA., USA Copyright (C) 2009 Guiming Zhuo <gmzhuo@gmail.com> Copyright (C) 2011 Antonio Ospite <ospite@studenti.unina.it> Copyright (C) 2006 - 2007 Ivo van Doorn Copyright (C) 2007 Dmitry Torokhov Copyright 2009 Johannes Berg <johannes@sipsolutions.net> Copyright (c) 2014 Thomas Graf <tgraf@suug.ch> Copyright (c) 2008-2014 Patrick McHardy <kaber@trash.net> Copyright (c) 2014 Don Zickus Copyright 2005 MontaVista Software, Inc. Copyright (C) 2004 Thomas Gleixner (tglx@linutronix.de) Copyright 2002 Phil Karn, KA9Q (C) Copyright 2012 by Wolfram Sang, Pengutronix e.K. Copyright (c) 2007 Wind River Systems, Inc. Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. Copyright (C) 2012 Sven Schnelle <svens@stackframe.org> Copyright (C) 2006, 8D Technologies inc. Copyright (C) 1999 Hewlett-Packard Co. Copyright (C) 1999 Stephane Eranian <eranian@hpl.hp.com> Copyright (C) 2004-2006 Red Hat, Inc., Ingo Molnar <mingo@redhat.com> Copyright (C) 2006, Timesys Corp., Thomas Gleixner <tglx@timesys.com> Copyright 2005, Red Hat, Inc., Ingo Molnar Copyright (c) 2001 David Howells (dhowells@redhat.com). Copyright (C) 2012 Russell King Copyright (c) 2001,2002 Christer Weinigel <wingel@nano-system.com> Copyright (C) 2001 WireX Communications, Inc <chris@wirex.com> Copyright (C) 2001 Greg Kroah-Hartman <greg@kroah.com> Copyright (C) 2001 Networks Associates Technology, Inc <ssmalley@nai.com> Copyright (C) 2001 James Morris <jmorris@intercode.com.au> Copyright (C) 2001 Silicon Graphics, Inc. (Trust Technology Group) Copyright (C) 2005 Red Hat, Inc., James Morris <jmorris@redhat.com> Copyright (C) 2006 Trusted Computer Solutions, Inc. <dgoeddel@trustedcs.com> Copyright (C) 2006 IBM Corporation, Timothy R. Chavez <tinytim@us.ibm.com> Copyright (C) 2004 Red Hat, Inc., James Morris <jmorris@redhat.com> Copyright (c) 2008 Intel Corporation Copyright (C) 1992 by Theodore Ts'o. Copyright (C) 2004 Russell King Copyright (C) 2007 Christian Pellegrin Copyright (C) 1992, 1994 by Theodore Ts'o. Copyright (C) 2002 Shane Nay (shane@minirl.com) Copyright(c) 2009 Intel Corporation. All rights reserved. Copyright (C) 2011-2012 Guennadi Liakhovetski <g.liakhovetski@gmx.de> Copyright (C) 2009 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com> Copyright (C) 2009 Renesas Solutions, Inc. All rights reserved. Copyright (C) 2007 Freescale Semiconductor, Inc. All rights reserved. (C) SGI 2006, Christoph Lameter (C) 2007 SGI, Christoph Lameter Copyright 2006 Simtec Electronics Copyright (C) 1995, 1996 by Paal-Kr. Engstad and Volker Lendecke Copyright (C) 1997 by Volker Lendecke Copyright (C) 1995 by Paal-Kr. Engstad and Volker Lendecke Copyright (C) 2004-2008 SMSC Copyright (C) 2005-2008 ARM Copyright (C) 2001-2005 Stelian Pop <stelian@popies.net> Copyright (C) 2005 Narayanan R S <nars@kadamba.org> Copyright (C) 2001 Michael Ashley <m.ashley@unsw.edu.au> Copyright (C) 2001 Junichi Morita <jun1m@mars.dti.ne.jp> Copyright (C) 2000 Takaya Kinjo <t-kinjo@tc4.so-net.ne.jp> Copyright by Hannu Savolainen 1993-1997 Copyright (C) 2007 Jens Axboe <jens.axboe@oracle.com> Copyright (C) Fujitsu, 2012 Copyright (C) ST-Ericsson AB 2012 Copyright (C) 2009 STMicroelectronics Ltd Copyright (C) 2011 Wolfram Sang, Pengutronix e.K. Copyright (C) 2013 Renesas Solutions Corp. Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be) Copyright (C) 2002 David S. Miller (davem@redhat.com) Copyright (C) 2004, 2005 Paul Mundt <lethal@linux-sh.org> Copyright (C) 1998-2000 by Microgate Corporation Copyright (c) 2004 Randy Dunlap Copyright (c) 2004 Open Source Development Labs Copyright (c) 2001,2002 Patrick Mochel Copyright (c) 2004 Silicon Graphics, Inc. Copyright (c) 2007 SUSE Linux Products GmbH Copyright (c) 2007 Tejun Heo <teheo@suse.de> Copyright 2010 Canonical, Ltd. (c) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz> (c) 2000 Crutcher Dunnavant <crutcher+kernel@datastacks.com> (C) Balbir Singh, IBM Corp. 2006 (C) Jay Lan, SGI, 2006 Copyright (c) 2006-2009, Intel Corporation Copyright (c) 1998 Harald Koerfgen Copyright (c) 2005 James Simmons Copyright (c) 2006 Maciej W. Rozycki Copyright (c) 2010 Google, Inc (c) Copyright 1999-2001 Quicknet Technologies, Inc. Copyright (c) 2005 The University of Waikato, Hamilton, New Zealand. Copyright (c) 2005 Ian McDonald <iam4@cs.waikato.ac.nz> Copyright (c) 2005 Arnaldo Carvalho de Melo <acme@conectiva.com.br> Copyright (c) 2003 Nils-Erik Mattsson, Joacim Haggmark, Magnus Erixzon Copyright (C) 2008 Intel Corp Copyright (C) 2008 Zhang Rui <rui.zhang@intel.com> Copyright (C) 2008 Sujith Thomas <sujith.thomas@intel.com> Copyright (C) 2002 David Howells (dhowells@redhat.com) Copyright (C) 2006 Alex Dubov <oakad@yahoo.com> Copyright (C) 2012 Marvell Copyright (c) 2009 Alexander Clouter <alex@digriz.org.uk> Copyright (c) David L. Mills 1993 Copyright (c) 2003-2006, Ericsson AB Copyright (c) 2005, Wind River Systems Copyright (c) 2005-2007, Wind River Systems Copyright (C) 2009-2010 Texas Instruments Copyright (C) 2002, IBM Corp. Copyright (c) 1996-2000 Jonathan A. Buzzard (jonathan@buzzard.org.uk) Copyright (C) 2004,2007,2008 IBM Corporation Copyright (C) 2008-2009 Red Hat, Inc. All rights reserved. (C) Copyright 2008 Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> Copyright (C) Jay Lan SGI Copyright(C) 2005, Benedikt Spranger <b.spranger@linutronix.de> Copyright(C) 2006, Hans J. Koch <hjk@hansjkoch.de> Copyright(C) 2006, Greg Kroah-Hartman <greg@kroah.com> Copyright (C) by Hannu Savolainen 1993-1997 Copyright (C) IBM Corporation, 2008-2012 Copyright (C) 2011-2012 Red Hat, Inc., Peter Zijlstra <pzijlstr@redhat.com> Copyright (C) 2006 Intel Corporation Copyright (c) 2010 Daniel Mack <daniel@caiaq.de> Copyright (C) 2006 Thumtronics Pty Ltd. Copyright (C) 2006-2008 Barco N.V. Copyright (c) 2012 Bjørn Mork <bjorn@mork.no> Copyright (C) ST-Ericsson 2010-2012 Copyright (C) 2006-2008 David Brownell Copyright (C) 2013 by Texas Instruments Copyright (C) 2009 Wind River Systems, Inc. Copyright (c) 2001-2002 by David Brownell Copyright (C) 2012 Hauke Mehrtens <hauke@hauke-m.de> (C) Copyright 2002-2004 by David Brownell Copyright (c) 2008 Philipp Zabel <philipp.zabel@gmail.com> Copyright (C) 2010 Fabien Chouteau <fabien.chouteau@barco.com> Copyright (C) 2007 Craig W. Nadler Copyright (C) 2005 Dmitry Torokhov Copyright (C) 2012 Roland Stigge <stigge@antcom.de> Copyright (C) 2009 Renesas Solutions Corp. Copyright (c) 2009-2011, Code Aurora Forum. All rights reserved. Copyright (C) 2007 Google, Inc. Copyright (C) 2011-2012 by Texas Instruments Copyright (C) 2013 ST-Ericsson AB Copyright (C) 2002 NetChip Technology, Inc. (http://www.netchip.com) Copyright (C) 2003 David Brownell Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com Copyright (C) 2011 Renesas Solutions Corp. Copyright (C) 2005 by David Brownell Copyright (C) 1999 - 2012 Copyright Matthew Wilcox for Intel Corp, 2010 Copyright 2012 Tilera Corporation. All Rights Reserved. Copyright (C) 2007 Stefan Kopp, Gechingen, Germany Copyright (C) 2008 Novell, Inc. Copyright (C) 2008 Greg Kroah-Hartman <gregkh@suse.de> Copyright (C) 2000-2005 by David Brownell <dbrownell@users.sourceforge.net> Copyright (C) 2003-2005 David Hollis <dhollis@davehollis.com> Copyright (C) 2005-2006 Intel Corporation. Copyright (C) 2005-2006 Intel Corporation Copyright (C) 2000 Copyright (c) 2005 Pete Zaitcev <zaitcev@redhat.com> Copyright (c) 1999-2002 Matthew Dharm (mdharm-usb@one-eyed-alien.net) Copyright (c) 1999 Michael Gee (michael@linuxspecific.com) Copyright (C) 2015 Red Hat, Inc. Copyright (C) 2008 Cambridge Silicon Radio Ltd. Copyright (C) 2007 Cambridge Silicon Radio Ltd. Copyright (C) 2014 Red Hat, Inc. All Rights Reserved. Copyright (C) 2012 ARM Limited Copyright (C) 2012 Red Hat, Inc. All rights reserved. (C) Copyright 2005 Benjamin Herrenschmidt <benh@kernel.crashing.org> (C) Copyright 2007 Paulo R. Zanoni <przanoni@gmail.com> (C) Copyright 2007, 2009 Tiago Vignatti <vignatti@freedesktop.org> Copyright (c) 2010 Red Hat Inc. Copyright 1998-2009 VIA Technologies, Inc. All Rights Reserved. Copyright 2001-2008 S3 Graphics, Inc. All Rights Reserved. Copyright 2009-2010 Jonathan Corbet <corbet@lwn.net> Copyright 2010 Florian Tobias Schandinat <FlorianSchandinat@gmx.de> Copyright 2009 Jonathan Corbet <corbet@lwn.net> Copyright (C) 1999-2012 the contributors Copyright (c) 1994-97 Martin Buck <martin-2.buck@student.uni-ulm.de> Copyright (C) 2006 Luming Yu <luming.yu@intel.com> Copyright (C) Red Hat, Inc., 2009, 2010, 2011 Copyright (C) Amit Shah <amit.shah@redhat.com>, 2009, 2010, 2011 Copyright 2011, ARM Ltd. Based on Virtio PCI driver by Anthony Liguori, copyright IBM Corp. 2007 Copyright (C) 2006, 2007 Eugene Konev <ejka@openwrt.org> Copyright (C) 2012 VMware, Inc. All rights reserved. Copyright (C) 2007-2013 VMware, Inc. All rights reserved. Copyright IBM Corporation, 2013. Copyright 2009 Red Hat, Inc. (c) 1998 Martin Mares <mj@ucw.cz> Copyright (C) 2007 Ville Syrjala <syrjala@sci.fi> Copyright (c) 1997-2007 Jean Tourrilhes, All Rights Reserved. Copyright (C) 2013 Canonical Ltd. Copyright (C) 2001 by Andreas Gruenbacher <a.gruenbacher@computer.org> Copyright (c) 2001-2002 Silicon Graphics, Inc. All Rights Reserved. Copyright (c) 2004 Red Hat, Inc., James Morris <jmorris@redhat.com> Copyright 2007 Secret Lab Technologies Ltd. Copyright (C) 1998 Frederic Rible F1OAT (frible@teaser.fr) Copyright (C) 1995-1998 Jean-loup Gailly. Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler Copyright (C) 1995--2003 Geert Uytterhoeven Copyright (C) 2014 Dan Streetman Copyright (C) 2011 Nitin Gupta Copyright (C) 2012, 2013 Minchan Kim Copyright (C) 1991,1992,1995-2002,2007,2009 Free Software Foundation, Inc. Copyright (C) 1998-2000, 2004, 2005,2007, 2008 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1999, 2000, 2002-2004, 2005, 2007, 2009 Copyright (C) 1991-1993, 1995-1999, 2001, 2002, 2004, 2006, 2009 Copyright (C) 1991, 1996, 1997 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1996,1997,1998,1999,2000,2002,2006,2009 Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. Copyright (c) 2006 Mellanox Technologies Ltd. All rights reserved. Copyright 2007, 2008 Siemens AG Copyright (c) 2010,2011 Code Aurora Forum. All rights reserved. Copyright (c) 2011,2012 Intel Corp. Copyright (C) 2000-2001 Qualcomm Incorporated Copyright (c) 2000-2001, 2010, Code Aurora Forum. All rights reserved. Copyright (C) 2011-2012 Intel Corporation Copyright (C) 2009-2010 Gustavo F. Padovan <gustavo@padovan.org> Copyright (C) 2010 Google Inc. Copyright (C) 2010 Nokia Corporation Copyright (C) 2002 Maxim Krasnyansky <maxk@qualcomm.com> Copyright (C) 2002 Marcel Holtmann <marcel@holtmann.org> Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). Copyright(c) 1999 - 2004 Intel Corporation. All rights reserved. Copyright (c) 2013 Nikolay Aleksandrov <nikolay@redhat.com> Copyright(c) 2013 Intel Corporation. Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net> Copyright 2013-2014 Intel Mobile Communications GmbH (c) Copyright Hewlett-Packard Development Company, L.P., 2006 Copyright (C) 2011-2012 Kathleen Nichols <nichols@pollere.com> Copyright (C) 2011-2012 Van Jacobson <van@pollere.net> Copyright (C) 2012 Michael D. Taht <dave.taht@bufferbloat.net> Copyright (C) 2012 Eric Dumazet <edumazet@google.com> Copyright (c) 2010, Intel Corporation. (c) 1995-1998 E.M. Serrat emserrat@geocities.com Copyright (c) 2008-2009 Marvell Semiconductor Copyright (C) 1997, 1999, 2001, 2008 Free Software Foundation, Inc. Copyright (C) 2008-2009 Avionic Design GmbH Copyright (c) 2003, 2004 David Young. All rights reserved. Copyright (C) 2007, 2008 Siemens AG Copyright (C) 2007-2012 Siemens AG Copyright (C) 1997,98,99,2000,2001 Free Software Foundation, Inc. Copyright (C) 1997,1999,2001,2006,2009 Free Software Foundation, Inc. Copyright (C) 1997, 1998 Free Software Foundation, Inc. Copyright (C) 1997 Martin Mares Copyright (c) 1998-2000 Dag Brattli, All Rights Reserved. Copyright (c) 2000-2002 Jean Tourrilhes <jt@hpl.hp.com> Copyright (c) 1999-2000 Dag Brattli, All Rights Reserved. Copyright (c) 1998 Thomas Davis, <ratbert@radiks.net>, Copyright (c) 1997-1999 Dag Brattli <dagb@cs.uit.no>, Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, All Rights Reserved. Copyright (c) 1998-1999 Dag Brattli, All Rights Reserved. Copyright (c) 1998 Dag Brattli <dagb@cs.uit.no>, All Rights Reserved. Copyright (c) 1998-1999 Dag Brattli <dagb@cs.uit.no>, Copyright (c) 1997 Dag Brattli <dagb@cs.uit.no>, All Rights Reserved. Copyright (c) 1998 Dag Brattli, All Rights Reserved. Copyright (c) 1997, 1999 Dag Brattli <dagb@cs.uit.no>, Copyright (C) 1998-1999, Aage Kvalnes <aage@cs.uit.no> Copyright (c) 1998, Dag Brattli Copyright (c) 1997, 1998-1999 Dag Brattli <dagb@cs.uit.no>, Copyright (c) 1998-2000 Dag Brattli <dagb@cs.uit.no>, Copyright 2006 IBM Corporation Copyright 2000, 2006 IBM Corporation Copyright (c) 2001-2007 Jean Tourrilhes, All Rights Reserved. Copyright (c) 2008, John W. Linville <linville@tuxdriver.com> Copyright (c) 2002-2003, Jouni Malinen <j@w1.fi> Copyright (c) 2004, Intel Corporation Copyright (c) 1997 by Procom Technology, Inc. 2001-2003 by Arnaldo Carvalho de Melo <acme@conectiva.com.br> 2001, 2002 by Arnaldo Carvalho de Melo <acme@conectiva.com.br> Copyright (c) 1997 by Procom Technology,Inc. 2001 by Arnaldo Carvalho de Melo <acme@conectiva.com.br> Copyright 2002-2005, Devicescape Software, Inc. Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net> Copyright 2013-2014 Intel Mobile Communications GmbH Copyright (C)2003-2006 Helsinki University of Technology Copyright (C)2003-2006 USAGI/WIDE Project Copyright (c) 2014 Nicira, Inc. (C) 2008 Krzysztof Piotr Oledzki <ole@ans.pl> Copyright (C)2003,2004 USAGI/WIDE Project (c) Copyright Hewlett-Packard Development Company, L.P., 2006, 2008 Copyright (C) 2008 Nokia Corporation. Copyright (c) 2008 Oracle. All rights reserved. Copyright 2008-2009 Luis R. Rodriguez <mcgrof@qca.qualcomm.com> Copyright (c) 1989 Regents of the University of California. Copyright (C) 2007-2008 Intel Corporation <linux-wimax@intel.com> Copyright (C) 1996-2002, 2003, 2004, 2009 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc. Copyright (C) 1991-1997,2000,2006,2009 Free Software Foundation, Inc. Copyright (C) 1997, 2005 Free Software Foundation, Inc. Copyright (C) 1997, 1999, 2003 Free Software Foundation, Inc. Copyright (C) 1991-2001, 2003, 2004, 2006, 2007, 2008 Copyright (C) 1991,92,93,95,96,97,98,99,2000,2009 Free Software Copyright (C) 1991-1997, 2001, 2003, 2006 Free Software Foundation, Inc. Copyright (C) 1991, 92, 93, 95, 96, 97, 99 Free Software Foundation, Inc. Copyright (C) 1991-1993,1995-1997,2004,2009 Free Software Foundation, Inc. Copyright (C) 1982, 1986 Regents of the University of California. Copyright (C) 1996, 1997, 1999, 2003, 2004 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1999, 2008 Free Software Foundation, Inc. Copyright (C) 1988-1994,1996-1999,2003,2004,2005,2009 Copyright (C) 1991-1993,1995-2001,2006,2009 Copyright (c) 2006-2010. QLogic Corporation. All rights reserved. Copyright (c) 2003-2006, PathScale, Inc. All rights reserved. Copyright (c) 1999-2006 Ralf S. Engelschall <rse@engelschall.com> Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Copyright (C) 1985,1989-93,1995-98,2000,2001,2002,2003,2005,2006,2008 Copyright (C) 1996, 1997, 1998, 1999, 2004, 2008 Copyright (c) 1985, 1988, 1993 Copyright (c) 1993 by Digital Equipment Corporation. Copyright (c) 1983, 1987, 1989 Copyright (C) 1984, Sun Microsystems, Inc. Copyright (C) 1986, Sun Microsystems, Inc. Copyright (c) 1990, 1991 Sun Microsystems, Inc. Copyright (c) 1986 by Sun Microsystems, Inc. Copyright (c) 2000 Dug Song <dugsong@UMICH.EDU>. Copyright (C) 2002, 2007 Red Hat, Inc. All Rights Reserved. Copyright (C) 2002 Red Hat, Inc. All Rights Reserved. Copyright (C) 1996,1997,1999,2001-2004,2007 Free Software Foundation, Inc. Copyright(c) 2007 Intel Corporation. All rights reserved. Copyright 2008 Cisco Systems, Inc. All rights reserved. Copyright(c) 2011 Intel Corporation. All rights reserved. Copyright (c) 2011-2012 Intel Corporation. All rights reserved. Copyright(c) 2008 Intel Corporation. All rights reserved. Copyright (C) 2005 Dmitry Yusupov Copyright (C) 2005 Alex Aizman Copyright (c) 2008-2009 Cisco Systems, Inc. All rights reserved. Copyright (c) 2007-2008 Intel Corporation. All rights reserved. Copyright (C) 2006 Red Hat, Inc. All rights reserved. Copyright (C) 2004 - 2006 Mike Christie Copyright (C) 2004 - 2005 Dmitry Yusupov Copyright (C) 2004 - 2005 Alex Aizman Copyright (C) 2008 Mike Christie Copyright (C) 2008 Red Hat, Inc. All rights reserved. Copyright (C) 2005 Adaptec, Inc. All rights reserved. Copyright (C) 2005 Luben Tuikov <lubentuikov@adaptec.com> Copyright (C) 2008 Panasas Inc. All rights reserved. Copyright (C) 2011 Copyright (C) 2006 IBM Corporation Copyright 1993, 1994 Drew Eckhardt Copyright (C) 2009 James Smart, Emulex Corporation Copyright (C) 2005 FUJITA Tomonori <tomof@acm.org> Copyright (C) 2005 Mike Christie <michaelc@cs.wisc.edu> Copyright (c) 2003 Silicon Graphics, Inc. All rights reserved. Copyright (C) 2004-2007 James Smart, Emulex Corporation Copyright (C) IBM Corporation, 2004 Copyright (C) Mike Christie, 2004 - 2006 Copyright (C) Dmitry Yusupov, 2004 - 2005 Copyright (C) Alex Aizman, 2004 - 2005 Copyright (C) 1992 Lawrence Foard Copyright (C) 1998 - 2014 Douglas Gilbert Copyright (c) 2005 Cisco Systems. All rights reserved. Copyright (C) 1991-1999,2001,2002,2007,2009 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1998, 1999, 2003 Free Software Foundation, Inc. Copyright (C) 1991-2003, 2004, 2007, 2009 Free Software Foundation, Inc. Copyright (C) 2000, 2003, 2004, 2009 Free Software Foundation, Inc. Copyright (C) 1997,1998,1999,2000,2001,2006 Free Software Foundation, Inc. Copyright (C) 1991, 1994-2007, 2008, 2009 Free Software Foundation, Inc. Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc. Copyright (C) 1991-2007, 2009 Free Software Foundation, Inc. Copyright (C) 1991-1993,1995-2004,2007,2009 Free Software Foundation, Inc. Copyright (C) 1991,92,96,97,99,2000,2001,2009 Free Software Foundation, Inc. Copyright (C) 1998, 1999, 2000, 2002, 2003 Free Software Foundation, Inc. Copyright (c) 1987, 1993 Copyright (C) 1992, 1996 Free Software Foundation, Inc. Copyright (C) 1991,92,93,94,96,97,98,99, 2003 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2007 Copyright (C) 1999,2001,2002,2003 Free Software Foundation, Inc. Copyright (C) 1991-2003,2006,2009 Free Software Foundation, Inc. Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. Copyright 2011 Intel Corporation Copyright (c) 2007 Dave Airlie <airlied@linux.ie> Copyright (c) 2007 Jakob Bornecrantz <wallbraker@gmail.com> Copyright (c) 2008 Red Hat Inc. Copyright (c) 2007-2008 Tungsten Graphics, Inc., Cedar Park, TX., USA Copyright (c) 2007-2008 Intel Corporation Copyright 2002 Tungsten Graphics, Inc., Cedar Park, Texas. Copyright (c) 2011 Samsung Electronics Co., Ltd. Copyright 2003 Tungsten Graphics, Inc., Cedar Park, Texas. Copyright 2005 Stephane Marchesin. Copyright 2013 Red Hat Copyright 2000 Precision Insight, Inc., Cedar Park, Texas. Copyright 2000 VA Linux Systems, Inc., Fremont, California. Copyright 2004 Felix Kuehling Copyright 2005 Eric Anholt Copyright (c) 2012-2013, NVIDIA CORPORATION. All rights reserved. Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved. Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved. Copyright © 2009 VMware, Inc., Palo Alto, CA., USA Copyright (C) 2007 Oracle. All rights reserved. Copyright (c) 2011 Volkswagen Group Electronic Research Copyright (c) 2008-2011, Intel Corporation. Copyright (C) 2004 - 2009 Red Hat, Inc. All rights reserved. Copyright (C) 2005-2007 Kristian Hoegsberg <krh@bitplanet.net> Copyright (C) 2001-2007 Miklos Szeredi. All rights reserved. (C) Copyright IBM Corp. 2013 Copyright (c) 2013 Dmitry Kasatkin <d.kasatkin@samsung.com> Copyright (c) 2010 Herbert Xu <herbert@gondor.apana.org.au> Copyright © 2001-2007 Red Hat, Inc. Copyright © 2004-2010 David Woodhouse <dwmw2@infradead.org> Copyright 2014 Advanced Micro Devices, Inc. Copyright(c) 2003 - 2012 Intel Corporation. All rights reserved. Copyright (C) 2003-2011 Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> Copyright (c) 2015 6WIND S.A. Copyright (C) 2008,2009 Intel Corporation Copyright (c) 2012 Red Hat, Inc. Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net> Copyright 2008 Michael Buesch <m@bues.ch> Copyright (C) 2009 Texas Instruments, Inc. Copyright (c) 2007-2013 Nicira, Inc. Copyright 1999-2002 Paul Mackerras. Copyright (c) 2002 Intel Corp. Copyright (c) 2005, 2010-2011, Wind River Systems Copyright (c) 2005-2007, 2010-2011, Wind River Systems Copyright (c) 2012 David Herrmann Copyright (C) 2009 Laurent Pinchart <laurent.pinchart@skynet.be> Copyright (C) 2012 Nokia Corporation Copyright (C) 2012 Hans Verkuil <hans.verkuil@cisco.com> Copyright Rusty Russell IBM Corporation 2007. / Copyright (C) 2014 Red Hat, Inc. Copyright (c) 2014 Qualcomm Atheros, Inc. Copyright 2014 IBM Corp. Copyright(c) 2015 Intel Corporation. Copyright (C) 2006 James Smart, Emulex Corporation Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1991-2006, 2007, 2008, 2009 Free Software Foundation, Inc. Copyright (C) 1991, 92, 96, 97, 98, 99, 2004 Free Software Foundation, Inc. Copyright (C) 1993, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. Copyright (C) 1997, 1998, 1999, 2003 Free Software Foundation, Inc. Copyright (C) 1995-2008, 2009 Free Software Foundation, Inc. Copyright (C) 1996-2002,2005,2007,2008,2009 Free Software Foundation, Inc. Copyright (C) 1991, 92, 1996-1999, 2001, 2003 Free Software Foundation, Inc. Copyright (c) 2006, Ian Campbell, XenSource Ltd. Copyright (c) 2003-2004, K A Fraser. Copyright (c) 2006, Keir Fraser <keir@xensource.com> Copyright (c) 2004, K A Fraser Copyright (c) 2003-2004, Keir Fraser Copyright (c) 2005, Keir Fraser Copyright (C) 2005 Anthony Liguori <aliguori@us.ibm.com> Copyright (C) 2006 Red Hat, Inc., Markus Armbruster <armbru@redhat.com> Copyright (C) 2005 Rusty Russell IBM Corporation Copyright (c) 2005, Keir Fraser <keir@xensource.com> Copyright (c) 2002-2006, K Fraser Copyright (c) 2005, Nguyen Anh Quynh <aquynh@gmail.com> Copyright (C) 1997,2000,2002,2009 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Copyright 2008 Bryan Ischo <bryan@ischo.com> Copyright (C) 1999-2003, 2005, 2007, 2010, 2012 Free Software Foundation, Inc. Copyright (C) 2007, 2008, 2012 Mark Adler Copyright (C) 2003, 2005, 2008, 2010, 2012 Mark Adler Copyright (C) 2003, 2012 Mark Adler, all rights reserved Copyright (C) 2004, 2005, 2012 Mark Adler, all rights reserved Copyright (C) 2004, 2008, 2012, 2016 Mark Adler, all rights reserved Copyright (C) 2004, 2008, 2012 Mark Adler, all rights reserved Copyright (C) 2005, 2012 Mark Adler Copyright (C) 1995-2008 Mark Adler Copyright (C) 2003 Mark Adler Copyright (C) 1995-2003 Mark Adler Copyright (C) 1995-2017 Mark Adler Copyright (C) 1995-2003 Jean-loup Gailly and Mark Adler. Copyright (C) 1998 by Bob Dellaca. Copyright (C) 2003 by Cosmin Truta. Copyright (C) 1995-2003 by Jean-loup Gailly. Copyright (C) 1998,1999,2000 by Jacques Nomssi Nzali. Copyright (C) 2002-2013 Mark Adler Copyright (C) 2002-2013 Mark Adler, all rights reserved Copyright (C) 1995-2011, 2016 Mark Adler Copyright (C) 1995-2005, 2014, 2016 Jean-loup Gailly, Mark Adler Copyright (C) 1995-2006, 2010, 2011, 2012, 2016 Mark Adler Copyright (C) 1995-2016 Jean-loup Gailly Copyright (C) 2004, 2010 Mark Adler Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler Copyright (C) 2004-2017 Mark Adler Copyright (C) 1995-2016 Mark Adler Copyright (C) 1995-2003, 2010 Mark Adler Copyright (C) 1995-2005, 2010 Mark Adler (C) 1995-2017 Jean-loup Gailly and Mark Adler Copyright (C) 1995-2017 Jean-loup Gailly Copyright (C) 1995-2003, 2010, 2014, 2016 Jean-loup Gailly, Mark Adler Copyright (c) 1990-2000 Info-ZIP. All rights reserved. Copyright (C) 1998 - 2010 Gilles Vollant, Even Rouault, Mathias Svensson Copyright (C) 2003 Chris Anderson <christop@charm.net> Copyright (C) 1995-2006, 2011, 2016 Jean-loup Gailly Copyright (C) 2011, 2016 Mark Adler Copyright (C) 1995-2006, 2010, 2011, 2016 Jean-loup Gailly Copyright (C) 2003, 2012, 2013 Mark Adler Copyright Henrik Ravn 2004 Copyright (c) Henrik Ravn 2004 Copyright (c) 2014 Alexander Lamaison <alexander.lamaison@gmail.com> Copyright (c) 2014, 2015 Alexander Lamaison <alexander.lamaison@gmail.com> Copyright (c) 2004-2007 Sara Golemon <sarag@libssh2.org> Copyright (c) 2005,2006 Mikhail Gusarov <dottedmag@dottedmag.net> Copyright (c) 2006-2007 The Written Word, Inc. Copyright (c) 2007 Eli Fant <elifantu@mail.ru> Copyright (c) 2009-2014 Daniel Stenberg Copyright (C) 2008, 2009 Simon Josefsson Copyright (c) 2004-2009, Sara Golemon <sarag@libssh2.org> Copyright (c) 2010 Simon Josefsson <simon@josefsson.org> Copyright (c) 2004-2006, Sara Golemon <sarag@libssh2.org> Copyright (c) 2004-2008, Sara Golemon <sarag@libssh2.org> Copyright (C) 2015 Patrick Monnerat, D+H <patrick.monnerat@dh.com> Copyright (c) 2014, 2015 Alexander Lamaison <alexander.lamaison@gmail.com> Copyright (C) 2007 The Written Word, Inc. Copyright (C) 2008, 2010 Simon Josefsson Copyright (c) 2009 by Daiki Ueno Copyright (C) 2010-2014 by Daniel Stenberg Copyright (c) 2005 Mikhail Gusarov <dottedmag@dottedmag.net> Copyright (c) 2008-2014 by Daniel Stenberg Copyright (c) 2008-2010 by Daniel Stenberg Copyright (c) 2004-2007, Sara Golemon <sarag@libssh2.org> Copyright (c) 2010-2014, Daniel Stenberg <daniel@haxx.se> Copyright (C) 2009-2010 by Daniel Stenberg Copyright (c) 2009, 2010 Simon Josefsson <simon@josefsson.org> Copyright (C) 2009, 2010 Simon Josefsson Copyright (C) 2006, 2007 The Written Word, Inc. All rights reserved. Copyright (C) 2010 Daniel Stenberg Copyright (c) 2010 Lars Nordin <Lars.Nordin@SDlabs.se> Copyright (C) 2010 Simon Josefsson <simon@josefsson.org> Copyright (c) 2009-2014 by Daniel Stenberg Copyright (C) 2010 Simon Josefsson Copyright (c) 2010, Daniel Stenberg <daniel@haxx.se> Copyright (C) 2008, 2009, Simon Josefsson Copyright (C) 2006, 2007, The Written Word, Inc. Copyright (C) 2008, 2009, 2010 Simon Josefsson Copyright (c) 2004-2008, 2010, Sara Golemon <sarag@libssh2.org> Copyright (c) 2010 Simon Josefsson Copyright (c) 2010 Simon Josefsson Copyright (c) 2005,2006 Mikhail Gusarov Copyright (C) 2010 by Daniel Stenberg Copyright (C) 2008, Simon Josefsson Copyright (c) 2010-2014 by Daniel Stenberg Copyright (c) 2009-2010 by Daniel Stenberg Copyright (c) 2009-2015 by Daniel Stenberg Copyright (C) 2010 - 2012 by Daniel Stenberg Copyright (C) 2007 The Written Word, Inc. All rights reserved. Copyright (C) 2009 Daniel Stenberg. All rights reserved. Copyright (C) 2013-2015 Marc Hoersken <info@marc-hoersken.de> Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2013 - 2018, Linus Nielsen Feltzing <linus@haxx.se> Copyright (C) 2010 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2013 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2012, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (c) 1995, 1996, 1997, 1998, 1999 Kungliga Tekniska H 鐷 skolan Copyright (c) 2004 - 2017 Daniel Stenberg Copyright (C) 1998 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2011, 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2012 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2012 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2014 - 2017, Steve Holme, <steveholme@hotmail.com>. Copyright (C) 2015, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (c) 2003-2016 CORE Security Technologies Copyright (C) 2010, Mandy Wu, <mandy.wu@intel.com> Copyright (C) 2011 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2012, 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2011, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2016, Vijay Panghal, <vpanghal@maginatics.com>, et al. Copyright (C) 2006-2015 wolfSSL Inc. Copyright 2013, John Malmberg Copyright (C) 1998 - 2018, Florin Petriuc, <petriuc.florin@gmail.com> Copyright (C) 1998 - 2010, Daniel Stenberg, <daniel@haxx.se>, et al. (c) CopyRight EdelWeb for EdelKey and OpenEvidence, 2000-2004, 2009 Copyright (C) 2017-2018, Yiming Jing, <jingyiming@baidu.com> Copyright (C) 2017 - 2018, Yiming Jing, <jingyiming@baidu.com> Copyright (C) 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2017-2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2015, 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2010, Hoi-Ho Chan, <hoiho.chan@gmail.com> Copyright (C) 2012 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2010 - 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com> Copyright (C) 1998 - 2011, 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1997 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2001 Eric Lavigne Copyright (C) 2013 - 2018, Linus Nielsen Feltzing, <linus@haxx.se> Copyright (c) 2003, 2017 Simtec Electronics Copyright (C) 2009, 2011, Markus Moeller, <markusmoeller@compuserve.com> Copyright (C) 2012 - 2016, Marc Hoersken, <info@marc-hoersken.de> Copyright (C) 2012, Mark Salisbury, <mark.salisbury@hp.com> Copyright (C) 2013, Linus Nielsen Feltzing, <linus@haxx.se> Copyright (C) 2013 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2015 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2013 - 2014, Linus Nielsen Feltzing, <linus@haxx.se> Copyright (c) 2003 The OpenEvidence Project. All rights reserved. Copyright (c) 2000 David Odin (aka DindinX) for MandrakeSoft Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2016 - 2017, Steve Holme, <steveholme@hotmail.com>. Copyright (C) 2016, Steve Holme, <steveholme@hotmail.com>. Copyright (C) 1998 - 2009, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2014, Vijay Panghal, <vpanghal@maginatics.com>, et al. Copyright (C) 2015, Steve Holme, <steveholme@hotmail.com>. Copyright (C) 1998 - 2013, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2011 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2018 Jeroen Ooms <jeroenooms@gmail.com> Copyright (C) 2014, Bill Nagel <wnagel@tycoint.com>, Exacq Technologies Copyright (C) 2016-2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (c) 2011, Jim Hollinger Copyright 2009, John Malmberg Copyright (C) 2009 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2010, 2011, Hoi-Ho Chan, <hoiho.chan@gmail.com> Copyright (C) 2012, Marc Hoersken, <info@marc-hoersken.de>, et al. Copyright (C) 2010, Howard Chu, <hyc@openldap.org> Copyright (C) 2009, Markus Moeller, <markusmoeller@compuserve.com> Copyright (C) 2014 - 2016, Steve Holme, <steveholme@hotmail.com>. Copyright (C) 2015 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2017 - 2018 Red Hat, Inc. Copyright (c) 1996 by Internet Software Consortium. Copyright (c) 1983 Regents of the University of California. Copyright (C) 2001 Michael Teo <michaelteo@bigfoot.com> Copyright (c) 2003-2016 CORE Security Technologies: Copyright (C) 2013-2015, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2013-2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1996-2015 Free Software Foundation, Inc. Copyright (C) 2009 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1998 - 2013, 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2015 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2012 - 2014, Linus Nielsen Feltzing, <linus@haxx.se> Copyright (C) 2012 - 2016, Linus Nielsen Feltzing, <linus@haxx.se> Copyright (C) 2013 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2013, Linus Nielsen Feltzing <linus@haxx.se> Copyright (C) 1999 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2009 - 2014, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (c) 2003-2016 CORE Security Technologies) Copyright (c) 1996 - 2019, Daniel Stenberg, <daniel@haxx.se>, and many Copyright (C) 2012 - 2014, Nick Zitzmann, <nickzman@gmail.com>. Copyright (C) 2012 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2012 - 2017, Nick Zitzmann, <nickzman@gmail.com>. Copyright (C) 2010, Howard Chu, <hyc@highlandsun.com> Copyright (C) 2012 - 2015, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2014, Steve Holme, <steveholme@hotmail.com>. Copyright (C) 2015 - 2016, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 2004 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright 2012, John Malmberg Copyright (c) 1998, 1999, 2017 Kungliga Tekniska H 鐷 skolan Copyright (C) 2001 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. Copyright (C) 1996-2001 Internet Software Consortium. Copyright (C) 1998 - 2010, Florin Petriuc, <petriuc.florin@gmail.com> Copyright (c) 1996 - 2003, Daniel Stenberg, <daniel@haxx.se>. Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved. Copyright (C) 2001 Bjorn Reese <breese@users.sourceforge.net> Copyright (C) 2003-2012 Daniel Veillard. Copyright (C) 2001 Bjorn Reese and Daniel Stenberg. Copyright (c) 2010-2017 Christopher Swenson. Copyright (c) 2012 Vojtech Fried. Copyright (c) 2012 Google Inc. All Rights Reserved. Copyright (C) 2000 Gary Pennington and Daniel Veillard. Copyright (C) 2000 Bjorn Reese and Daniel Stenberg. Copyright (C) 1998 Bjorn Reese and Daniel Stenberg. Copyright (c) 1999-2010 The OpenSSL Project. All rights reserved. Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved. Copyright (c) 2007 The OpenSSL Project. All rights reserved. Copyright (c) 2014 The OpenSSL Project. All rights reserved. Copyright (c) 1999-2011 The OpenSSL Project. All rights reserved. Copyright (c) 2004, Richard Levitte <richard@levitte.org> Copyright (c) 1999-2007 The OpenSSL Project. All rights reserved. Copyright (c) 2011 The OpenSSL Project. All rights reserved. Copyright (c) 2003 The OpenSSL Project. All rights reserved. Copyright (c) 1999-2014 The OpenSSL Project. All rights reserved. Copyright (c) 1999-2003 The OpenSSL Project. All rights reserved. Copyright (c) 1999-2002 The OpenSSL Project. All rights reserved. Copyright (c) 1999-2008 The OpenSSL Project. All rights reserved. Copyright (c) 2004 Kungliga Tekniska H?gskolan Copyright (c) 2002-2006 The OpenSSL Project. All rights reserved. Copyright (c) 2001-2002 The OpenSSL Project. All rights reserved. (C) COPYRIGHT International Business Machines Corp. 2001 Copyright (c) 1999-2001 The OpenSSL Project. All rights reserved. Copyright (c) 1999-2013 The OpenSSL Project. All rights reserved. Copyright (c) 2013 The OpenSSL Project. All rights reserved. Copyright (c) 1999-2015 The OpenSSL Project. All rights reserved. Copyright (c) 2001-2005 The OpenSSL Project. All rights reserved. Copyright (c) 2005-2006 Cryptocom LTD Copyright (c) 2006 Cryptocom LTD Copyright (c) 2005 The OpenSSL Project. All rights reserved. Copyright (c) 1998-2003 The OpenSSL Project. All rights reserved. Copyright (c) 2004 The OpenSSL Project. All rights reserved (c) Copyright 1999 Bodo Moeller. All rights reserved. Copyright (c) 2009 The OpenSSL Project. All rights reserved. Copyright 2006 NTT (Nippon Telegraph and Telephone Corporation) . Copyright (c) 1999-2016 The OpenSSL Project. All rights reserved. Copyright (c) 1997, Eric Young Copyright (c) 2000-2001 The OpenSSL Project. All rights reserved. Copyright (c) 2002 Bob Beck <beck@openbsd.org> Copyright (c) 2002 Theo de Raadt Copyright (c) 2002 Markus Friedl Copyright 2000 Copyright@2001 Baltimore Technologies Ltd. Copyright (c) 2001-2004 The OpenSSL Project. All rights reserved. Copyright (c) 1998-2015 The OpenSSL Project. All rights reserved. Copyright (c) 2002 The OpenSSL Project. All rights reserved. Copyright (c) 2000-2004 The OpenSSL Project. All rights reserved. Copyright (c) 2000,2005 The OpenSSL Project. All rights reserved. Copyright 2011 Google Inc. Copyright 2014 Intel Corporation Copyright (c) 2000-2003 The OpenSSL Project. All rights reserved. Copyright (c) 1998-2010 The OpenSSL Project. All rights reserved. Copyright (c) 1998-1999 The OpenSSL Project. All rights reserved. Copyright Patrick Powell 1995 Copyright (c) 1998-2017 The OpenSSL Project. All rights reserved. Copyright (c) 1998-2015 The OpenSSL Project Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson Copyright (c) 1998-2004 The OpenSSL Project. All rights reserved. Copyright 2017 The OpenSSL Project Authors. All Rights Reserved. Copyright (c) 2012 The OpenSSL Project. All rights reserved. Copyright (c) 2016 The OpenSSL Project. All rights reserved. Copyright (c) 1998-2009 The OpenSSL Project. All rights reserved. Copyright (c) 2004-2011 The OpenSSL Project. All rights reserved. Copyright (c) 1999-2009 The OpenSSL Project. All rights reserved. Copyright (c) 2001-2008 The OpenSSL Project. All rights reserved. Copyright (c) 2014, Google Inc. Copyright (c) 2001-2011 The OpenSSL Project. All rights reserved. Copyright (c) 2011-2013 The OpenSSL Project. All rights reserved. Copyright (c) 2006,2007 The OpenSSL Project. All rights reserved. Copyright (c) 2012, Intel Corporation Copyright (c) 1999-2017 The OpenSSL Project. All rights reserved. Copyright 2016 VMS Software, Inc. All Rights Reserved. Copyright (c) 1998-2011 The OpenSSL Project. All rights reserved. Copyright (C) 2001-2002, 2005-2007, 2009-2017 Free Software Foundation, Inc. Copyright (C) 2001-2002, 2006-2017 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2011-2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2004, 2006-2007, 2010, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2002, 2012 Free Software Foundation, Inc. Copyright (C) 2009-2017 Free Software Foundation, Inc. Copyright (C) 2010-2017 Free Software Foundation, Inc. Copyright (C) 2000-2009, 2011-2012, 2016-2017 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2003, 2005, 2008, 2012 Free Software Foundation, Inc. Copyright (C) 1999-2003, 2005, 2008, 2012 Free Software Foundation, Inc. Copyright (C) 2000-2002, 2005-2006, 2008-2009, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2003, 2005, 2011-2012, 2016 Free Software Foundation, Inc. Copyright (C) 1999-2008, 2011, 2016 Free Software Foundation, Inc. Copyright (C) 2003-2006, 2008-2012 Free Software Foundation, Inc. Copyright (C) 1995, 1999, 2001-2007 Free Software Foundation, Inc. Copyright (C) 2011-2017 Free Software Foundation, Inc. Copyright (C) 2001, 2003-2007, 2009-2017 Free Software Foundation, Inc. Copyright (C) 2001, 2003-2004, 2007, 2009-2017 Free Software Foundation,Inc. Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2017 Free Software Copyright (C) 2001, 2003, 2005, 2008-2017 Free Software Foundation, Inc. Copyright (C) 2000-2003, 2006, 2008-2017 Free Software Foundation, Inc. Copyright (C) 1996-2017 Free Software Foundation, Inc. Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2017 Free Software Copyright (C) 1998, 2001, 2003-2006, 2009-2017 Free Software Foundation, Copyright (C) 2000-2001, 2004-2006, 2009-2017 Free Software Foundation, Inc. Copyright (C) 2008-2017 Free Software Foundation, Inc. Copyright (C) 1990-1998, 2000-2007, 2009-2017 Free Software Foundation, Inc. Copyright (C) 1995-1997, 2003, 2006, 2008-2017 Free Software Foundation, Copyright (C) 2006-2017 Free Software Foundation, Inc. Copyright (C) 2016-2017 Free Software Foundation, Inc. Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2017 Free Software Copyright (C) 2001-2003, 2005-2007, 2009-2017 Free Software Foundation, Inc. Copyright (C) 2001-2017 Free Software Foundation, Inc. Copyright 2016-2017 Free Software Foundation, Inc. Copyright (C) 2000-2003, 2009-2017 Free Software Foundation, Inc. Copyright (C) 1997-2006, 2008-2017 Free Software Foundation, Inc. Copyright (C) 1997-1998, 2006-2007, 2009-2017 Free Software Foundation, Inc. Copyright (C) 2003, 2006-2007, 2009-2017 Free Software Foundation, Inc. Copyright (C) 2003-2007, 2009-2017 Free Software Foundation, Inc. Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2017 Free Software Copyright (C) 2001-2003, 2005-2017 Free Software Foundation, Inc. Copyright (C) 2001-2004, 2006, 2009-2017 Free Software Foundation, Inc. Copyright (C) 2003-2017 Free Software Foundation, Inc. Copyright (C) 2002-2003, 2005-2006, 2009-2017 Free Software Foundation, Inc. Copyright (C) 2003-2006, 2008-2017 Free Software Foundation, Inc. Copyright (C) 2003, 2005, 2008-2017 Free Software Foundation, Inc. Copyright (C) 2003, 2005-2007, 2009-2017 Free Software Foundation, Inc. Copyright (C) 1993-1994, 1998, 2002-2006, 2009-2017 Free Software Copyright (C) 2002, 2006, 2009-2017 Free Software Foundation, Inc. Copyright (C) 1992, 1995-2003, 2005-2017 Free Software Foundation, Inc. Copyright (C) 2001-2003, 2006-2017 Free Software Foundation, Inc. Copyright (C) 2001-2002, 2004-2017 Free Software Foundation, Inc. Copyright (C) 2004, 2007-2017 Free Software Foundation, Inc. Copyright (C) 1995, 2001-2004, 2006-2017 Free Software Foundation, Inc. Copyright (C) 2001-2002, 2007, 2009-2017 Free Software Foundation, Inc. Copyright (C) 2007-2017 Free Software Foundation, Inc. Copyright (C) 1995-1996, 2001-2017 Free Software Foundation, Inc. Copyright (C) 1990, 2001, 2003-2006, 2009-2017 Free Software Foundation, Copyright (C) 2005-2017 Free Software Foundation, Inc. Copyright (C) 2002, 2005-2006, 2009-2017 Free Software Foundation, Inc. Copyright (C) 2001-2002, 2005, 2007, 2009-2017 Free Software Foundation, Copyright (C) 2001-2004, 2009-2017 Free Software Foundation, Inc. Copyright (C) 2005-2006, 2009-2017 Free Software Foundation, Inc. Copyright (C) 1990-2000, 2003-2004, 2006-2017 Free Software Foundation, Inc. Copyright (C) 2001-2004, 2006 Free Software Foundation, Inc. Copyright (C) 1990-1996, 2000-2003, 2005-2007 Free Software Foundation, Inc. Copyright (C) 1990, 1996, 2000-2003, 2005-2006 Free Software Foundation, Inc. Copyright (C) 2005, 2012 Free Software Foundation, Inc. Copyright (C) 2000, 2004-2005, 2012, 2016 Free Software Foundation, Inc. Copyright (C) 2000-2002, 2004-2005 Free Software Foundation, Inc. Copyright (C) 2009, 2011 Free Software Foundation, Inc. Copyright (C) 86, 91, 1995-1998, 1999, 2012 Free Software Foundation, Inc. Copyright (C) 1999-2001, 2003, 2011 Bruno Haible. Copyright (C) 1999-2001 Bruno Haible. Copyright (C) 2006, 2011-2012 Free Software Foundation, Inc. Copyright (C) 2000-2004, 2006-2010 Free Software Foundation, Inc. Copyright (C) 2000-2006, 2008-2012 Free Software Foundation, Inc. Copyright (C) 2007 Free Software Foundation, Inc. <http:fsf.org/> Copyright (C) 1991 Free Software Foundation, Inc. Copyright © 2007 Free Software Foundation, Inc. <http:fsf.org/> Copyright 2000, LifeLine Networks BV (www.lifeline.nl). All rights reserved. Copyright 2000, Bastiaan Bakker. All rights reserved. Copyright 2001, LifeLine Networks BV (www.lifeline.nl). All rights reserved. Copyright 2001, Bastiaan Bakker. All rights reserved. Copyright 2002, Log4cpp Project. All rights reserved. Copyright 2001, Glen Scott. All rights reserved. Copyright (C) 1991, 1999 Free Software Foundation, Inc. Copyright 2000, Marc Welz Copyright 2005, Francis ANDRE. All rights reserved. Copyright 2001, Walter Stroebel. All rights reserved. Copyright 1999, Mark Martinec. All rights reserved. Copyright 2002, the Log4cpp project. License: Apache License V2.0 Please see above. Software: python- cryptography 2. 9.2 Copyright notice: Copyright (c) Individual contributors. Copyright © 2001-2016 Python Software Foundation; All Rights Copyright 2001-2016 Python Software Foundation; All Rights Reserved. License: Apache License V2.0 Please see above. Software: PyNaCl 1.3.0 Copyright notice: author (Thomas Pornin) has waived all copyright and related or Copyright (c) 2015 Thomas Pornin Copyright 2005,2007,2009 Colin Percival Copyright 2009 Colin Percival Copyright 2013 Alexander Peslyak Copyright 2013 Donald Stufft and individual contributors Copyright 2017 Donald Stufft and individual contributors Copyright 2013-2017 Donald Stufft and individual contributors Copyright 2018 Donald Stufft and individual contributors Copyright 2014 Donald Stufft and individual contributors Copyright 2013-2018 Donald Stufft and individual contributors Copyright (c) 2013-2017 Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Copyright (C) 1996-2015 Free Software Foundation, Inc. Copyright 2016 Donald Stufft and individual contributors 2. Grant of Copyright License. Subject to the terms and conditions of copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the (c) You must retain, in the Source form of any Derivative Works You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions copyright and related and neighboring rights to this software to the public domain worldwide. This software is distributed without any warranty. Copyright 2012,2013 Alexander Peslyak License: Apache License V2.0 Please see above. Software: postgresql-hll 2.1 4 Copyright notice: Copyright 2013 Aggregate Knowledge, Inc. License: Apache License V2.0 Please see above. Software: orc 1. 6.0 Copyright notice: Copyright 2015 The Apache Software Foundation. Copyright 2016 The Apache Software Foundation. (c) Copyright [2008-2015] Tom Preston-Werner Copyright 2013-2019 The Apache Software Foundation (c) Copyright [2014-2015] Hewlett-Packard Development Company, L.P License: Apache License V2.0 Please see above. Software: Apache HttpComponents - HttpClient 4. 5.13 Copyright notice: (c) You must retain, in the Source form of any Derivative Works Copyright 1999-2019 The Apache Software Foundation License: Apache License V2.0 Please see above. Software: Apache HttpComponents - HttpCore 4.4.1 3 Copyright notice: Copyright 2005-2020 The Apache Software Foundation License: Apache License V2.0 Please see above. Software: fastjson 1.2. 70 Copyright notice: Copyright 1999-2018 Alibaba Group. Copyright 1999-2004 Alibaba.com All right reserved. This software is the confidential and proprietary information of Copyright 1999-2017 Alibaba Group. Copyright 2018 Ulf Adams Copyright (c) 2014 All Rights Reserved Copyright 2015-2016 Dark Phoenixs (Open-Source Organization). Copyright 1999-2019 Alibaba Group. Copyright (c) 2003-2012 All Rights Reserved. Copyright 1999-2019 Alibaba Group Holding Ltd. Copyright (c) 2000-2007 INRIA, France Telecom Copyright 2018 Diffblue Limited Copyright 2015 Alibaba.com All right reserved. This software is the confidential and proprietary information of Alibaba.com ("Confidential Copyright 1999-2004 Alibaba.com All right reserved. This software is the Copyright 2011 Alibaba.com All right reserved. This software is the Copyright 2008 Alibaba.com Corporation Limited. Copyright 1999-2100 Alibaba.com Corporation Limited. Copyright 2008 Alibaba.com Croporation Limited. License: Apache License V2.0 Please see above. Software: Jackson 2.10.2 Copyright notice: Copyright (c) 2007- Tatu Saloranta, tatu.saloranta@iki.fi License: Apache License V2.0 Please see above. Software: Joda-Time 2.10 .6 Copyright notice: Copyright 2001-2006 Stephen Colebourne Copyright 2001-2009 Stephen Colebourne Copyright 2001-2005 Stephen Colebourne Copyright 2001-2012 Stephen Colebourne Copyright 2001-2013 Stephen Colebourne Copyright 2001-2011 Stephen Colebourne Copyright 2001-2015 Stephen Colebourne Copyright 2001-2014 Stephen Colebourne Copyright 2001-2010 Stephen Colebourne Copyright 2001-2007 Stephen Colebourne Copyright 2001-2016 Stephen Colebourne License: Apache License V2.0 Please see above. Software: Apache Commons Codec 1.11 Copyright notice: Copyright 2002-2017 The Apache Software Foundation Copyright (C) 2002 Kevin Atkinson (kevina@gnu.org) Copyright (c) 2008 Alexander Beider & Stephen P. Morse. License: Apache License V2.0 Please see above. Software: Apache Arrow v0.11.1 Copyright notice: Copyright (c) 2011 The LevelDB Authors. All rights reserved. Copyright (c) 2003-2013 University of Illinois at Urbana-Champaign. Copyright (C) 2012-2016, Yann Collet Copyright (C) 2012-2016, Yann Collet. Copyright (C) 2017-2018 Dremio Corporation Licensed under the Apache Copyright (c) 2013-2016, Matt Terry and Matthew Brett (BSD 2-clause) Copyright (c) 2006-2010, Salvatore Sanfilippo <antirez at gmail dot com> Copyright (c) 2006-2012, Salvatore Sanfilippo <antirez at gmail dot com> Copyright (c) 2009-2012, Salvatore Sanfilippo <antirez at gmail dot com> Copyright (c) 2012, Joyent, Inc. All rights reserved. Copyright (C) 2009 Harish Mallipeddi - harish.mallipeddi@gmail.com Copyright 2013 Sharvil Nanavati Copyright (c) 2009 Google Inc. All rights reserved. Copyright 2014 Cloudera, Inc. Copyright 2016 The Apache Software Foundation Copyright (c) MapBox Copyright (c) 2002-2003 Copyright (C) 2017-2018 Dremio Corporation Copyright (c) 2011-2012, Lambda Foundry, Inc. and PyData Development Team Copyright (c) 2008-2011 AQR Capital Management, LLC Copyright (C) 2011-12, Dynamic NDArray Developers Copyright (C) 2007 The Guava Authors Copyright (c) 2016 Giles Hall Copyright (C) 2015 Dato, Inc. Copyright https:code.google.compmman-win32 Copyright 2012 Continuum Analytics, Inc. Copyright 2001-2009 Kitware, Inc. Copyright 2012-2014 Continuum Analytics, Inc. Copyright 2012 Cloudera Inc. Copyright 2008 Google Inc. All Rights Reserved. Copyright 2011 Kitware, Inc. Copyright (c) 2015, 2016, 2017 Howard Hinnant Copyright (c) 2016 Adrian Colomitchi Copyright (c) 2017 Florian Dang Copyright (c) 2017 Paul Thompson Copyright (c) 2018 Tomasz Kamiński Copyright 2015 Cloudera Inc. Copyright (c) Austin Appleby (aappleby (AT) gmail) copyright (c) Google inc and (c) The Chromium Authors and licensed under the Apache 2.0 License or the under the 3-clause BSD license: Copyright (c) 2013 The Chromium Authors. All rights reserved. Copyright 2015 The TensorFlow Authors. All Rights Reserved. Copyright (c) 2005-2017, NumPy Developers. Copyright 2014 Google Inc. Copyright 2015 Microsoft Corporation. All rights reserved. Copyright (C) 2002-2017 Jason Evans <jasone@canonware.com>. Copyright (C) 2007-2012 Mozilla Foundation. All rights reserved. Copyright (C) 2009-2017 Facebook, Inc. All rights reserved. Copyright (c) 2009 The Go Authors. All rights reserved. Copyright 2016 Cloudera Inc. Copyright (c) 2017, Jeroen Ooms and Jim Hester Copyright (c) 2016 Ray Project (https:github.com/ray-project/ray) Copyright (c) 2009 Carnegie Mellon University. Copyright https://code.google.com/p/mman-win32/ Copyright (c) 2013-2016, Matt Terry and Matthew Brett; all rights reserved. Copyright (c) 2015 Cloudera, Inc. Copyright (c) 2003-2010 University of Illinois at Urbana-Champaign. License: Apache License V2.0 Please see above. Software: Apache Thrift 0.13.0 Copyright notice: Copyright (c) <2006> <Martin J. Logan, Erlware> Copyright (c) 2007 Thomas Porschberg <thomas@randspringer.de> Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved. Copyright (C) 1999 - 2007 Markus Mottl Copyright 2007 by Nathan C. Myers <ncm@cantrip.org>; some rights reserved. Copyright (c) 2006-2008 Alexander Chemeris Copyright (c) 2008- Patrick Collison <patrick@collison.ie> Copyright (c) 2006- Facebook Copyright 2012 Twitter, Inc Copyright (c) 2012 Two Blue Cubes Ltd. All rights reserved. Copyright (C) 2006 - 2019, The Apache Software Foundation Copyright (C) 2012 Raphael Kubo da Costa <rakuco@webkit.org> License: Apache License V2.0 Please see above. Software: bcrypt 3.1.7 Copyright notice: 2. Grant of Copyright License. Subject to the terms and conditions of copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the (c) You must retain, in the Source form of any Derivative Works You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions Copyright (c) 2014 Ted Unangst <tedu@openbsd.org> Copyright (c) 1997 Niels Provos <provos@umich.edu> Copyright (c) 2013 Ted Unangst <tedu@openbsd.org> Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de> Copyright (c) 2000-2001, Aaron D. Gifford Copyright (c) 2010 Damien Miller. All rights reserved. License: Apache License V2.0 Please see above. Software: etcd 3.3. 23 Copyright notice: Copyright 2014 Alan Shreve Copyright 2015 The Go Authors. All rights reserved. Copyright (c) 2017 Blake Gentry Copyright [2013] [the CloudFoundry Authors] Copyright 2012-2015 The Prometheus Authors Copyright 2013-2015 Blake Mizerany, Björn Rabenstein Copyright 2010 The Go Authors Copyright 2013 Matt T. Proud Copyright (c) 2009 The Go Authors. All rights reserved. Copyright © 2011 Russ Ross Copyright (c) 2014 Sam Ghods Copyright (c) 2012 The Go Authors. All rights reserved. Copyright (c) 2009,2014 Google Inc. All rights reserved. Copyright (c) 2015, Gengo, Inc. Copyright (c) 2014 Simon Eskildsen Copyright 2018 CoreOS, Inc Copyright (c) 2012 Dave Grijalva Copyright 2016 The etcd Authors Copyright 2014 CoreOS, Inc Copyright (C) 2013 Blake Mizerany Copyright (c) 2013 Ben Johnson Copyright (c) 2014 Brian Goff Copyright (c) 2005-2008 Dustin Sallings <dustin@spy.net> Copyright (c) 2013, The GoGo Authors. All rights reserved. Copyright 2010 The Go Authors. All rights reserved. Copyright (c) 2013 The Gorilla WebSocket Authors. All rights reserved. Copyright (c) 2016 json-iterator Copyright (c) 2011 Keith Rarick Copyright (c) 2016 Yasuhiro Matsumoto Copyright 2012 Matt T. Proud (matt.proud@gmail.com) Copyright 2015 The Prometheus Authors Copyright 2014-2015 The Prometheus Authors Copyright (c) 2012 Alex Ogier. All rights reserved. Copyright (C) 2016 Travis Cline Copyright (c) 2016 Jeremy Saenz & Contributors Copyright (c) 2015 Xiang Li Copyright (c) 2016 Uber Technologies, Inc. Copyright (c) 2017 Uber Technologies, Inc. Copyright (c) 2016-2017 Uber Technologies, Inc. Copyright (c) 2012-2015, Sergey Cherepanov Copyright (c) 2006 Kirill Simonov Copyright 2011-2016 Canonical Ltd. License: Apache License V2.0 Please see above. Software: gRPC 1.2 8.1 Copyright notice: Copyright 2015 gRPC authors. Copyright 2019 gRPC authors. Copyright 2016 gRPC authors. Copyright 2015-2016 gRPC authors. Copyright 2020 gRPC authors. Copyright 2018 gRPC authors. Copyright 2017 gRPC authors. Copyright 2019 The gRPC Authors Copyright 2018 The gRPC Authors Copyright 2016-2017 gRPC authors. Copyright 2020 The gRPC Authors Copyright 2019 the gRPC authors. Copyright 2019 The gRPC Authors. Copyright 2015-2017 gRPC authors. Copyright 2015 The gRPC Authors Copyright 2018, gRPC Authors All rights reserved. Copyright 2019 The gRPC authors. Copyright 2020 The gRPC authors. Copyright 2018 gRPC Authors. Copyright 2020 The gRPC Authors. Copyright 2018 The gRPC Authors. Copyright 2014 gRPC authors. Copyright 2014 Google Inc. License: Apache License V2.0 Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] 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 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Software: idna 2. 9 Copyright notice: Copyright (c) <YEAR>, <OWNER> All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. License: BSD 3-Clause License Copyright (c) 2013-2020, Kim Davies. All rights reserved. Software: Control Group Configuration - libcgroup 0.41 -21 .el7 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright notice: Copyright RedHat Inc. 2008 Copyright IBM Corporation. 2009 Copyright IBM Corporation. 2007 Copyright Red Hat, Inc. 2009 Copyright RedHat Inc. 2009 Copyright (C) 2010 Red Hat, Inc. All Rights Reserved. Copyright (C) 2009 Red Hat, Inc. All Rights Reserved. Copyright (C) 2009 Red Hat, Inc. All Rights Reserved. Copyright (c) Cristian Gafton, 1996-1997, <gafton@redhat.com> Copyright IBM Corporation. 2008 Copyright Red Hat, Inc. 2012 Copyright Red Hat Inc. 2008 Copyright IBM Corporation, 2007 Copyright (C) Matt Helsley, IBM Corp. 2005 Copyright (C) 2005 BULL SA. Copyright Red Hat Inc., 2012 Copyright NEC Soft Ltd. 2009 License : LGPL V2.1 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the library's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. <signature of Ty Coon>, 1 April 1990 Ty Coon, President of Vice That's all there is to it! License: 2-clause BSD-like license The 2-Clause BSD License SPDX short identifier: BSD-2-Clause Note: This license has also been called the "Simplified BSD License" and the "FreeBSD License". See also the 3-clause BSD License. Copyright <YEAR> <COPYRIGHT HOLDER> Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Software: kafka-python 2.0.0 Copyright notice: Copyright 2016, Dana Powers, David Arthur, and Contributors Copyright 2007 Google Inc. Copyright (c) 2010-2017 Benjamin Peterson Copyright 2015 David Arthur License: Apache License V2.0 Please see above. Software: fio 3.8 Copyright notice: "Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Copyright (C) 2012-2014, Yann Collet. Copyright (C) 92, 1995-1999 Free Software Foundation, Inc. Copyright (c) Jean-Luc Cooke <jlcooke@certainkey.com> Copyright (c) Andrew McDonald <andrew@mcdonald.org.uk> Copyright (c) 2002 James Morris <jmorris@intercode.com.au> Copyright (c) 2005 Ben Gardner <bgardner@wabtec.com> Copyright (c) 2004 Cisco Systems, Inc. Copyright (c) Jean-Luc Cooke <jlcooke@certainkey.com> Copyright (c) Andrew McDonald <andrew@mcdonald.org.uk> Copyright (c) 2003 Kyle McMartin <kyle@debian.org> Copyright (C) 2004 Stelian Pop <stelian@popies.net> (C) 2002 William Lee Irwin III, IBM / Copyright (C) 2004, Rajesh Venkatasubramanian <vrajesh@umich.edu> (C) 1999 Andrea Arcangeli <andrea@suse.de> (C) 2002 David Woodhouse <dwmw2@infradead.org> (C) 1999 Andrea Arcangeli <andrea@suse.de> Copyright (C) 2016 Jens Axboe Copyright (C) 2017 Nippon Telegraph and Telephone Corporation. Copyright (C) 2016 Hewlett Packard Enterprise Development LP Copyright (C) 2016 Intel Corp Copyright (C) 2013 Fusion-io, Inc. Copyright (C) 2005 Jens Axboe <axboe@suse.de> Copyright (C) 2006-2012 Jens Axboe <axboe@kernel.dk> Copyright (C) 2008, 2009 Nokia Corporation Copyright (c) Artem Bityutskiy, 2007, 2008 Copyright (c) International Business Machines Corp., 2006 Copyright (C) 2009 Nokia Corporation Copyright (c) Artem Bityutskiy, 2007, 2008 Copyright 2001, 2002 Red Hat, Inc. 2001 David A. Schleef <ds@lineo.com> 2002 Axis Communications AB 2001, 2002 Erik Andersen <andersen@codepoet.org> 2004 University of Szeged, Hungary 2006 KaiGai Kohei <kaigai@ak.jp.nec.com> Copyright (C) 2009 Nokia Corporation (C) Copyright 2014, Stephen M. Cameron. Copyright (C) 2012 Stephen M. Cameron <stephenmcameron@gmail.com> Copyright (C) 2012 Jens Axboe <axboe@kernel.dk> Copyright (C) 2012 Stephen M. Cameron <stephenmcameron@gmail.com> Copyright (C) 2015 Jens Axboe <axboe@kernel.dk> " License: GPL V2.0 Please see above. Software: iperf 3.7 Copyright notice: Copyright (c) 2009-2017 Dave Gamble and cJSON contributors Copyright (c) 2000 Markus Friedl. All rights reserved. Copyright (c) 2005,2006 Damien Miller. All rights reserved. Copyright (c) 2014, The Regents of the University of Copyright (c) 2014-2019, The Regents of the University of Copyright (c) 2014-2018, The Regents of the University of Copyright (c) 2014-2017, The Regents of the University of Copyright (c) 1999,2000,2001,2002,2003 Copyright (c) 2014-2018 The Regents of the University of Copyright (c) 2014, 2016, 2017, The Regents of the University of Copyright (c) 2014, 2015, 2017, 2019, The Regents of the University of Copyright (c) 2014, 2017, The Regents of the University of Copyright (c) 1991, 1993 Copyright (c) 2017, The Regents of the University of Copyright (C) 1996-2015 Free Software Foundation, Inc. Copyright (c) 2014-2019, The Regents of the University of California, Copyright (c) 2009 Dave Gamble Copyright (c) 2005-2007 Russ Cox, Copyright (c) 2003 by Lucent Technologies. Copyright (c) 2001 Eric Jackson <ericj@monkey.org> Copyright (c) 2014, ESnet License: BSD 3-Clause License Please see above. Software: masstree v0.9.0 Copyright notice: Copyright (c) 2012-2014 President and Fellows of Harvard College Copyright (c) 2012-2014 Massachusetts Institute of Technology Copyright (c) 2012-2013 President and Fellows of Harvard College Copyright (c) 2012-2013 Massachusetts Institute of Technology Copyright (c) 1997-2014 Eddie Kohler, ekohler@gmail.com Copyright (c) 2012-2014 Eddie Kohler Copyright (c) 2012-2016 President and Fellows of Harvard College Copyright (c) 2012-2016 Massachusetts Institute of Technology (c) 2011-2019 President and Fellows of Harvard College (c) 2010-2011 Regents of the University of California (c) 2010-2013 Massachusetts Institute of Technology Copyright (c) 1999-2000 Massachusetts Institute of Technology Copyright (c) 2001-2013 Eddie Kohler Copyright (c) 2008-2009 Meraki, Inc. License: MIT License Please see above. Software: oracle_fdw 2.1.0 Copyright notice: Portions Copyright (c) 2017-2018, Cybertec Schönig & Schönig GmbH Portions Copyright (c) 2011-2017, Magistrat der Stadt Wien License: PostgreSQL License PostgreSQL Database Management System (formerly known as Postgres, then as Postgres95) Portions Copyright (c) 1996-2002, The PostgreSQL Global Development Group Portions Copyright (c) 1994, The Regents of the University of California Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS Software: mysql_fdw REL-2_5_5 Copyright notice: Copyright (c) 2012-2014, PostgreSQL Global Development Group Copyright (c) 2004-2020, EnterpriseDB Corporation. Copyright (c) 2011-2020, EnterpriseDB Corporation. License: PostgreSQL License Please see above. Software: Apache MADlib 1.17.0 Copyright notice: Copyright (c) 2001, Dr Martin Porter, Copyright (c) 2002, Richard Boulton. Copyright (c) 2006 Kirill Simonov Copyright 2004, 2015 Sandia Corporation. (c) 2006-2009 Steven J. Bethard <steven.bethard@gmail.com>. Copyright 2016-2020 The Apache Software Foundation. Copyright (c) 2014-2015, Pivotal Inc. All rights reserved. Copyright (c) 2010-2013 by EMC Corporation. All rights reserved. Copyright (c) 2010-2013 by Regents of the University of California. All rights reserved. License: MIT License Please see above. Software: abseil-cpp 20200225 Copyright notice: Copyright 2017 The Abseil Authors. Copyright 2019 The Abseil Authors. Copyright 2018 The Abseil Authors. Copyright 2017 Google Inc. All Rights Reserved. Copyright 2016 Google Inc. All Rights Reserved. Copyright 2020 The Abseil Authors. t License: Apache License V2.0 Please see above. Software: psycopg 2.8.4 Copyright notice: Copyright (C) 2007 Free Software Foundation, Inc. <http:fsf.org/> Copyright (C) 2010-2019 Daniele Varrazzo <daniele.varrazzo@gmail.com> Copyright (C) 2018-2019 Daniele Varrazzo <daniele.varrazzo@gmail.com> Copyright (C) 2011-2019 Daniele Varrazzo <daniele.varrazzo@gmail.com> Copyright (C) 2003-2019 Federico Di Gregorio <fog@debian.org> Copyright (C) 2004-2019 Federico Di Gregorio <fog@debian.org> Copyright (C) 2010-2019 Daniele Varrazzo <daniele.varrazzo@gmail.com> Copyright (c) 2001-2019, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Copyright (C) 2018-2019 Daniele Varrazzo <daniele.varrazzo@gmail.com> Copyright (C) 2013-2019 Matthew Woodcraft <matthew@woodcraft.me.uk> Copyright (C) 2013-2019 Daniele Varrazzo <daniele.varrazzo@gmail.com> Copyright (C) 2006-2019 Federico Di Gregorio <fog@debian.org> Copyright (C) 2010-2019 Daniele Varrazzo <daniele.varrazzo@gmail.com> Copyright (C) 2015-2019 Daniele Varrazzo <daniele.varrazzo@gmail.com> Copyright (C) 2017 My Karlsson <mk@acc.umu.se> Copyright (c) 2018, Joyent, Inc. Copyright (c) 2018-2019, Joyent, Inc. Copyright (C) 2005-2019 Federico Di Gregorio <fog@debian.org> Copyright (C) 2001-2019 Federico Di Gregorio <fog@debian.org> Copyright (C) 2008-2019 Federico Di Gregorio <fog@debian.org> Copyright (C) 2018-2019 Daniele Varrazzo <daniele.varrazzo@gmail.com> Copyright (C) 2008-2019 James Henstridge <james@jamesh.id.au> Copyright (C) 2008 Canonical Ltd. Copyright (C) 2006-2019 Johan Dahlin <jdahlin@async.com.br> Copyright (C) 2003-2019 Federico Di Gregorio <fog@debian.org> Copyright (C) 2016-2019 Daniele Varrazzo <daniele.varrazzo@gmail.com> Copyright (C) 2012-2019 Daniele Varrazzo <daniele.varrazzo@gmail.com> Copyright (C) 2010-2019 Jan Urba �� ski <wulczer@wulczer.org> Copyright (C) 2017-2019 Daniele Varrazzo <daniele.varrazzo@gmail.com> Copyright (C) 2007-2019 Federico Di Gregorio <fog@debian.org> Copyright (C) 2010-2019 Federico Di Gregorio <fog@debian.org> Copyright (C) 2008-2019 James Henstridge <james@jamesh.id.au> Copyright (C) 2015-2019 Daniele Varrazzo <daniele.varrazzo@gmail.com> Copyright (C) 2004-2019 Federico Di Gregorio <fog@debian.org> Copyright (C) 2006-2019 Federico Di Gregorio <fog@debian.org> Copyright (C) 2007-2019 Daniele Varrazzo <daniele.varrazzo@gmail.com> Copyright (C) 2008-2019 Federico Di Gregorio fog@debian.org License: LGPL V3.0 GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright © 2007 Free Software Foun dation, Inc. <https://fsf.org/> Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, “this License” refers to version 3 of the GNU Lesser General Public License, and the “GNU GPL” refers to version 3 of the GNU General Public License. “ The Library” refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an int erface provided by the Library. A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is al so called the “Linked Version”. The “Minimal Corresponding Source” for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Vers ion. The “Corresponding Application Code” for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Lib raries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bou nd by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length) , you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, i f you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published b y the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. W ritten O ffer This product contains software whose rights holders license it on the terms of the GNU General Public License, version 2 (GPLv2) and/or other open source software licenses. We will provide you and any third party with the source code of the software licensed under an open source software license if you send us a written request by mail or email to the following addresses: foss@huawei.com detailing the name of the product and the firmware version for which you need the source code and indicating how we can contact you. Please note you need to make a payment before you obtain the complete Corresponding Source Code from us . For how much you will pay and how we will deliver the complete Corresponding Source Code to you, we will further discuss it by mail or email. This offer is valid to anyone in receipt of this information. This offer is valid for three years from the moment we distributed the product or firmware . /9j/4AAQSkZJRgABAgEBLAEsAAD/4RpKRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA
-AAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAUAAAAcgEyAAIAAAAUAAAAhodp
-AAQAAAABAAAAnAAAAMgAAAEsAAAAAQAAASwAAAABQWRvYmUgUGhvdG9zaG9wIDcuMAAyMDA2OjA0
-OjI4IDEzOjUxOjAxAAAAAAOgAQADAAAAAf//AACgAgAEAAAAAQAAASygAwAEAAAAAQAAASwAAAAA
-AAAABgEDAAMAAAABAAYAAAEaAAUAAAABAAABFgEbAAUAAAABAAABHgEoAAMAAAABAAIAAAIBAAQA
-AAABAAABJgICAAQAAAABAAAZHAAAAAAAAABIAAAAAQAAAEgAAAAB/9j/4AAQSkZJRgABAgEASABI
-AAD/7QAMQWRvYmVfQ00AAv/uAA5BZG9iZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwP
-FRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQO
-Dg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEI
-AIAAgAMBIgACEQEDEQH/3QAEAAj/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJCgsBAAEF
-AQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIxBUFRYRMi
-cYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXys4TD03Xj
-80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3EQACAgECBAQDBAUGBwcG
-BTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMHJjXC0kST
-VKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3h5ent8f/
-2gAMAwEAAhEDEQA/APVUkkklKSSSSUxssrqrdba4MrYC573GAGgS5znH6LWrges/4wcq699HR4px
-2naMl7ZsfH59bH+ypn/GM9T/AIv6Ctf4yeruqop6RUYN/wCmv/qNMUs/tWtc/wD6yuDo5VLmeYkJ
-cEDVfMXpvgnwjFLCOa5iInx37WOXyCI/TlH9LidgZ/Usixtt2XdZYxwfWX2OcGuB3tc2ufT9rh+4
-vT+k546j06jMA2m1vvb2D2nZa0f1bGuXleP2Xd/UnJ34V+IeaLN7f6tgn/z4y1N5SZ9wgn5h+IV8
-dwROATjER9qXQcP6ufpl/wA/gd/KyGY2PZe/6NbSY8T2b/acuWpflb3Wi17LLHF79jiAXE7ne36K
-2vrDcGYjKe91gEeTf0h/6TWrKo2907mpnjEQflH/ADi5fJQ4cMpkXxn/AJsW7jdYyqXBuV+lq4Lg
-IeP5Xt9r1tV2MtrbZW4OY8S1w4IK5y7bGitdBynC2zDOrINtflqBY3+1u3/56PL5pcQhI2DsT3W8
-xy8TA5IR4THWQGxi7aSSSuOepJJJJT//0PVUPIyKcWizIvcGU0tL7Hns1olx0RFwn+MnrL2+j0el
-8NePWygO4n9BW7+011mz/iUzLkGOBl9nm2uQ5SXN8xDCDQkbnL93HH5i18b/ABg3n6wG64FvSrYq
-FR5Yyfbknbu/S/nWt/63+ZWvQWPZYxtlbg9jwHNc0yCDq1zXBeErvP8AF99Y+OiZbhpJw3H/AD7K
-C7/wSr/M/wBEqnLcwTLhmb4jof63Z3vjXwbHHAM/LQ4fZiI5ID9LFH/Kf34fpuf/AIyp/b1M/wDc
-Vkf59y5ikwfmu6/xmdOLqsTqbG/QJotOsw79JT/Za4Xf9uLgmGD8VDzIIyyvrq6nwbJHJ8Ow8P6M
-TCX96EnUx3cLrPqTaR1OyudLKCSPNj2bf/Pj1xlFi6b6nXR12hv+kZY3/o+p/wCi0MBrJDzH4sHx
-TFfLZvCEpf4nrd/6zX/r1FPZlZf/AJ7tv/opUa74Cb603x1ot/dprH3mxyz236J2Y3ln5/k5nLYP
-6Ni03jf+N6nSffI5VnoL93VhHap5P3sWK7I05W39UaXWX5GYfoMaKWHxJi2z/Nb6KOEXlj539i3m
-sYx8tlkf3eH/AB/S9MSAJPC4fqf10yWdXZbha4OMXVurJEXgmLLJ/M+j+qO/75d6SvfXTrnpsPSM
-ckPsaDlPB4rd/gNPzrv8J/wH/HLhb7FLzPMES4IGuE+o+PZPwb4XGcDmzwEvcBjjhL9yX+U/wv0H
-17CzMfOxKsvGdvpuaHsPx/Nd/Lb9F6OvP/8AF51kszLukWvOy+bcdp7PaJuaP+MrHqf9aXoCs4cn
-uQEvofNyfiPJy5TmZ4TrH5scv3scvl/7x//R9VXjn1rufd9ZOoPs+kLiwf1awKmf9Bi9jXmP+MTp
-L8TrA6g0TRnAEmNG2MDa3s/tt2Wf9uKtzkScYI6HV2/+LmWEOclGWksmMxh5gifC8qpMe+t7bGEt
-e0hzXAwQRqHNKinWc9kNQ+oYeZV9cvqvfjuLasst2WtB0ba2LKbfzneha9jf/Bal5jbW+qx9Vg22
-VuLXtPIIO1wWn9WeuP6J1SvJO52M/wBmTW08sP539ap36Rv/AG3+etT6+dIqx82vq2J78TqQ9Tcz
-VgsgO3Bzfb+sNPrfy/0ysZD7uMT/AE4emf8Ad/Rk5HJ4/uPOT5bbl+avNy3aGWP87h/xHm6rIXQf
-VG7/ALIsCO73j76rQuZW59Tnk/WXAH8t3/UPUWL+ch/ej+bd5+APK8wf9Vk/9Jydj613R9Yslv7r
-ah/0N3/flnNyET65W7frRmjyq/8APTFkjI80cp/WT/vS/Np8pgvlOXPfFjP/AI3F0nZGncnsByT4
-BdqcgfVf6tVuuAdlHRrOQ6+3dbslv+Dq93v/ANFUuW+p/T29R6n9pucG4vT9t9hJ0L9TQ0mRta3Z
-6z/+LVL6z9f/AGt1N9tbicWma8Uagbfz7tp/Ovd/4F6akxy9uByfpS9MP+6k1eY5b71zMOVH81hr
-NzP94/zOH/C/6DSvyHvc59ji+x5LrHnlznGXvd/WVK22VGy6UIknlV7dzHiEXQ+rz3s6/wBOc0wT
-lVAkeDnta4f2muXs68r+ofSHdQ62zIcP0GBFzz/L/wC07P8APHq/9ZXqi0OSBECT1Ojyv/GbJCXN
-Y4R1ljh6/DjPFGL/AP/Su4H+M++nOyWZ9P2nCde80Pr2ttrrLnbK49teRtZs/wBE/wD4R67Jz+hf
-Wrpj6WWsyqHgE7SPUqcdwY/a730XN92zez/wNeJ5dDsPOyMN/wBLGtfU7vqxzq/++qxgZ2Vg5DMr
-DtdTfWZa9p/A/muY789jvYqXvyjYmOKL00vhWHKI5OXl7GWIEoyj8hI+U/1f8B2Ov/VrqHQr9t49
-TGeYpymiGu/ku59O3/g1kyu36T/jBxcvFdgfWSkWMsAY69jZa5p5dfS36O36e/H/AO2kHrf1FD6z
-1D6uWNy8RwLvQa7c4R/3Hsl3r/nezd6v/GqKeESuWI8Q6x/Ti6HLfEcmIxw8/H2sh9MM/wD4Hzf4
-f+Tm8cu1+q2VV17o2T9Ws94NzG7+nvfqRA9oZp/2mf8Ay9/oWWVfzNa4tzXNcWPBa4aEHQg+aP0/
-Nv6fm05tH87Q8PaDMGPpMdH5j2+x6ixz4Ja/KfTId4lvc7y/3jCYxPDlgRkwZP3M0PVCX/cyR5GP
-djX2Y97dl1LiyxuhhzTtcNFs/Uhu760YI87D91VpWx9demUZ+FR9aOnNJrvY37UJ1AIayqwtbubv
-r/mL/wBJ/o/+EWZ9Qai/6zY7v9Eyxx+bHV/+jE8YzDPGO44omJ7xa0+bjzHwzPlrhmMWWGWH+bzR
-hKM4f4yvr60t+s2SeN7Kj/0Gt/76sGpt1tjKqmmyywhrGNEkuJ2ta0D95dL/AIxmbfrCD+/Qw/i9
-v/fVY+o3SKaq7/rH1BpGNhtc7HkcloJtua38/wBL6Ff/AAv/AAlSMsZnnlEfvEk9oowc3Hl/hWDN
-IcRGKEIQ65MtcEIBP9YLv+bX1cx+gY5b9szWl+bY06wYFv7vttd+r1v/ANBS9cQSSrXVuo29T6lk
-Z9ujr3lwbztaPbVXIDf5usNYqoBcQ1oknQAckqPLPilp8o9MR/VDZ5Hljgw+s3myE5c8/wB7Lk+b
-/Bh8kVlqdB+r2d1zKFOO0spaf02S4exg/wC/2/uVf+i/0i2+ifUS1zG5/XnjCwmje6pztjyO3rOd
-7cdn73+G/wCKVzqP16wOn4jenfVugNZUCxtz2wxo/fqYffc930/Uv/P+n629PhhAHFlPDHpH9ObW
-5j4jPJI4Ph8ffy/LLN/4G5f+9k/Tn/Uenx2dF+q/TGUvtrxqWAlz3mH2vA/SWbf5y6137rP6i5Tq
-f+Me+66uvplJopD2l9tkF7mgt3MFfuZV+d+db/1tchm52Zn5DsnMtdfc/lzj252tH0WM/kMQ6Kzd
-fXS3V1j2sA83Hanz5qRqOMcEdh+8wct8CwwMs3Ny+85pXKRl/NiX6R4f0/8Aqj//03/xndAtxepj
-rNLP1XM2tucPzbwNurY9rbqmMd/xvqrjWPXv+bhYufi2YeZU27HubtsrdwR/31zXe5j2/QXln1i/
-xcdV6bYbulB/UcMydrQPWZr7WOrH9I9v+Epb/wBZrVXNhNmQF27vwz4jERjiyS4ZR0iTtKP/AHzz
-TXLS6P1zqXR7/XwbSwuj1Kzqx4H5tjPzv+rWVYy7HtdTkVuptYYdXY0scD/KY+HKTXjxVQgxNjQh
-6GM8eWBjMRnCQ1jL1Rk+hVdX+rH1tZXT1pgwOpABrchh2h350NueHM26e2rJ/wCs2eosXrf1K6x0
-kPua37XiMlxvq5a0T7rafp1+0bn/AM5Uz/Srmw4Lo/q/9dup9HimwnMwxA9Gxx3MAG0Ciz3em3/g
-/wCbT+OE9Moo/wCcj/3cWv8Ad+Y5X1clPjx9eUzH0f8Apvl/yX912P8AF71Oq6vJ6BmHfVe1zqK3
-cEEFuVSNfzmfpNjf+GVn6t9As6N9cr8Y7nUDGfbjWuiXML6me7b+fXu9N/8AnrQxMH6tdfto6v0h
-4xc3Hey1/ogMeDO51eXjj6XqfpGep/hP9LbWun2t3B0DcAQD3g8/kVnHiuMLIPtm4TH6Uezh878Q
-4cnMe3CWP73Dg5nl8g4Tizx/ysf7zw31t6Lf1n63YeJX7WOxWuus/drZZb6j+/7zWV/8Io/X/qFe
-BgYn1ewztq2Ndc3UkV1w3GZuP7z2b3/n/omLu9rd26BuiJ7wuaz+nfVzpGTkda61YMrKyHOfU26H
-GG6Mpxcb891TPRr9R/0P+BSyYqEyCB7h9Uz+jBHJfEBLJy0ckJZI8pGsGDGOOWfmTtk/q8DxXRPq
-d1jq+y1rPs+I4ici3QFv71Vf07vb9D/Bf8Kt5+d9VvqiLK+nN/aHV2yx1jzIYfzt1jR6bGt/Oro/
-S/4K16yfrB9eOo9VmjF3YWHqCxjjveD7f01jY9u3/BM/656q5qVV44Y9MY4pf5yX/cRegHK8zzfq
-52XtYj/4Ewn5v/OnN/lP7kHR6x17qfWbhbm2y1v83S321t/qV/vfy3fpFnppUqqrbrG1UsdbY4w1
-jAXOJ/ktaoSTI2TZLowjjxQEIRjjhEaRj6YxYrqPqD0R+f1VufbWTiYR3h/DTcINVf8AK9P+e9v/
-AAe/+cTdC+ofVeoWCzPa7AxQRu3iLXfvNrqd9D/jLf8AwVek4ODi4GLXiYlYqoqENaPxc4/nOcrX
-L8vIyE5CojUA/pOF8Z+M44Yp8vgkJ5ZjhnKJ9OKJ+b1fvv8A/9T1VYn1o+sV31exa8wYL8zGcS26
-xjw0VE7fS9T2v9lsub6n7/8Axta20HLxcfMxrcTJYLKL2Gu1hkS1w2uEthzf7KButDRXYzETBnHi
-jfqjto8Bb/jZxrBDukGweD7m/wDpFyEP8aWIf+8Ov/t5v/vKsb60/UTqfRLbMjGY7L6aXHZYwF1l
-bY3bcpjR7dv0fXb+i/4n1PSXLSPFVZZMoNE19A72DlORyREoR4on+vP/AL59DP8AjOod9Do1Tfja
-D/7rtSZ/jEzMixtOJ0ih9zzDGAOscT4NZW1rnLC+r31G671nbcWfY8MmDkXggkaSaaPbZbz/AMHT
-/wAKvT+g/VjpPQqz9jrm97Q23JeZe4DX+rWzd+ZUjGOaW8uEeQWcxl+G4BUcXu5f3ePJwj+/LjTd
-Fb1X7ObeqVY+PdZBbTjtMtH7t1jnvbY//i/+mtFJJWQKFOJknxyMqEb/AEY/KPJSo9Xb1E4vqdNq
-ouya5IqyAYcI1rre1zPTsd/L/Rq8kkRYpUJ8EhKhKjtL5T5vndn+MDOxbXUZnSaWXVmH1ncxw7/R
-e1ydv+Muv87pFZ+FoH/ohy7HrP1e6X1qoMzqpewEV3MO2xk/uu/75ZvrXm/XfqP1npINtbftuIP8
-LSDuaPG6j3PZ/WZ6taqZBzENRLij5C3oeSyfCeZAjkwjDl/dOTJGEv8AZz4/+a7P/jmY/wD5Ts/7
-eH/vOiM/xoYzNB0wtnnbaP8A0k1eel4W/wDVv6n9S63ay17HY/TwQbL3jaXNn3DG3NPqP/l/zSjh
-lzyNA39ItvmPh/wvFAzyQ4Yjvky/9++i/Vr6xu6/Vde3DfjUVENbY524PcZ3tZDW/wA3+d/XW2gY
-WHjYGLVh4rBVRS3axg8P+/Od9J7kdX4ggDiNnqXlc8scskjih7eO/RC+Ko+Jk//V9VSXC/UX/GLl
-/WnrF3TrsKvGbTjuv3seXElr6qtvua3/AEy7DqeW7C6bl5jGh7saiy5rCYDjW11gaXa/S2pKbSh6
-NPqersb6sRvgbo8N30lyP1C+vWT9ax1A3YjMb7C2ot2OLtxs9bncP+BVb6if4xMv61dVuwLsKvGb
-Tjm/ex7nEkPrq27XN/4VJT3SSzfrH1Wzo3Q8zqlVYufi1+o2txIB1A1cFj/UL65ZH1sxcu+/GZi/
-ZrGsaGOLp3N3a7g1JT1SS5b6+fXUfVPDxbK6BlZOXYW11OcWtDGAG6zc0O+i59TNv/CKH1D+vdX1
-sqyWW1Nxc3GcCaGu3B1Tvo3M3bX+2z2W/ufov9Kkp6xJcL1b/GLl9G+uFfQeoYVbMO2ysNzN5b+i
-uhrLyHjZtpsP6b/irV1/Vs9vTOl5nUXN3jDosv2TG702us2bv5e3YkptpLzf6q/42retddxel5mF
-Vi15RcxtzbCYs2l1Tdr2/wCFe30f69i7X6y9br6D0PL6rY3f9mZLK+N1jiK6Wf2rXs3JKb5ooNou
-NbDaNBZtG6P6/wBJEXJfVP67nq/Qczr/AFdlPTcHFsNYfucZ2tY57zub7t77q6qWV/pLLf0awP8A
-x3eo5+VbT0DoF2cyrXcC97yzhtj6Mamz0f8At2xJVl9MSXn2B9ffrpk5+Nj3/VbIoputrrtudXeA
-xjnNbZa4upDfYw7lZ+vn+MPL+qvU8fCpw68ll9AuL3vc0g7317drWn9xJT//1uQ+of1gy+gdbvzM
-Tp1nVLLMd9JoqLmua02U2et7Ksj2t9LZ9D/CLtOp/wCMzreX03LxX/VbKpZfRZW60vsIYHMc11jv
-1Nv8233/AElj/wCJhrm/WzL3NLZwbYkR/hsVesfWGf2B1KOfsl8R/wAW9JT5v/iQ465/Vxv/AHaW
-f/iT/wDFLmf+Enf+fcdaX+I5pDutBwiRi8+B+1LG6KOqf4tfrRbd1TCtyMKyt2Ocipp2vrc6u1t2
-O922p9jfSb+hfYkp9P8Ar/8A+I3q3/hc/lauU/xIf8mdT/4+v/qCqX1s/wAZ2F9YeiX9G6Hg5bsn
-N2sc6xjNGBzXv2MofkutdZs9L/BqGFVm/Uf/ABdZhzWmnq3XLCzFoaSLWMfWGb7Gj31W01evd7f5
-p78euz07UlNd3UKvrZ/jObkX5VVPSekWB1Vj7Gema8Z42em922u37dl/pP8AwvZ/wKBk9QxPqd/j
-LOfhWMs6VmnfZ6L2Ob6OQf1hv6Lc1n2bLY66uj/gKld+pf8Aip6d1joFPU+r3ZNN2UXPprocxoFP
-0anWNuot99m19vtf/MvqS+uv+Krp3RugXdT6RblX3Yrmvurucx49H6Nr2Npoqdurc5ljvds9H1Ul
-N7/HV0L1cXD69U2XY5+y5MST6bybMd/7rWV2+qz/ANCGKX1v+tjcj/Ffg2ssL8nq7a8e1xMP3Vf0
-98fnM9bH9F3/AIYVv6q3H66f4u8noeW/9ex2fZS55gyzbd03Is2Df6e5ldb/APTfZ7l5d07G6h1L
-N6d9XL97KRmmsAt91br3U05f/bbcbds/4xJTtde6L/zb6b9U+u4o/T21Nvt9sD1Wvb1Ch1jx9Kz0
-8n0P+LxV1P8Aje+sGNlfV/pOLiOLx1Nzc1pBAPotZ+iFlf0v0z8n2f8Ahd66X/GT0NnU/qdlVUsA
-s6eBlY7QYAFIPqtgfS/VHXtYz9/YvK/qV0/L+sn1m6ThZkvxenMkyIiil78oVO/fa/Iv9H+pakp6
-769dOf8AVv8AxY9P6PXAc++qvMIMhz3Nuzb/AHfnN+01ez+Qsj6j/XHM+r/RRj4P1bvzjdY59udW
-54FhB2tb7cW/+Zb+j2+r/wCfF6R9efq5Z9Y/q7f0+gtGUHMuxnPMND2HuRP06nW1f21539Vvrt1j
-6lUWdB650u99NNjjTHsfXuO61jdw9LIofZ+lqsY/8/8AwtdlfppT0uB/jM61lZ2Ni2fVfJoZkWsq
-dc59hDA9zWGx04bPobt30lzH+O3/AMUGD/4TH/ny1dPg/wCN7p2bnY2G3puSx2VdXS17iyAbHNqD
-j/nLmv8AHWx7vrBg7Wk/qY4E/wCEtSU//9n/7R74UGhvdG9zaG9wIDMuMAA4QklNBCUAAAAAABAA
-AAAAAAAAAAAAAAAAAAAAOEJJTQPtAAAAAAAQASwAAAABAAIBLAAAAAEAAjhCSU0EJgAAAAAADgAA
-AAAAAAAAAAA/gAAAOEJJTQQNAAAAAAAEAAAAHjhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkA
-AAAAAAAAAAEAOEJJTQQKAAAAAAABAAA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1AAAAAABI
-AC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUA
-AAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA
-/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/
-////////////////////////////A+gAADhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklN
-BB4AAAAAAAQAAAAAOEJJTQQaAAAAAANbAAAABgAAAAAAAAAAAAABLAAAASwAAAATAEgAVwBfAFAA
-TwBTAF8AUgBHAEIAXwBWAGUAcgB0AGkAYwBhAGwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAA
-AAAAAAAAASwAAAEsAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAA
-AABudWxsAAAAAgAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAA
-AAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAEsAAAAAFJnaHRsb25nAAABLAAAAAZzbGlj
-ZXNWbExzAAAAAU9iamMAAAABAAAAAAAFc2xpY2UAAAASAAAAB3NsaWNlSURsb25nAAAAAAAAAAdn
-cm91cElEbG9uZwAAAAAAAAAGb3JpZ2luZW51bQAAAAxFU2xpY2VPcmlnaW4AAAANYXV0b0dlbmVy
-YXRlZAAAAABUeXBlZW51bQAAAApFU2xpY2VUeXBlAAAAAEltZyAAAAAGYm91bmRzT2JqYwAAAAEA
-AAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25n
-AAABLAAAAABSZ2h0bG9uZwAAASwAAAADdXJsVEVYVAAAAAEAAAAAAABudWxsVEVYVAAAAAEAAAAA
-AABNc2dlVEVYVAAAAAEAAAAAAAZhbHRUYWdURVhUAAAAAQAAAAAADmNlbGxUZXh0SXNIVE1MYm9v
-bAEAAAAIY2VsbFRleHRURVhUAAAAAQAAAAAACWhvcnpBbGlnbmVudW0AAAAPRVNsaWNlSG9yekFs
-aWduAAAAB2RlZmF1bHQAAAAJdmVydEFsaWduZW51bQAAAA9FU2xpY2VWZXJ0QWxpZ24AAAAHZGVm
-YXVsdAAAAAtiZ0NvbG9yVHlwZWVudW0AAAARRVNsaWNlQkdDb2xvclR5cGUAAAAATm9uZQAAAAl0
-b3BPdXRzZXRsb25nAAAAAAAAAApsZWZ0T3V0c2V0bG9uZwAAAAAAAAAMYm90dG9tT3V0c2V0bG9u
-ZwAAAAAAAAALcmlnaHRPdXRzZXRsb25nAAAAAAA4QklNBBEAAAAAAAEBADhCSU0EFAAAAAAABAAA
-AAE4QklNBAwAAAAAGTgAAAABAAAAgAAAAIAAAAGAAADAAAAAGRwAGAAB/9j/4AAQSkZJRgABAgEA
-SABIAAD/7QAMQWRvYmVfQ00AAv/uAA5BZG9iZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUP
-DAwPFRgTExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4O
-EBQODg4UFA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/A
-ABEIAIAAgAMBIgACEQEDEQH/3QAEAAj/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJCgsB
-AAEFAQEBAQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIxBUFR
-YRMicYEyBhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXys4TD
-03Xj80YnlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3EQACAgECBAQDBAUG
-BwcGBTUBAAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMHJjXC
-0kSTVKMXZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3h5en
-t8f/2gAMAwEAAhEDEQA/APVUkkklKSSSSUxssrqrdba4MrYC573GAGgS5znH6LWrges/4wcq699H
-R4px2naMl7ZsfH59bH+ypn/GM9T/AIv6Ctf4yeruqop6RUYN/wCmv/qNMUs/tWtc/wD6yuDo5VLm
-eYkJcEDVfMXpvgnwjFLCOa5iInx37WOXyCI/TlH9LidgZ/Usixtt2XdZYxwfWX2OcGuB3tc2ufT9
-rh+4vT+k546j06jMA2m1vvb2D2nZa0f1bGuXleP2Xd/UnJ34V+IeaLN7f6tgn/z4y1N5SZ9wgn5h
-+IV8dwROATjER9qXQcP6ufpl/wA/gd/KyGY2PZe/6NbSY8T2b/acuWpflb3Wi17LLHF79jiAXE7n
-e36K2vrDcGYjKe91gEeTf0h/6TWrKo2907mpnjEQflH/ADi5fJQ4cMpkXxn/AJsW7jdYyqXBuV+l
-q4LgIeP5Xt9r1tV2MtrbZW4OY8S1w4IK5y7bGitdBynC2zDOrINtflqBY3+1u3/56PL5pcQhI2Ds
-T3W8xy8TA5IR4THWQGxi7aSSSuOepJJJJT//0PVUPIyKcWizIvcGU0tL7Hns1olx0RFwn+MnrL2+
-j0el8NePWygO4n9BW7+011mz/iUzLkGOBl9nm2uQ5SXN8xDCDQkbnL93HH5i18b/ABg3n6wG64Fv
-SrYqFR5Yyfbknbu/S/nWt/63+ZWvQWPZYxtlbg9jwHNc0yCDq1zXBeErvP8AF99Y+OiZbhpJw3H/
-AD7KC7/wSr/M/wBEqnLcwTLhmb4jof63Z3vjXwbHHAM/LQ4fZiI5ID9LFH/Kf34fpuf/AIyp/b1M
-/wDcVkf59y5ikwfmu6/xmdOLqsTqbG/QJotOsw79JT/Za4Xf9uLgmGD8VDzIIyyvrq6nwbJHJ8Ow
-8P6MTCX96EnUx3cLrPqTaR1OyudLKCSPNj2bf/Pj1xlFi6b6nXR12hv+kZY3/o+p/wCi0MBrJDzH
-4sHxTFfLZvCEpf4nrd/6zX/r1FPZlZf/AJ7tv/opUa74Cb603x1ot/dprH3mxyz236J2Y3ln5/k5
-nLYP6Ni03jf+N6nSffI5VnoL93VhHap5P3sWK7I05W39UaXWX5GYfoMaKWHxJi2z/Nb6KOEXlj53
-9i3msYx8tlkf3eH/AB/S9MSAJPC4fqf10yWdXZbha4OMXVurJEXgmLLJ/M+j+qO/75d6SvfXTrnp
-sPSMckPsaDlPB4rd/gNPzrv8J/wH/HLhb7FLzPMES4IGuE+o+PZPwb4XGcDmzwEvcBjjhL9yX+U/
-wv0H17CzMfOxKsvGdvpuaHsPx/Nd/Lb9F6OvP/8AF51kszLukWvOy+bcdp7PaJuaP+MrHqf9aXoC
-s4cnuQEvofNyfiPJy5TmZ4TrH5scv3scvl/7x//R9VXjn1rufd9ZOoPs+kLiwf1awKmf9Bi9jXmP
-+MTpL8TrA6g0TRnAEmNG2MDa3s/tt2Wf9uKtzkScYI6HV2/+LmWEOclGWksmMxh5gifC8qpMe+t7
-bGEte0hzXAwQRqHNKinWc9kNQ+oYeZV9cvqvfjuLasst2WtB0ba2LKbfzneha9jf/Bal5jbW+qx9
-Vg22VuLXtPIIO1wWn9WeuP6J1SvJO52M/wBmTW08sP539ap36Rv/AG3+etT6+dIqx82vq2J78TqQ
-9TczVgsgO3Bzfb+sNPrfy/0ysZD7uMT/AE4emf8Ad/Rk5HJ4/uPOT5bbl+avNy3aGWP87h/xHm6r
-IXQfVG7/ALIsCO73j76rQuZW59Tnk/WXAH8t3/UPUWL+ch/ej+bd5+APK8wf9Vk/9Jydj613R9Ys
-lv7rah/0N3/flnNyET65W7frRmjyq/8APTFkjI80cp/WT/vS/Np8pgvlOXPfFjP/AI3F0nZGncns
-ByT4BdqcgfVf6tVuuAdlHRrOQ6+3dbslv+Dq93v/ANFUuW+p/T29R6n9pucG4vT9t9hJ0L9TQ0mR
-ta3Z6z/+LVL6z9f/AGt1N9tbicWma8Uagbfz7tp/Ovd/4F6akxy9uByfpS9MP+6k1eY5b71zMOVH
-81hrNzP94/zOH/C/6DSvyHvc59ji+x5LrHnlznGXvd/WVK22VGy6UIknlV7dzHiEXQ+rz3s6/wBO
-c0wTlVAkeDnta4f2muXs68r+ofSHdQ62zIcP0GBFzz/L/wC07P8APHq/9ZXqi0OSBECT1Ojyv/Gb
-JCXNY4R1ljh6/DjPFGL/AP/Su4H+M++nOyWZ9P2nCde80Pr2ttrrLnbK49teRtZs/wBE/wD4R67J
-z+hfWrpj6WWsyqHgE7SPUqcdwY/a730XN92zez/wNeJ5dDsPOyMN/wBLGtfU7vqxzq/++qxgZ2Vg
-5DMrDtdTfWZa9p/A/muY789jvYqXvyjYmOKL00vhWHKI5OXl7GWIEoyj8hI+U/1f8B2Ov/VrqHQr
-9t49TGeYpymiGu/ku59O3/g1kyu36T/jBxcvFdgfWSkWMsAY69jZa5p5dfS36O36e/H/AO2kHrf1
-FD6z1D6uWNy8RwLvQa7c4R/3Hsl3r/nezd6v/GqKeESuWI8Q6x/Ti6HLfEcmIxw8/H2sh9MM/wD4
-Hzf4f+Tm8cu1+q2VV17o2T9Ws94NzG7+nvfqRA9oZp/2mf8Ay9/oWWVfzNa4tzXNcWPBa4aEHQg+
-aP0/Nv6fm05tH87Q8PaDMGPpMdH5j2+x6ixz4Ja/KfTId4lvc7y/3jCYxPDlgRkwZP3M0PVCX/cy
-R5GPdjX2Y97dl1LiyxuhhzTtcNFs/Uhu760YI87D91VpWx9demUZ+FR9aOnNJrvY37UJ1AIayqwt
-bubvr/mL/wBJ/o/+EWZ9Qai/6zY7v9Eyxx+bHV/+jE8YzDPGO44omJ7xa0+bjzHwzPlrhmMWWGWH
-+bzRhKM4f4yvr60t+s2SeN7Kj/0Gt/76sGpt1tjKqmmyywhrGNEkuJ2ta0D95dL/AIxmbfrCD+/Q
-w/i9v/fVY+o3SKaq7/rH1BpGNhtc7HkcloJtua38/wBL6Ff/AAv/AAlSMsZnnlEfvEk9oowc3Hl/
-hWDNIcRGKEIQ65MtcEIBP9YLv+bX1cx+gY5b9szWl+bY06wYFv7vttd+r1v/ANBS9cQSSrXVuo29
-T6lkZ9ujr3lwbztaPbVXIDf5usNYqoBcQ1oknQAckqPLPilp8o9MR/VDZ5Hljgw+s3myE5c8/wB7
-Lk+b/Bh8kVlqdB+r2d1zKFOO0spaf02S4exg/wC/2/uVf+i/0i2+ifUS1zG5/XnjCwmje6pztjyO
-3rOd7cdn73+G/wCKVzqP16wOn4jenfVugNZUCxtz2wxo/fqYffc930/Uv/P+n629PhhAHFlPDHpH
-9ObW5j4jPJI4Ph8ffy/LLN/4G5f+9k/Tn/Uenx2dF+q/TGUvtrxqWAlz3mH2vA/SWbf5y6137rP6
-i5Tqf+Me+66uvplJopD2l9tkF7mgt3MFfuZV+d+db/1tchm52Zn5DsnMtdfc/lzj252tH0WM/kMQ
-6KzdfXS3V1j2sA83Hanz5qRqOMcEdh+8wct8CwwMs3Ny+85pXKRl/NiX6R4f0/8Aqj//03/xndAt
-xepjrNLP1XM2tucPzbwNurY9rbqmMd/xvqrjWPXv+bhYufi2YeZU27HubtsrdwR/31zXe5j2/QXl
-n1i/xcdV6bYbulB/UcMydrQPWZr7WOrH9I9v+Epb/wBZrVXNhNmQF27vwz4jERjiyS4ZR0iTtKP/
-AHzzTXLS6P1zqXR7/XwbSwuj1Kzqx4H5tjPzv+rWVYy7HtdTkVuptYYdXY0scD/KY+HKTXjxVQgx
-NjQh6GM8eWBjMRnCQ1jL1Rk+hVdX+rH1tZXT1pgwOpABrchh2h350NueHM26e2rJ/wCs2eosXrf1
-K6x0kPua37XiMlxvq5a0T7rafp1+0bn/AM5Uz/Srmw4Lo/q/9dup9HimwnMwxA9Gxx3MAG0Ciz3e
-m3/g/wCbT+OE9Moo/wCcj/3cWv8Ad+Y5X1clPjx9eUzH0f8Apvl/yX912P8AF71Oq6vJ6BmHfVe1
-zqK3cEEFuVSNfzmfpNjf+GVn6t9As6N9cr8Y7nUDGfbjWuiXML6me7b+fXu9N/8AnrQxMH6tdfto
-6v0h4xc3Hey1/ogMeDO51eXjj6XqfpGep/hP9LbWun2t3B0DcAQD3g8/kVnHiuMLIPtm4TH6Uezh
-878Q4cnMe3CWP73Dg5nl8g4Tizx/ysf7zw31t6Lf1n63YeJX7WOxWuus/drZZb6j+/7zWV/8Io/X
-/qFeBgYn1ewztq2Ndc3UkV1w3GZuP7z2b3/n/omLu9rd26BuiJ7wuaz+nfVzpGTkda61YMrKyHOf
-U26HGG6Mpxcb891TPRr9R/0P+BSyYqEyCB7h9Uz+jBHJfEBLJy0ckJZI8pGsGDGOOWfmTtk/q8Dx
-XRPqd1jq+y1rPs+I4ici3QFv71Vf07vb9D/Bf8Kt5+d9VvqiLK+nN/aHV2yx1jzIYfzt1jR6bGt/
-Oro/S/4K16yfrB9eOo9VmjF3YWHqCxjjveD7f01jY9u3/BM/656q5qVV44Y9MY4pf5yX/cRegHK8
-zzfq52XtYj/4Ewn5v/OnN/lP7kHR6x17qfWbhbm2y1v83S321t/qV/vfy3fpFnppUqqrbrG1Usdb
-Y4w1jAXOJ/ktaoSTI2TZLowjjxQEIRjjhEaRj6YxYrqPqD0R+f1VufbWTiYR3h/DTcINVf8AK9P+
-e9v/AAe/+cTdC+ofVeoWCzPa7AxQRu3iLXfvNrqd9D/jLf8AwVek4ODi4GLXiYlYqoqENaPxc4/n
-OcrXL8vIyE5CojUA/pOF8Z+M44Yp8vgkJ5ZjhnKJ9OKJ+b1fvv8A/9T1VYn1o+sV31exa8wYL8zG
-cS26xjw0VE7fS9T2v9lsub6n7/8Axta20HLxcfMxrcTJYLKL2Gu1hkS1w2uEthzf7KButDRXYzET
-BnHijfqjto8Bb/jZxrBDukGweD7m/wDpFyEP8aWIf+8Ov/t5v/vKsb60/UTqfRLbMjGY7L6aXHZY
-wF1lbY3bcpjR7dv0fXb+i/4n1PSXLSPFVZZMoNE19A72DlORyREoR4on+vP/AL59DP8AjOod9Do1
-TfjaD/7rtSZ/jEzMixtOJ0ih9zzDGAOscT4NZW1rnLC+r31G671nbcWfY8MmDkXggkaSaaPbZbz/
-AMHT/wAKvT+g/VjpPQqz9jrm97Q23JeZe4DX+rWzd+ZUjGOaW8uEeQWcxl+G4BUcXu5f3ePJwj+/
-LjTdFb1X7ObeqVY+PdZBbTjtMtH7t1jnvbY//i/+mtFJJWQKFOJknxyMqEb/AEY/KPJSo9Xb1E4v
-qdNqouya5IqyAYcI1rre1zPTsd/L/Rq8kkRYpUJ8EhKhKjtL5T5vndn+MDOxbXUZnSaWXVmH1ncx
-w7/Re1ydv+Muv87pFZ+FoH/ohy7HrP1e6X1qoMzqpewEV3MO2xk/uu/75ZvrXm/XfqP1npINtbft
-uIP8LSDuaPG6j3PZ/WZ6taqZBzENRLij5C3oeSyfCeZAjkwjDl/dOTJGEv8AZz4/+a7P/jmY/wD5
-Ts/7eH/vOiM/xoYzNB0wtnnbaP8A0k1eel4W/wDVv6n9S63ay17HY/TwQbL3jaXNn3DG3NPqP/l/
-zSjhlzyNA39ItvmPh/wvFAzyQ4Yjvky/9++i/Vr6xu6/Vde3DfjUVENbY524PcZ3tZDW/wA3+d/X
-W2gYWHjYGLVh4rBVRS3axg8P+/Od9J7kdX4ggDiNnqXlc8scskjih7eO/RC+Ko+Jk//V9VSXC/UX
-/GLl/WnrF3TrsKvGbTjuv3seXElr6qtvua3/AEy7DqeW7C6bl5jGh7saiy5rCYDjW11gaXa/S2pK
-bSh6NPqersb6sRvgbo8N30lyP1C+vWT9ax1A3YjMb7C2ot2OLtxs9bncP+BVb6if4xMv61dVuwLs
-KvGbTjm/ex7nEkPrq27XN/4VJT3SSzfrH1Wzo3Q8zqlVYufi1+o2txIB1A1cFj/UL65ZH1sxcu+/
-GZi/ZrGsaGOLp3N3a7g1JT1SS5b6+fXUfVPDxbK6BlZOXYW11OcWtDGAG6zc0O+i59TNv/CKH1D+
-vdX1sqyWW1Nxc3GcCaGu3B1Tvo3M3bX+2z2W/ufov9Kkp6xJcL1b/GLl9G+uFfQeoYVbMO2ysNzN
-5b+iuhrLyHjZtpsP6b/irV1/Vs9vTOl5nUXN3jDosv2TG702us2bv5e3YkptpLzf6q/42retddxe
-l5mFVi15RcxtzbCYs2l1Tdr2/wCFe30f69i7X6y9br6D0PL6rY3f9mZLK+N1jiK6Wf2rXs3JKb5o
-oNouNbDaNBZtG6P6/wBJEXJfVP67nq/Qczr/AFdlPTcHFsNYfucZ2tY57zub7t77q6qWV/pLLf0a
-wP8Ax3eo5+VbT0DoF2cyrXcC97yzhtj6Mamz0f8At2xJVl9MSXn2B9ffrpk5+Nj3/VbIoputrrtu
-dXeAxjnNbZa4upDfYw7lZ+vn+MPL+qvU8fCpw68ll9AuL3vc0g7317drWn9xJT//1uQ+of1gy+gd
-bvzMTp1nVLLMd9JoqLmua02U2et7Ksj2t9LZ9D/CLtOp/wCMzreX03LxX/VbKpZfRZW60vsIYHMc
-11jv1Nv8233/AElj/wCJhrm/WzL3NLZwbYkR/hsVesfWGf2B1KOfsl8R/wAW9JT5v/iQ465/Vxv/
-AHaWf/iT/wDFLmf+Enf+fcdaX+I5pDutBwiRi8+B+1LG6KOqf4tfrRbd1TCtyMKyt2Ocipp2vrc6
-u1t2O922p9jfSb+hfYkp9P8Ar/8A+I3q3/hc/lauU/xIf8mdT/4+v/qCqX1s/wAZ2F9YeiX9G6Hg
-5bsnN2sc6xjNGBzXv2MofkutdZs9L/BqGFVm/Uf/ABdZhzWmnq3XLCzFoaSLWMfWGb7Gj31W01ev
-d7f5p78euz07UlNd3UKvrZ/jObkX5VVPSekWB1Vj7Gema8Z42em922u37dl/pP8AwvZ/wKBk9QxP
-qd/jLOfhWMs6VmnfZ6L2Ob6OQf1hv6Lc1n2bLY66uj/gKld+pf8Aip6d1joFPU+r3ZNN2UXPproc
-xoFP0anWNuot99m19vtf/MvqS+uv+Krp3RugXdT6RblX3Yrmvurucx49H6Nr2Npoqdurc5ljvds9
-H1UlN7/HV0L1cXD69U2XY5+y5MST6bybMd/7rWV2+qz/ANCGKX1v+tjcj/Ffg2ssL8nq7a8e1xMP
-3Vf098fnM9bH9F3/AIYVv6q3H66f4u8noeW/9ex2fZS55gyzbd03Is2Df6e5ldb/APTfZ7l5d07G
-6h1LN6d9XL97KRmmsAt91br3U05f/bbcbds/4xJTtde6L/zb6b9U+u4o/T21Nvt9sD1Wvb1Ch1jx
-9Kz08n0P+LxV1P8Aje+sGNlfV/pOLiOLx1Nzc1pBAPotZ+iFlf0v0z8n2f8Ahd66X/GT0NnU/qdl
-VUsAs6eBlY7QYAFIPqtgfS/VHXtYz9/YvK/qV0/L+sn1m6ThZkvxenMkyIiil78oVO/fa/Iv9H+p
-akp6769dOf8AVv8AxY9P6PXAc++qvMIMhz3Nuzb/AHfnN+01ez+Qsj6j/XHM+r/RRj4P1bvzjdY5
-9udW54FhB2tb7cW/+Zb+j2+r/wCfF6R9efq5Z9Y/q7f0+gtGUHMuxnPMND2HuRP06nW1f21539Vv
-rt1j6lUWdB650u99NNjjTHsfXuO61jdw9LIofZ+lqsY/8/8AwtdlfppT0uB/jM61lZ2Ni2fVfJoZ
-kWsqdc59hDA9zWGx04bPobt30lzH+O3/AMUGD/4TH/ny1dPg/wCN7p2bnY2G3puSx2VdXS17iyAb
-HNqDj/nLmv8AHWx7vrBg7Wk/qY4E/wCEtSU//9k4QklNBCEAAAAAAFUAAAABAQAAAA8AQQBkAG8A
-YgBlACAAUABoAG8AdABvAHMAaABvAHAAAAATAEEAZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBw
-ACAANwAuADAAAAABADhCSU0EBgAAAAAABwABAAAAAQEA/+ESSGh0dHA6Ly9ucy5hZG9iZS5jb20v
-eGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtj
-OWQnPz4KPD9hZG9iZS14YXAtZmlsdGVycyBlc2M9IkNSIj8+Cjx4OnhhcG1ldGEgeG1sbnM6eD0n
-YWRvYmU6bnM6bWV0YS8nIHg6eGFwdGs9J1hNUCB0b29sa2l0IDIuOC4yLTMzLCBmcmFtZXdvcmsg
-MS41Jz4KPHJkZjpSREYgeG1sbnM6cmRmPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJk
-Zi1zeW50YXgtbnMjJyB4bWxuczppWD0naHR0cDovL25zLmFkb2JlLmNvbS9pWC8xLjAvJz4KCiA8
-cmRmOkRlc2NyaXB0aW9uIGFib3V0PSd1dWlkOmU2NTBlYTY0LWQ2N2EtMTFkYS1iYjVhLWUyZmVh
-OGI3NjFlMycKICB4bWxuczp4YXBNTT0naHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyc+
-CiAgPHhhcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmU2NTBlYTYyLWQ2N2Et
-MTFkYS1iYjVhLWUyZmVhOGI3NjFlMzwveGFwTU06RG9jdW1lbnRJRD4KIDwvcmRmOkRlc2NyaXB0
-aW9uPgoKPC9yZGY6UkRGPgo8L3g6eGFwbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
-ICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9J3cnPz7/7gAOQWRvYmUAZIAAAAAB
-/9sAhAAMCAgICQgMCQkMEQsKCxEVDwwMDxUYExMVExMYEQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwM
-DAwMDAwMDAwMDAwMAQ0LCw0ODRAODhAUDg4OFBQODg4OFBEMDAwMDBERDAwMDAwMEQwMDAwMDAwM
-DAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAEsASwDASIAAhEBAxEB/90ABAAT/8QBPwAAAQUBAQEB
-AQEAAAAAAAAAAwABAgQFBgcICQoLAQABBQEBAQEBAQAAAAAAAAABAAIDBAUGBwgJCgsQAAEEAQMC
-BAIFBwYIBQMMMwEAAhEDBCESMQVBUWETInGBMgYUkaGxQiMkFVLBYjM0coLRQwclklPw4fFjczUW
-orKDJkSTVGRFwqN0NhfSVeJl8rOEw9N14/NGJ5SkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2N0dX
-Z3eHl6e3x9fn9xEAAgIBAgQEAwQFBgcHBgU1AQACEQMhMRIEQVFhcSITBTKBkRShsUIjwVLR8DMk
-YuFygpJDUxVjczTxJQYWorKDByY1wtJEk1SjF2RFVTZ0ZeLys4TD03Xj80aUpIW0lcTU5PSltcXV
-5fVWZnaGlqa2xtbm9ic3R1dnd4eXp7fH/9oADAMBAAIRAxEAPwD1VJJJJSkkkklKSSSSUpJJJJSk
-kkklKSSWb13ruH0TDOTknc92lNI+k93gP5P770CREEk0AvxYp5Zxx44mc5moxHVu5GTj4tLr8mxt
-NTBLnvIAH3rleo/4xMKpxr6bS7JI09V/sZ/Zb/OP/wCguK6v17qHWsg3Zb/YD+ioboxg/kt/e/lq
-qwKjl5yRNY/SO/6T1HJ/8XcWOIlzR9yf+bieHHH/AAvmm9HkfXTr+TIbc3Hae1TQCP7b97lRtz8/
-KJORk22zyHPJH+bO1UmBHYFXlknL5pE/V0I8tgxfzeKEP7sQD/jPof1S6o7O6aKrXTfiwxxPJb/g
-n/8AfFuLz36q5pw+rVAmK8j9E/5/zZ/z16EtHlsnHjF7x9JeT+K8uMPMy4RUMn6yP1+aP+MpJJJT
-NBS5PqWbZlZrrGOLWM9lcGNB+dp+8t/rGScfBeWmH2exvz5/6K5hjFU5ue0B/eP7HS+HYgBLKR/U
-j/3TYp6h1CqNt7iB2d7h/wBJXqOv5LdLq22Dxb7T/Fqz2sUtirxy5I7SLZyYsM/mhH6DhP8AzXos
-XqWLlaMdtf8AuO0P/mStLkiwjUaEcFanTuruBFGUZB0ZafyP/wDJK1i5kE1PQ9+jRz8lQMsR4h1i
-fm+jspJJKy0lJJJJKUkkkkpSSSSSlJJJJKUkkkkp/9D1VJJJJSkkkklKSSSSUpJJJJSkkkklIcvK
-ow8a3KyHbKaWl73eQXj3Xes5PWeoPy7iQz6NNfZjPzWf+TXYf4yuqurox+l1uj1v0twH7rTFTf7T
-9zv+trz5Z/OZSZcA2jv/AHnrv+LnIxhh+9TH6zLYx/1MQ/79IxHYgMR2Kq7k2wxWGKuxWGItWbYr
-JaQ5ujmmQfML07CyRlYdOQP8KxrvmR7l5ixdz9Ucj1el+kTrQ8tjyP6Rv/VK1ycqmY/vD/ouD8cx
-cWGGTrjlX+DN3EkklfedcD6w3bsiqgcVt3H4u/8AOVnsClnXetnXWTI3Fo+DfaPyJMWZllxTkfF2
-8UODDCPYa+cvUUrGogYmYjCITVkpG2u5qC9qtPhV3oL4F1ui55tacW0y9glhPdvh/ZWquQrudRcy
-5n0mGf7wutre2xjbG6teA4fAq9y2TijwneP5OfzuEQmJx+Wf/S6skkklYaikkkklKSSSSUpJJJJS
-kkkklP8A/9H1VJJJJSkkkklKSULba6a3W2uDK2Aue92gAGpcV5f9Zfrjl9Rz2HBsdRiYjw6iNC57
-f8O//vjFFlzRxizqTsG98P8AhubnchjD0xiLnkl8sf3Y/wB6T6mksf6s/WCnrmALdGZNUNyKvB37
-7f8Ag7FsKSMhICQNgtXNhnhySxZBwzgeGQUkkkixvkv13yjk/WTK19tO2pv9lo3f9PesFaf1lJP1
-g6hP/ciz/qlmLHyG5yP9Yvo3JREOVwRGwxwH/MSMR2KuxHYU1km2WKwxVmFHYUWrMNli6n6l3kZG
-RR2exrx8Wnb/AN/XKsK3Pqrd6fWKhMCxrmH7tw/6lS4DWSJ8a/xnM+I4+Plso/qmX+J6/wDuXu0O
-+z0qLLf3Gl33CURUOt2+n0u8zBcA0f2iGrSmajI9gS8rijx5IR/ekI/a8ux06nk6lWGFVGORmuWW
-9BOLba5E3qq16nvSYDBK56C9yYvQ3PSXRgxeV0nQ7TZ02ueWEs+4rl3uXR/Vsz08/wDGO/76p+VP
-6z6Fh+IR/o4PaQdVJJJX3HUkm41K4P6z/WO3Lym04VhZj4ztzbGmC6xv+E/qM/MUeXLHHGzr2Da5
-LksnNZOCHpAFymflj2e9SWH9WfrEzq1Ho3ENzqh+kbwHj/Ss/wC/rcToTE4iUTYLFnwZMGSWLIOG
-Uf5cUVJJJJzEpJJJJT//0vVUkkklKSSWH9buu/sbpTn1mMrImvHHgY91v/WmoSkIxMjsGTBhnmyw
-xYxc8h4Q8x9fvrMb7XdGw3/oaj+tPH5zx/gf6lf5/wDwi4pIuLiXOJLiZJPJJSWTkyHJIyL6DyXK
-Y+VwRw4/0fml1nP9KZdDonWcno3UGZlBkDS2vs9h+kw/99XsGBnY3UMSrMxXb6bm7mnuPFrv5TV4
-eun+pP1l/ZWZ9jynxg5J1J4rsOjbP6jvo2Kblc/AeGXyy/5pc3478M+84/fxD9fiGoH+Vx/u/wB+
-P6D6ikmTrReMfH/rfS6n6yZ7T+dZvHweBZ/35Y667/GTh+l1enLA9uTUAT/KrO0/9B1a5FZGaPDk
-mPE/i+h/Dcoy8ly8x/m4xP8Aeh6Jf86K7eUdhQEVhTGzIaNlhVhhVVhR2FFrTDaYVo9IuFXUsWw8
-C1k/Anb/ABWWxysUWbLGP/dcD9xlGJog9i1M0OKEo/vAx+19VWL9abduBWzu+0fgHFbIIIBHB1C5
-z64WADFrnWXuj/NC0+YNYpeX5vI8hHi5rGPEn/FjxOI1yK16qNeites16CUG0HqXqKsHp96TGYJy
-9Dc9DL1EvSSIMnOXVfV1hb0utx/Pc534x/31cc567zp9H2fBopiCxjQfjHu/6Ss8mLmT2H5tL4qe
-HDCP70r/AMUf+hNhJJZvXusV9KwjYIORZLaGHu798/yGK7KQiDI7ByMWOeWcccBcpGgHJ+t/XTQw
-9NxXRbYP1h4/Naf8H/Ws/wCoXEPKLfa+2x1lji97yXOceSTyVXeVl5chySMj9B2D2XI8pHlsQxx1
-O85fvzXx8zIwsmvKxnbLqjua78rXfyXfnL1LonV6Or9PZl1e130ba+7Hj6TP/IryV5Wr9U+unpHV
-Wix0YmURXeOwP+Du/sO/6Cfy2bglR+WW/wDFj+LfDvvOAzgP1+IXH+vD9LH/AN4+qJJJLSeOUkkk
-kp//0/VUkkklKXkv116uep9ctax04+JNNQ7e0/pX/wBqxem9azfsHScvM701OLf60bWf9NeJkkmS
-ZJ5Kp87PSMO+pej/AOLPLAzy8wR8n6uH96XzqTpk6ovVBSSSSSX0n6hfWT7bjDpWU6cnHb+hcTq+
-sfm/16v/AD2uvXhuJlX4eTVlY7tl1Lg5jvML2HoXWKOs9OrzKva4+22v9x4+mz/yK0OVzcUeCXzR
-28YvHfH/AIb7GX7xiH6rKfUB/k8v/e5HG/xidPOT0RuU0S/DsDj/AFH/AKN//S9NeYr3LMxa8zEu
-xbRNd7HVu+DhtXieZi2YmVdi2iLKHurd8WnaoedhUhP94V9Q6P8AxZ5njwZOXJ9WKXHH/Z5P/Q0K
-mwqCcaKq9A2GOR2OVRjkdjkmGcW2xyKHaFVWuRWuRa8ovrWE7fh0P/erYfvaFzH1zs/XcdvhUT97
-v/MV0PRLPU6Rhv8AGln/AFIXKfXO3/K7G/u0t/EvK0OYP6gePC8n8Nx/0+Q/c9z/AL1zGvUw9VWv
-Uw9UHflBtB6feqwen3pLOBOXqJeg70xekkQb/S6DmdRoo5aXhz/6rfe78i79ct9TMTcb85w/4Kv/
-AKuw/wDULqVocrCsd/vG/o8/8Wy8XMcA2xDh/wAOXqkjyL6sah99ztldYLnOPgF5t1nqtvU81+S/
-Rv0amfusHA/8mtb64dc+0Xfs7Hd+hpP6Zw/OePzP6tX/AFa5dzlBzWbiPAPljv4ydX4NyHtQ9/IP
-1mQekfuY/wDvprPcgvcne5Be5VXdhFi9yA8qb3ILjJQbEA+sfUrqx6n0Sv1Hbr8X9Db4naP0b/7V
-a315v/i2zTV1W/DJ9uTVuA/lVmf+oc9ekLU5efHiiTuPSfo8L8Z5YcvzuWMRUJ/rYeWT/wBD4lJJ
-JKZzn//U9VSSSSU85/jAscz6s3gGN762n4bg7/vq8oC9Z+vtLrfqxk7RJrNbz8A9s/lXkwWfzn84
-P7r1/wDxbI+5yrf3ZX/iwXTpklVd0LpJJJLlLd+qP1gd0XqQ9Qn7HkQzIb4fu3f9b/6hYSSMJGMh
-Ibhiz4IZ8U8WQXCY4T/H/Bfd2ua5oc0gtcJBHBBXnH+MbpP2fqFfUqxFeWNtkdrGD/v9f/ULV/xf
-fWH7TjnpGS6bqBOMTy6sc1/9a/8APf8AUXQfWPpI6v0i/DA/Skb6T4WN9zP876C0Z1nw2N9x/eHR
-43ljP4X8SEch9F8E5dJ4Mny5P+7fGkk7muY4scC1zTDgeQQmWa9uyaYRWuQFJroSQRbaa5Ga5VGu
-RWvSYZQfWfqy7d0DBP8AwQ/Bcl9cn/5dePCqv8hXU/VMz9XcE/8AB/8AfnLj/ro+PrDcPBlf/Uq/
-zH+54f4P/ReV+GR/4U5gdvd/9KuaHqQeqoeph6ou+YNkPT71W3p96S322xvTNLnvaxg3PeQ1o8Sd
-AEDet/6mdOOX1E5bxNOJqPA2H6H+Z9NPhEzkIjqWLmJxwYZ5ZbQF+cv0Y/4T2fS8JuBgU4o5rb7z
-4uPue7/OWf8AWjrY6XhbKj+t5Etq/kj8+3+z+b/LWrlZNOJj2ZN7tlVTS57vILyzq3Vbup51mXbp
-uMVs/dYPoMV7mMoxwEY7kUP6sXn/AIXycub5iWbLrjgeOd/5TJL1cH/ftdz55Mk8lCc9Rc9Dc9Zz
-10YLucguck5yE5yDNGKnOUEkkmV2/qZY6v6y4JaY3Pc0/BzHheuryT6k0ut+s2HtGjC57vg1jl62
-tDkv5s/3nj/+M9fe8ff2hf8AjzUkkkrTgv8A/9X1VJJJJTW6jhszsDIw38X1ur+bhAK8QtqsotfT
-aNtlbix7T2LTtcF7wvNv8YnQTi5o6vQ39BlHbfH5toH0v+ut/wCmqvN47iJj9Hfyd7/i7zYx5p8v
-I0M2sP8AaQ/R/wAOLxydME6oPWhdJMnQXKSSSSSmw8u/CyqsvHdsupcHsPmF7J0bqtHV+nVZ1Onq
-CLGfuvH85Wf6q8VXTfUbr/7M6l9kvdGJmENdPDbOK7P++PVjlc3BPhPyy/Nx/jvw/wC88v7sB+uw
-AyH9fH+nD/uoM/r/ANF+w9V+21NjHzZdpwLB/Ot/t/zi5Zey/WLpDOsdKuxDHqxvod4WN+h/nfQX
-jljH1vdXYC17CWuaeQRoQhzWLgnY+WWv16p+A89945UQkf1uCoS/rQ/yc/8AuWKSSSgddkHQiNeg
-pwYSQRb6/wDVDX6tYH/Fn/qnLivru6PrJeP5FX/UrtPqh/4msD/iz/1Tlw/17MfWW/zrq/6lXuY/
-3PD/AAf+i8p8JF/F+aH+2/8AS0XID1IPVYPUg9UXpDBs70t6r70t6K3gbAc5xDWgucTDQOSTwF6l
-0Dpg6X0urGI/Skb7j4vd9L/N+guL+ovSft3UTnWtmjCgt8Dafof9tt/Sf5i6/wCs/W29G6Y+9pH2
-m39HjtPd5/P/AKtf01c5WIhGWWX08nnfjWWWbPj5HD6pWDP/AGkvkj/gQ9cnmvr1131rx0rHd+ip
-IdkEd7Pza/8ArX/VrkS9Dfa57i97i5ziS5x1JJ1JKgXqrkyGcjI9Xe5Pk4cthhij+iPVL9+f6Ukj
-nobnqBeoEkpjbEGTnKCSSS9SSSLjY92VkV41DS+21wYxo7kpIJABJNAakl7L/Fp04uycnqTm+2to
-prP8p3vs/wA1rW/569BVDofSqukdMpwa9SwTY/8AeedbHq+tbBj4MYj13Pm+f/E+b+9c3kyj5L4c
-f+zh6Y/43zqSSSUjSf/W7i/65dFxus29IyrPQtq2/pnfzZc4b9hf/g3N3fnrca5r2h7CHNcJDgZB
-B8F4R1zLdmdazslxn1L7CPhuLW/9FXehfWvrHRXAY1u/H/OxrJdWf6o/wf8A1tVhzNSIkNL0Idyf
-wTixQlhlWThHFCfyylXq4ZfovtaBm4ePnYtmJksFlNzdr2n/AF+k1YXQfr10fq22m132PLOnpWn2
-uP8AwVv0Xf2l0inEozGhBDkZMWbl8gE4yxzibH0/SjJ8c+sn1by+g5ZY8GzFsJ+z3xo4fuP/AHbW
-rIXuWdgYnUMV+Jl1i2mwQWn/AKpp/Ne1eW/Wf6o5nQ7DdXN+A4+y4ctn8y+Po/11Rz8uYeqOsf8A
-ovV/CfjMeYAw5iI5xoDtHN5f6z+q4CdRTqq7gXSSSSXKSSSSU+q/Unr37V6WKbnTl4kMsnlzf8Fb
-/wB9eub/AMYfQ/suY3qtDYpyjtuA4FoH0v8ArrVgfV/rFvRuqVZjZNc7b2D86s/TH/f2r1nPw8Tr
-XS347iH0ZVYLLBrE+6q1v9X6SvQPv4TA/PH+UXleZifhXxKPMQH9Gz3xRHQS/nYf4H85jfFEkfOw
-r8DLtw8hu22lxa4fD84fyXfSQFRIo0XqYyEgJRNxkLBHUFSSSSSX2H6piPq5gf8AFA/eSuD/AMYO
-n1ksPjVWfwXoH1Zbt+r3Tx/wDD94lcF/jFbH1hn96is/i8fwV/mP9zx/wfyeS+DH/hfP4+9/6UeZ
-DinD1BJUHraSb0Siu3IuropaX22uDGNHdzjDVXXc/wCLroO97utZDfaya8UHx4tt/s/zbf7afixn
-JMRH18mpz/NQ5Tl55pfoioR/fyH5IvYdG6ZT0fpdWI0j9G3dbZxuefdbYV5l9auvHrHVX2MdOLTN
-eOP5IPus/wCuuXX/AOMDrv2LAHTaHRkZg/SEctq/O/7d+h/24vNFY5vIBWKO0d/2ByPgHJylx8/m
-9WTMZe3fY/zmT/D+VkXppKZJVHolJJJJKUkki42NflXsx8et1t1hhjGiSSkgkAEk0BqSUbWue4MY
-C5zjDWjUknsF6Z9S/qmel1/tDOb+vWiGMP8Agmn/ANGv/PU/qp9TKekhuZm7bc8j2jltU/ufvWf8
-IuoV/luW4anP5ug/deT+M/GveEuW5Y/qtsmX/O/1If6v/pqSVXqHU8DptBvzbm0s7buSfBjB7n/2
-VwnXP8YmVkbqOkMOPUdDkPg2H+o36FSnyZoY/mOv7o+Zy+S+G8zzZ/VQ9HXLL044/wCF+l/gPadW
-6/0vo9e7NuDXkS2lvusd/Vr/AO/OVb/nRh/83v27sPpf6GRu3b/S9Of3l5JbdbfY6257rLHmXPcS
-ST5uK1v2i/8A5p/s+dPtm6P5OzdH/biqjnTxE8PpA26793cl/wAWcYxQiMpOaUvVkI9AjwT9Mcf9
-/gf/1+M3lzi52pcZPxKm0qfUaTjdRysciPSusZH9VzmoTSs6Qe0xTsA90oK6XoP146v0nbVY77Zi
-DT0bTq0f8Fb9Jv8A1C5gFTBTBKUTcTTPPFizw4MsBOJ6H/uf3X2non1p6R1poGNbsyIl2PZ7Xj+r
-/pP7C1rK67a3V2ND2PEOa4SCD2IK8EY97HB7HFrmmWuBgg+RXYdB/wAYmfh7aOqA5mONPVGlrR8f
-o3f2/wDPVrHzQOmQV49HD5z4BON5OVlxga+3I/rB/cn+k3frN/i/cwuzOiNLmcvw51H/ABBP0v8A
-i1w7muY4seC1zTDmkQQR2IXtfTOsdO6rR62De21v5zRo5vlZWfcxZ/1g+qPTettNhH2fMj25DBz/
-AMcz/Cf9Wm5eVEhxY616fon+6ych8dyYJexzolUfT7hH62H+1j+n/wBN8jTrR6z9X+p9Fu9PMr/R
-kxXe3Wt3wd+9/Ics1UpRMTRFF6fFlhlgJ45CcJbSibC6SSSDIpeh/wCLrrnrY7+kXu/SUDfjzyWH
-6df/AFty88Vnp2ff07OpzccxZQ4OHgR+cw/yXt9qkw5DjmJdNpeTT+JcmOb5aeL9P5sZ/dyR+X/v
-Xu/8YfQfXx29Yx2zbQNuSB3r/Ns/61/1H9Redr2/EycXqfT68iuLMfKrnaddHCHsd/1D15P9Z+hv
-6L1R+OAfs9nvxnnuw/mz+9X9BT83i1GSO0t/4uV/xe54mMuSzaZMN+3xb8A+fH/exuQkkkqj0L7Z
-0ZmzpGE3wx6h/wBBq4L/ABlsjrGO/wDexx+D3r0PCZsw6Gcba2D7mhcF/jOZGdgv8anj7nf+ZLR5
-kfqPLheL+Bzv4oD+/wC7+Rk8Ukkks57RvdG6Vf1bqNODTp6hl7/3WD+cs/stXr4GF0jpukVYmHX9
-zWj/AKpyw/qN0D9mdO+13tjMzAHOB5ZXzXX/AGvpvWX/AIx+twK+jUO5i3Kjw/wVX/oz/ttXsURg
-wnJL5pfyjF5TnssvinxCHKYj+oxE8Uh/V/nsv/qPG8f1fqd3Veo3Z130rXe1v7rRpXWP6rVSSSVE
-kkkncvUwhGEYwgOGMAIxA6RipJJJJcpJSYx9jwxjS97jDWtEknyAXZ/V7/F9dftyuszTVy3FGjz/
-AMa7/B/1f5z+on48cshqIv8AJrc3zuDlYceaYj+7Hec/7kXneifV7qXWrvTxGRU0xZe7Rjf7X5zv
-5DV6d0H6tdP6HTFDfUyHCLch30j/ACW/6Ov+QtLHx8bDobTQxtNFY0a0Q0ALmuu/X7p2BuowIzck
-aSD+iaf5Vg/nP+tq9DFjwDimRxd/+9Dy3M89zvxXJ7PLwlHD+5H/AKWfI9NkZFGNS6/IsbVUwS57
-yAB8yuL67/jFrZuo6Mz1HcHJsHtH/FV/nf8AXFx3VeudT6vb6mdcXgfRrGjG/wBSsKgoMvOSOkPS
-O/6Tp8h/xcxY6nzR96f+bH8zHz/zifMzszOvN+Zc6+0/nPM/Jv7qAkkqpJOpd6MYxAjECMRoANAF
-Iu532Xb+b6k/OEJaH2R37A+2R7ftfpT/ANb3ogbolIAxHc0P8WRf/9DN/wAYfT3YX1oyXR+jyw3I
-Yf6w22f+CseucaV6t/jO6G7O6SzqVLZu6eSXxyanfzn/AG273/8Abi8nVLNGpnx1el+H5/c5eBv1
-QHBL/BTNKmCgtKICoSHUxzSgqQKGCpAphDZjJtYmZlYd7cjFtdTa3h7DBXddB/xkNdtx+tM2ngZV
-Y0/67UP+qr/7bXnoKkCnQyzxn0n6dGLmuR5fm41lhZ/RnH05I+Un3ScHqWJp6eVi3DyexwXFdf8A
-8XRG7J6K6RycR5/882u/6iz/ALcXIdJ671Po93q4NxYD9Oo6sd/XrXonQfr70zqW2jMjCyjoA4/o
-3H+RYfo/1bFZGTFmHDMcMv5fLJw5cl8Q+GSOXlZHNh3lGr0/1uH/ANSY3zK+i/GtdTkVuqtYYcx4
-IIPwKgvaOrdC6X1mn082oPIHstbo9v8AUsXnvXfqH1Ppu6/EnNxRrLB+kaP5dX53/W1Bl5WcNR6o
-+G7qch8d5fmKhk/UZf3ZH9XL+5P/AL55lJLUGDoQkq7sPdf4uOtbX2dHudo6bcafH/C1j/z5/wBu
-LpfrV0JvWulvqaB9qpl+M7+UP8H/AFbforybDy7sPKqyqDttpeHsPmCvaOmZ9PUsCjOp+hewOjwP
-D2f2H+1X+WkMmM4pa1/0f/QXlPjmCfKc3j57D6eM2f6ueP8A6th/6kfE3sfW9zHgte0lrmnQgjkF
-Sx2b8ipn7z2j7yuy/wAYX1e9K39s4rf0dpDcpo7P4bd/1z6L/wCWuW6LV63WMKr9++sH/Oaqk8Zh
-k4D30eg5bnYcxyn3iGnpJnH9ycB64vtQECPBcP8A4z6/0XT7PB1rfvFZ/gu5XH/4zKt3Sca39y+P
-85rv/ILQ5kXhn5PHfBZcPxHAe8pR/wAaEovm66X6j/V/9qdR+1XtnDxCHOnh7+a6v+/2LCwMHI6h
-mVYeM3dbc4NaOw8XO/ktb7l7H0jpdHSun1YNA9tY9zu7nn6djv6zlT5XDxy4j8sfxL0nx34j92we
-1jP67MKHfHj/AEp/9zBJ1LPp6dg3Zt383QwuI8T+awf13e1eL5uZdnZd2Xed1t7i9x+PYf1V2P8A
-jH61vtq6PS721xbkR3cR+iZ/Zb71w6PN5eKfANo/9JZ/xe5L2eXOeY/WZ9R/Vwj5f8f51JJK503p
-PUOqX+hg0utd+cRo1o8XvPtYqwBJoCy7U5xhEynIRjHUykeGI+rTWz0P6q9U604OpZ6WNPuybBDf
-7H+ld/VXYdC/xfYWHtv6oRl3jUVD+aafP863+17F0XUOqdN6RjC3LtbRWBDGDkx+bVW36St4+U04
-sp4R2/iXA5z/AIwXL2eRgc2SXpGSrjf+rx/ptPoX1V6X0VodSz1sqIdk2CXf9b/0Tf6qbrn1r6V0
-YFlr/Wyu2PXq7/rh+jV/aXHde/xgZ+duo6aDh450Nk/pXD+sP5r+x/nrkyS4lzjJOpJ5JTp81GA4
-cIHn0YuW+BZ+Yn7/AMQySJlr7d3P/Dn/AJOP9TG7XXPrb1XrJNb3+hinjHrJAI/4V30rViJJKnKU
-pG5Gy9FhwYsMBjxQGOA/RipJJJBkUkkmSQpeg/sN/wD43fp7T6237bEa87//AG3XH/V/pNnV+rUY
-TR7HHdc7wrbrYf8Avq9l9Kv0vS2j09uzZ22xt2qaEP1WSflEf40XN5nmh9/5PlgdScmWfkMOWMP+
-7f/R9TexljHV2NDmPBa5p1BB0c0rxT64/Vm3oHVHMY0nByCX4tnOnelx/fqXtqoda6NhdawLMHNb
-Nb9WvH0mOH0bKz+81MyY+MeI2bXJc2eXyWdYS0mP+6fAwVNpWl9Yvq31DoGYcfKbuqcT6GQ0ex48
-v3X/AL9aygYVKUSDRelxZYyAlE8UTsQmBUwUFpRAUwhtwmlBTgoYKkCmENiMkgKdQBUgU2mUSei6
-B9dOq9ILanu+1YY09Gw6tH/A2fSZ/wBQvRui/WTpfWq5xLYuAl+O/Sxv9n89v8ti8YlTputpsbbS
-91djDLXtJBB8nBTYuZnDQ+qPY/sc3nvg3L81c4j2cx/TiPTL/aQfW+t/U/pHWN1jmfZ8o/8AaioA
-En/hGfRsXn/W/qh1jo82Pr9fGH+HqkgD/hG/SrW59X/8Ytle3G60PUZwMpg9w/46sfT/AK7F3eNk
-42ZQ2/GsbdS8aPYQQVYMMOcXH0y/H/Ci5Eea+JfCpDHmHu4No8Xqxkf6rL+h/c/5j4au4/xb9Z22
-W9Hud7Xzbjz+8P51n9pvvW31v6i9I6lutxx9iyTrvrHsJ/l0/R/zNi4nK6F176s51Waai9mO8PZk
-V+6swfz/AM6vd/wigGPJgmJ1cRuY/uupLneT+KctPlxL280hcIZPTL3Y/JwS/TfVsjHpyqLMe9of
-Va0se08EFebYPQL+lfXbEwny6sW+rRYfzq2h1jT/AFm7Nr16Pg5dWdh05lP83ewPb8xwiOppfYy1
-zGusrn03kAubu+lsd+buVzJijk4ZfukSB/qvOcnz2XkxnxEExywnjlA/oZa4Iz/wf0ma5r/GFUbP
-q493+itrefv9P/0YulULqab6zVcxtlbvpMeA4GNfouT5x4oSj3FNflc/scxizVxe3OM6/eEejyv1
-D+rn2DE/aWUyMrKb+jaRqyo6/wCfb9JdJ1LPp6dg35tx9lDC6PE/ms/tu9qsriP8YOdk5NuP0LCY
-+2x8XXMYC4n82pvt/tPUcqw4vT00H9aRbeL3PiXPg5TQmeLJr6cWDHvH/F9LwmZlXZmVblXndbc8
-vefMlLEw8rMuFGLU6613DGCSuv6L/i5yLdt3V7PQZz9nrILz/Xs+hX/Z3ruOn9L6f0yn0cGhtLO8
-D3Hze8+96qY+UnPWfpB/xnoOc+P8ry49vlwM04jhHDpghX9f9L/AeO6J/i4Ptv6zZ5jGqP8A59t/
-9J/9uLtKaMHpuLspZXi41QkxDWgfvOd/5JZfXvrd0vozTW532jL7Y9ZEg/8ACu/wX/Vrzjrf1l6p
-1p/61ZtoBlmOzRg+X57v5T1MZ4cAqA4p/wAvmk5uPlfiPxWQyZ5nFy+4scMP+o4f0v8AaTet69/j
-Epp3Y/Rmi6zg5Lx7B/xbP8J/a9i4TMzcvOvORl2uutdy55n5D91ASVTJmnkPqOnbo9FyXw7luUjW
-KHqPzZJerJL/AAlJJJKNuKSSSSQpJMkkq1JAEkACSdAAkASQAJJ0AC9B+pf1MdjuZ1TqjIuHux8d
-35n/AAto/wBJ+4z8xSYsUskqH1PZp89z2LlMRyZDr+hD9LJLsHU+pP1cPR8A35LYzsoA2A8sZ+ZT
-/wB+sXSJJLS9qPt+3+jVPE/f8/3v73f63i4v6tfL7f8Ac4PQ/wD/0vVUkkklNbqHTsLqWK/Ezqm3
-0P5Y7x/eafzHt/eavNPrF/iyz8RzsjoxOZj8+g6Bc0fyeG3f+fF6okmTxxlv9rY5fm8uA+g+nrA/
-KX53tqux7DVex1VjdHMeC1w+LXJBy99z+k9M6kz08/GryG9t7QSP6r/ptXOZn+LH6t3kuo9bEceB
-W/c0f2bhZ/1Sgly8uhBdbD8Zxf5SMoHw9cXygFTBXojv8U2HPs6jYB51tP8A35qQ/wAU+P8A+WT/
-APtof+lFGeXydvxbsfjPJ9ch/wAWf/evnoKkCvQf/Gpo/wDLJ/8A20P/AEqn/wDGqx//ACxf/wBt
-D/0om/dsv7v4hlHxvkf86f8AEyf96+fAp5XoP/jV4/8A5Yv/AO2h/wClE4/xWY//AJYv/wC2h/6U
-Q+65f3fxDIPjvIf50/4mT/vXz6Vo9H691Lo1/q4VpaD9Op2rHf12f9+XYf8AjW43/lg//tsf+TT/
-APjXYv8A5YWf9tj/AMmkOWzA2BR80T+NfDMkTDJPjhLQxljmR/0XY+r31z6b1kNpsIxc0/4F50cf
-+Bf+d/U+mugIDgQRIOhBXED/ABX4oMjqFkjgisf+TXXdNw7MLBqxbb35T6hHrWfScJ03f1foq5iO
-WqyR/wAJ5vn4ciJcfJ5SQTrilGY4PGM5/othrGsaGMAa1ugaBAAUkklK0FJJJJKUo7Gb9+0byI3R
-rHhKkkkpBmZuJg0Oycu1tNLOXOMfIfvOXn31h/xg5WXuxukzjY50N5/nXf1P9C3/AMEXR9e+po63
-mnJvz7WMAAro2hzGQIds1b9JZv8A42GJ/wBz7P8Attv/AJJVs3vyuMBwx736pO38NPwnCI5eZyHL
-m34Djn7WI/4v6yT585xcS5xJJ1JPJKS9B/8AGwxP+59n/bbf/JJf+Nhif9z7P+22/wDklV+65v3f
-xDu/6f8Ah3+dP/heT/vXz5Jeg/8AjYYn/c+z/Mb/AOSS/wDGvxP+59n/AG23/wAkl91zfu/iFf6f
-+Hf50/4mT/vXz1Jehf8AjX4n/c+z/ttv/kkv/GvxP+59n+Y3/wAkl91zfu/iFf6f+H/50/4mT/vX
-z1Jehf8AjX4f/c63/Mb/AHo1P+LLpLHTdk32j90bW/8AfXI/dMvYfatP/GD4eBpkkfAQm+bLT6T9
-XOsdXeBiY7vTPN7/AG1j+276X9henYH1Q+r2AQ6rDY94/Ptmw/8Agkt/6K2AABAEAcAKWHJfvy+k
-f4ufzP8AxmFEcviN/v5f/VcP+/ec+rv1J6f0ctyLiMrNGoscPaw/8Cz/ANGOXSJJK3GEYCoig89n
-5jLzEzkzTM5HqfyiP0VJJJJzE//T9VSSSSUpZHXfrR0zoBqHUPVaLwfTcxhc0lv0m7v3tVrrL+sn
-Qsfr3SrcG2GvPuot/csH0H/99f8AyEJXRrdkxe37kfcvgv1cO7iO/wAaP1YHAyHfCsfxehu/xq/V
-0cU5Lv7DP/Sq8tzcLJwMu3DymGu+hxZY0+I/76781AVU55+Dtj4XypAI4iD/AFn1R3+Nnog+jiZL
-viGD/wBGIR/xtdP/ADen3H4vaP8AyS8wSS9+ff8ABePhfKjeJP8AhSfTD/jax/zemvPxtA/9FqB/
-xsH83pv32/8AqJecBymHJpzZP3vwDND4ZyX+av8Awp/989+7/GtmH6GBUPjY4/8AfWqJ/wAafUzx
-h0D4l5/78uEDlIFMObL+82I/DOR/zI+2f/fPbO/xodaP0cbGHyef/RiC7/GV9YXfRbjs+DCf+qsK
-5EEkwNSeAuy+rX+L7MztmV1Xdi4pgtp4tePP/Qs/rfpEozzTNRkUZuX+GctDjy4scR0BHFKXhGLZ
-6R9aPrt1vI9DBFUD+ctNYDGD+W87v81eiViwVtFhDrABvIEAuj3FoQsLBxMDHbjYdTaaWcMaI+Z/
-ecjq5jhKI9UjInu83zvM4s0x7OGGDHH5REeuXjkkpJJJSNRSSSSSlJJJJKcH60X/AFmxam5PRRXZ
-VW0+vUW7rP67B+c3+S1cYP8AGL9YmmHCgkcg1n+DwvUVzf1j+pXT+sB2RRGLnHX1Wj2vP/DMH/nz
-6agzY8h9WOZH9W/+i63w3nOSiBi5vl4Sj0z8NzH+1/e/vPMN/wAZnWh9KjGd/ZeP/RimP8Z3VO+J
-QfhvH/flzPVekdR6TkehnUmt35ruWOH71b/ouVKVTObMDRkQfF6OPwz4bkiJxw45RlqJRJ4T/iye
-3H+NDO/Owaj8HuH96K3/ABo2fn9PHytP/pNcHKUpfeM3734BB+DfDj/kB9JZP+/fQG/40qvzunO+
-Vo/9JqY/xo4f52BYPg9p/wC+hedylKP3nN+9+AWH4H8P/wA0R/h5P++fSW/4z+lH6eJePhsP/f2o
-jf8AGZ0I805A/ss/9KLzGUpTvvWXuPsYz8C5DpGQ/wAMvqQ/xk/V48tyB/YH/k0Rn+MX6tuIAddJ
-0A9Mkk/2SV5RK7P/ABe/Vk5eQOsZbP1bHd+rtP59g/P/AKlP/nxPx58s5CIr7Gpzfwn4fy+GWWZy
-AR2HH88v0Yj0vpLHbmh0Fu4AwdCJ8VJJJXXmVJJJJKf/1PVUkkklKSSSSU8r9d/qbX13H+14gDOp
-0thp4FrR/gbD+9/onryG+i7HufRex1V1ZLX1uEOBHZwX0Que+tH1M6b9YGeq79XzmiGZLRzH0WXN
-/wAIz/pqHLi4tY7/AJulyPxD2qx5dcf6MusP/QXxRJbHW/qn1vojz9roLqAfbk1y6sj+t/g/+uLH
-VYgg0RTtwnGcRKEhIHqFJwUyudN6R1Pql3o9Pxn5D+5aPaP69h9jP7SFWuMhEWSIgdS1g5avRPq/
-1Xrd3p4NJcwGH3u0rZ/Xs/7433rs/q//AIraai3I65Z6zxr9lqJDP+u26Of/ANbXeY+Nj4tLaMat
-tNNYhlbAGtA+AU0OXJ1loO3Vz+Y+MxgDHCOOX75+Qf8AfPP/AFc+o3TOiht9oGXnDX1nj2tP/A1/
-m/1/prpUklZjERFAU4mbNkzTM8kjOR7/ALFJJJIsakkkklKSSSSUpJJJJSkkkklNfO6fh9Qx3Y2Z
-U26p3LXDg/vNP0mO/qrzz6w/4vMzE3ZPSS7Kx+TQf51o/k/6b/z4vS0lHkwwyDUa9+rc5P4hzHKS
-vHK4H5sctccv+9fA3BzHFrgWuaYIOhBTSvY+u/VLpHWwX31+lkxpk1QH/wBv823+2vPOt/UXrfSy
-6ytn23GH+FpBLgP+Ep+m3/pqlk5acNR6h3D03J/GeX5gCMj7WT9yZ0/wJvPSlKiTBg6EchNKip0D
-NlKaU9NV2RYKqK3W2O0axgLnH+y1dr9Xf8W+Ve5uT1sminkYzT+kd/xjh/NN/wDBP6ifDFKZoBrc
-zzuHl48WWYHaP6cv7sXJ+qf1UyevZIssDq+nVH9Ndxuj/A1fy/8Az2vXMfHpxaGY+OwV01NDWMbo
-AAmxsajFoZj41baqaxtZW0QAEVX8WIYx3J3LyfP8/k5vJZ9OOPyQ/wC6l/XUkkkpGkpJJJJT/9X1
-VJJJJSkkkklKSSSSUsQCCCJB5BWVl/VT6uZji/I6dQ57uXNbsJ/tVbFrJIEA7i10ZyibjIx/unhc
-Oj6k/VWgyzp1Tj/L3P8Awsc9bFNFNFYrorbVWOGMAaB/ZaiJJAAbABM8k5/PKUv7x4lJJJIrFJJJ
-JKUkkkkpSSSSSlJJJJKUkkkkpSSSSSlJJJJKUkkkkpz876v9F6i7dmYdVr/3y2Hf9uM2vVGv6jfV
-at24YDXHwc57h/muet5JNMInUxH2MseZzxHDHLOMewnIBrYfTsDBZsw8evHb4VtDfv2qykknVTGZ
-GRskknqVJJJJIUkkkkpSSSSSn//W9VSXjjv8dvXA4j9n4uhjmz/ya7v6gfWvL+tPS783LprofTea
-mtq3QQGsfuO8u/fSU9QkkkkpSS4j/GD9fM/6qZWHTiY1OQ3KY97jbukFpa327HN/eWH9Xf8AG31f
-q3XMLptuFj115dzanvaX7gHd27nJKfU0kLKtNONbc0Sa2OeAeCWguXkP/j3dc/8AK/F++z/yaSn2
-NJc99RvrJk/WXoY6nlVMosNr69lc7YZt195d+8uhSUpJJeafW/8AxpdV6B9YcrpWPh49tWPs22PL
-9x31stO7a4N/PSU+lpLz/wCon+MfqX1n6y/p2Vi0UVtodbvrL90tcxu33ud++vQElKSSXIf4wPr0
-76qVYteLVXkZmUS707CYbU3QvOyPpP8Aaz+2kp69JeOf+Pd1z/yvxfvs/wDJr0n6o/WKv6ydCo6m
-1oZa6WZFTdQyxv026/8AbjP5D0lO0kkvKuvf42PrD0brGX0y3AxS7FscwO/SDc3mqz6f59e16Sn1
-VJcD9Qv8ZOT9Zuq29NzserGeKjbQai73FpHqMPqOd+a7eu+SUpJJeZfWv/Gzn9G6/l9MwcSi+nFc
-GepYX7i/a02j2Oa32POxJT6akvHWf47us727+n42yRug2TH5233r17HvryKK8io7q7mNsYfFrhua
-kpIkksL66fWQ/VroNvUmMbbfvZXRU8kNc5x77fd7aw96SndSXjn/AI93XP8Ayvxfvs/8mvV+j5GZ
-ldKxMrOrbTlX1NstqZO1pcN+z3S72ykpuJLO611/pHQsb7T1TJbjsM7GnV7yPzaqm++z+yuB6l/j
-uxGOczpnTn3AH22XvFYP/Wqxb/58SU+npLxw/wCO7rU+3p2MB5mw/wDfkv8Ax7uuf+V+L99n/k0l
-PsaS8p6J/jf6x1LrGF0+zBxmV5d9dL3tL5Ae4MLmy7zXqySlJLyPP/xzdaxc7Jxm4GM5tFr62uJs
-khjiyT7/ACQP/Hu65/5X4v32f+TSU//X8rf9N3xK9m/xKf8AidzP/DZ/891Lxl/03fEr1b/FJ1/o
-nTOhZVPUM6jFtflFzWWvDSW7Kxuh3wSU+ppLF/55/VP/AMt8T/t1v96X/PP6p/8Alvif9ut/vSU+
-d/48P+UOlf8AE2/9Uxch9Rf/ABYdI/8ADLPyrpP8cHV+l9Uzumv6dlVZba6rBYaXB4aS5sbtq5v6
-i/8Aiw6R/wCGWflSU/QvUP8Ak/J/4mz/AKly+XV9RdQ/5Pyf+Js/6ly+XUlPuf8Aie/8Rzf/AAzb
-/wB8XbriP8T3/iOb/wCGbf8Avi7dJSl8/wD+NH/xcdR/6z/55qX0Avn/APxo/wDi46j/ANZ/881J
-KdL/ABM/+Ku3/wAKWf8AV1L25eI/4mf/ABV2/wDhSz/q6l7ckpZzmtaXOIDWiSTwAF85fXXr5+sH
-1jys9pJxw70sUeFTPaz/ALc/nf8Ari9b/wAan1h/ZH1afjUu25XUyaK4Oorj9Zs/zP0X/XV4n0np
-t/Vep4vTsf8AncqxtbT4bj7n/wBhvvSUtldMzMTFxMu+vZTnsdZju/eaxxqf/wBJq7b/ABPfWH7B
-1qzo97ox+pD9FPAvYJZ/27XvZ/20ux/xi/VOjI+pbKsKuH9EYH44A19Jjdl7P+2m+r/1peJY2Rdi
-5FWTQ4supe2yt45Dmnc13+ckp+pl4/8A46ei+j1LE61WPZls9C4/8JXrWf7dTv8AwJem/VvrNXXe
-iYnVKoH2hgNjR+bYPZcz+zY1yz/8YHRf2z9Vc3Ha3ddS37RR476vfA/4yv1K/wC2kp8N+q3Vj0b6
-w4PUZhlNrfV863fo7h/209y+lAQ4BzTIOoI4IXysvof/ABfdX/a/1Twb3GbaWfZrv61X6P8A6dfp
-2JKd3Lya8TEuyrdK8et1r/6rAXu/6lfMOdl2ZubfmWmbMix9rz5vJefyr3f/ABo9U/Z/1PymtMWZ
-pbis+Dzut/8AAWWLwrpuFZn9QxsGoTZk2sqb8XuDP4pKa697/wAVvVx1L6o41bjNuATivHeGe6n/
-AMBexeY/4z+h19H+tDxQz08XKqZdS0CAIHo2NH/XKt39tbH+Jbq/2frOV0l7oZm1epWCdPUq8P61
-T3/9tpKfZV5L/jt6sH5OB0dh0qa7JtHm79FT/wBFtq9aXzj9durftj60dQzQ7dV6prpPI9Or9DXH
-9bZvSUw+p3Rz1r6y4GARuqfaH3d/0df6W2f6zWbF9CdY6pjdH6Xk9SydKcWsvLRoSR9Ctv8AKsf7
-GrzP/En0fdbndasbowDFoPmYtv8A+j6K1v8AHT1B1H1fxcFhj7ZkS/zZU3ft/wC3H1JKfKev9e6h
-1/qVvUc95dZYfYz82tn5lVTfzWNV/wCqn1H6z9aLHHDDacWo7bcq2QwH9xm33W2fyVz698+qvW/q
-l0j6u4GA3qmIx1dLTaDawH1Hj1Li7X6XqOckp5qv/EbVtHq9Xdu77aBH/SuUv/GNxv8Ay3f/ANsD
-/wBLLuf+eH1V/wDLbE/7eZ/5JL/nh9Vf/LbE/wC3mf8AkklPI9J/xO4/TOqYnUW9UfYcS5lwrNIG
-7Y4P2bvVdt3QvRllUfWr6t5FzKKOp4tl1rgyuttrS5zjo1rWg/nLVSU/MPWv+Wc//wAM3f8AVuVN
-XOtf8s5//hm7/q3Kmkp//9Dyt/03fEo2P0/PymF+NjW3sBgurY54B8JYCgv+m74lezf4lP8AxO5n
-/hs/+e6klPkn7F6x/wBwMn/tl/8A5FL9i9Y/7gZP/bL/APyK+nkklPy1kYeXiloyaLKC7VosY5kg
-fu7w1bH1F/8AFh0j/wAMs/Kuv/x4f8odK/4m3/qmLkPqL/4sOkf+GWflSU/QvUP+T8n/AImz/qXL
-5dX1Jl1mzEurHL63N+8EL5bcC0lp0IMFJT7n/ie/8Rzf/DNv/fF264D/ABMZdVv1YvxQR6uPkuL2
-9w2xrHMd/a2vXfpKUvn/APxo/wDi46j/ANZ/881L6AXzv/jDy68z659UtqO5jbRVI8amMof/ANOt
-JTtf4mf/ABV2/wDhSz/q6l7cvFv8StDn/WTKu/NqxHA/Fz6o/wCpXon+MH6xfsD6tZF9btuXkfq+
-L473j3WD/ia99iSnyP8AxkfWL9u/WW41O3YeF+r40cHaf0to/wCNt/8AA/TWz/ifwMEdTyOs511V
-QxG+ljC17Wk2WD9JY0PP5lXt/wCurz1LafApKfp1/VujPaWPzcZzXAhwNrIIPI+kvnb60dKq6R13
-LwaLG247Hl2PYxwcDW/31e5n5zWu2PWXtPgUoPgkp9N/xMfWI1ZWR9X73ezIm/Fns9o/TsH9esb/
-APrS9cIBEHhfL/TOoZHTOoY/UMY7bsWxtjPPafon+S/6K+luldRx+q9Nxuo4xmnKrbYzykasP8pj
-vY5JT89/XTop6J9Zc7ADdtIsNmP/AMVZ+kq/zN3prtP8SfWNmVndFsdpc0ZNIP7zP0d0f1mOr/7b
-Vn/HZ0XdVg9brbqwnFyHDwM245P9r1lwH1O6uejfWXAz521stDLv+Ls/RW/9B6SntP8AHb1Tfm9P
-6Sw6UsdkWj+VYfTrn+xW/wDz1i/4pul/b/rdVe5s14Fb8h08bv5qr/p27/7Cy/r71QdV+tnUclrg
-+ptvo1OHBZV+haW/1tm9ehf4k+mel0rO6m4e7JuFLD/IqG4x/wBcu/6CSmf+OnpPr9FxeqMbL8K3
-07Hd/Tt0/wDPzK/89eWfVzqruj9dwepDjGua5/mwnZcP+2nPX0P9Y+lt6v0LO6aRJyKXNZ5PA3VH
-/t1rF80PY5jix42uaSHA8ghJT9IfWzrDOlfVjO6kxw3NpPoHxfZ+jo/6b2r5uXc/Wb62/tD6gdD6
-aLJyC5zcsTrGL+ho3/8AGtsZZ/YWB9TejnrX1lwMAjdU60Pu/wCLr/S2/wCc1mxJT7j9ROj/ALG+
-q2BiOEWvr9a/+vb+ld/mbvTXF/48Z9PpH7s3/fFK9SAAEDhef/45+mvyPq9jZzBJwb/f5MtHpl3/
-AG62lJT4srjei9YcA5uDklpEgil5BB/sqmvpH6n9Vo6t9Wun5dLg79Cyu0TJbZWBXax39pqSn57/
-AGJ1n/uBk/8AbNn/AJBL9idZ/wC4GT/2zZ/5BfTqSSn53+qnSOrVfWfpVlmFkMYzLpLnOqeAAHt9
-znFq+iEkklPzD1r/AJZz/wDwzd/1blTVzrX/ACzn/wDhm7/q3Kmkp//R8rf9N3xK9m/xKf8AidzP
-/DZ/891Lyp3/ADe3Gftkyf8ARL1v/E99i/YOX9j9X0/tRn1tsz6dX0fT/NSU96kkkkp8h/x4f8od
-K/4m3/qmLkPqL/4sOkf+GWflXc/45f2b9v6b9t9efSs2ejsiNzfpeouU+pf7E/519K9D7V6v2lmz
-f6e2Z/O2+5JT7+vn76//AFRzPq91m60Vl3Tcqx1mLeBLRuO80PP5tlX/AE2L6BVTqv7L/Z937X9H
-7Bt/T/aNvpx/K9T2pKfnb6t/Wfqv1azvtnTnj3jbdS8TXY392xoLf7L2r0Cj/HizYPtHSDv7mu7T
-7n1LmPrR/wCNt67/ANi/bd8mfSj0P7H2r9OuSs9PefS3bO26J/BJT6J1r/HP1XLx30dLxGYBeC03
-uf6tgB/0XtrYx/8AK968699j+77Hn4kk/wDVOcrWD+yd4/aH2jZ39DZP/gq9Y/xff+Np69f7Kn9q
-6bPt/wDPT/wH/afd/wAR+kSU3v8AFV9U8noXS7s7PYas3qBafSd9JlTZ9Nr/AN2x7n73tXDf42vr
-F+1PrD+z6XTi9LBq04NzoOQ7+zDaf+tr23K9b7Nd6H89sd6XH0oOz6Xt+kvm7I/Ynr2faPtvr73e
-ru9Pdvn37v5W5JTsf4sugjrP1poNrd2Ngj7VcDqCWEeiz+1cWf2F719no/0bP80Lz7/E3+xfsHUf
-sHqfafVZ6/rbd2zafQ2+n+Zu9ZeipKR/Z6P9Gz/NCqdV6PhdU6bk9PuraK8mt1ZcAJBI9r2/ymO9
-6vpJKflzOw78DNvwshu27GsdVYP5TTtK9T/xMfWL1MfI+r97vdTORiz3Y4/p6x/Us/Sf9cXP/wCM
-z/m5/wA7sqfX9fbX9p9HZs9TaP3/AM70/T3qn9RvsP8Azr6d+yvtf2r1R9L09vpwftHqR/g/Q9RJ
-T7N9aujt639X83ppEvuqJp8rG/pKT/241q+bHNcxxY4FrmmHA6EEL6pXz39a/wDmz/zk6l6X2rb9
-psn0/T2bt36X093u2erv2pKeZX0f9Sul/sr6rdOwy3bYKRZaO++39PZ/0rF4Pg/82ftuP632v0vV
-Z6m70427hu3R+btX0k3btG36MaR4JKXXzz/jD6T+yvrdn0taG1Xv+01Acbbf0hj+rZ6jF9DLyj/H
-J+xP2n0/7X632r0Hz6Oz+b3fo9/qfy/VSU+WL1L/ABJ9HmzP61Y3RoGLQSO5i2+P/AV59/2Pf93P
-/Al7f/iy/Zv/ADQxP2du9PdZ6vqRv9Te7f6mz2/R2f8AW0lPVKt1Lp+N1PAv6flt34+Sw12DvDhy
-3+U36TVZSSU/OH1q+qnUvqz1B2NlsLsdxJxsoD2WN+P5tn+krQ/q/wDWvrn1ctc/peQa2Wa2UuG+
-txHd1bvzv5bPevoTrf7F/Ztv7c9H7BH6T7RGzy+l+f8AubPevFPrD/42Pru/ZX7QmTPo7fR/sfa/
-06SnRZ/jq+srWgPxcN5/e22D/wBHJ/8Ax6/rH/3Dw/8ANs/9LLjj/wA3Z0+2R/1pL/se/wC7n/gS
-Snv+hf43evdS6zg9PuxMVtWVfXS9zRZuDXuDHFs2u92q9aXz19Vf2H/zm6V6P2v1ftdOzd6e2d7Y
-3R+avoVJT8w9a/5Zz/8Awzd/1blTW51f9gftbN3/AGvf9ot3R6cTvdMKp/2Pf93P/AklP//Z
- OPEN SOURCE SOFTWARE NOTICE CONFIDENTIAL DATE \@ "yyyy-MM-dd" 2020-12-15 HUAWEI Confidential Page PAGE 358 , Total NUMPAGES \* Arabic \* MERGEFORMAT 520
\ No newline at end of file
diff --git a/README_en.md b/README_en.md
deleted file mode 100644
index aa66f0c..0000000
--- a/README_en.md
+++ /dev/null
@@ -1,258 +0,0 @@
-
-
-
-
-## What is openGauss-connector-jdbc
-
-openGauss is an open source relational database management system. It has multi-core high-performance, full link security, intelligent operation and maintenance for enterprise features. openGauss, which is early originated from PostgreSQL, integrates Huawei's core experience in database field for many years. It optimizes the architecture, transaction, storage engine, optimizer and ARM architecture. At the meantime, openGauss as a global database open source community, aims to further advance the development and enrichment of the database software/hardware application ecosystem.
-
-**Java Database Connectivity** (**JDBC**) is an application programming interface (API) for the programming language Java, which defines how a client may access a database. It is a Java-based data access technology used for Java database connectivity. It provides methods to query and update data in a database, and is oriented toward relational databases. openGauss-connector-jdbc is to provide users with access to the database through the Java language application interface . Users can use the jar package provided by the openGauss official website (refer to the [Direct Access section](#1)) or build their own jar package ([refer to the Building from Source section](#BuildfromSource) to operate the database using JDBC.
-
-
-
-
-## Direct access {#1}
-
-Before using the openGauss JDBC driver, make sure your server is up and running with the openGauss database (refer to the openGauss [Quickstart](https://opengauss.org/en/docs/latest/docs/Quickstart/Quickstart.html))。
-
-### Get from maven central repository
-
-Java developers can get jar packages directly from the maven central repository with the following coordinates:
-
-```
-org.opengauss
-opengauss-jdbc
-```
-
-### Get from the community website
-
-1. Download the installation package from the official website.
-
- Click on [link](https://opengauss.org/en/download.html) and under the openGauss Connectors section, select the download button for JDBC_${version} according to the corresponding system of the server where you are deploying the database. ${version} is the version number you need.
-
-2. Decompress the zip file.
-
- ```
- tar -zxvf openGauss-${version}-JDBC.tar.gz
- ```
-
-3. After unpacking, you can see two jar packages in the same directory, opengauss-jdbc-${version}.jar and postgresql.jar. opengauss-jdbc-${version}.jar is a package that can coexist with PG-JDBC, the package name is changed from 2.0.1 to org.postgresql.jar. postgresql to org.opengauss, and the driver name is replaced from jdbc:postgresql:// to jdbc:opengauss://. This is the same package that is currently available from the maven central repository.
-
-### INSTALLING THE DRIVER
-
-To install the driver, the postgresql.jar file has to be in the classpath.
-
-ie: under LINUX/SOLARIS (the example here is my linux box):
-
- export CLASSPATH=.:/usr/local/pgsql/share/java/postgresql.jar
-
-or
-
-```
-export CLASSPATH=.:/usr/local/pgsql/share/java/opengauss-jdbc-${version}.jar
-```
-
-
-
-## Build from Source {#BuildfromSource}
-
-### Overview
-
-The openGauss JDBC driver currently offers 3 ways to build. One is to build via the one-click script build.sh. The second is a step-by-step build via script. The third is to build via the mvn command.
-
-This will compile the correct driver for your JVM, and build a .jar file (Java ARchive) called postgresql.jar and opengauss-jdbc--${version}.jar in output/, and you can get openGauss-${version}-jdbc.tar.gz too.
-
-Notice: postgresql.jar is conflict use with postgres database. Because all class was in package org.postgresql. opengauss-jdbc-${version}.jar is compatibility with postgres database, all java package renamed `org.opengauss`, and jdbc driver is: `jdbc:opengauss:/`
-
-Remember: Once you have compiled the driver, it will work on ALL platforms that support that version of the API. You don't need to build it for each platform.
-
-### OS and Software Dependency Requirements
-
- The openGauss JDBC driver is generated to support the following operating systems:
-
-- CentOS 7.6(x86 architecture)
-- openEuler-20.03-LTS(aarch64 architecture)
-- Windows
-
-The following table lists the software requirements for compiling the openGauss-connector-jdbc.
-
-You are advised to use the default installation packages of the following dependent software in the listed OS installation CD-ROMs or sources. If the following software does not exist, refer to the recommended versions of the software.
-
-Software dependency requirements are as follows:
-
-| Software and Environment Requirements | Recommended Version |
-| ------------------------------------- | ------------------- |
-| maven | 3.6.1 |
-| java | 1.8 |
-| Git Bash (Windows) | - |
-| zip/unzip (Windows) | - |
-
-### Downloading openGauss-connector-jdbc
-
-You can download openGauss-connector-jdbc from open source community.
-
-```
-git clone https://gitee.com/opengauss/openGauss-connector-jdbc.git
-```
-
-Now we have completed openGauss-connector-jdbc code. For example, we store it in following directories.
-
-- /sda/openGauss-connector-jdbc
-
-### Compiling Third-Party Software(optional)
-
-Before building openGauss-connector-jdbc, you need to compile the open source and third-party software that openGauss depends on. We already provide compiled open source and third-party software in open_source under the openGauss-connector-jdbc directory, so you can skip that part by using the open_source we provide directly. These open source and third party software are stored in the openGauss-third_party code repository and usually only need to be built once. If there are updates to the open source software, the software needs to be rebuilt.
-
-You can also get the output files of open source software compilations and builds directly from the **binarylibs** library.
-
-If you want to compile your own third-party software, please go to the openGauss-third_party repository for details.
-
-After executing the above script, the final compile and build results are stored in the **binarylibs** directory at the same level as **openGauss-third_party**. These files will be used when compiling **openGauss-connector-jdbc**.
-
-### Compiling
-
-#### Getting jar packages with one-click scripting (Linux)
-
-The build.sh in the openGauss-connector-jdbc directory is an important scripting tool for the compilation process. This tool allows for quick code compilation and packaging.
-
-See the table below for a description of the parameters.
-
-| Option | Default Value | Parameter | Description |
-| :----- | :--------------------------- | :---------------- | :----------------------------------------------------------- |
-| -3rd | ${Code directory}/binarylibs | [binarylibs path] | Specifies the path of binarylibs. It is recommended to specify the path as open_source/ or /sda/openGauss-connector-jdbc/open_source/. If you have your own compiled third-party libraries that openGauss depends on, you can also specify the path of compiled third-party libraries, such as /sda/binarylibs. |
-
-Now you know the usage of build.sh, so you can compile the openGauss-connector-jdbc by one command with build.sh. In build.sh, maven and java8 will be installed automatically and use to build target.
-
-1. Execute the following command to get to the code directory:
-
- ```
- [user@linux sda]$ cd /sda/openGauss-connector-jdbc
- ```
-
-2. Execute the following command to package using build.sh:
-
- ```
- [user@linux openGauss-connector-jdbc]$ sh build.sh -3rd open_source/
- ```
-
- When finished, the following will be displayed to indicate successful packaging:
-
- ```
- Successfully make postgresql.jar
- opengauss-jdbc-${version}.jar
- postgresql.jar
- Successfully make jdbc jar package
- now, all packages has finished!
- ```
-
- After successful compilation, two jar packages will appear, opengauss-jdbc-${version}.jar and postgresql.jar. compiled jar package path is:**/sda/openGauss-connector-jdbc/output**.
-
-#### Getting jar packages with one-click scripting (Windows)
-
-1. Prepare the Java and Maven environments, and the **zip/unzip** commands that can be used in **Git Bash**.
-
-2. Execute the following command to get to the code directory:
-
- ```
- [user@linux openGauss-connector-jdbc]$ cd /sda/openGauss-connector-jdbc
- ```
-
-3. Run the script build_on_windows_git.sh:
-
- ```
- [user@linux openGauss-connector-jdbc]$ sh build_on_windows_git.sh
- ```
-
- Run the script build_on_windows_git.sh:
-
- ```
- begin run
- Successfully make postgresql.jar package in /sda/openGauss-connector-jdbc/output/postgresql.jar
- Successfully make opengauss-jdbc jar package in /sda/openGauss-connector-jdbc/output/opengauss-jdbc-${version}.jar
- Successfully make jdbc jar package in /sda/openGauss-connector-jdbc/openGauss-${version}-JDBC.tar.gz
- ```
-
- After successful compilation, two jar packages will appear, opengauss-jdbc-${version}.jar and postgresql.jar. the compiled jar package path is **/sda/openGauss-connector-jdbc/output/**. There will also be a zip archive of these two jar packages, openGauss-${version}-JDBC.tar.gz, with the path **/sda/openGauss-connector-jdbc/**.
-
-#### Getting jar packages using the mvn command (Windows or Linux)
-
-1. Prepare the Java and Maven environments, and for Windows, the **zip/unzip** commands that can be used in **Git Bash**.
-
-2. Execute the following command to get to the code directory:
-
- ```
- [user@linux sda]$ cd /sda/openGauss-connector-jdbc
- ```
-
-3. Preparing scripts with demos:
-
- ```
- [user@linux openGauss-connector-jdbc]$ sh prepare_demo.sh
- ```
-
-4. Modify the pom.xml in the root directory:
-
- Change the module from jdbc to pgjdbc, as shown below:
-
- ```
-
- pgjdbc
-
- ```
-
-5. Execute the mvn command:
-
- ```
- [user@linux openGauss-connector-jdbc]$ mvn clean install -Dmaven.test.skip=true
- ```
-
- A successful build on a Linux system will display the following result:
-
- ```
- [INFO] Reactor Summary:
- [INFO]
- [INFO] openGauss JDBC Driver ............................. SUCCESS [5.344s]
- [INFO] PostgreSQL JDBC Driver aggregate .................. SUCCESS [0.004s]
- [INFO] ------------------------------------------------------------------------
- [INFO] BUILD SUCCESS
- [INFO] ------------------------------------------------------------------------
- [INFO] Total time: 5.439s
- [INFO] Finished at: Tue Aug 31 21:55:01 EDT 2021
- [INFO] Final Memory: 44M/1763M
- [INFO] ------------------------------------------------------------------------
- ```
-
- Two jar packages will appear after a successful build, opengauss-jdbc-${version}.jar and original-opengauss-jdbc-${version}.jar. jar package path is /sda/openGauss-connector-jdbc/pgjdbc /target/.
-
-
-## Using JDBC
-
-Reference [JDBC-based development](https://opengauss.org/en/docs/latest/docs/Developerguide/development-based-on-jdbc.html).
-
-## Docs
-
-For more details about the installation guide, tutorials, and APIs, please see the [User Documentation](https://gitee.com/opengauss/docs).
-
-## Community
-
-### Governance
-
-Check out how openGauss implements open governance [works](https://gitee.com/opengauss/community/blob/master/governance.md).
-
-### Communication
-
-- WeLink- Communication platform for developers.
-- IRC channel at `#opengauss-meeting` (only for meeting minutes logging purpose)
-- Mailing-list: https://opengauss.org/en/community/onlineCommunication.html
-
-## Contribution
-
-Welcome contributions. See our [Contributor](https://opengauss.org/en/contribution.html) for more details.
-
-## Release Notes
-
-For the release notes, see our [RELEASE](https://opengauss.org/en/docs/2.0.0/docs/Releasenotes/Releasenotes.html).
-
-## License
-
-[MulanPSL-2.0](http://license.coscl.org.cn/MulanPSL2/)
\ No newline at end of file
diff --git a/buildtools/settings.xml b/buildtools/settings.xml
new file mode 100644
index 0000000..945260e
--- /dev/null
+++ b/buildtools/settings.xml
@@ -0,0 +1,277 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mirror
+ *
+ cmc-cd-mirror
+ http://mirrors.tools.huawei.com/maven/
+
+
+
+
+
+
+
+
+
+ centralrepo
+ http://cmc.centralrepo.rnd.huawei.com/maven/
+
+ true
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
diff --git a/get_PlatForm_str.sh b/get_PlatForm_str.sh
deleted file mode 100644
index 3b3450c..0000000
--- a/get_PlatForm_str.sh
+++ /dev/null
@@ -1,142 +0,0 @@
-#!/bin/bash
-# *************************************************************************
-# Copyright: (c) Huawei Technologies Co., Ltd. 2019. All rights reserved
-#
-# description: Acording plat form, get the string info, like "redhat6.4_x86_64".
-# return: $plat_form_str : we support the platform and put out $plat_form_str
-# "Failed" : the plat form, not supported
-# date: 2015-8-22
-# version: 1.0
-#
-# *************************************************************************
-set -e
-
-##############################################################################################
-# common paremeters:
-# lsb_release and uname both suit almost all linux platform, including Redhat,CentOS,SuSE,Debian and so on.
-##############################################################################################
-# get os name
-kernel=""
-if [ -f "/etc/euleros-release" ]
-then
- kernel=$(cat /etc/euleros-release | awk -F ' ' '{print $1}' | tr A-Z a-z)
-elif [ -f "/etc/kylin-release" ]
-then
- kernel=$(cat /etc/kylin-release | awk -F ' ' '{print $1}' | tr A-Z a-z)
-else
- kernel=$(lsb_release -d | awk -F ' ' '{print $2}'| tr A-Z a-z)
-fi
-
-## to solve kernel="name=openeuler"
-if echo $kernel | grep -q 'openeuler'
-then
- kernel="openeuler"
-fi
-
-# get cpu bit
-cpu_bit=$(uname -p)
-
-# the result info
-plat_form_str=""
-
-##################################################################################
-# redhat platform
-# the result form like this: redhat6.4_x86_64
-##################################################################################
-if [ "$kernel"x = "red"x ]
-then
- plat_form_str=redhat6.4_"$cpu_bit"
-fi
-
-##################################################################################
-# fedora platform
-# the result form like this: redhat6.4_x86_64
-##################################################################################
-if [ "$kernel"x = "fedora"x ]
-then
- plat_form_str=redhat6.4_"$cpu_bit"
-fi
-
-##################################################################################
-# suse platform
-# the result form like this: suse11_sp1_x86_64
-##################################################################################
-if [ "$kernel"x = "suse"x ]
-then
- version=$(lsb_release -r | awk -F ' ' '{print $2}')
- if [ "$version"x = "12"x ]
- then
- plat_form_str=suse12_"$cpu_bit"
- else
- plat_form_str=suse11_sp1_"$cpu_bit"
- fi
-fi
-
-##################################################################################
-# euler platform
-# the result form like this: euleros2.0_sp8_aarch64
-##################################################################################
-if [ "$kernel"x = "euleros"x ]
-then
- version=$(cat /etc/euleros-release | awk -F '(' '{print $2}'| awk -F ')' '{print $1}' | tr A-Z a-z)
- plat_form_str=euleros2.0_"$version"_"$cpu_bit"
-fi
-
-##################################################################################
-# deepin platform
-# the result form like this: deepin_aarch64
-##################################################################################
-if [ "$kernel"x = "deepin"x ]
-then
- if [ X"$cpu_bit" = X"unknown" ]
- then
- cpu_bit=$(uname -m)
- fi
- plat_form_str=deepin15.2_"$cpu_bit"
-fi
-##################################################################################
-# centos7.6_x86_64 platform
-# centos7.5+aarch64 platform
-# the result form like this: centos7.6_x86_64 or centos_7.5_aarch64
-##################################################################################
-if [ "$kernel"x = "centos"x ]
-then
- if [ X"$cpu_bit" = X"aarch64" ]
- then
- plat_form_str=centos_7.5_aarch64
- else
- plat_form_str=centos7.6_"$cpu_bit"
- fi
-fi
-
-
-##################################################################################
-# openeuler platform
-# the result form like this: openeuler_aarch64
-##################################################################################
-if [ "$kernel"x = "openeuler"x ]
-then
- plat_form_str=openeuler_"$cpu_bit"
-fi
-
-##################################################################################
-# kylin platform
-# the result form like this: kylin_aarch64
-##################################################################################
-if [ "$kernel"x = "kylin"x ]
-then
- plat_form_str=kylin_"$cpu_bit"
-fi
-
-##################################################################################
-#
-# other platform
-#
-##################################################################################
-if [ -z "$plat_form_str" ]
-then
- echo "Failed"
-else
- echo $plat_form_str
-fi
-
diff --git a/pgjdbc/pom.xml b/pgjdbc/pom.xml
index 4b8ee5f..b26d1be 100644
--- a/pgjdbc/pom.xml
+++ b/pgjdbc/pom.xml
@@ -31,17 +31,6 @@
-
- com.huawei
- demo-0.0.1-SNAPSHOT
- 0.0.1
-
-
- junit
- junit
- 4.12
- test
-
org.slf4j
slf4j-api
diff --git a/pgjdbc/src/main/java/org/postgresql/Driver.java b/pgjdbc/src/main/java/org/postgresql/Driver.java
index 5593694..5acd875 100755
--- a/pgjdbc/src/main/java/org/postgresql/Driver.java
+++ b/pgjdbc/src/main/java/org/postgresql/Driver.java
@@ -10,6 +10,7 @@ import org.postgresql.hostchooser.MultiHostChooser;
import org.postgresql.jdbc.PgConnection;
import org.postgresql.log.Logger;
import org.postgresql.log.Log;
+import org.postgresql.log.Tracer;
import org.postgresql.util.DriverInfo;
import org.postgresql.util.ExpressionProperties;
import org.postgresql.util.GT;
@@ -20,13 +21,8 @@ import org.postgresql.util.SharedTimer;
import org.postgresql.util.URLCoder;
import org.postgresql.util.WriterHandler;
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
-import java.io.InputStreamReader;
import java.net.URL;
import java.security.AccessController;
import java.security.PrivilegedActionException;
@@ -40,35 +36,14 @@ import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Properties;
import java.util.Set;
+import java.util.Map;
+import java.util.LinkedHashMap;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.logging.Formatter;
import java.util.logging.Level;
import java.util.logging.SimpleFormatter;
import java.util.logging.StreamHandler;
import java.util.regex.Pattern;
-import javax.net.ssl.SSLContext;
-
-import com.huawei.shade.org.apache.http.Header;
-import com.huawei.shade.org.apache.http.HttpHeaders;
-import com.huawei.shade.org.apache.http.HttpResponse;
-import com.huawei.shade.org.apache.http.client.methods.HttpDelete;
-import com.huawei.shade.org.apache.http.client.methods.HttpGet;
-import com.huawei.shade.org.apache.http.client.methods.HttpHead;
-import com.huawei.shade.org.apache.http.client.methods.HttpPatch;
-import com.huawei.shade.org.apache.http.client.methods.HttpPost;
-import com.huawei.shade.org.apache.http.client.methods.HttpPut;
-import com.huawei.shade.org.apache.http.client.methods.HttpRequestBase;
-import com.huawei.shade.org.apache.http.conn.ssl.AllowAllHostnameVerifier;
-import com.huawei.shade.org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import com.huawei.shade.org.apache.http.conn.ssl.SSLContexts;
-import com.huawei.shade.org.apache.http.conn.ssl.TrustSelfSignedStrategy;
-import com.huawei.shade.org.apache.http.entity.InputStreamEntity;
-import com.huawei.shade.org.apache.http.impl.client.CloseableHttpClient;
-import com.huawei.shade.org.apache.http.impl.client.HttpClients;
-import com.huawei.shade.com.alibaba.fastjson.JSONObject;
-import com.huawei.shade.com.cloud.apigateway.sdk.utils.Request;
-import com.huawei.shade.com.cloud.apigateway.sdk.utils.Client;
-import com.huawei.shade.com.cloud.sdk.http.HttpMethodName;
/**
@@ -90,105 +65,133 @@ import com.huawei.shade.com.cloud.sdk.http.HttpMethodName;
*/
public class Driver implements java.sql.Driver {
- private static Driver registeredDriver;
- private static final java.util.logging.Logger PARENT_LOGGER = java.util.logging.Logger.getLogger("org.postgresql");
+ private static Driver registeredDriver;
+ private static final java.util.logging.Logger PARENT_LOGGER = java.util.logging.Logger.getLogger("org.postgresql");
- private static Log LOGGER = Logger.getLogger("org.postgresql.Driver");
- private static SharedTimer sharedTimer = new SharedTimer();
- private static final String DEFAULT_PORT =
- /*$"\""+mvn.project.property.template.default.pg.port+"\";"$*//*-*/"5431";
- private static CloseableHttpClient client = null;
- private static final String gsVersion = "@GSVERSION@";
- /* generate one log file */
- public static AtomicBoolean isLogFileCreated;
- static {
- try {
- // moved the registerDriver from the constructor to here
- // because some clients call the driver themselves (I know, as
- // my early jdbc work did - and that was based on other examples).
- // Placing it here, means that the driver is registered once only.
- register();
- } catch (SQLException e) {
- throw new ExceptionInInitializerError(e);
- }
- }
+ private static Log LOGGER = Logger.getLogger("org.postgresql.Driver");
+ private static SharedTimer sharedTimer = new SharedTimer();
+ private static final String DEFAULT_PORT =
+ /*$"\""+mvn.project.property.template.default.pg.port+"\";"$*//*-*/"5431";
+ // Remove iam certification
+ // private static CloseableHttpClient client = null;
+ private static final String gsVersion = "@GSVERSION@";
+ /* generate one log file */
+ public static AtomicBoolean isLogFileCreated;
+ private static final String[] SENSITIVE_CHARACTERS = {"sslpassword", "iamPassword", "password"};
- // Helper to retrieve default properties from classloader resource
- // properties files.
- private Properties defaultProperties;
+ private static Tracer tracer;
+ private static AtomicBoolean tracerInitialized = new AtomicBoolean(false);
- private synchronized Properties getDefaultProperties() throws IOException {
- if (defaultProperties != null) {
- return defaultProperties;
+ static {
+ try {
+ // moved the registerDriver from the constructor to here
+ // because some clients call the driver themselves (I know, as
+ // my early jdbc work did - and that was based on other examples).
+ // Placing it here, means that the driver is registered once only.
+ register();
+ } catch (SQLException e) {
+ throw new ExceptionInInitializerError(e);
+ }
}
- // Make sure we load properties with the maximum possible privileges.
- try {
- defaultProperties =
- AccessController.doPrivileged(new PrivilegedExceptionAction() {
- public Properties run() throws IOException {
- return loadDefaultProperties();
- }
- });
- } catch (PrivilegedActionException e) {
- throw (IOException) e.getException();
+ // Helper to retrieve default properties from classloader resource
+ // properties files.
+ private Properties defaultProperties;
+
+ /**
+ * Obtain the trace id from the implementation class.
+ *
+ * @return trace id
+ */
+ public static String getTracer() {
+ if (tracer == null) {
+ return null;
+ }
+ String traceId = tracer.getTraceId();
+ if (traceId == null) {
+ return null;
+ } else if (traceId.length() > 32) {
+ traceId = traceId.substring(0, 32);
+ LOGGER.warn("When used link trace, the length of trace id should be less or equals than 32, currently " +
+ "truncated to " + traceId + ".");
+ } else if (traceId.length() < 1) {
+ LOGGER.warn("When used link trace, the length of trace id should be greater than 0.");
+ }
+ return traceId;
}
- return defaultProperties;
- }
+ private synchronized Properties getDefaultProperties() throws IOException {
+ if (defaultProperties != null) {
+ return defaultProperties;
+ }
- private Properties loadDefaultProperties() throws IOException {
- Properties merged = new Properties();
+ // Make sure we load properties with the maximum possible privileges.
+ try {
+ defaultProperties =
+ AccessController.doPrivileged(new PrivilegedExceptionAction() {
+ public Properties run() throws IOException {
+ return loadDefaultProperties();
+ }
+ });
+ } catch (PrivilegedActionException e) {
+ throw (IOException) e.getException();
+ }
- try {
- PGProperty.USER.set(merged, System.getProperty("user.name"));
- } catch (SecurityException se) {
- // We're just trying to set a default, so if we can't
- // it's not a big deal.
+ return defaultProperties;
}
- // If we are loaded by the bootstrap classloader, getClassLoader()
- // may return null. In that case, try to fall back to the system
- // classloader.
- //
- // We should not need to catch SecurityException here as we are
- // accessing either our own classloader, or the system classloader
- // when our classloader is null. The ClassLoader javadoc claims
- // neither case can throw SecurityException.
- ClassLoader cl = getClass().getClassLoader();
- if (cl == null) {
- LOGGER.debug("Can't find our classloader for the Driver; "
- + "attempt to use the system class loader");
- cl = ClassLoader.getSystemClassLoader();
- }
+ private Properties loadDefaultProperties() throws IOException {
+ Properties merged = new Properties();
- if (cl == null) {
- LOGGER.warn("Can't find a classloader for the Driver; not loading driver "
- + "configuration from org/postgresql/driverconfig.properties");
- return merged; // Give up on finding defaults.
- }
+ try {
+ PGProperty.USER.set(merged, System.getProperty("user.name"));
+ } catch (SecurityException se) {
+ // We're just trying to set a default, so if we can't
+ // it's not a big deal.
+ }
- LOGGER.debug("Loading driver configuration via classloader " + cl);
+ // If we are loaded by the bootstrap classloader, getClassLoader()
+ // may return null. In that case, try to fall back to the system
+ // classloader.
+ //
+ // We should not need to catch SecurityException here as we are
+ // accessing either our own classloader, or the system classloader
+ // when our classloader is null. The ClassLoader javadoc claims
+ // neither case can throw SecurityException.
+ ClassLoader cl = getClass().getClassLoader();
+ if (cl == null) {
+ LOGGER.debug("Can't find our classloader for the Driver; "
+ + "attempt to use the system class loader");
+ cl = ClassLoader.getSystemClassLoader();
+ }
- // When loading the driver config files we don't want settings found
- // in later files in the classpath to override settings specified in
- // earlier files. To do this we've got to read the returned
- // Enumeration into temporary storage.
- ArrayList urls = new ArrayList();
- Enumeration urlEnum = cl.getResources("org/postgresql/driverconfig.properties");
- while (urlEnum.hasMoreElements()) {
- urls.add(urlEnum.nextElement());
- }
+ if (cl == null) {
+ LOGGER.warn("Can't find a classloader for the Driver; not loading driver "
+ + "configuration from org/postgresql/driverconfig.properties");
+ return merged; // Give up on finding defaults.
+ }
- for (int i = urls.size() - 1; i >= 0; i--) {
- URL url = urls.get(i);
- LOGGER.debug("Loading driver configuration from: " + url);
- InputStream is = url.openStream();
- merged.load(is);
- is.close();
- }
+ LOGGER.debug("Loading driver configuration via classloader " + cl);
- return merged;
+ // When loading the driver config files we don't want settings found
+ // in later files in the classpath to override settings specified in
+ // earlier files. To do this we've got to read the returned
+ // Enumeration into temporary storage.
+ ArrayList urls = new ArrayList();
+ Enumeration urlEnum = cl.getResources("org/postgresql/driverconfig.properties");
+ while (urlEnum.hasMoreElements()) {
+ urls.add(urlEnum.nextElement());
+ }
+
+ for (int i = urls.size() - 1; i >= 0; i--) {
+ URL url = urls.get(i);
+ LOGGER.debug("Loading driver configuration from: " + url);
+ InputStream is = url.openStream();
+ merged.load(is);
+ is.close();
+ }
+
+ return merged;
}
public static Properties GetProps(Properties defaults, Properties info) throws PSQLException {
@@ -211,878 +214,771 @@ public class Driver implements java.sql.Driver {
}
return newProps;
}
- /**
- * Try to make a database connection to the given URL. The driver should return "null" if it
- * realizes it is the wrong kind of driver to connect to the given URL. This will be common, as
- * when the JDBC driverManager is asked to connect to a given URL, it passes the URL to each
- * loaded driver in turn.
- *
- * The driver should raise an SQLException if it is the right driver to connect to the given URL,
- * but has trouble connecting to the database.
- *
- * The java.util.Properties argument can be used to pass arbitrary string tag/value pairs as
- * connection arguments.
- *
- *
- * user - (required) The user to connect as
- * password - (optional) The password for the user
- * ssl -(optional) Use SSL when connecting to the server
- * readOnly - (optional) Set connection to read-only by default
- * charSet - (optional) The character set to be used for converting to/from
- * the database to unicode. If multibyte is enabled on the server then the character set of the
- * database is used as the default, otherwise the jvm character encoding is used as the default.
- * This value is only used when connecting to a 7.2 or older server.
- * loglevel - (optional) Enable logging of messages from the driver. The value is an integer
- * from 0 to 2 where: OFF = 0, INFO =1, DEBUG = 2 The output is sent to
- * DriverManager.getPrintWriter() if set, otherwise it is sent to System.out.
- * compatible - (optional) This is used to toggle between different functionality
- * as it changes across different releases of the jdbc driver code. The values here are versions
- * of the jdbc client and not server versions. For example in 7.1 get/setBytes worked on
- * LargeObject values, in 7.2 these methods were changed to work on bytea values. This change in
- * functionality could be disabled by setting the compatible level to be "7.1", in which case the
- * driver will revert to the 7.1 functionality.
- *
- *
- * Normally, at least "user" and "password" properties should be included in the properties. For a
- * list of supported character encoding , see
- * http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html Note that you will
- * probably want to have set up the Postgres database itself to use the same encoding, with the
- * {@code -E } argument to createdb.
- *
- * Our protocol takes the forms:
- *
- *
- * jdbc:postgresql://host:port/database?param1=val1&...
- *
- *
- * @param url the URL of the database to connect to
- * @param info a list of arbitrary tag/value pairs as connection arguments
- * @return a connection to the URL or null if it isnt us
- * @throws SQLException if a database access error occurs
- * @see java.sql.Driver#connect
- */
- @Override
- public Connection connect(String url, Properties info) throws SQLException {
- // get defaults
- Properties defaults, props;
- if (!url.startsWith("jdbc:postgresql:") && !url.startsWith("jdbc:dws:iam:")) {
- return null;
- }
- try {
- defaults = getDefaultProperties();
- } catch (IOException ioe) {
- throw new PSQLException(GT.tr("Error loading default settings from driverconfig.properties"), PSQLState.UNEXPECTED_ERROR, ioe);
+ /**
+ * Try to make a database connection to the given URL. The driver should return "null" if it
+ * realizes it is the wrong kind of driver to connect to the given URL. This will be common, as
+ * when the JDBC driverManager is asked to connect to a given URL, it passes the URL to each
+ * loaded driver in turn.
+ *
+ * The driver should raise an SQLException if it is the right driver to connect to the given URL,
+ * but has trouble connecting to the database.
+ *
+ * The java.util.Properties argument can be used to pass arbitrary string tag/value pairs as
+ * connection arguments.
+ *
+ *
+ * user - (required) The user to connect as
+ * password - (optional) The password for the user
+ * ssl -(optional) Use SSL when connecting to the server
+ * readOnly - (optional) Set connection to read-only by default
+ * charSet - (optional) The character set to be used for converting to/from
+ * the database to unicode. If multibyte is enabled on the server then the character set of the
+ * database is used as the default, otherwise the jvm character encoding is used as the default.
+ * This value is only used when connecting to a 7.2 or older server.
+ * loglevel - (optional) Enable logging of messages from the driver. The value is an integer
+ * from 0 to 2 where: OFF = 0, INFO =1, DEBUG = 2 The output is sent to
+ * DriverManager.getPrintWriter() if set, otherwise it is sent to System.out.
+ * compatible - (optional) This is used to toggle between different functionality
+ * as it changes across different releases of the jdbc driver code. The values here are versions
+ * of the jdbc client and not server versions. For example in 7.1 get/setBytes worked on
+ * LargeObject values, in 7.2 these methods were changed to work on bytea values. This change in
+ * functionality could be disabled by setting the compatible level to be "7.1", in which case the
+ * driver will revert to the 7.1 functionality.
+ *
+ *
+ * Normally, at least "user" and "password" properties should be included in the properties. For a
+ * list of supported character encoding , see
+ * http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html Note that you will
+ * probably want to have set up the Postgres database itself to use the same encoding, with the
+ * {@code -E } argument to createdb.
+ *
+ * Our protocol takes the forms:
+ *
+ *
+ * jdbc:postgresql://host:port/database?param1=val1&...
+ *
+ *
+ * @param url the URL of the database to connect to
+ * @param info a list of arbitrary tag/value pairs as connection arguments
+ * @return a connection to the URL or null if it isnt us
+ * @throws SQLException if a database access error occurs
+ * @see java.sql.Driver#connect
+ */
+ @Override
+ public Connection connect(String url, Properties info) throws SQLException {
+ // get defaults
+ Properties defaults, props;
+
+ String[] legalUrlTags = {"jdbc:postgresql:", "jdbc:dws:iam:"};
+ boolean isUrlLegal = false;
+ for (String urlTag : legalUrlTags) {
+ if (url.startsWith(urlTag)) {
+ isUrlLegal = true;
+ }
+ }
+ if (!isUrlLegal) {
+ return null;
+ }
+
+ try {
+ defaults = getDefaultProperties();
+ } catch (IOException ioe) {
+ throw new PSQLException(GT.tr("Error loading default settings from driverconfig.properties"),
+ PSQLState.UNEXPECTED_ERROR, ioe);
+ }
+
+ props = GetProps(defaults, info);
+
+ // parse URL and add more properties
+ if ((props = parseURL(url, props)) == null) {
+ return null;
+ }
+
+ if (!parseConnectionProperties(props)) {
+ return null;
+ }
+
+ try {
+ LOGGER.debug("Connecting with URL: " + filterAuthenticationCredentials(url));
+
+ // Enforce login timeout, if specified, by running the connection
+ // attempt in a separate thread. If we hit the timeout without the
+ // connection completing, we abandon the connection attempt in
+ // the calling thread, but the separate thread will keep trying.
+ // Eventually, the separate thread will either fail or complete
+ // the connection; at that point we clean up the connection if
+ // we managed to establish one after all. See ConnectThread for
+ // more details.
+ long timeout = timeout(props);
+ if (timeout <= 0) {
+ Connection con = makeConnection(url, props);
+ return con;
+ }
+
+ ConnectThread ct = new ConnectThread(url, props);
+ Thread thread = new Thread(ct, "PostgreSQL JDBC driver connection thread");
+ thread.setDaemon(true); // Don't prevent the VM from shutting down
+ thread.start();
+ return ct.getResult(timeout);
+ } catch (PSQLException ex1) {
+ LOGGER.debug("Connection error: ", ex1);
+ // re-throw the exception, otherwise it will be caught next, and a
+ // org.postgresql.unusual error will be returned instead.
+ throw ex1;
+ } catch (java.security.AccessControlException ace) {
+ throw new PSQLException(GT.tr("Your security policy has prevented the connection from being attempted. " +
+ "You probably need to grant the connect java.net.SocketPermission to the database server host and" +
+ " port that you wish to connect to."), PSQLState.UNEXPECTED_ERROR, ace);
+ } catch (Exception ex2) {
+ LOGGER.debug("Unexpected connection error: ", ex2);
+ throw new PSQLException(GT.tr("Something unusual has occured to cause the driver to fail. Please report " +
+ "this exception."), PSQLState.UNEXPECTED_ERROR, ex2);
+ }
}
- props = GetProps(defaults, info);
+ /**
+ * Parse the configuration items in the connection string.
+ *
+ * @param props Connection Properties
+ */
+ private Boolean parseConnectionProperties(Properties props) {
+ Logger.setLoggerName(props.getProperty("logger"));
+ if (Logger.isUsingJDKLogger()) {
+ setupLoggerFromProperties(props);
+ } else {
+ LOGGER = Logger.getLogger("org.postgresql.Driver");
+ }
- // parse URL and add more properties
- if ((props = parseURL(url, props)) == null) {
- return null;
+ if (PGProperty.TRACE_INTERFACE_CLASS.get(props) != null && tracer == null) {
+ String traceClass = PGProperty.TRACE_INTERFACE_CLASS.get(props);
+ try {
+ if (tracerInitialized.compareAndSet(false, true)) {
+ tracer = Class.forName(traceClass).asSubclass(Tracer.class).newInstance();
+ }
+ } catch (ClassCastException ce1) {
+ tracerInitialized.set(false);
+ LOGGER.warn("The currently specified class " + traceClass + ", not implement Tracer class.");
+ } catch (ClassNotFoundException | InstantiationException | IllegalAccessException ce2) {
+ tracerInitialized.set(false);
+ LOGGER.warn("Failed to load tracer implementation class, error: ", ce2);
+ }
+ }
+ Boolean parseStatus = true;
+ if (PGProperty.PRIORITY_SERVERS.get(props) != null) {
+ if (!GlobalClusterStatusTracker.isVaildPriorityServers(props)) {
+ parseStatus = false;
+ }
+ GlobalClusterStatusTracker.refreshProperties(props);
+ }
+
+ if (MultiHostChooser.isUsingAutoLoadBalance(props)) {
+ if (!MultiHostChooser.isVaildPriorityLoadBalance(props)) {
+ parseStatus = false;
+ }
+ QueryCNListUtils.refreshProperties(props);
+ }
+ return parseStatus;
}
+ // Used to check if the handler file is the same
+ private static String loggerHandlerFile;
-
- Logger.setLoggerName(props.getProperty("logger"));
-
- if(Logger.isUsingJDKLogger()) {
- setupLoggerFromProperties(props);
- } else {
- LOGGER = Logger.getLogger("org.postgresql.Driver");
- }
-
- if(PGProperty.PRIORITY_SERVERS.get(props) != null){
- if(!GlobalClusterStatusTracker.isVaildPriorityServers(props)){
- return null;
- }
- GlobalClusterStatusTracker.refreshProperties(props);
- }
-
- if (MultiHostChooser.isUsingAutoLoadBalance(props)) {
- if(!MultiHostChooser.isVaildPriorityLoadBalance(props)){
- return null;
- }
- QueryCNListUtils.refreshProperties(props);
- }
-
- try {
- LOGGER.debug("Connecting with URL: " + url);
-
- // Enforce login timeout, if specified, by running the connection
- // attempt in a separate thread. If we hit the timeout without the
- // connection completing, we abandon the connection attempt in
- // the calling thread, but the separate thread will keep trying.
- // Eventually, the separate thread will either fail or complete
- // the connection; at that point we clean up the connection if
- // we managed to establish one after all. See ConnectThread for
- // more details.
- long timeout = timeout(props);
- if (timeout <= 0) {
- Connection con = makeConnection(url, props);
- return con;
- }
-
- ConnectThread ct = new ConnectThread(url, props);
- Thread thread = new Thread(ct, "PostgreSQL JDBC driver connection thread");
- thread.setDaemon(true); // Don't prevent the VM from shutting down
- thread.start();
- return ct.getResult(timeout);
- } catch (PSQLException ex1) {
- LOGGER.debug("Connection error: ",ex1);
- // re-throw the exception, otherwise it will be caught next, and a
- // org.postgresql.unusual error will be returned instead.
- throw ex1;
- } catch (java.security.AccessControlException ace) {
- throw new PSQLException(GT.tr("Your security policy has prevented the connection from being attempted. You probably need to grant the connect java.net.SocketPermission to the database server host and port that you wish to connect to."), PSQLState.UNEXPECTED_ERROR, ace);
- } catch (Exception ex2) {
- LOGGER.debug("Unexpected connection error: ", ex2);
- throw new PSQLException(GT.tr("Something unusual has occured to cause the driver to fail. Please report this exception."), PSQLState.UNEXPECTED_ERROR, ex2);
- }
- }
-
- // Used to check if the handler file is the same
- private static String loggerHandlerFile;
-
- /**
- * Setup java.util.logging.Logger using connection properties.
- *
- * See {@link PGProperty#LOGGER_FILE} and {@link PGProperty#LOGGER_FILE}
- *
- * @param props Connection Properties
- */
- private Boolean initLoggerProperties(String driverLogLevel) {
- if (driverLogLevel == null) {
- return false; // Don't mess with Logger if not set
+ /**
+ * Setup java.util.logging.Logger using connection properties.
+ *
+ * See {@link PGProperty#LOGGER_FILE} and {@link PGProperty#LOGGER_FILE}
+ *
+ * @param driverLogLevel Connection Properties
+ */
+ private Boolean initLoggerProperties(String driverLogLevel) {
+ if (driverLogLevel == null) {
+ return false; // Don't mess with Logger if not set
}
if (!"OFF".equalsIgnoreCase(driverLogLevel) && !isLogFileCreated.compareAndSet(false, true)) {
return false;
}
if ("OFF".equalsIgnoreCase(driverLogLevel)) {
- PARENT_LOGGER.setLevel(Level.OFF);
- return false; // Don't mess with Logger if set to OFF
+ PARENT_LOGGER.setLevel(Level.OFF);
+ return false; // Don't mess with Logger if set to OFF
} else if ("DEBUG".equalsIgnoreCase(driverLogLevel)) {
- PARENT_LOGGER.setLevel(Level.FINE);
+ PARENT_LOGGER.setLevel(Level.FINE);
} else if ("TRACE".equalsIgnoreCase(driverLogLevel)) {
- PARENT_LOGGER.setLevel(Level.FINEST);
+ PARENT_LOGGER.setLevel(Level.FINEST);
} else if ("INFO".equalsIgnoreCase(driverLogLevel)) {
PARENT_LOGGER.setLevel(Level.INFO);
} else {
- PARENT_LOGGER.setLevel(Level.OFF);
+ PARENT_LOGGER.setLevel(Level.OFF);
}
return true;
- }
- /**
- * Setup java.util.logging.Logger using connection properties.
- *
- * See {@link PGProperty#LOGGER_FILE} and {@link PGProperty#LOGGER_FILE}
- *
- * @param props Connection Properties
- */
- private void setupLoggerFromProperties(final Properties props) {
- final String driverLogLevel = PGProperty.LOGGER_LEVEL.get(props);
- if (!initLoggerProperties(driverLogLevel)) {
- return;
- }
-
- ExpressionProperties exprProps = new ExpressionProperties(props, System.getProperties());
- final String driverLogFile = PGProperty.LOGGER_FILE.get(exprProps);
- if (driverLogFile != null && driverLogFile.equals(loggerHandlerFile)) {
- return; // Same file output, do nothing.
- }
-
- for (java.util.logging.Handler handlers : PARENT_LOGGER.getHandlers()) {
- // Remove previously set Handlers
- handlers.close();
- PARENT_LOGGER.removeHandler(handlers);
- loggerHandlerFile = null;
- }
-
- java.util.logging.Handler handler = null;
- if (driverLogFile != null) {
- try {
- handler = new java.util.logging.FileHandler(driverLogFile);
- loggerHandlerFile = driverLogFile;
- } catch (Exception ex) {
- System.err.println("Cannot enable FileHandler, fallback to ConsoleHandler.");
- }
- }
-
- Formatter formatter = new SimpleFormatter();
-
- if ( handler == null ) {
- if (DriverManager.getLogWriter() != null) {
- handler = new WriterHandler(DriverManager.getLogWriter());
- } else if ( DriverManager.getLogStream() != null) {
- handler = new StreamHandler(DriverManager.getLogStream(), formatter);
- } else {
- handler = new StreamHandler(System.err, formatter);
- }
- } else {
- handler.setFormatter(formatter);
- }
-
- handler.setLevel(PARENT_LOGGER.getLevel());
- PARENT_LOGGER.setUseParentHandlers(false);
- PARENT_LOGGER.addHandler(handler);
- }
-
- /**
- * Perform a connect in a separate thread; supports getting the results from the original thread
- * while enforcing a login timeout.
- */
- private static class ConnectThread implements Runnable {
- ConnectThread(String url, Properties props) {
- this.url = url;
- this.props = props;
- }
-
- public void run() {
- Connection conn;
- Throwable error;
-
- try {
- conn = makeConnection(url, props);
- error = null;
- } catch (Throwable t) {
- conn = null;
- error = t;
- }
-
- synchronized (this) {
- if (abandoned) {
- if (conn != null) {
- try {
- conn.close();
- } catch (SQLException e) {
- }
- }
- } else {
- result = conn;
- resultException = error;
- notify();
- }
- }
}
/**
- * Get the connection result from this (assumed running) thread. If the timeout is reached
- * without a result being available, a SQLException is thrown.
+ * Setup java.util.logging.Logger using connection properties.
*
- * @param timeout timeout in milliseconds
- * @return the new connection, if successful
- * @throws SQLException if a connection error occurs or the timeout is reached
+ * See {@link PGProperty#LOGGER_FILE} and {@link PGProperty#LOGGER_FILE}
+ *
+ * @param props Connection Properties
*/
- public Connection getResult(long timeout) throws SQLException {
- long expiry = System.currentTimeMillis() + timeout;
- synchronized (this) {
- while (true) {
- if (result != null) {
- return result;
- }
-
- if (resultException != null) {
- if (resultException instanceof SQLException) {
- resultException.fillInStackTrace();
- throw (SQLException) resultException;
- } else {
- throw new PSQLException(
- GT.tr(
- "Something unusual has occured to cause the driver to fail. Please report this exception."),
- PSQLState.UNEXPECTED_ERROR, resultException);
- }
- }
-
- long delay = expiry - System.currentTimeMillis();
- if (delay <= 0) {
- abandoned = true;
- throw new PSQLException(GT.tr("Connection attempt timed out."),
- PSQLState.CONNECTION_UNABLE_TO_CONNECT);
- }
-
- try {
- wait(delay);
- } catch (InterruptedException ie) {
-
- // reset the interrupt flag
- Thread.currentThread().interrupt();
- abandoned = true;
-
- // throw an unchecked exception which will hopefully not be ignored by the calling code
- throw new RuntimeException(GT.tr("Interrupted while attempting to connect."));
- }
+ private void setupLoggerFromProperties(final Properties props) {
+ final String driverLogLevel = PGProperty.LOGGER_LEVEL.get(props);
+ if (!initLoggerProperties(driverLogLevel)) {
+ return;
}
- }
- }
- private final String url;
- private final Properties props;
- private Connection result;
- private Throwable resultException;
- private boolean abandoned;
- }
+ final String driverLogFile = PGProperty.LOGGER_FILE.getDefaultValue();
+ if (driverLogFile != null && driverLogFile.equals(loggerHandlerFile)) {
+ return; // Same file output, do nothing.
+ }
- /**
- * Create a connection from URL and properties. Always does the connection work in the current
- * thread without enforcing a timeout, regardless of any timeout specified in the properties.
- *
- * @param url the original URL
- * @param props the parsed/defaulted connection properties
- * @return a new connection
- * @throws SQLException if the connection could not be made
- */
- private static Connection makeConnection(String url, Properties props) throws SQLException {
- PgConnection pgConnection = new PgConnection(hostSpecs(props), user(props), database(props), props, url);
- GlobalConnectionTracker.possessConnectionReference(pgConnection.getQueryExecutor(), props);
- return pgConnection;
- }
+ for (java.util.logging.Handler handlers : PARENT_LOGGER.getHandlers()) {
+ // Remove previously set Handlers
+ handlers.close();
+ PARENT_LOGGER.removeHandler(handlers);
+ loggerHandlerFile = null;
+ }
- /**
- * Returns true if the driver thinks it can open a connection to the given URL. Typically, drivers
- * will return true if they understand the subprotocol specified in the URL and false if they
- * don't. Our protocols start with jdbc:postgresql:
- *
- * @param url the URL of the driver
- * @return true if this driver accepts the given URL
- * @throws PSQLException
- * @see java.sql.Driver#acceptsURL
- */
- @Override
- public boolean acceptsURL(String url) throws PSQLException {
- return parseURL(url, null) != null;
- }
-
- /**
- * The getPropertyInfo method is intended to allow a generic GUI tool to discover what properties
- * it should prompt a human for in order to get enough information to connect to a database.
- *
- * Note that depending on the values the human has supplied so far, additional values may become
- * necessary, so it may be necessary to iterate through several calls to getPropertyInfo
- *
- * @param url the Url of the database to connect to
- * @param info a proposed list of tag/value pairs that will be sent on connect open.
- * @return An array of DriverPropertyInfo objects describing possible properties. This array may
- * be an empty array if no properties are required
- * @throws PSQLException
- * @see java.sql.Driver#getPropertyInfo
- */
- @Override
- public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws PSQLException {
- Properties copy = new Properties(info);
- Properties parse = parseURL(url, copy);
- if (parse != null) {
- copy = parse;
- }
-
- PGProperty[] knownProperties = PGProperty.values();
- DriverPropertyInfo[] props = new DriverPropertyInfo[knownProperties.length];
- for (int i = 0; i < props.length; ++i) {
- props[i] = knownProperties[i].toDriverPropertyInfo(copy);
- }
-
- return props;
- }
-
- @Override
- public int getMajorVersion() {
- return org.postgresql.util.DriverInfo.MAJOR_VERSION;
- }
-
- @Override
- public int getMinorVersion() {
- return org.postgresql.util.DriverInfo.MINOR_VERSION;
- }
-
- /**
- * Returns the server version series of this driver and the specific build number.
- *
- * @return JDBC driver version
- * @deprecated use {@link #getMajorVersion()} and {@link #getMinorVersion()} instead
- */
- @Deprecated
- public static String getVersion() {
- return DriverInfo.DRIVER_FULL_NAME;
- }
-
- /**
- * Report whether the driver is a genuine JDBC compliant driver. A driver may only report "true"
- * here if it passes the JDBC compliance tests, otherwise it is required to return false. JDBC
- * compliance requires full support for the JDBC API and full support for SQL 92 Entry Level.
- *
- * For PostgreSQL, this is not yet possible, as we are not SQL92 compliant (yet).
- */
- @Override
- public boolean jdbcCompliant() {
- return false;
- }
-
- public static String parseIPValid(String address) {
- if (address == "" || address == null) {
- return address;
- }
- String regex = "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\."
- + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
- + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
- + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$";
- Pattern pattern = Pattern.compile(regex);
- if (!pattern.matcher(address).matches()) {
- LOGGER.debug("JDBC URL invalid ip address: " + address);
- }
- return address;
- }
-
- /**
- * Constructs a new DriverURL, splitting the specified URL into its component parts.
- *
- * @param url JDBC URL to parse
- * @param defaults Default properties
- * @return Properties with elements added from the url
- * @throws PSQLException
- */
- public static Properties parseURL(String url, Properties defaults) throws PSQLException {
- Properties urlProps = new Properties(defaults);
- String l_urlServer = url;
- String l_urlArgs = "";
-
- int l_qPos = url.indexOf('?');
- if (l_qPos != -1) {
- l_urlServer = url.substring(0, l_qPos);
- l_urlArgs = url.substring(l_qPos + 1);
- }
-
- if (!l_urlServer.startsWith("jdbc:postgresql:") && !l_urlServer.startsWith("jdbc:dws:iam:")) {
- LOGGER.debug("JDBC URL must start with \"jdbc:postgresql:\" or \"jdbc:dws:iam:\" but was: " + url);
- return null;
- }
- if(l_urlServer.startsWith("jdbc:postgresql:")) {
- l_urlServer = l_urlServer.substring("jdbc:postgresql:".length());
-
- if (l_urlServer.startsWith("//")) {
- l_urlServer = l_urlServer.substring(2);
- int slash = l_urlServer.indexOf('/');
- if (slash == -1) {
- LOGGER.warn("JDBC URL must contain a / at the end of the host or port: " + url);
- return null;
+ java.util.logging.Handler handler = null;
+ if (driverLogFile != null) {
+ try {
+ handler = new java.util.logging.FileHandler(driverLogFile);
+ loggerHandlerFile = driverLogFile;
+ } catch (Exception ex) {
+ System.err.println("Cannot enable FileHandler, fallback to ConsoleHandler.");
}
- urlProps.setProperty("PGDBNAME", URLCoder.decode(l_urlServer.substring(slash + 1)));
+ }
+
+ Formatter formatter = new SimpleFormatter();
+
+ if (handler == null) {
+ if (DriverManager.getLogWriter() != null) {
+ handler = new WriterHandler(DriverManager.getLogWriter());
+ } else if (DriverManager.getLogStream() != null) {
+ handler = new StreamHandler(DriverManager.getLogStream(), formatter);
+ } else {
+ handler = new StreamHandler(System.err, formatter);
+ }
+ } else {
+ handler.setFormatter(formatter);
+ }
+
+ handler.setLevel(PARENT_LOGGER.getLevel());
+ PARENT_LOGGER.setUseParentHandlers(false);
+ PARENT_LOGGER.addHandler(handler);
+ }
+
+ /**
+ * Perform a connect in a separate thread; supports getting the results from the original thread
+ * while enforcing a login timeout.
+ */
+ private static class ConnectThread implements Runnable {
+ ConnectThread(String url, Properties props) {
+ this.url = url;
+ this.props = props;
+ }
+
+ public void run() {
+ Connection conn;
+ Throwable error;
+
+ try {
+ conn = makeConnection(url, props);
+ error = null;
+ } catch (Throwable t) {
+ conn = null;
+ error = t;
+ }
+
+ synchronized (this) {
+ if (abandoned) {
+ if (conn != null) {
+ try {
+ conn.close();
+ } catch (SQLException e) {
+ }
+ }
+ } else {
+ result = conn;
+ resultException = error;
+ notify();
+ }
+ }
+ }
+
+ /**
+ * Get the connection result from this (assumed running) thread. If the timeout is reached
+ * without a result being available, a SQLException is thrown.
+ *
+ * @param timeout timeout in milliseconds
+ * @return the new connection, if successful
+ * @throws SQLException if a connection error occurs or the timeout is reached
+ */
+ public Connection getResult(long timeout) throws SQLException {
+ long expiry = System.currentTimeMillis() + timeout;
+ synchronized (this) {
+ while (true) {
+ if (result != null) {
+ return result;
+ }
+
+ if (resultException != null) {
+ if (resultException instanceof SQLException) {
+ resultException.fillInStackTrace();
+ throw (SQLException) resultException;
+ } else {
+ throw new PSQLException(
+ GT.tr(
+ "Something unusual has occured to cause the driver to fail. Please report" +
+ " this exception."),
+ PSQLState.UNEXPECTED_ERROR, resultException);
+ }
+ }
+
+ long delay = expiry - System.currentTimeMillis();
+ if (delay <= 0) {
+ abandoned = true;
+ throw new PSQLException(GT.tr("Connection attempt timed out."),
+ PSQLState.CONNECTION_UNABLE_TO_CONNECT);
+ }
- // Save the ip and port configured in the url
- String[] addresses = l_urlServer.substring(0, slash).split(",");
- StringBuilder hosts = new StringBuilder();
- StringBuilder ports = new StringBuilder();
- for (String address : addresses) {
- int portIdx = address.lastIndexOf(':');
- if (portIdx != -1 && address.lastIndexOf(']') < portIdx) {
- String portStr = address.substring(portIdx + 1);
try {
- int port = Integer.parseInt(portStr);
- if (port < 1 || port > 65535) {
- LOGGER.warn("JDBC URL port: " + portStr + " not valid (1:65535) ");
+ wait(delay);
+ } catch (InterruptedException ie) {
+
+ // reset the interrupt flag
+ Thread.currentThread().interrupt();
+ abandoned = true;
+
+ // throw an unchecked exception which will hopefully not be ignored by the calling code
+ throw new RuntimeException(GT.tr("Interrupted while attempting to connect."));
+ }
+ }
+ }
+ }
+
+ private final String url;
+ private final Properties props;
+ private Connection result;
+ private Throwable resultException;
+ private boolean abandoned;
+ }
+
+ /**
+ * Create a connection from URL and properties. Always does the connection work in the current
+ * thread without enforcing a timeout, regardless of any timeout specified in the properties.
+ *
+ * @param url the original URL
+ * @param props the parsed/defaulted connection properties
+ * @return a new connection
+ * @throws SQLException if the connection could not be made
+ */
+ private static Connection makeConnection(String url, Properties props) throws SQLException {
+ PgConnection pgConnection = new PgConnection(hostSpecs(props), user(props), database(props), props, url);
+ GlobalConnectionTracker.possessConnectionReference(pgConnection.getQueryExecutor(), props);
+ return pgConnection;
+ }
+
+ /**
+ * Returns true if the driver thinks it can open a connection to the given URL. Typically, drivers
+ * will return true if they understand the subprotocol specified in the URL and false if they
+ * don't. Our protocols start with jdbc:postgresql:
+ *
+ * @param url the URL of the driver
+ * @return true if this driver accepts the given URL
+ * @throws PSQLException
+ * @see java.sql.Driver#acceptsURL
+ */
+ @Override
+ public boolean acceptsURL(String url) throws PSQLException {
+ return parseURL(url, null) != null;
+ }
+
+ /**
+ * The getPropertyInfo method is intended to allow a generic GUI tool to discover what properties
+ * it should prompt a human for in order to get enough information to connect to a database.
+ *
+ * Note that depending on the values the human has supplied so far, additional values may become
+ * necessary, so it may be necessary to iterate through several calls to getPropertyInfo
+ *
+ * @param url the Url of the database to connect to
+ * @param info a proposed list of tag/value pairs that will be sent on connect open.
+ * @return An array of DriverPropertyInfo objects describing possible properties. This array may
+ * be an empty array if no properties are required
+ * @throws PSQLException
+ * @see java.sql.Driver#getPropertyInfo
+ */
+ @Override
+ public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws PSQLException {
+ Properties copy = new Properties(info);
+ Properties parse = parseURL(url, copy);
+ if (parse != null) {
+ copy = parse;
+ }
+
+ PGProperty[] knownProperties = PGProperty.values();
+ DriverPropertyInfo[] props = new DriverPropertyInfo[knownProperties.length];
+ for (int i = 0; i < props.length; ++i) {
+ props[i] = knownProperties[i].toDriverPropertyInfo(copy);
+ }
+
+ return props;
+ }
+
+ @Override
+ public int getMajorVersion() {
+ return org.postgresql.util.DriverInfo.MAJOR_VERSION;
+ }
+
+ @Override
+ public int getMinorVersion() {
+ return org.postgresql.util.DriverInfo.MINOR_VERSION;
+ }
+
+ /**
+ * Returns the server version series of this driver and the specific build number.
+ *
+ * @return JDBC driver version
+ * @deprecated use {@link #getMajorVersion()} and {@link #getMinorVersion()} instead
+ */
+ @Deprecated
+ public static String getVersion() {
+ return DriverInfo.DRIVER_FULL_NAME;
+ }
+
+ /**
+ * Report whether the driver is a genuine JDBC compliant driver. A driver may only report "true"
+ * here if it passes the JDBC compliance tests, otherwise it is required to return false. JDBC
+ * compliance requires full support for the JDBC API and full support for SQL 92 Entry Level.
+ *
+ * For PostgreSQL, this is not yet possible, as we are not SQL92 compliant (yet).
+ */
+ @Override
+ public boolean jdbcCompliant() {
+ return false;
+ }
+
+ public static String parseIPValid(String address) {
+ if (address == "" || address == null) {
+ return address;
+ }
+ String regex = "^(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|[1-9])\\."
+ + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
+ + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)\\."
+ + "(1\\d{2}|2[0-4]\\d|25[0-5]|[1-9]\\d|\\d)$";
+ Pattern pattern = Pattern.compile(regex);
+ if (!pattern.matcher(address).matches()) {
+ LOGGER.debug("JDBC URL invalid ip address: " + address);
+ }
+ return address;
+ }
+
+ /**
+ * Constructs a new DriverURL, splitting the specified URL into its component parts.
+ *
+ * @param url JDBC URL to parse
+ * @param defaults Default properties
+ * @return Properties with elements added from the url
+ * @throws PSQLException
+ */
+ public static Properties parseURL(String url, Properties defaults) throws PSQLException {
+ Properties urlProps = new Properties(defaults);
+ String l_urlServer = url;
+ String l_urlArgs = "";
+ boolean isUrlLegal = false;
+ String[] legalUrlTags = {"jdbc:postgresql:", "jdbc:dws:iam:"};
+
+ int l_qPos = url.indexOf('?');
+ if (l_qPos != -1) {
+ l_urlServer = url.substring(0, l_qPos);
+ l_urlArgs = url.substring(l_qPos + 1);
+ }
+
+ for (String urlTag : legalUrlTags) {
+ if (l_urlServer.startsWith(urlTag)) {
+ isUrlLegal = true;
+ }
+ }
+
+ if (!isUrlLegal) {
+ LOGGER.debug("JDBC URL must start with \"jdbc:postgresql:\" or \"jdbc:dws:iam:\" but was: "
+ + filterAuthenticationCredentials(url));
+ return null;
+ }
+
+ //if (l_urlServer.startsWith("jdbc:postgresql:")) {
+ l_urlServer = l_urlServer.substring("jdbc:postgresql:".length());
+
+ if (l_urlServer.startsWith("//")) {
+ l_urlServer = l_urlServer.substring(2);
+ int slash = l_urlServer.indexOf('/');
+ if (slash == -1) {
+ LOGGER.warn("JDBC URL must contain a / at the end of the host or port: "
+ + filterAuthenticationCredentials(url));
+ return null;
+ }
+ urlProps.setProperty("PGDBNAME", URLCoder.decode(l_urlServer.substring(slash + 1)));
+
+ // Save the ip and port configured in the url
+ String[] addresses = l_urlServer.substring(0, slash).split(",");
+ StringBuilder hosts = new StringBuilder();
+ StringBuilder ports = new StringBuilder();
+ for (String address : addresses) {
+ int portIdx = address.lastIndexOf(':');
+ if (portIdx != -1 && address.lastIndexOf(']') < portIdx) {
+ String portStr = address.substring(portIdx + 1);
+ try {
+ int port = Integer.parseInt(portStr);
+ if (port < 1 || port > 65535) {
+ LOGGER.warn("JDBC URL port: " + portStr + " not valid (1:65535) ");
+ return null;
+ }
+ } catch (NumberFormatException ignore) {
+ LOGGER.warn("JDBC URL invalid port number: " + portStr);
return null;
}
- } catch (NumberFormatException ignore) {
- LOGGER.warn("JDBC URL invalid port number: " + portStr);
- return null;
+ ports.append(portStr);
+ hosts.append(parseIPValid((String) address.subSequence(0, portIdx)));
+ } else {
+ ports.append(DEFAULT_PORT);
+ hosts.append(parseIPValid(address));
}
- ports.append(portStr);
- hosts.append(parseIPValid((String) address.subSequence(0, portIdx)));
- } else {
- ports.append(DEFAULT_PORT);
- hosts.append(parseIPValid(address));
+ ports.append(',');
+ hosts.append(',');
}
- ports.append(',');
- hosts.append(',');
- }
- ports.setLength(ports.length() - 1);
- hosts.setLength(hosts.length() - 1);
+ ports.setLength(ports.length() - 1);
+ hosts.setLength(hosts.length() - 1);
- urlProps.setProperty("PGHOST", hosts.toString());
- urlProps.setProperty("PGPORT", ports.toString());
+ urlProps.setProperty("PGHOST", hosts.toString());
+ urlProps.setProperty("PGPORT", ports.toString());
- //The first connection, put the host and port in the url into the props
- urlProps.setProperty("PGHOSTURL", hosts.toString());
- urlProps.setProperty("PGPORTURL", ports.toString());
- } else {
+ //The first connection, put the host and port in the url into the props
+ urlProps.setProperty("PGHOSTURL", hosts.toString());
+ urlProps.setProperty("PGPORTURL", ports.toString());
+ } else {
/*
if there are no defaults set or any one of PORT, HOST, DBNAME not set
then set it to default
*/
- if (defaults == null || !defaults.containsKey("PGPORT")) {
- urlProps.setProperty("PGPORT", DEFAULT_PORT);
+ if (defaults == null || !defaults.containsKey("PGPORT")) {
+ urlProps.setProperty("PGPORT", DEFAULT_PORT);
+ }
+ if (defaults == null || !defaults.containsKey("PGHOST")) {
+ urlProps.setProperty("PGHOST", "localhost");
+ }
+ if (defaults == null || !defaults.containsKey("PGDBNAME")) {
+ urlProps.setProperty("PGDBNAME", URLCoder.decode(l_urlServer));
+ }
}
- if (defaults == null || !defaults.containsKey("PGHOST")) {
- urlProps.setProperty("PGHOST", "localhost");
+
+ // parse the args part of the url
+ urlProps.putAll(praseParam(l_urlArgs));
+ if (urlProps.getProperty("enable_ce") != null && urlProps.getProperty("enable_ce").equals("1")) {
+ urlProps.setProperty("CLIENTLOGIC", "1");
}
- if (defaults == null || !defaults.containsKey("PGDBNAME")) {
- urlProps.setProperty("PGDBNAME", URLCoder.decode(l_urlServer));
+ return urlProps;
+ }
+
+ /**
+ * Shield sensitive information in the connection string, such as password, sslpassword, iamPassword
+ *
+ * @param url Connection string.
+ * @return Connection string without sensitive information
+ */
+ private static String filterAuthenticationCredentials(String url) {
+ String notSensitiveUrl = url;
+ int paramStartIndex = notSensitiveUrl.indexOf("?");
+ if (paramStartIndex != -1) {
+ LinkedHashMap paramsMap = praseParam(notSensitiveUrl.substring(paramStartIndex + 1));
+ StringBuilder stringBuilder = new StringBuilder(notSensitiveUrl.substring(0, paramStartIndex) + "?");
+ for (Map.Entry entry : paramsMap.entrySet()) {
+ boolean isKeyword = false;
+ for (String sensitiveCharacter : SENSITIVE_CHARACTERS) {
+ if (entry.getKey().equals(sensitiveCharacter)) {
+ isKeyword = true;
+ break;
+ }
+ }
+ if (!isKeyword) {
+ stringBuilder.append(entry.getKey() + "=" + entry.getValue() + "&");
+ }
+ }
+ notSensitiveUrl = stringBuilder.toString();
+ if (notSensitiveUrl.endsWith("?") || notSensitiveUrl.endsWith("&")) {
+ notSensitiveUrl = notSensitiveUrl.substring(0, notSensitiveUrl.length() - 1);
}
}
+ return notSensitiveUrl;
+ }
- // parse the args part of the url
- String[] args = l_urlArgs.split("&");
+ /**
+ * @param urlArgs The parameter part in the connection string
+ * @return parameter map
+ */
+ private static LinkedHashMap praseParam(String urlArgs) {
+ LinkedHashMap paramsMap = new LinkedHashMap<>();
+ String[] args = urlArgs.split("&");
for (String token : args) {
if (token.isEmpty()) {
continue;
}
int l_pos = token.indexOf('=');
if (l_pos == -1) {
- urlProps.setProperty(token, "");
+ paramsMap.put(token, "");
} else {
- urlProps.setProperty(token.substring(0, l_pos), URLCoder.decode(token.substring(l_pos + 1)));
+ paramsMap.put(token.substring(0, l_pos), URLCoder.decode(token.substring(l_pos + 1)));
}
}
- if(urlProps.getProperty("enable_ce") != null && urlProps.getProperty("enable_ce").equals("1")) {
- urlProps.setProperty("CLIENTLOGIC", "1");
- }
- return urlProps;
- }else {
- StringBuffer tmp = new StringBuffer();
- l_urlServer = l_urlServer.substring("jdbc:dws:iam:".length());
- String ClusterIdentifier="", region="", DbUser="", AutoCreate="", AccessKeyID="", SecretAccessKey="";
- if (l_urlServer.startsWith("//")) {
- l_urlServer = l_urlServer.substring(2);
- int slash = l_urlServer.indexOf('/');
- if (slash == -1) {
- return null;
- }
- urlProps.setProperty("PGDBNAME", l_urlServer.substring(slash + 1));
-
- String serverurl = l_urlServer.substring(0, slash);
- String[] clusterurl = serverurl.split(":");
- if(clusterurl.length != 2){
- return null;
- }
- ClusterIdentifier = clusterurl[0];
- region = clusterurl[1];
+ return paramsMap;
+ }
+ /* public method */
+ public static HostSpec[] GetHostSpecs(Properties props) {
+ return hostSpecs(props);
+ }
+
+ /**
+ * @param props Connection properties
+ * @return the address portion of the orgin URL
+ */
+ public static HostSpec[] getURLHostSpecs(Properties props) {
+ return urlHostSpecs(props);
+ }
+
+ public static String GetUser(Properties props) {
+ return user(props);
+ }
+
+ public static String GetDatabase(Properties props) {
+ return database(props);
+ }
+
+ private static HostSpec[] urlHostSpecs(Properties props) {
+ String[] ports = props.getProperty("PGPORTURL").split(",");
+ String[] hosts = props.getProperty("PGHOSTURL").split(",", ports.length);
+ HostSpec[] hostSpecs = new HostSpec[hosts.length];
+ for (int i = 0; i < hostSpecs.length; ++i) {
+ hostSpecs[i] = new HostSpec(hosts[i], Integer.parseInt(ports[i]));
}
-
- //parse the args part of the url
- String[] args = l_urlArgs.split("&");
- for (int i = 0; i < args.length; ++i)
- {
- String token = args[i];
- if (token.length() == 0) {
- continue;
- }
- int l_pos = token.indexOf('=');
- if (l_pos == -1)
- {
- urlProps.setProperty(token, "");
- }
- else
- {
- if(token.substring(0, l_pos).equals("AccessKeyID")){
- AccessKeyID = token.substring(l_pos + 1);
- }else if(token.substring(0, l_pos).equals("SecretAccessKey")){
- SecretAccessKey = token.substring(l_pos + 1);
- }else if(token.substring(0, l_pos).equals("DbUser")){
- DbUser = token.substring(l_pos + 1);
- }else if(token.substring(0, l_pos).equals("AutoCreate")){
- AutoCreate = token.substring(l_pos + 1);
- }else{
- tmp.append("&"+token.substring(0, l_pos)+"="+token.substring(l_pos + 1));
- }
- }
+ return hostSpecs;
+ }
+
+ /**
+ * @return the address portion of the URL
+ */
+ private static HostSpec[] hostSpecs(Properties props) {
+ String[] ports = props.getProperty("PGPORT").split(",");
+ String[] hosts = props.getProperty("PGHOST").split(",", ports.length);
+ HostSpec[] hostSpecs = new HostSpec[hosts.length];
+ for (int i = 0; i < hostSpecs.length; ++i) {
+ hostSpecs[i] = new HostSpec(hosts[i], Integer.parseInt(ports[i]));
}
- StringBuffer jdbcUrl = new StringBuffer();
- if(region.equals("") || ClusterIdentifier.equals("") || DbUser.equals("") || AccessKeyID.equals("")
- || SecretAccessKey.equals("")){
- throw new PSQLException(GT.tr("Please confirm that all the parameters needed is added to the url."), PSQLState.CONNECTION_REJECTED);
- }
- InputStream in = null;
- Properties props = new Properties();
- String domainName = "";
- try {
- File f = new File(Driver.class.getClassLoader().getResource("").getPath());
- String filePath = f.getParent() + File.separator + "config" + File.separator + "jdbcconfig.properties";
- in = new BufferedInputStream(new FileInputStream(filePath));
- props = new Properties();
- props.load(in);
- domainName = props.getProperty(region);
- in.close();
- } catch (Exception e) {
- if (in != null) {
- try {
- in.close();
- } catch (IOException ioe) {
- LOGGER.warn(ioe.getMessage());
- }
- }
+ return hostSpecs;
+ }
+
+ /**
+ * @return the username of the URL
+ */
+ private static String user(Properties props) {
+ return props.getProperty("user", "");
+ }
+
+ /**
+ * @return the database name of the URL
+ */
+ private static String database(Properties props) {
+ return props.getProperty("PGDBNAME", "");
+ }
+
+ /**
+ * @return the timeout from the URL, in milliseconds
+ */
+ private static long timeout(Properties props) {
+ String timeout = PGProperty.LOGIN_TIMEOUT.get(props);
+ if (timeout != null) {
try {
- props = new Properties();
- in = Driver.class.getResourceAsStream("/org/postgresql/jdbcconfig.properties");
- props.load(in);
- domainName = props.getProperty(region);
- in.close();
- } catch (Exception e1) {
- if (in != null) {
- try {
- in.close();
- } catch (IOException ioe) {
- LOGGER.warn(ioe.getMessage());
- }
- }
- throw new PSQLException(GT.tr("Parse jdbcconfig.properties failed."),
- PSQLState.CONNECTION_UNABLE_TO_CONNECT, e1);
+ return (long) (Float.parseFloat(timeout) * 1000);
+ } catch (NumberFormatException e) {
+ LOGGER.warn("Couldn't parse loginTimeout value: " + timeout);
}
}
- if(domainName == null || domainName.equals("")) {
- throw new PSQLException(GT.tr("Unrecognized region name."), PSQLState.CONNECTION_REJECTED);
+ return (long) DriverManager.getLoginTimeout() * 1000;
+ }
+
+ /**
+ * This method was added in v6.5, and simply throws an SQLException for an unimplemented method. I
+ * decided to do it this way while implementing the JDBC2 extensions to JDBC, as it should help
+ * keep the overall driver size down. It now requires the call Class and the function name to help
+ * when the driver is used with closed software that don't report the stack strace
+ *
+ * @param callClass the call Class
+ * @param functionName the name of the unimplemented function with the type of its arguments
+ * @return PSQLException with a localized message giving the complete description of the
+ * unimplemeted function
+ */
+ public static SQLFeatureNotSupportedException notImplemented(Class> callClass,
+ String functionName) {
+ return new SQLFeatureNotSupportedException(
+ GT.tr("Method {0} is not yet implemented.", callClass.getName() + "." + functionName),
+ PSQLState.NOT_IMPLEMENTED.getState());
+ }
+
+ public java.util.logging.Logger getParentLogger() {
+ if (Logger.isUsingJDKLogger()) {
+ return PARENT_LOGGER;
+ } else {
+ return null;
}
- jdbcUrl.append("https://" + domainName + "/credentials?");
- jdbcUrl.append("clusterName="+ClusterIdentifier);
- jdbcUrl.append("&dbUser="+DbUser);
- if(!AutoCreate.equals("")) {
- jdbcUrl.append("&autoCreate="+AutoCreate);
+ }
+
+ public static SharedTimer getSharedTimer() {
+ return sharedTimer;
+ }
+
+ /**
+ * Register the driver against {@link DriverManager}. This is done automatically when the class is
+ * loaded. Dropping the driver from DriverManager's list is possible using {@link #deregister()}
+ * method.
+ *
+ * @throws IllegalStateException if the driver is already registered
+ * @throws SQLException if registering the driver fails
+ */
+ public static void register() throws SQLException {
+ if (isRegistered()) {
+ throw new IllegalStateException(
+ "Driver is already registered. It can only be registered once.");
}
- jdbcUrl.append(tmp.toString());
+ registeredDriver = new Driver();
+ DriverManager.registerDriver(registeredDriver);
+ Driver.registeredDriver = registeredDriver;
- String jsonstr="";
- jsonstr = getReturn(AccessKeyID, SecretAccessKey, jdbcUrl.toString(), region);
- try {
- JSONObject jsonObj = JSONObject.parseObject(jsonstr);
- if(jsonObj.get("cluster_credentials") != null){
- jsonstr = jsonObj.get("cluster_credentials").toString();
- jsonObj = JSONObject.parseObject(jsonstr);
- if(jsonObj.get("db_user")!=null){
- urlProps.setProperty("user", jsonObj.get("db_user").toString());
- }
- if(jsonObj.get("db_endpoint")!=null){
- urlProps.setProperty("PGHOST", jsonObj.get("db_endpoint").toString());
- }
- if(jsonObj.get("db_port")!=null){
- urlProps.setProperty("PGPORT", jsonObj.get("db_port").toString());
- }
- if(jsonObj.get("db_password")!=null){
- urlProps.setProperty("password", jsonObj.get("db_password").toString());
- }
+ isLogFileCreated = new AtomicBoolean(false);
+ }
- //The first connection, put the host and port in the url into the clusters
- urlProps.setProperty("PGHOSTURL", urlProps.getProperty("PGHOST"));
- urlProps.setProperty("PGPORTURL", urlProps.getProperty("PGPORT"));
- } else if(jsonObj.get("externalMessage") != null) {
- throw new PSQLException (GT.tr(jsonObj.get("externalMessage").toString()), PSQLState.CONNECTION_UNABLE_TO_CONNECT);
- } else {
- throw new PSQLException (GT.tr("The format of Token is not as expected."), PSQLState.CONNECTION_UNABLE_TO_CONNECT);
- }
- } catch (Exception e) {
- throw new PSQLException (GT.tr("Parse the token failed."), PSQLState.CONNECTION_UNABLE_TO_CONNECT, e);
+ /**
+ * According to JDBC specification, this driver is registered against {@link DriverManager} when
+ * the class is loaded. To avoid leaks, this method allow unregistering the driver so that the
+ * class can be gc'ed if necessary.
+ *
+ * @throws IllegalStateException if the driver is not registered
+ * @throws SQLException if deregistering the driver fails
+ */
+ public static void deregister() throws SQLException {
+ if (!isRegistered()) {
+ throw new IllegalStateException(
+ "Driver is not registered (or it has not been registered using Driver.register() method)");
}
- if(urlProps.getProperty("ssl") == null && urlProps.getProperty("sslmode") == null) {
- urlProps.setProperty("sslmode", "require");
- }
- if(urlProps.getProperty("enable_ce") != null && urlProps.getProperty("enable_ce").equals("1")) {
- urlProps.setProperty("CLIENTLOGIC", "1");
- }
- return urlProps;
+ DriverManager.deregisterDriver(registeredDriver);
+ registeredDriver = null;
}
- }
-private static Request getRequest(URL url, String ak, String sk) throws Exception {
- Request request = new Request();
- request.setUrl(url.toString());
- request.setKey(ak);
- request.setSecret(sk);
- return request;
- }
- private static String getReturn(String ak, String sk, String requestUrl,String region) throws PSQLException {
- try {
- URL url = new URL(requestUrl);
- HttpMethodName httpMethod = HttpMethodName.GET;
- Request request = getRequest(url, ak, sk);
- request.setMethod(httpMethod.toString());
- request.addHeader("X-Language", "en-us");
- request.addHeader("Content-Type", "application/json");
- request.addHeader("Accept", "application/json");
-
- HttpRequestBase signedRequest = Client.sign(request);
- HttpResponse response = null;
-
- SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null,
- new TrustSelfSignedStrategy()).useTLS().build();
- SSLConnectionSocketFactory sslSocketFactory = new SSLConnectionSocketFactory(sslContext,
- new AllowAllHostnameVerifier());
-
- client = HttpClients.custom().setSSLSocketFactory(sslSocketFactory).build();
-
- response = client.execute(signedRequest);
- return convertStreamToString(response.getEntity().getContent());
- } catch (Exception e) {
- throw new PSQLException (GT.tr("Get the token failed."), PSQLState.CONNECTION_UNABLE_TO_CONNECT, e);
- } finally {
- try {
- if (client != null) {
- client.close();
- }
- }
- catch (IOException e) {
- LOGGER.warn("Catch IOException, client close failed.");
- }
- }
- }
-
- private static String convertStreamToString(InputStream is) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
- StringBuilder sb = new StringBuilder();
- String line = null;
- try {
- while ((line = reader.readLine()) != null) {
- sb.append(line + "\n");
- }
- } catch (IOException ioEX) {
- throw ioEX ;
- } finally {
- is.close();
- }
- return sb.toString();
- }
-
- /* public method */
- public static HostSpec[] GetHostSpecs(Properties props) {
- return hostSpecs(props);
- }
- /**
- * @param props Connection properties
- * @return the address portion of the orgin URL
- */
- public static HostSpec[] getURLHostSpecs(Properties props) {
- return urlHostSpecs(props);
- }
- public static String GetUser(Properties props) {
- return user(props);
- }
- public static String GetDatabase(Properties props) {
- return database(props);
- }
- private static HostSpec[] urlHostSpecs(Properties props) {
- String[] ports = props.getProperty("PGPORTURL").split(",");
- String[] hosts = props.getProperty("PGHOSTURL").split(",", ports.length);
- HostSpec[] hostSpecs = new HostSpec[hosts.length];
- for (int i = 0; i < hostSpecs.length; ++i) {
- hostSpecs[i] = new HostSpec(hosts[i], Integer.parseInt(ports[i]));
+ /**
+ * @return {@code true} if the driver is registered against {@link DriverManager}
+ */
+ public static boolean isRegistered() {
+ return registeredDriver != null;
}
- return hostSpecs;
- }
- /**
- * @return the address portion of the URL
- */
- private static HostSpec[] hostSpecs(Properties props) {
- String[] ports = props.getProperty("PGPORT").split(",");
- String[] hosts = props.getProperty("PGHOST").split(",", ports.length);
- HostSpec[] hostSpecs = new HostSpec[hosts.length];
- for (int i = 0; i < hostSpecs.length; ++i) {
- hostSpecs[i] = new HostSpec(hosts[i], Integer.parseInt(ports[i]));
- }
- return hostSpecs;
- }
- /**
- * @return the username of the URL
- */
- private static String user(Properties props) {
- return props.getProperty("user", "");
- }
-
- /**
- * @return the database name of the URL
- */
- private static String database(Properties props) {
- return props.getProperty("PGDBNAME", "");
- }
-
- /**
- * @return the timeout from the URL, in milliseconds
- */
- private static long timeout(Properties props) {
- String timeout = PGProperty.LOGIN_TIMEOUT.get(props);
- if (timeout != null) {
- try {
- return (long) (Float.parseFloat(timeout) * 1000);
- } catch (NumberFormatException e) {
- LOGGER.warn("Couldn't parse loginTimeout value: " + timeout);
- }
- }
- return (long) DriverManager.getLoginTimeout() * 1000;
- }
-
- /**
- * This method was added in v6.5, and simply throws an SQLException for an unimplemented method. I
- * decided to do it this way while implementing the JDBC2 extensions to JDBC, as it should help
- * keep the overall driver size down. It now requires the call Class and the function name to help
- * when the driver is used with closed software that don't report the stack strace
- *
- * @param callClass the call Class
- * @param functionName the name of the unimplemented function with the type of its arguments
- * @return PSQLException with a localized message giving the complete description of the
- * unimplemeted function
- */
- public static SQLFeatureNotSupportedException notImplemented(Class> callClass,
- String functionName) {
- return new SQLFeatureNotSupportedException(
- GT.tr("Method {0} is not yet implemented.", callClass.getName() + "." + functionName),
- PSQLState.NOT_IMPLEMENTED.getState());
- }
-
- public java.util.logging.Logger getParentLogger()
- {
- if(Logger.isUsingJDKLogger()) {
- return PARENT_LOGGER;
- } else {
- return null;
- }
- }
-
- public static SharedTimer getSharedTimer() {
- return sharedTimer;
- }
-
- /**
- * Register the driver against {@link DriverManager}. This is done automatically when the class is
- * loaded. Dropping the driver from DriverManager's list is possible using {@link #deregister()}
- * method.
- *
- * @throws IllegalStateException if the driver is already registered
- * @throws SQLException if registering the driver fails
- */
- public static void register() throws SQLException {
- if (isRegistered()) {
- throw new IllegalStateException(
- "Driver is already registered. It can only be registered once.");
- }
- registeredDriver = new Driver();
- DriverManager.registerDriver(registeredDriver);
- Driver.registeredDriver = registeredDriver;
-
- isLogFileCreated = new AtomicBoolean(false);
- }
-
- /**
- * According to JDBC specification, this driver is registered against {@link DriverManager} when
- * the class is loaded. To avoid leaks, this method allow unregistering the driver so that the
- * class can be gc'ed if necessary.
- *
- * @throws IllegalStateException if the driver is not registered
- * @throws SQLException if deregistering the driver fails
- */
- public static void deregister() throws SQLException {
- if (!isRegistered()) {
- throw new IllegalStateException(
- "Driver is not registered (or it has not been registered using Driver.register() method)");
- }
- DriverManager.deregisterDriver(registeredDriver);
- registeredDriver = null;
- }
-
- /**
- * @return {@code true} if the driver is registered against {@link DriverManager}
- */
- public static boolean isRegistered() {
- return registeredDriver != null;
- }
-
- public static String getGSVersion()
- {
+ public static String getGSVersion() {
return gsVersion;
}
}
diff --git a/pgjdbc/src/main/java/org/postgresql/PGProperty.java b/pgjdbc/src/main/java/org/postgresql/PGProperty.java
index 309ceb9..36363bb 100644
--- a/pgjdbc/src/main/java/org/postgresql/PGProperty.java
+++ b/pgjdbc/src/main/java/org/postgresql/PGProperty.java
@@ -25,6 +25,12 @@ public enum PGProperty {
PG_CLIENT_LOGIC("enable_ce", null,
"value of 1 is used to turn on the client logic driver feature", false),
+ /**
+ * whether to refresh the client encryption cache when invoke PgConnection.isValid method
+ */
+ REFRESH_CLIENT_ENCRYPTION("refreshClientEncryption", null,
+ "refresh the client encryption cache when invoke PgConnection.isValid method", true),
+
/**
* Database name to connect to (may be specified directly in the JDBC URL).
*/
@@ -382,10 +388,22 @@ public enum PGProperty {
"any", "master", "slave", "secondary", "preferSlave", "preferSecondary"),
/**
- * Specify the number of nodes to be connected first
+ * In providing a unified application for multiple CNs, the entrance of the requesting program in the client brings
+ * together similar CN services, so that all requests in the application are balanced.
+ */
+ AUTO_BALANCE("autoBalance", null, "Distribute connections evenly on CN"),
+
+ /**
+ * Specify the number of nodes to be connected first.
*/
PRIORITY_SERVERS("priorityServers",null,"Specify the number of nodes to be connected first"),
+ /**
+ * Specifies the name of obtain trace id interface class that forms the interface class part of the link trace
+ * service.
+ */
+ TRACE_INTERFACE_CLASS("traceInterfaceClass", null, "Used to generate the trace id"),
+
/**
* When using the priority load balancing feature, if use the node_host field of the pgxc_node table
* Load balancing feature will be invalid, So we use EIP uniformly unless data IP must be used.
@@ -458,9 +476,13 @@ public enum PGProperty {
* Supported TLS cipher suites
*/
TLS_CIPHERS_SUPPERTED("TLSCiphersSupperted",
- "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,"
- + "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,",
- "Supported TLS cipher suites"),
+ "TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,"
+ + "TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,"
+ + "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,"
+ + "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,"
+ + "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,"
+ + "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384",
+ "Supported TLS cipher suites"),
/**
* Factory class to instantiate factories for XML processing.
@@ -473,6 +495,38 @@ public enum PGProperty {
"",
"Factory class to instantiate factories for XML processing"),
+ /**
+ * Valid only when the client enables full encryption
+ * To access HuaweiCloud KMS, need to access HuaweiCloud IAM for identity authentication.
+ * This parameter is used to set the IAM user.
+ */
+ IAM_USER("iamUser", null,
+ "Username to connect to HuaweiCloud IAM and KMS as."),
+
+ /**
+ * To set the password of IAM user.
+ */
+ IAM_PASSWORD("iamPassword", null,
+ "Password to use when authenticated by HuaweiCloud IAM and KMS."),
+
+ /*
+ * Valid only when the client enables full encryption
+ */
+ KMS_DOMAIN("kmsDoamin", null,
+ "Domain of HuaweiCloud KMS."),
+
+ KMS_PROJECT_NAME("kmsProjectName", null,
+ "Place where the HuaweiCloud KMS server locates."),
+
+ KMS_PROJECT_ID("kmsProjectId", null,
+ "ID of HuaweiCloud KMS project."),
+
+ /**
+ * Convert metadata query results to uppercase.
+ */
+ UPPERCASE_ATTRIBUTE_NAME("uppercaseAttributeName", "false",
+ "Judge whether the uppercase function is on."),
+
;
private String _name;
@@ -641,20 +695,20 @@ public enum PGProperty {
return getSetString(properties) != null;
}
- /**
- * Convert this connection parameter and the value read from the given {@code Properties} into a
- * {@code DriverPropertyInfo}.
- *
- * @param properties properties to take actual value from
- * @return a DriverPropertyInfo representing this connection parameter
- */
- public DriverPropertyInfo toDriverPropertyInfo(Properties properties) {
- DriverPropertyInfo propertyInfo = new DriverPropertyInfo(_name, get(properties));
- propertyInfo.required = _required;
- propertyInfo.description = _description;
- propertyInfo.choices = _choices;
- return propertyInfo;
- }
+ /**
+ * Convert this connection parameter and the value read from the given {@code Properties} into a
+ * {@code DriverPropertyInfo}.
+ *
+ * @param properties properties to take actual value from
+ * @return a DriverPropertyInfo representing this connection parameter
+ */
+ public DriverPropertyInfo toDriverPropertyInfo(Properties properties) {
+ DriverPropertyInfo propertyInfo = new DriverPropertyInfo(_name, get(properties));
+ propertyInfo.required = _required;
+ propertyInfo.description = _description;
+ propertyInfo.choices = _choices;
+ return propertyInfo;
+ }
public static PGProperty forName(String name) {
for (PGProperty property : PGProperty.values()) {
diff --git a/pgjdbc/src/main/java/org/postgresql/PGStatement.java b/pgjdbc/src/main/java/org/postgresql/PGStatement.java
index 17d2ffd..1fa0d0a 100644
--- a/pgjdbc/src/main/java/org/postgresql/PGStatement.java
+++ b/pgjdbc/src/main/java/org/postgresql/PGStatement.java
@@ -80,4 +80,11 @@ public interface PGStatement {
* @since build 302
*/
int getPrepareThreshold();
+
+ /**
+ * Checks if the statement was created to get data for client logic cache Via JNI using executeQueryWithNoCL
+ *
+ * @return true if the statement was created to get data for client logic cache Via JNI using executeQueryWithNoCL
+ */
+ boolean getIsStatamentUsedForClientLogicCache();
}
diff --git a/pgjdbc/src/main/java/org/postgresql/core/CachedQuery.java b/pgjdbc/src/main/java/org/postgresql/core/CachedQuery.java
index 23ac4cd..cfd9a72 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/CachedQuery.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/CachedQuery.java
@@ -18,16 +18,18 @@ public class CachedQuery implements CanEstimateSize {
public final Object key;
public final Query query;
public final boolean isFunction;
-
+ public final boolean isOracleCompatibilityFunction;
private int executeCount;
- public CachedQuery(Object key, Query query, boolean isFunction) {
+ public CachedQuery(Object key, Query query, boolean isFunction, boolean isOracleCompatibilityFunction) {
assert key instanceof String || key instanceof CanEstimateSize
: "CachedQuery.key should either be String or implement CanEstimateSize."
+ " Actual class is " + key.getClass();
this.key = key;
this.query = query;
this.isFunction = isFunction;
+ this.isOracleCompatibilityFunction = isOracleCompatibilityFunction;
+ this.query.setIsFunction(isFunction);
}
public void increaseExecuteCount() {
diff --git a/pgjdbc/src/main/java/org/postgresql/core/CachedQueryCreateAction.java b/pgjdbc/src/main/java/org/postgresql/core/CachedQueryCreateAction.java
index df74aa2..c76ccc4 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/CachedQueryCreateAction.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/CachedQueryCreateAction.java
@@ -41,14 +41,17 @@ class CachedQueryCreateAction implements LruCache.CreateAction= 0;
@@ -65,6 +68,6 @@ class CachedQueryCreateAction implements LruCache.CreateActionEstablishes and initializes a new connection.
*
@@ -48,7 +50,9 @@ public abstract class ConnectionFactory {
String database, Properties info) throws SQLException {
String protoName = PGProperty.PROTOCOL_VERSION.get(info);
- if (protoName == null || protoName.isEmpty() || "3".equals(protoName)) {
+ if (protoName == null || protoName.isEmpty() ||
+ PROTOCOL_VERSION_1_STR.equals(protoName) ||
+ PROTOCOL_VERSION_3_STR.equals(protoName)) {
ConnectionFactory connectionFactory = new ConnectionFactoryImpl();
QueryExecutor queryExecutor = connectionFactory.openConnectionImpl(
hostSpecs, user, database, info);
diff --git a/pgjdbc/src/main/java/org/postgresql/core/Field.java b/pgjdbc/src/main/java/org/postgresql/core/Field.java
index 513ea57..2a7a5e6 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/Field.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/Field.java
@@ -7,6 +7,8 @@ package org.postgresql.core;
import org.postgresql.jdbc.FieldMetadata;
+import java.util.List;
+
/*
*/
public class Field {
@@ -19,6 +21,8 @@ public class Field {
private final int mod; // type modifier of this field
private final String columnLabel; // Column label
+ private List clientLogicFieldOriginalIds = null;
+
private int format = TEXT_FORMAT; // In the V3 protocol each field has a format
// 0 = text, 1 = binary
// In the V2 protocol all fields in a
@@ -168,4 +172,11 @@ public class Field {
public boolean isTypeInitialized() {
return pgType != NOT_YET_LOADED;
}
+
+ public List getClientLogicFieldOriginalIdS() {
+ return clientLogicFieldOriginalIds;
+ }
+ public void setClientLogicFieldOriginalIdS(List clientLogicFieldOriginalIds) {
+ this.clientLogicFieldOriginalIds = clientLogicFieldOriginalIds;
+ }
}
diff --git a/pgjdbc/src/main/java/org/postgresql/core/JdbcCallParseInfo.java b/pgjdbc/src/main/java/org/postgresql/core/JdbcCallParseInfo.java
index db9f842..892a432 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/JdbcCallParseInfo.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/JdbcCallParseInfo.java
@@ -11,10 +11,12 @@ package org.postgresql.core;
public class JdbcCallParseInfo {
private final String sql;
private final boolean isFunction;
+ private final boolean isOracleCompatibilityFunction;
- public JdbcCallParseInfo(String sql, boolean isFunction) {
+ public JdbcCallParseInfo(String sql, boolean isFunction, boolean isOracleCompatibilityFunction) {
this.sql = sql;
this.isFunction = isFunction;
+ this.isOracleCompatibilityFunction = isOracleCompatibilityFunction;
}
/**
@@ -35,4 +37,8 @@ public class JdbcCallParseInfo {
return isFunction;
}
+ public boolean isOracleCompatibilityFunction() {
+ return isOracleCompatibilityFunction;
+ }
+
}
diff --git a/pgjdbc/src/main/java/org/postgresql/core/Oid.java b/pgjdbc/src/main/java/org/postgresql/core/Oid.java
index ad22c16..4305022 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/Oid.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/Oid.java
@@ -67,7 +67,12 @@ public class Oid {
public static final int VOID = 2278;
public static final int INTERVAL = 1186;
public static final int INTERVAL_ARRAY = 1187;
- public static final int CHAR = 18; // This is not char(N), this is "char" a single byte type.
+
+ /**
+ * This is not char(N), this is "char" a single byte type.
+ */
+
+ public static final int CHAR = 18;
public static final int CHAR_ARRAY = 1002;
public static final int VARBIT = 1562;
public static final int VARBIT_ARRAY = 1563;
@@ -86,6 +91,18 @@ public class Oid {
public static final int BLOB = 88;
public static final int CLOB = 90;
+ /**
+ * mapping database oid nvarchar2
+ */
+
+ public static final int NVARCHAR2 = 3969;
+
+ /**
+ * mapping database oid nvarchar2_array
+ */
+
+ public static final int NVARCHAR2_ARRAY = 3968;
+
private static final Map OID_TO_NAME = new HashMap(100);
private static final Map NAME_TO_OID = new HashMap(100);
diff --git a/pgjdbc/src/main/java/org/postgresql/core/ParameterList.java b/pgjdbc/src/main/java/org/postgresql/core/ParameterList.java
index bbfa51b..c413fc0 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/ParameterList.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/ParameterList.java
@@ -183,6 +183,9 @@ public interface ParameterList {
* @param stream a stream containing the parameter data.
* @throws SQLException on error or if index is out of range
*/
+
+ void setBlob(int index, InputStream stream) throws SQLException;
+
void setText(int index, InputStream stream) throws SQLException;
/**
@@ -242,4 +245,6 @@ public interface ParameterList {
* @return Object array containing the parameter values.
*/
Object[] getValues();
+
+ void bindRegisterOutParameter(int index,int oid, boolean isOracleCompatibilityFunction) throws SQLException;
}
diff --git a/pgjdbc/src/main/java/org/postgresql/core/Parser.java b/pgjdbc/src/main/java/org/postgresql/core/Parser.java
index ffe0818..368ac96 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/Parser.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/Parser.java
@@ -48,8 +48,6 @@ public class Parser {
boolean isBatchedReWriteConfigured,
String... returningColumnNames) throws SQLException {
int numOfOverSymble = 0;
- boolean haveProcedure = false;
- boolean haveFunction = false;
if(startWithComment(query)) {
query = removeFirstComment(query);
}
@@ -57,15 +55,7 @@ public class Parser {
String queryTemp = query.trim();
queryTemp = queryTemp.replaceAll(reg, "\0");
String[] queryArr = queryTemp.split("\0");
-
- for(int i = 0;i < queryArr.length; i++) {
- if (queryArr[i] != null && (queryArr[i].toUpperCase(Locale.ENGLISH)).equals("PROCEDURE") ) {
- haveProcedure = true;
- }
- if (queryArr[i] != null && (queryArr[i].toUpperCase(Locale.ENGLISH)).equals("FUNCTION") ) {
- haveFunction = true;
- }
- }
+ boolean haveSpecialKeyword = isContainSpecialKeyword(queryArr);
if (!withParameters && !splitStatements
&& returningColumnNames != null && returningColumnNames.length == 0) {
@@ -135,7 +125,11 @@ public class Parser {
{
break;
}
- if (i >1 && "\n".equals(String.valueOf(aChars[i - 1]))) {
+ if (!haveSpecialKeyword) {
+ break;
+ }
+
+ if (i > 1 && ("\n".equals(String.valueOf(aChars[i - 1])) || " ".equals(String.valueOf(aChars[i - 1])))) {
numOfOverSymble++;
if (inParen == 0) {
if (!whitespaceOnly) {
@@ -165,6 +159,7 @@ public class Parser {
valuesBraceClosePosition = -1;
}
+ inBeginEnd = 0;
nativeQueries.add(
new NativeQuery(
nativeSql.toString(),
@@ -236,11 +231,7 @@ public class Parser {
break;
case ';':
- if (haveProcedure || haveFunction)
- {
- break;
- }
- if (queryArr[0] !=null && ((queryArr[0].toUpperCase(Locale.ENGLISH)).equals("BEGIN") ||(queryArr[0].toUpperCase(Locale.ENGLISH)).equals("DECLARE")))
+ if (haveSpecialKeyword)
{
break;
}
@@ -268,7 +259,7 @@ public class Parser {
valuesBraceOpenPosition = -1;
valuesBraceClosePosition = -1;
}
-
+ inBeginEnd = 0;
nativeQueries.add(new NativeQuery(nativeSql.toString(),
toIntArray(bindPositions), false,
SqlCommand.createStatementTypeInfo(
@@ -304,7 +295,7 @@ public class Parser {
&& "N".equalsIgnoreCase(String.valueOf(aChars[i + 4]))
&& isSpecialCharacters(aChars[i - 1])
&& isSpecialCharacters(aChars[i + 5])) {
- inBeginEnd ++;
+ inBeginEnd++;
}
}
break;
@@ -315,7 +306,9 @@ public class Parser {
if ("N".equalsIgnoreCase(String.valueOf(aChars[i + 1]))
&& "D".equalsIgnoreCase(String.valueOf(aChars[i + 2])))
{
- inBeginEnd --;
+ int[] result = parseEnd(i, aChars, inBeginEnd);
+ i = result[0];
+ inBeginEnd = result[1];
}
}
@@ -615,6 +608,48 @@ public class Parser {
return query.length;
}
+ /**
+ * Judge whether the statement contains the keywords procedure, function, create, package and declare
+ *
+ * @param queryArr An array of strings consisting of SQL statements
+ * @return boolean
+ */
+ private static boolean isContainSpecialKeyword(final String[] queryArr) {
+ if (queryArr[0].toUpperCase(Locale.ENGLISH).equals("BEGIN")) {
+ return true;
+ }
+ boolean haveCreate = false;
+ boolean havePackage = false;
+ for (int i = 0; i < queryArr.length; i++) {
+ if (queryArr[i] == null) {
+ continue;
+ }
+ switch (queryArr[i].toUpperCase(Locale.ENGLISH)) {
+ case "PROCEDURE":
+ case "FUNCTION":
+ case "DECLARE":
+ return true;
+ case "CREATE":
+ if (i == 0) {
+ haveCreate = true;
+ }
+ break;
+ case "PACKAGE":
+ havePackage = true;
+ break;
+ case "END":
+ if (haveCreate && havePackage) {
+ // Case : create package tn end is end tn;
+ return true;
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ return false;
+ }
+
/**
* Find the end of the double-quoted string starting at the given offset.
*
@@ -1092,6 +1127,7 @@ public class Parser {
String sql = jdbcSql;
boolean isFunction = false;
boolean outParamBeforeFunc = false;
+ boolean isOracleCompatibilityFunction = false;
int len = jdbcSql.length();
int state = 1;
@@ -1122,6 +1158,7 @@ public class Parser {
if (ch == '?') {
outParamBeforeFunc =
isFunction = true; // { ? = call ... } -- function with one out parameter
+ isOracleCompatibilityFunction = true;
++i;
++state;
} else if (ch == 'c' || ch == 'C') { // { call ... } -- proc with no out parameters
@@ -1223,7 +1260,7 @@ public class Parser {
if (i == len && !syntaxError) {
if (state == 1) {
// Not an escaped syntax.
- return new JdbcCallParseInfo(sql, isFunction);
+ return new JdbcCallParseInfo(sql, isFunction, false);
}
if (state != 8) {
syntaxError = true; // Ran out of query while still parsing
@@ -1277,7 +1314,7 @@ public class Parser {
}
sql = sb.append(suffix).toString();
- return new JdbcCallParseInfo(sql, isFunction);
+ return new JdbcCallParseInfo(sql, isFunction, isOracleCompatibilityFunction);
}
/**
@@ -1475,6 +1512,47 @@ public class Parser {
return i;
}
+ /**
+ * Judge whether the current end is the end paired with begin
+ */
+ private static int[] parseEnd(final int offset, final char[] query, final int inBeginEnd) {
+ int tempOffset = offset;
+ int tempInBeginEnd = inBeginEnd;
+ tempOffset = tempOffset + 3;
+ while (tempOffset < query.length) {
+ if (isSpecialCharacters(query[tempOffset])) {
+ tempOffset++;
+ } else if ("-".equals(String.valueOf(query[tempOffset]))) {
+ int temp = tempOffset;
+ tempOffset = Parser.parseLineComment(query, tempOffset);
+ if (temp == tempOffset) {
+ tempOffset++;
+ }
+ } else if ("/".equals(String.valueOf(query[tempOffset]))) {
+ int temp = tempOffset;
+ temp = Parser.parseBlockComment(query, temp);
+ if (tempOffset != temp) {
+ tempOffset = temp + 1;
+ } else {
+ // Not a slash for a comment
+ tempOffset--;
+ tempInBeginEnd--;
+ break;
+ }
+ } else if (";".equals(String.valueOf(query[tempOffset]))
+ || (tempOffset + 1 < query.length && "$$".equals(
+ String.valueOf(query[tempOffset]) + query[tempOffset + 1]))) {
+ // This is the end paired with begin
+ tempInBeginEnd--;
+ break;
+ } else {
+ tempOffset--;
+ break;
+ }
+ }
+ return new int[]{tempOffset, tempInBeginEnd};
+ }
+
/**
* Generate sql for escaped functions.
*
diff --git a/pgjdbc/src/main/java/org/postgresql/core/Query.java b/pgjdbc/src/main/java/org/postgresql/core/Query.java
index eeda704..fe0cef9 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/Query.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/Query.java
@@ -90,4 +90,34 @@ public interface Query {
* single-statement query.
*/
Query[] getSubqueries();
+
+ /**
+ * Set the current statement state
+ *
+ * @param isFunction true or false
+ */
+ void setIsFunction(boolean isFunction);
+
+ /**
+ * Returns whether the current statement is a function
+ *
+ * @return true or false
+ *
+ */
+ boolean getIsFunction();
+
+ /**
+ * Gets the value of nodeName
+ *
+ * @return String
+ */
+ String getNodeName();
+
+ /**
+ * Set the value of nodeName
+ *
+ * @param nodeName DN name
+ * @return null
+ */
+ void setNodeName(String nodeName);
}
diff --git a/pgjdbc/src/main/java/org/postgresql/core/QueryExecutor.java b/pgjdbc/src/main/java/org/postgresql/core/QueryExecutor.java
index e02e9a2..794f248 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/QueryExecutor.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/QueryExecutor.java
@@ -123,6 +123,11 @@ public interface QueryExecutor extends TypeTransferModeRegistry {
* Added to support queries coming from client logic (c++) and avoid a loop back
*/
int QUERY_EXECUTE_BYPASS_CLIENT_LOGIC = 2048;
+
+ /**
+ * Execute the query again after client logic cache was reloaded
+ */
+ int QUERY_RETRY_WITH_CLIENT_LOGIC_CACHE_RELOADS = 4096;
/**
* Execute several Query, passing results to a provided ResultHandler.
@@ -495,5 +500,38 @@ public interface QueryExecutor extends TypeTransferModeRegistry {
void setGaussdbVersion(String gaussdbVersion);
+
+ /**
+ * Sets the version of the currently connected database
+ *
+ * @param workingVersionNum value of workingVersionNum
+ */
+ void setWorkingVersionNum(String workingVersionNum);
+
+ /**
+ * Get workingVersionNum
+ *
+ * @return value of workingVersionNum
+ */
+ String getWorkingVersionNum();
+
void setAvailability(boolean availability);
+
+ String getCompatibilityMode();
+
+ void setCompatibilityMode(String compatibilityMode);
+
+ /**
+ * Get reload status
+ *
+ * @return state true or false
+ */
+ boolean getEnableOutparamOveride();
+
+ /**
+ * Set reload status
+ *
+ * @param enableOutparamOveride true or false
+ */
+ void setEnableOutparamOveride(boolean enableOutparamOveride);
}
diff --git a/pgjdbc/src/main/java/org/postgresql/core/SocketFactoryFactory.java b/pgjdbc/src/main/java/org/postgresql/core/SocketFactoryFactory.java
index 09efa75..fe56354 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/SocketFactoryFactory.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/SocketFactoryFactory.java
@@ -36,7 +36,7 @@ public class SocketFactoryFactory {
return SocketFactory.getDefault();
}
try {
- return (SocketFactory) ObjectFactory.instantiate(socketFactoryClassName, info, true,
+ return ObjectFactory.instantiate(SocketFactory.class, socketFactoryClassName, info, true,
PGProperty.SOCKET_FACTORY_ARG.get(info));
} catch (Exception e) {
throw new PSQLException(
@@ -61,7 +61,7 @@ public class SocketFactoryFactory {
return new LibPQFactory(info);
}
try {
- return (SSLSocketFactory) ObjectFactory.instantiate(classname, info, true,
+ return ObjectFactory.instantiate(SSLSocketFactory.class, classname, info, true,
PGProperty.SSL_FACTORY_ARG.get(info));
} catch (Exception e) {
throw new PSQLException(
diff --git a/pgjdbc/src/main/java/org/postgresql/core/Utils.java b/pgjdbc/src/main/java/org/postgresql/core/Utils.java
index 027c71a..dfbb31c 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/Utils.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/Utils.java
@@ -51,12 +51,7 @@ public class Utils {
// for performance measurements.
// In OracleJDK 6u65, 7u55, and 8u40 String.getBytes(Charset) is
// 3 times faster than other JDK approaches.
- Charset gbkCharset = Charset.forName("GBK");
- if ("GBK".equals((ConnectionFactoryImpl.CLIENT_ENCODING).toUpperCase(Locale.ENGLISH)))
- {
- return str.getBytes(gbkCharset);
- }
- return str.getBytes(utf8Charset);
+ return str.getBytes(Charset.forName(ConnectionFactoryImpl.CLIENT_ENCODING));
}
/**
diff --git a/pgjdbc/src/main/java/org/postgresql/core/v3/CompositeParameterList.java b/pgjdbc/src/main/java/org/postgresql/core/v3/CompositeParameterList.java
index f5e1948..58135b9 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/v3/CompositeParameterList.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/v3/CompositeParameterList.java
@@ -47,6 +47,11 @@ class CompositeParameterList implements V3ParameterList {
}
+ @Override
+ public void bindRegisterOutParameter(int index, int oid, boolean isOracleCompatibilityFunction) throws SQLException {
+
+ }
+
public int getDirection(int i) {
return 0;
}
@@ -208,5 +213,8 @@ class CompositeParameterList implements V3ParameterList {
int sub = findSubParam(index);
subparams[sub].setBlob(index - offsets[sub], stream, length);
}
-
+ public void setBlob(int index, InputStream stream) throws SQLException {
+ int sub = findSubParam(index);
+ subparams[sub].setBlob(index - offsets[sub], stream);
+ }
}
diff --git a/pgjdbc/src/main/java/org/postgresql/core/v3/CompositeQuery.java b/pgjdbc/src/main/java/org/postgresql/core/v3/CompositeQuery.java
index 77809e4..62ae348 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/v3/CompositeQuery.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/v3/CompositeQuery.java
@@ -76,6 +76,26 @@ class CompositeQuery implements Query {
return subqueries;
}
+ @Override
+ public void setIsFunction(boolean isFunction) {
+
+ }
+
+ @Override
+ public boolean getIsFunction() {
+ return false;
+ }
+
+ @Override
+ public String getNodeName() {
+ return "";
+ }
+
+ @Override
+ public void setNodeName(String nodeName) {
+
+ }
+
public boolean isStatementDescribed() {
for (SimpleQuery subquery : subqueries) {
if (!subquery.isStatementDescribed()) {
diff --git a/pgjdbc/src/main/java/org/postgresql/core/v3/ConnectionFactoryImpl.java b/pgjdbc/src/main/java/org/postgresql/core/v3/ConnectionFactoryImpl.java
index 9bd230d..debfa0b 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/v3/ConnectionFactoryImpl.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/v3/ConnectionFactoryImpl.java
@@ -36,6 +36,7 @@ import java.util.Map;
import java.util.Properties;
import java.util.TimeZone;
import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
import javax.net.SocketFactory;
@@ -62,16 +63,31 @@ public class ConnectionFactoryImpl extends ConnectionFactory {
public static String USE_BOOLEAN = "false";
private static final int AUTH_REQ_SHA256 = 10;
private static final int AUTH_REQ_MD5_SHA256 = 11;
+ private static final int AUTH_REQ_SHA256_RFC = 12;
private static final int AUTH_REQ_SM3 = 13;
private static final int PLAIN_PASSWORD = 0;
private static final int MD5_PASSWORD = 1;
private static final int SHA256_PASSWORD = 2;
private static final int SM3_PASSWORD = 3;
private static final int ERROR_PASSWORD = 4;
+ private static final int SHA256_PASSWORD_RFC = 6;
private static final int PROTOCOL_VERSION_351 = 351;
private static final int PROTOCOL_VERSION_350 = 350;
+ private static final int PROTOCOL_VERSION_1 = 1;
private int protocolVerion = PROTOCOL_VERSION_351;
private String connectInfo = "";
+
+ /**
+ * Whitelist of supported client_encoding
+ */
+ public static final HashMap CLIENT_ENCODING_WHITELIST = new HashMap<>();
+
+ static {
+ CLIENT_ENCODING_WHITELIST.put("UTF8", "UTF8");
+ CLIENT_ENCODING_WHITELIST.put("UTF-8", "UTF-8");
+ CLIENT_ENCODING_WHITELIST.put("GBK", "GBK");
+ CLIENT_ENCODING_WHITELIST.put("LATIN1", "LATIN1");
+ }
public static void setStaticClientEncoding(String client) {
ConnectionFactoryImpl.CLIENT_ENCODING = client;
}
@@ -143,9 +159,13 @@ public class ConnectionFactoryImpl extends ConnectionFactory {
}
}
- List paramList = getParametersForStartup(user, database, info);
String protocolProp = info.getProperty("protocolVersion");
this.protocolVerion = (protocolProp != null && !protocolProp.isEmpty()) ? Integer.parseInt(protocolProp) : PROTOCOL_VERSION_351;
+ if (this.protocolVerion == PROTOCOL_VERSION_1) {
+ database = database.toUpperCase(Locale.ENGLISH);
+ }
+
+ List paramList = getParametersForStartup(user, database, info);
sendStartupPacket(newStream, paramList);
// Do authentication (until AuthenticationOk).
@@ -158,9 +178,12 @@ public class ConnectionFactoryImpl extends ConnectionFactory {
public QueryExecutor openConnectionImpl(HostSpec[] hostSpecs, String user, String database,
Properties info) throws SQLException {
if (info.getProperty("characterEncoding") != null) {
- if ("UTF8".equals((info.getProperty("characterEncoding")).toUpperCase(Locale.ENGLISH))
- || "GBK".equals((info.getProperty("characterEncoding")).toUpperCase(Locale.ENGLISH))) {
- setClientEncoding(info.getProperty("characterEncoding"));
+ if (CLIENT_ENCODING_WHITELIST.containsKey((info.getProperty("characterEncoding")).toUpperCase(Locale.ENGLISH))) {
+ setClientEncoding(info.getProperty("characterEncoding").toUpperCase(Locale.ENGLISH));
+ } else {
+ LOGGER.warn("unsupported client_encoding: " + info.getProperty(
+ "characterEncoding") + ", to ensure correct operation, please use the specified range " +
+ "of client_encoding.");
}
}
@@ -304,10 +327,16 @@ public class ConnectionFactoryImpl extends ConnectionFactory {
continue;
}
- //query and update statements cause logical replication to fail, temporarily evade
+ // query and update statements cause logical replication to fail, temporarily evade
if (info.getProperty("replication") == null) {
runInitialQueries(queryExecutor, info);
- queryExecutor.setGaussdbVersion(queryGaussdbVersion(queryExecutor));
+ String[] queryGaussdbVersionResult = queryGaussdbVersion(queryExecutor);
+ queryExecutor.setGaussdbVersion(queryGaussdbVersionResult[0]);
+ queryExecutor.setWorkingVersionNum(queryGaussdbVersionResult[1]);
+ if (this.protocolVerion != PROTOCOL_VERSION_1) {
+ // get database compatibility mode
+ queryExecutor.setCompatibilityMode(queryDataBaseDatcompatibility(queryExecutor, database));
+ }
}
if (MultiHostChooser.isUsingAutoLoadBalance(info)) {
QueryCNListUtils.runRereshCNListQueryies(queryExecutor, info);
@@ -424,6 +453,16 @@ public class ConnectionFactoryImpl extends ConnectionFactory {
if (PGProperty.PG_CLIENT_LOGIC.get(info) != null && PGProperty.PG_CLIENT_LOGIC.get(info).equals("1")) {
paramList.add(new String[]{"enable_full_encryption", "1"});
}
+
+ if (PGProperty.REFRESH_CLIENT_ENCRYPTION.get(info) != null &&
+ PGProperty.REFRESH_CLIENT_ENCRYPTION.get(info).equals("1")) {
+ paramList.add(new String[]{"refreshClientEncryption", "1"});
+ }
+
+ if (PGProperty.UPPERCASE_ATTRIBUTE_NAME.getBoolean(info)) {
+ paramList.add(new String[]{"uppercase_attribute_name", "true"});
+ }
+
return paramList;
}
@@ -665,6 +704,7 @@ public class ConnectionFactoryImpl extends ConnectionFactory {
PSQLState.CONNECTION_REJECTED);
}
}
+ case AUTH_REQ_SHA256_RFC:
case AUTH_REQ_SHA256: {
LOGGER.trace("[" + connectInfo + "] " + "AUTH_REQ_SHA256");
byte[] digest;
@@ -675,7 +715,8 @@ public class ConnectionFactoryImpl extends ConnectionFactory {
"The server requested password-based authentication, but no password"
+ " was provided."),
PSQLState.CONNECTION_REJECTED);
- if (passwordStoredMethod == PLAIN_PASSWORD || passwordStoredMethod == SHA256_PASSWORD) {
+ if (passwordStoredMethod == PLAIN_PASSWORD || passwordStoredMethod == SHA256_PASSWORD
+ || passwordStoredMethod == SHA256_PASSWORD_RFC) {
String random64code = pgStream.receiveString(64);
String token = pgStream.receiveString(8);
byte[] result = null;
@@ -715,7 +756,7 @@ public class ConnectionFactoryImpl extends ConnectionFactory {
} else {
throw new PSQLException(
GT.tr(
- "The password-stored method is not supported, must be md5, "
+ "The password-stored method is not supported, must be md5, "
+ "sha256 or sm3."),
PSQLState.CONNECTION_REJECTED);
}
@@ -838,15 +879,31 @@ public class ConnectionFactoryImpl extends ConnectionFactory {
return localRole.equalsIgnoreCase("Primary") && dbState.equalsIgnoreCase("Normal");
}
- private String queryGaussdbVersion(QueryExecutor queryExecutor) throws SQLException, IOException {
- byte[][] result = SetupQueryRunner.run(queryExecutor, "select version();", true);
+ private String queryDataBaseDatcompatibility(QueryExecutor queryExecutor, String database) throws SQLException,
+ IOException {
+ byte[][] result = SetupQueryRunner.run(queryExecutor, "select datcompatibility from pg_database where " +
+ "datname='" + database + "';", true);
+ String datcompatibility = queryExecutor.getEncoding().decode(result[0]);
+ return datcompatibility == null ? "PG" : datcompatibility;
+ }
+
+
+ private String[] queryGaussdbVersion(QueryExecutor queryExecutor) throws SQLException, IOException {
+ String workVersionNum = "0";
+ byte[][] result;
+ if (this.protocolVerion == PROTOCOL_VERSION_1) {
+ result = SetupQueryRunner.run(queryExecutor, "select version();", true);
+ } else {
+ result = SetupQueryRunner.run(queryExecutor, "select version(),working_version_num();", true);
+ workVersionNum = queryExecutor.getEncoding().decode(result[1]);
+ }
String version = queryExecutor.getEncoding().decode(result[0]);
if (version != null && version.contains("GaussDB Kernel")) {
- return "GaussDBKernel";
+ return new String[]{"GaussDBKernel", workVersionNum};
} else if (version != null && version.contains("openGauss")) {
- return "openGauss";
+ return new String[]{"openGauss", workVersionNum};
} else {
- return "";
+ return new String[]{"", workVersionNum};
}
}
@@ -859,4 +916,5 @@ public class ConnectionFactoryImpl extends ConnectionFactory {
return ClusterStatus.MasterCluster;
}
}
+
}
diff --git a/pgjdbc/src/main/java/org/postgresql/core/v3/QueryExecutorImpl.java b/pgjdbc/src/main/java/org/postgresql/core/v3/QueryExecutorImpl.java
index 332e4d2..e457fa0 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/v3/QueryExecutorImpl.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/v3/QueryExecutorImpl.java
@@ -5,6 +5,7 @@
// Copyright (c) 2004, Open Cloud Limited.
package org.postgresql.core.v3;
+import org.postgresql.Driver;
import org.postgresql.PGProperty;
import org.postgresql.copy.CopyIn;
import org.postgresql.copy.CopyOperation;
@@ -42,6 +43,8 @@ import org.postgresql.util.PSQLWarning;
import org.postgresql.util.ServerErrorMessage;
import org.postgresql.log.Logger;
import org.postgresql.log.Log;
+import org.postgresql.util.HintNodeName;
+
import java.io.IOException;
import java.lang.ref.PhantomReference;
import java.lang.ref.Reference;
@@ -51,7 +54,6 @@ import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.sql.SQLException;
import java.sql.SQLWarning;
-import java.sql.Statement;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Collections;
@@ -123,6 +125,13 @@ public class QueryExecutorImpl extends QueryExecutorBase {
private String socketAddress;
private String gaussdbVersion;
+
+ private String workingVersionNum;
+
+ private String compatibilityMode;
+
+ private boolean enableOutparamOveride;
+
/**
* {@code CommandComplete(B)} messages are quite common, so we reuse instance to parse those
*/
@@ -160,6 +169,44 @@ public class QueryExecutorImpl extends QueryExecutorBase {
this.gaussdbVersion = gaussdbVersion;
}
+ @Override
+ public void setWorkingVersionNum(String workingVersionNum) {
+ this.workingVersionNum = workingVersionNum;
+ }
+
+ @Override
+ public String getWorkingVersionNum() {
+ return this.workingVersionNum;
+ }
+
+ @Override
+ public String getCompatibilityMode() {
+ return compatibilityMode;
+ }
+
+ public void setCompatibilityMode(String compatibilityMode) {
+ this.compatibilityMode = compatibilityMode;
+ }
+
+ @Override
+ public boolean getEnableOutparamOveride() {
+ return enableOutparamOveride;
+ }
+
+ public void setEnableOutparamOveride(boolean enableOutparamOveride) {
+ this.enableOutparamOveride = enableOutparamOveride;
+ }
+
+ /**
+ * When database compatibility mode is oracle and the parameter overload function
+ * is turned on, add out parameter description message.
+ *
+ * @return true: describe, false: not describe.
+ */
+ private boolean isDescribeOutparam() {
+ return enableOutparamOveride && ("A".equals(compatibilityMode) || "ORA".equals(compatibilityMode));
+ }
+
/**
* Supplement to synchronization of public methods on current QueryExecutor.
*
@@ -1507,11 +1554,29 @@ public class QueryExecutorImpl extends QueryExecutorBase {
pendingDescribePortalQueue.add(sync);
}
+ private void sendTraceId() throws IOException {
+ String traceId;
+ if ((traceId = Driver.getTracer()) == null) {
+ return;
+ }
+ if (LOGGER.isTraceEnabled()) {
+ LOGGER.trace("[" + socketAddress + "] " + "trace :" + traceId);
+ }
+ byte[] encodedTraceId = Utils.encodeUTF8(traceId);
+ int encodedSize = 4
+ + encodedTraceId.length + 1;
+ pgStream.sendChar('J');
+ pgStream.sendInteger4(encodedSize);
+ pgStream.send(encodedTraceId);
+ pgStream.sendChar(0);
+ }
+
private void sendParse(SimpleQuery query, SimpleParameterList params, boolean oneShot)
throws IOException {
// Already parsed, or we have a Parse pending and the types are right?
int[] typeOIDs = params.getTypeOIDs();
- if (query.isPreparedFor(typeOIDs, deallocateEpoch)) {
+ if ((query.getNodeName() == null || query.getNodeName().isEmpty())
+ && query.isPreparedFor(typeOIDs, deallocateEpoch)) {
return;
}
@@ -1541,6 +1606,35 @@ public class QueryExecutorImpl extends QueryExecutorBase {
byte[] encodedStatementName = query.getEncodedStatementName();
String nativeSql = query.getNativeSql();
+ if (query.getNodeName() != null && !query.getNodeName().isEmpty()) {
+ try {
+ nativeSql = HintNodeName.addNodeName(nativeSql, query.getNodeName(), this);
+ } catch (SQLException e) {
+ throw new IOException(e.getMessage());
+ }
+ }
+
+ boolean sendFunctionParamType = isSendFunctionParamType(query);
+ char[] paramFlags = new char[params.getFlags().length];
+
+ if (sendFunctionParamType) {
+ byte[] flags = params.getFlags();
+ for (int j = 0; j < flags.length; j++) {
+ switch (flags[j]) {
+ case 1:
+ paramFlags[j] = 'i';
+ break;
+ case 2:
+ paramFlags[j] = 'o';
+ break;
+ case 3:
+ paramFlags[j] = 'b';
+ break;
+ default:
+ paramFlags[j] = 'i';
+ }
+ }
+ }
if (LOGGER.isTraceEnabled()) {
StringBuilder sbuf = new StringBuilder(" FE=> Parse(stmt=" + statementName + ",query=\"");
sbuf.append(nativeSql);
@@ -1551,6 +1645,15 @@ public class QueryExecutorImpl extends QueryExecutorBase {
}
sbuf.append(params.getTypeOID(i));
}
+ if (sendFunctionParamType) {
+ sbuf.append("}\",flags={");
+ for (int i = 1; i <= paramFlags.length; ++i) {
+ if (i != 1) {
+ sbuf.append(",");
+ }
+ sbuf.append(paramFlags[i - 1]);
+ }
+ }
sbuf.append("})");
LOGGER.trace("[" + socketAddress + "] " + sbuf.toString());
}
@@ -1565,10 +1668,15 @@ public class QueryExecutorImpl extends QueryExecutorBase {
// + N + 1 (statement name, zero-terminated)
// + N + 1 (query, zero terminated)
// + 2 (parameter count) + N * 4 (parameter types)
+ // + 2 or 0 (if overload + 2 else + 0)
+ // + params.getFlags().length or 0 (if oracle compatibilityMode & overload & sql is function or procedure send
+ // length else nosend)
int encodedSize = 4
+ (encodedStatementName == null ? 0 : encodedStatementName.length) + 1
+ queryUtf8.length + 1
- + 2 + 4 * params.getParameterCount();
+ + 2 + 4 * params.getParameterCount()
+ + (this.isDescribeOutparam() ? 2 : 0)
+ + (sendFunctionParamType ? params.getFlags().length : 0);
pgStream.sendChar('P'); // Parse
pgStream.sendInteger4(encodedSize);
@@ -1582,7 +1690,16 @@ public class QueryExecutorImpl extends QueryExecutorBase {
for (int i = 1; i <= params.getParameterCount(); ++i) {
pgStream.sendInteger4(params.getTypeOID(i));
}
-
+ if (this.isDescribeOutparam()) {
+ if (sendFunctionParamType) {
+ pgStream.sendInteger2(params.getParameterCount());
+ for (int i = 1; i <= paramFlags.length; ++i) {
+ pgStream.sendChar(paramFlags[i - 1]);
+ }
+ } else {
+ pgStream.sendInteger2(0);
+ }
+ }
pendingParseQueue.add(query);
}
@@ -2059,6 +2176,7 @@ public class QueryExecutorImpl extends QueryExecutorBase {
rows = fetchSize; // maxRows > fetchSize
}
+ sendTraceId();
sendParse(query, params, oneShot);
// Must do this after sendParse to pick up any changes to the
@@ -2160,6 +2278,7 @@ public class QueryExecutorImpl extends QueryExecutorBase {
V3ParameterList parameters = (V3ParameterList) parameterLists[0];
SimpleParameterList params = (SimpleParameterList) parameters;
+ sendTraceId();
sendParse(query, params, oneShot);
// Must do this after sendParse to pick up any changes to the
@@ -3039,6 +3158,12 @@ public class QueryExecutorImpl extends QueryExecutorBase {
throw new PSQLException(GT.tr("Protocol error. Session setup failed."),
PSQLState.PROTOCOL_VIOLATION);
}
+ } else if ("behavior_compat_options".equals(name)) {
+ if (value != null && value.contains("proc_outparam_override")) {
+ setEnableOutparamOveride(true);
+ } else {
+ setEnableOutparamOveride(false);
+ }
}
}
@@ -3099,6 +3224,23 @@ public class QueryExecutorImpl extends QueryExecutorBase {
useBinarySendForOids.addAll(oids);
}
+ /**
+ * In oracle compatibility mode, turn on output parameter overload (enable_outparam_overide=true) and
+ * sql is a function or a stored procedure. At this time, need to send the type of function and stored
+ * procedure parameters (in or out)
+ *
+ * @param query Current SQL
+ * @return true or false
+ */
+ private boolean isSendFunctionParamType(Query query) {
+ if (("ORA".equals(this.getCompatibilityMode()) || "A".equals(this.getCompatibilityMode()))
+ && this.getEnableOutparamOveride() && query.getIsFunction()) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
private void setIntegerDateTimes(boolean state) {
integerDateTimes = state;
}
diff --git a/pgjdbc/src/main/java/org/postgresql/core/v3/SimpleParameterList.java b/pgjdbc/src/main/java/org/postgresql/core/v3/SimpleParameterList.java
index 12bdd83..3c022ec 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/v3/SimpleParameterList.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/v3/SimpleParameterList.java
@@ -49,6 +49,8 @@ class SimpleParameterList implements V3ParameterList {
this.encoded = new byte[paramCount][];
this.flags = new byte[paramCount];
this.transferModeRegistry = transferModeRegistry;
+ this.compatibilityModes = new String[paramCount];
+ this.isOracleCompatibilityFunctions = new boolean[paramCount];
}
@Override
@@ -63,6 +65,19 @@ class SimpleParameterList implements V3ParameterList {
flags[index - 1] |= OUT;
}
+ @Override
+ public void bindRegisterOutParameter(int index, int oid, boolean isOracleCompatibilityFunction) throws SQLException {
+ if (index < 1 || index > paramValues.length) {
+ throw new PSQLException(
+ GT.tr("The column index is out of range: {0}, number of columns: {1}.",
+ index, paramValues.length),
+ PSQLState.INVALID_PARAMETER_VALUE);
+ }
+ paramTypes[index - 1] = oid;
+ compatibilityModes[index - 1] = "ORA";
+ isOracleCompatibilityFunctions[index - 1] = isOracleCompatibilityFunction;
+ }
+
private void bind(int index, Object value, int oid, byte binary) throws SQLException {
if (index < 1 || index > paramValues.length) {
throw new PSQLException(
@@ -181,18 +196,11 @@ class SimpleParameterList implements V3ParameterList {
}
public void setBlob(int index, InputStream stream, int length) throws SQLException {
- try {
- int i = Math.min(stream.available(), length);
- byte[] tmp = new byte[i];
- int len = stream.read(tmp);
- // In the condition of empty Blob. Like byte[] b = {}; new ByteArrayInputStream(b);
- if(len == -1){
- LOGGER.trace("Failed to read the inputstream:", new SQLException("Failed to read the inputstream"));
- }
- setBlob(index, tmp, 0, tmp.length);
- } catch (IOException e) {
- throw new SQLException(e.getMessage());
- }
+ bind(index, new StreamWrapper(stream, length), Oid.BLOB, BINARY);
+ }
+
+ public void setBlob(int index, InputStream stream) throws SQLException {
+ bind(index, new StreamWrapper(stream), Oid.BLOB, BINARY);
}
@Override
@@ -314,8 +322,16 @@ class SimpleParameterList implements V3ParameterList {
public void convertFunctionOutParameters() {
for (int i = 0; i < paramTypes.length; ++i) {
if (direction(i) == OUT) {
- paramTypes[i] = Oid.VOID;
- paramValues[i] = "null";
+ if(compatibilityModes[i] != null && compatibilityModes[i].equalsIgnoreCase("ORA")){
+ // function return value as void.
+ if (isOracleCompatibilityFunctions[i] == true && i == 0) {
+ paramTypes[i] = Oid.VOID;
+ }
+ paramValues[i] = "null";
+ }else{
+ paramTypes[i] = Oid.VOID;
+ paramValues[i] = "null";
+ }
}
}
}
@@ -514,6 +530,8 @@ class SimpleParameterList implements V3ParameterList {
private final byte[] flags;
private final byte[][] encoded;
private final TypeTransferModeRegistry transferModeRegistry;
+ private final boolean[] isOracleCompatibilityFunctions;
+ private final String[] compatibilityModes;
/**
* Marker object representing NULL; this distinguishes "parameter never set" from "parameter set
diff --git a/pgjdbc/src/main/java/org/postgresql/core/v3/SimpleQuery.java b/pgjdbc/src/main/java/org/postgresql/core/v3/SimpleQuery.java
index 9d464f1..66161ed 100644
--- a/pgjdbc/src/main/java/org/postgresql/core/v3/SimpleQuery.java
+++ b/pgjdbc/src/main/java/org/postgresql/core/v3/SimpleQuery.java
@@ -31,6 +31,7 @@ import java.util.Map;
*/
class SimpleQuery implements Query {
private static Log LOGGER = Logger.getLogger(SimpleQuery.class.getName());
+ private String nodeName = null;
SimpleQuery(SimpleQuery src) {
this(src.nativeQuery, src.transferModeRegistry, src.sanitiserDisabled);
@@ -67,6 +68,16 @@ class SimpleQuery implements Query {
return null;
}
+ @Override
+ public void setIsFunction(boolean isFunction) {
+ this.isFunction = isFunction;
+ }
+
+ @Override
+ public boolean getIsFunction() {
+ return this.isFunction;
+ }
+
/**
* Return maximum size in bytes that each result row from this query may return. Mainly used for
* batches that return results.
@@ -327,6 +338,14 @@ class SimpleQuery implements Query {
return nativeQuery.bindPositions.length * getBatchSize();
}
+ public String getNodeName() {
+ return this.nodeName;
+ }
+
+ public void setNodeName(String nodeName) {
+ this.nodeName = nodeName;
+ }
+
private Map resultSetColumnNameIndexMap;
@Override
@@ -367,6 +386,7 @@ class SimpleQuery implements Query {
private int[] preparedTypes;
private BitSet unspecifiedParams;
private short deallocateEpoch;
+ private boolean isFunction;
private Integer cachedMaxResultRowSize;
diff --git a/pgjdbc/src/main/java/org/postgresql/ds/common/BaseDataSource.java b/pgjdbc/src/main/java/org/postgresql/ds/common/BaseDataSource.java
index db6e656..6314828 100644
--- a/pgjdbc/src/main/java/org/postgresql/ds/common/BaseDataSource.java
+++ b/pgjdbc/src/main/java/org/postgresql/ds/common/BaseDataSource.java
@@ -43,6 +43,7 @@ public abstract class BaseDataSource implements CommonDataSource, Referenceable
private static Log LOGGER = Logger.getLogger(BaseDataSource.class.getName());
// Standard properties, defined in the JDBC 2.0 Optional Package spec
+ private String originUrl;
private String serverName = "localhost";
private String databaseName;
private String user;
@@ -1116,6 +1117,9 @@ public abstract class BaseDataSource implements CommonDataSource, Referenceable
* @return {@link DriverManager} URL from the other properties supplied
*/
public String getUrl() {
+ if (this.originUrl != null && this.originUrl.length() > 0 && this.databaseName == null) {
+ return this.originUrl;
+ }
StringBuilder url = new StringBuilder(100);
url.append("jdbc:postgresql://");
url.append(serverName);
@@ -1163,7 +1167,7 @@ public abstract class BaseDataSource implements CommonDataSource, Referenceable
* @throws PSQLException
*/
public void setUrl(String url) throws PSQLException {
-
+ this.originUrl = url;
Properties p = org.postgresql.Driver.parseURL(url, null);
for (PGProperty property : PGProperty.values()) {
diff --git a/pgjdbc/src/main/java/org/postgresql/jdbc/ClientLogic.java b/pgjdbc/src/main/java/org/postgresql/jdbc/ClientLogic.java
index d9fd754..886d9c8 100644
--- a/pgjdbc/src/main/java/org/postgresql/jdbc/ClientLogic.java
+++ b/pgjdbc/src/main/java/org/postgresql/jdbc/ClientLogic.java
@@ -2,15 +2,23 @@ package org.postgresql.jdbc;
import java.sql.SQLException;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.LinkedList;
import java.util.List;
+
import java.util.Properties;
+import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;
-import org.postgresql.PGProperty;
import org.postgresql.core.NativeQuery;
import org.postgresql.core.Parser;
import org.postgresql.log.Log;
import org.postgresql.log.Logger;
+import org.postgresql.util.PSQLException;
+import org.postgresql.util.PSQLState;
/**
*
* Captures the client logic functionality to be exposed in the JDBC driver
@@ -31,10 +39,19 @@ public class ClientLogic {
static final String ERROR_TEXT_EMPTY_DATA = "Empty data";
static final int ERROR_PARSER_FAILURE = 1013;
static final String ERROR_TEXT_PARSER_FAILURE = "Failed parsing the input query";
+ static final int ERROR_RECORD_FAILURE = 1014;
+ static final String ERROR_TEXT_RECORD_FAILURE = "Failed to parse record output";
+ static final int ERROR_ARRAYS_LENGTH_MISMATCH = 1015;
+ static final String ERROR_TEXT_ARRAYS_LENGTH_MISMATCH = "Result arrays length mismatch";
private AtomicInteger stamentNameCounter = new AtomicInteger(0);
-
private static Log LOGGER = Logger.getLogger(ClientLogic.class.getName());
+
+ static final Set CLIENT_LOGIC_OIDS =
+ Collections.unmodifiableSet(new HashSet(Arrays.asList(4402, 4403)));
+ static final Collection CLIENT_LOGIC_TYPE_NAMES =
+ Collections.unmodifiableList(new LinkedList(Arrays.asList("byteawithoutordercol", "byteawithoutorderwithequalcol")));
+
/**
* CLientLogicStatus class is responsible for parsing the result from the gauss_cl_jni library
*/
@@ -115,7 +132,24 @@ public class ClientLogic {
*/
protected void finalize() {
close();
- }
+ }
+
+ /*
+ * Get the parameters, as the identity authentication credentials to establish connection with Huawei IAM and KMS
+ * server. But, rather than establish a connection in JDBC, we just pass all parameters to 'gauss_cl_jni'.
+ * in 'gauss_cl_jni', actually we call libpq_ce.so to get the connection.
+ */
+ public void setKmsInfo(String key, String value) throws ClientLogicException {
+ if (key == null || value == null) {
+ throw new ClientLogicException(ERROR_EMPTY_DATA, "Cannot set kms info because input is null.");
+ }
+
+ Object[] result = impl.setKmsInfo(key, value);
+ CLientLogicStatus status = new CLientLogicStatus(result);
+ if (!status.isOK()) {
+ throw new ClientLogicException(status.getErrorCode(), status.getErrorText());
+ }
+ }
/**
* Link the client logic JNI & C side to the PgConnection instance
@@ -142,11 +176,11 @@ public class ClientLogic {
if (handle == 0 || handle < 0) {
throw new ClientLogicException(ERROR_INVALID_HANDLE, ERROR_TEXT_INVALID_HANDLE);
}
- impl.setHandle(handle);
+ impl.setHandle(handle);
}
-
+
/**
- * Runs the pre-process function of the client logic
+ * Runs the pre-process function of the client logic
* to change the client logic fields from the user input to the client logic format
* @param originalQuery query to modify with user input
* @return the modified query with client logic fields changed
@@ -189,6 +223,78 @@ public class ClientLogic {
}
}
+ /**
+ * Gets the list of original oids, needed when returning a record from a function that has client logic fields
+ *
+ * @param dataTypeName the name of the data type of the oculmn in the resultset
+ * @param oid the fields oid
+ * @return list of original oids for client logic fields
+ * @throws ClientLogicException when status is not ok, throw an exception.
+ */
+ public List getRecordIDs(String dataTypeName, int oid) throws ClientLogicException {
+ Object[] result = impl.getRecordIDs(dataTypeName, oid);
+ CLientLogicStatus status = new CLientLogicStatus(result);
+ if (!status.isOK()) {
+ throw new ClientLogicException(status.getErrorCode(), status.getErrorText());
+ }
+ if (result.length == 1) { // no oids
+ return new ArrayList();
+ }
+ if (result[1] == null) {
+ return new ArrayList();
+ }
+ List recordOids = new ArrayList<>();
+ int[] resArr = (int[]) result[1];
+ for (int index = 0; index < resArr.length; ++index) {
+ recordOids.add(resArr[index]);
+ }
+ return recordOids;
+ }
+
+ /**
+ * convert client records returned from function that contains client logic fields to user format
+ *
+ * @param data2Process the record with client logic fields
+ * @param originalOids the result from getRecordIDs method for that field
+ * @return the record in user format
+ * @throws ClientLogicException when status is not ok, throw an exception.
+ */
+ public String runClientLogic4Record(String data2Process, List originalOids) throws ClientLogicException {
+ int[] originalOidsArray = originalOids.stream().mapToInt(Integer::intValue).toArray();
+ Object[] result = impl.runClientLogic4Record(data2Process, originalOidsArray);
+ CLientLogicStatus status = new CLientLogicStatus(result);
+ if (!status.isOK()) {
+ throw new ClientLogicException(status.getErrorCode(), status.getErrorText());
+ }
+ String resultData = data2Process;
+ if (result.length == 3) {
+ if (result[1] == null) {
+ String errorText = ERROR_TEXT_RECORD_FAILURE + " data2Process:" + data2Process +
+ " originalOids: " + Arrays.toString(originalOidsArray);
+ throw new ClientLogicException(ERROR_RECORD_FAILURE, errorText);
+ }
+ int[] resArr = (int[]) result[1];
+ if (resArr.length == 0) {
+ String errorText = ERROR_TEXT_RECORD_FAILURE + " data2Process:" + data2Process +
+ " originalOids: " + Arrays.toString(originalOidsArray);
+ throw new ClientLogicException(ERROR_RECORD_FAILURE, errorText);
+ }
+ if (resArr[0] == 0) { // Value was not client logic
+ return data2Process;
+ }
+ if (result[2] != null && (result[2] instanceof String)) {
+ resultData = (String) result[2];
+ }
+ } else {
+ throw new ClientLogicException(ERROR_RECORD_FAILURE,
+ ERROR_TEXT_RECORD_FAILURE + ":length of result is not 3");
+ }
+ if (resultData.length() == 0) {
+ throw new ClientLogicException(ERROR_EMPTY_DATA, ERROR_TEXT_EMPTY_DATA);
+ }
+ return resultData;
+ }
+
/**
* Runs client logic on fields to get back the user format
* @param data2Process the client logic data
@@ -229,7 +335,10 @@ public class ClientLogic {
* @return true for client logic and false if it is not
*/
public static boolean isClientLogicField(int dataType) {
- return (dataType == 4402 || dataType == 4403);
+ if (CLIENT_LOGIC_OIDS.contains(dataType)) {
+ return true;
+ }
+ return false;
}
/**
@@ -255,7 +364,7 @@ public class ClientLogic {
} else {
throw new ClientLogicException(ERROR_PARSER_FAILURE, ERROR_TEXT_PARSER_FAILURE, true);
}
- /*Run the actual query */
+ /* Run the actual query */
Object[] result = impl.prepareQuery(queryNative, statement_name, parameter_count);
CLientLogicStatus status = new CLientLogicStatus(result);
if (!status.isOK()) {
@@ -272,14 +381,17 @@ public class ClientLogic {
}
return modifiedQuery;
}
+
/**
* Replaces client logic parameter values in a prepared statement
* @param statementName the name of the statement - the one used in the prepareQuery method
* @param paramValues the list of current values
+ * @param outTypeOids the list of Type Oids for values
* @return list of modified parameters
* @throws ClientLogicException
*/
- public List replaceStatementParams(String statementName, List paramValues) throws ClientLogicException {
+ public void replaceStatementParams(String statementName, List paramValues, List outParams,
+ List outTypeOids) throws ClientLogicException {
String[] arrParams = new String[paramValues.size()];
for (int i = 0; i < paramValues.size(); ++i) {
arrParams[i] = paramValues.get(i);
@@ -292,19 +404,30 @@ public class ClientLogic {
if (resultImpl[1] == null || !resultImpl[1].getClass().isArray()) {
throw new ClientLogicException(ERROR_EMPTY_DATA, ERROR_TEXT_EMPTY_DATA);
}
- Object[] resultsImplArr = (Object[])resultImpl[1];
- List result = new ArrayList<>();
+ if (resultImpl[2] == null || !resultImpl[2].getClass().isArray()) {
+ throw new ClientLogicException(ERROR_EMPTY_DATA, ERROR_TEXT_EMPTY_DATA);
+ }
+ Object[] resultsImplArr = (Object[]) resultImpl[1];
+ int[] resultsImplTypesArr = (int[]) resultImpl[2];
+ if (resultsImplArr.length != resultsImplTypesArr.length) {
+ throw new ClientLogicException(ERROR_ARRAYS_LENGTH_MISMATCH, ERROR_TEXT_ARRAYS_LENGTH_MISMATCH);
+ }
for (int i = 0; i < resultsImplArr.length; ++i) {
Object value = resultsImplArr[i];
if (value != null && value.getClass().equals(String.class)) {
- result.add((String)value);
+ outParams.add((String)value);
} else {
- result.add(null);
+ outParams.add(null);
}
+ int valueTypeOid = resultsImplTypesArr[i];
+ /* either way, add type */
+ outTypeOids.add(valueTypeOid);
}
- return result;
}
+
/**
+ * get statement name
+ *
* @return unique statement name that can be used for prepare statement.
*/
public String getStatementName() {
@@ -334,4 +457,70 @@ public class ClientLogic {
}
return newMessage;
}
+
+ /**
+ * Reloads the client logic cache only if
+ * The server configuration time stamp is later that the local configuration time stamp
+ * Called from PgConnection.isValid method
+ */
+ public void reloadCacheIfNeeded() {
+ impl.reloadCacheIfNeeded();
+ }
+
+ /**
+ * Check if cache reload is required for a given exception received
+ *
+ * @param sqlException the exception
+ * @return true if cache reloads is required
+ */
+ public static boolean checkIfReloadCache(SQLException sqlException) {
+ if (sqlException.getSQLState() == null) {
+ return false;
+ }
+ /* 2200Z is specific error related to client logic casting when updating data */
+ if (sqlException.getSQLState().equals(PSQLState.ENCRYPED_COLUMN_WRONG_DATA.getState())) {
+ return true;
+ }
+ // Happens when casting data for where clause
+ if (sqlException.getSQLState().equals(PSQLState.UNDEFINED_FUNCTION.getState()) &&
+ isMesageContainsClientLogicTypeName(sqlException.getMessage())) {
+ return true;
+ }
+ /* function parse error may happen because the client logic cache is not yet updated */
+ if (sqlException.getSQLState().equals(PSQLState.UNDEFINED_FUNCTION.getState()) &&
+ sqlException instanceof PSQLException) {
+ PSQLException psException = (PSQLException) sqlException;
+ if (psException.getServerErrorMessage() != null) {
+ if (psException.getServerErrorMessage().getHint() != null &&
+ psException.getServerErrorMessage().getHint().equals(
+ "No function matches the given name and argument types." +
+ " You might need to add explicit type casts.")) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Check if message contains one of the type names of client logic fields
+ *
+ * @param message the message from sqlException
+ * @return true if a message contains one of the type names of client logic fields
+ */
+ private static boolean isMesageContainsClientLogicTypeName(String message) {
+ for (String typeName : CLIENT_LOGIC_TYPE_NAMES) {
+ if (message.contains(typeName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Reload cache
+ */
+ public void reloadCache() {
+ impl.reloadCache();
+ }
} // End of class
diff --git a/pgjdbc/src/main/java/org/postgresql/jdbc/ClientLogicImpl.java b/pgjdbc/src/main/java/org/postgresql/jdbc/ClientLogicImpl.java
index f938e29..3cf00c5 100644
--- a/pgjdbc/src/main/java/org/postgresql/jdbc/ClientLogicImpl.java
+++ b/pgjdbc/src/main/java/org/postgresql/jdbc/ClientLogicImpl.java
@@ -8,22 +8,28 @@ import java.util.List;
import org.postgresql.util.JdbcBlackHole;
public class ClientLogicImpl {
- static {
- System.loadLibrary("gauss_cl_jni");
- }
- // Native methods:
- private native Object[] linkClientLogicImpl(String databaseName);
- private native Object[] runQueryPreProcessImpl(long handle, String originalQuery);
- private native Object[] runQueryPostProcessImpl(long handle);
- private native Object[] runClientLogicImpl(long handle, String processData, int dataType);
- private native Object[] prepareQueryImpl(long handle, String query, String statement_name, int parameter_count);
- private native Object[] replaceStatementParamsImpl(long handle, String statementName, String[] param_values);
- private native Object[] replaceErrorMessageImpl(long handle, String originalMessage);
- private native void destroy(long handle);
+ static {
+ System.loadLibrary("gauss_cl_jni");
+ }
+ // Native methods:
+ private native Object[] linkClientLogicImpl(String databaseName);
+ private native Object[] setKmsInfoImpl(long handle, String key, String value);
+ private native Object[] runQueryPreProcessImpl(long handle, String originalQuery);
+ private native Object[] runQueryPostProcessImpl(long handle);
+ private native Object[] runClientLogicImpl(long handle, String processData, int dataType);
- private long m_handle = 0;
- private PgConnection m_jdbcConn = null;
-
+ private native Object[] getRecordIDsImpl(long mHandle, String dataTypeName, int oid);
+ private native Object[] runClientLogic4RecordImpl(long handle, String data2Process, int[] originalOids);
+
+ private native Object[] prepareQueryImpl(long handle, String query, String statement_name, int parameter_count);
+ private native Object[] replaceStatementParamsImpl(long handle, String statementName, String[] param_values);
+ private native Object[] replaceErrorMessageImpl(long handle, String originalMessage);
+ private native void reloadCacheImpl(long handle);
+ private native void reloadCacheIfNeededImpl(long handle);
+ private native void destroy(long handle);
+
+ private long m_handle = 0;
+ private PgConnection m_jdbcConn = null;
/**
* Link between the Java PgConnection and the PGConn Client logic object
* @param databaseName the database name
@@ -41,9 +47,16 @@ public class ClientLogicImpl {
else {
//did not add much logic here, will handle it on the parent class
return new Object[]{};
- }
+ }
}
+ /**
+ * Transfer all parameters that are used to establish a connection with HuaweiCloud IAM and KMS to 'gauss_cl_jni'.
+ */
+ public Object[] setKmsInfo(String key, String value) {
+ return setKmsInfoImpl(m_handle, key, value);
+ }
+
/**
* Run the pre query, to replace client logic field values with binary format before sending the query to the database server
* @param originalQuery the query with potentially client logic values in user format
@@ -56,9 +69,9 @@ public class ClientLogicImpl {
return runQueryPreProcessImpl(m_handle, originalQuery);
}
/**
- * Replace client logic field value with user input - used when receiving data in a resultset
+ * Replace client logic field value with user input - used when receiving data in a resultset
* @param processData the data in binary format (hexa)
- * @param dataType the oid (modid) of the original field type
+ * @param dataType the oid (modid) of the original field type
* @return array of objects
*[0][0] - int status code - zero for success
*[0][1] - string status description
@@ -67,6 +80,38 @@ public class ClientLogicImpl {
public Object[] runClientLogic(String processData, int dataType) {
return runClientLogicImpl(m_handle, processData, dataType);
}
+
+ /**
+ * Gets the list of original oids, needed when returning a record from a function that has client logic fields
+ *
+ * @param dataTypeName the name of the data type of the oculmn in the resultset
+ * @param oid the fields oid
+ * @return array of object in the following format
+ * [0][0] - int status code - zero for success
+ * [0][1] - string status description
+ * [1][0...n] the original oids in the record if it contains any clint loigic fields, otherwise this part is omitted
+ */
+ public Object[] getRecordIDs(String dataTypeName, int oid) {
+ return getRecordIDsImpl(m_handle, dataTypeName, oid);
+ }
+
+ /**
+ * convert client records returned from function that contains client logic fields to user format
+ *
+ * @param data2Process the record with client logic fields
+ * @param originalOids the result from getRecordIDs method for that field
+ * @return array of object in the following format
+ * [0][0] - int status code - zero for success
+ * [0][1] - string status description
+ * [0][0] - int status code - zero for success
+ * [0][1] - string status description
+ * [1] - int 0 not client logic 1 - is client logic
+ * [2] - String - The data in user format
+ */
+ public Object[] runClientLogic4Record(String data2Process, int[] originalOids) {
+ return runClientLogic4RecordImpl(m_handle, data2Process, originalOids);
+ }
+
/**
* run post process on the backend, to free the client logic state machine when a query is done
* @return array of objects
@@ -84,19 +129,22 @@ public class ClientLogicImpl {
* @return array of objects
*[0][0] - int status code - zero for success
*[0][1] - string status description
- *[1] - String - The modified query - to be used if the query had client logic fields in user format that have to be replaces with binary value
+ *[1] - String - The modified query - to be used if the query had client logic fields in user format that have to be replaces with binary value
*/
public Object[] prepareQuery(String query, String statement_name, int parameter_count){
return prepareQueryImpl(m_handle, query, statement_name, parameter_count);
}
/**
- * replace parameters values in prepared statement - to be called before binding the parameters and executing the statement
+ * replace parameters values in prepared statement - to be called before binding the parameters and executing the statement
* @param statementName the name of the statement
* @param paramValues array of parameters in user format
* @return array of objects
- *[0][0] - int status code - zero for success
- *[0][1] - string status description
- *[1][0 ... parameter_count - 1] - array with the parameters value, if the parameter is not being replace a NULL apears otherwise the replaced value
+ * [0][0] - int status code - zero for success
+ * [0][1] - string status description
+ * [1][0 ... parameter_count - 1] - array with the parameters value, if the parameter is not
+ * being replace a NULL apears otherwise the replaced value
+ * [2][0 ... parameter_count - 1] - array with the parameters' type-oids,
+ * if the parameter is being replaced, otherwise 0
*/
public Object[] replaceStatementParams(String statementName, String[] paramValues) {
return replaceStatementParamsImpl(m_handle, statementName, paramValues);
@@ -108,7 +156,7 @@ public class ClientLogicImpl {
* ... Key (name)=(\xa1d4....) already exists. ...
* to:
* ... Key (name)=(John) already exists. ...
- * @param originalMessage the error message received from the server
+ * @param originalMessage the error message received from the server
* @return array of objects
*[0][0] - int status code - zero for success
*[0][1] - string status description
@@ -134,7 +182,7 @@ public class ClientLogicImpl {
}
/**
- * setter function to set the handle
+ * setter function to set the handle
* @param handle
*/
public void setHandle(long handle) {
@@ -149,9 +197,9 @@ public class ClientLogicImpl {
}
/**
- * This method is being invoked from the client logic c++ code
- * It is used to fetch data from the server regarding the client logic settings - cache manager
- * @param query the query to incoke
+ * This method is being invoked from the client logic c++ code
+ * It is used to fetch data from the server regarding the client logic settings - cache manager
+ * @param query the query to incoke
* @return array of results in the following format
* [0] - array of column headers
* [1...n] - array of results
@@ -184,7 +232,7 @@ public class ClientLogicImpl {
data.add(record.toArray());
}
st.close();
- }
+ }
catch (SQLException e) {
List errorResponse = new ArrayList<>();
errorResponse.add(e.getMessage());
@@ -194,4 +242,23 @@ public class ClientLogicImpl {
}
return data.toArray();
}
+
+ /**
+ * Reloads the client logic cache, required when there is an error related to missing client logic cache
+ */
+ public void reloadCache() {
+ if (m_handle > 0) {
+ reloadCacheImpl(m_handle);
+ }
+ }
+
+ /**
+ * Reloads the client logic cache ONLY if the timestamp of the configuration fetched is earlier
+ * than the timestamp of the configuration on the server
+ */
+ public void reloadCacheIfNeeded() {
+ if (m_handle > 0) {
+ reloadCacheIfNeededImpl(m_handle);
+ }
+ }
}
diff --git a/pgjdbc/src/main/java/org/postgresql/jdbc/PgCallableStatement.java b/pgjdbc/src/main/java/org/postgresql/jdbc/PgCallableStatement.java
index 4e45551..cb048d6 100644
--- a/pgjdbc/src/main/java/org/postgresql/jdbc/PgCallableStatement.java
+++ b/pgjdbc/src/main/java/org/postgresql/jdbc/PgCallableStatement.java
@@ -6,11 +6,15 @@
package org.postgresql.jdbc;
import org.postgresql.Driver;
+import org.postgresql.core.BaseStatement;
+import org.postgresql.core.Oid;
import org.postgresql.core.ParameterList;
import org.postgresql.core.Query;
+import org.postgresql.core.QueryExecutor;
import org.postgresql.core.types.PGBlob;
import org.postgresql.core.types.PGClob;
import org.postgresql.util.GT;
+import org.postgresql.util.PGobject;
import org.postgresql.util.PSQLException;
import org.postgresql.util.PSQLState;
@@ -22,6 +26,7 @@ import java.sql.Blob;
import java.sql.CallableStatement;
import java.sql.Clob;
import java.sql.NClob;
+import java.sql.PreparedStatement;
import java.sql.Ref;
import java.sql.ResultSet;
import java.sql.RowId;
@@ -30,8 +35,12 @@ import java.sql.SQLXML;
import java.sql.Time;
import java.sql.Timestamp;
import java.sql.Types;
+import java.util.ArrayList;
import java.util.Calendar;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
class PgCallableStatement extends PgPreparedStatement implements CallableStatement {
// Used by the callablestatement style methods
@@ -45,12 +54,24 @@ class PgCallableStatement extends PgPreparedStatement implements CallableStateme
private boolean returnTypeSet;
protected Object[] callResult;
private int lastIndex = 0;
+ private String compatibilityMode;
+ private boolean isOracleCompatibilityFunction;
+ private boolean enableOutparamOveride;
+ // cache the subscript of the current custom type in the statement and the struct of the custom type
+ private ConcurrentHashMap> compositeTypeStructMap = new ConcurrentHashMap<>();
+ // whether the current executed SQL statement contains a custom type
+ private boolean isContainCompositeType = false;
+ private PreparedStatement getCompositeTypeStatementSimple;
+ // cache custom types that have been queried
+ private ConcurrentHashMap> compositeTypeMap = new ConcurrentHashMap<>();
PgCallableStatement(PgConnection connection, String sql, int rsType, int rsConcurrency,
int rsHoldability) throws SQLException {
super(connection, connection.borrowCallableQuery(sql), rsType, rsConcurrency, rsHoldability);
this.isFunction = preparedQuery.isFunction;
-
+ this.isOracleCompatibilityFunction = preparedQuery.isOracleCompatibilityFunction;
+ this.compatibilityMode = connection.getQueryExecutor().getCompatibilityMode();
+ this.enableOutparamOveride = connection.getQueryExecutor().getEnableOutparamOveride();
if (this.isFunction) {
int inParamCount = this.preparedParameters.getInParameterCount() + 1;
this.testReturn = new int[inParamCount];
@@ -85,7 +106,7 @@ class PgCallableStatement extends PgPreparedStatement implements CallableStateme
// callable statement function set the return data
if (!hasResultSet) {
throw new PSQLException(GT.tr("A CallableStatement was executed with nothing returned."),
- PSQLState.NO_DATA);
+ PSQLState.NO_DATA);
}
ResultSet rs;
@@ -95,7 +116,7 @@ class PgCallableStatement extends PgPreparedStatement implements CallableStateme
}
if (!rs.next()) {
throw new PSQLException(GT.tr("A CallableStatement was executed with nothing returned."),
- PSQLState.NO_DATA);
+ PSQLState.NO_DATA);
}
// figure out how many columns
@@ -103,52 +124,92 @@ class PgCallableStatement extends PgPreparedStatement implements CallableStateme
int outParameterCount = preparedParameters.getOutParameterCount();
- if (cols != outParameterCount) {
- throw new PSQLException(
- GT.tr("A CallableStatement was executed with an invalid number of parameters"),
- PSQLState.SYNTAX_ERROR);
- }
-
// reset last result fetched (for wasNull)
lastIndex = 0;
// allocate enough space for all possible parameters without regard to in/out
callResult = new Object[preparedParameters.getParameterCount() + 1];
- // move them into the result set
- for (int i = 0, j = 0; i < cols; i++, j++) {
- // find the next out parameter, the assumption is that the functionReturnType
- // array will be initialized with 0 and only out parameters will have values
- // other than 0. 0 is the value for java.sql.Types.NULL, which should not
- // conflict
- while (j < functionReturnType.length && functionReturnType[j] == 0) {
- j++;
- }
-
- callResult[j] = rs.getObject(i + 1);
- int columnType = rs.getMetaData().getColumnType(i + 1);
-
- if (columnType != functionReturnType[j]) {
- // this is here for the sole purpose of passing the cts
- PgCallstatementTypeCompatibility typeCompatibility = new PgCallstatementTypeCompatibility(
- columnType,
- functionReturnType[j]);
- if (typeCompatibility.isCompatibilityType()) {
- if (callResult[j] != null && typeCompatibility.needConvert()) {
- callResult[j] = typeCompatibility.convert(callResult[j]);
+ if (isContainCompositeType && outParameterCount == 1) {
+ for (int i = 0, j = 0; i < cols; i++, j++) {
+ while (j < functionReturnType.length && functionReturnType[j] == 0) {
+ j++;
+ }
+ if (compositeTypeStructMap.get(j + 1) == null) {
+ throw new PSQLException(GT.tr("Unknown composite type."), PSQLState.UNKNOWN_STATE);
+ }
+ int compositeTypeLength = compositeTypeStructMap.get(j + 1).size();
+ StringBuffer sb = new StringBuffer();
+ sb.append("(");
+ for (int k = 0; k < compositeTypeLength; k++, i++) {
+ String str = rs.getString(i + 1);
+ if (str != null) {
+ if (isContainSpecialChar(str)) {
+ // escape double quotes.
+ if (str.contains(Character.toString('"'))) {
+ str = str.replaceAll("\"", "\"\"");
+ }
+ // escape backslashes.
+ if (str.contains(Character.toString('\\'))) {
+ str = str.replaceAll("\\\\", "\\\\\\\\");
+ }
+ sb.append("\"" + str + "\"" + ",");
+ } else {
+ sb.append(str + ",");
+ }
+ } else {
+ sb.append(",");
}
}
- else if ( columnType == Types.BLOB && functionReturnType[j] == Types.OTHER )
- {
- }
- else {
- throw new PSQLException(GT.tr(
- "A CallableStatement function was executed and the out parameter {0} was of type {1} however type {2} was registered.",
- i + 1, "java.sql.Types=" + columnType, "java.sql.Types=" + functionReturnType[j]),
- PSQLState.DATA_TYPE_MISMATCH);
- }
+ sb.deleteCharAt(sb.length() - 1);
+ sb.append(")");
+ PGobject pGobject = (PGobject) connection.getObject("null", sb.toString(), null);
+ pGobject.setStruct(getcompositeTypeStruct(j + 1));
+ callResult[j] = pGobject;
}
+ } else {
+ if (cols != outParameterCount) {
+ throw new PSQLException(
+ GT.tr("A CallableStatement was executed with an invalid number of parameters"),
+ PSQLState.SYNTAX_ERROR);
+ }
+ // move them into the result set
+ for (int i = 0, j = 0; i < cols; i++, j++) {
+ // find the next out parameter, the assumption is that the functionReturnType
+ // array will be initialized with 0 and only out parameters will have values
+ // other than 0. 0 is the value for java.sql.Types.NULL, which should not
+ // conflict
+ while (j < functionReturnType.length && functionReturnType[j] == 0) {
+ j++;
+ }
+ callResult[j] = rs.getObject(i + 1);
+ int columnType = rs.getMetaData().getColumnType(i + 1);
+
+ if (columnType != functionReturnType[j]) {
+ // this is here for the sole purpose of passing the cts
+ PgCallstatementTypeCompatibility typeCompatibility = new PgCallstatementTypeCompatibility(
+ columnType, functionReturnType[j]);
+ if (typeCompatibility.isCompatibilityType()) {
+ if (callResult[j] != null && typeCompatibility.needConvert()) {
+ callResult[j] = typeCompatibility.convert(callResult[j]);
+ }
+ if (columnType == Types.STRUCT && functionReturnType[j] == Types.OTHER) {
+ if (callResult[j] != null) {
+ PGobject pGobject = (PGobject) callResult[j];
+ pGobject.setStruct(getcompositeTypeStruct(j + 1));
+ }
+ }
+ } else {
+ throw new PSQLException(GT.tr(
+ "A CallableStatement function was executed and the out parameter {0} was of type {1} however type" +
+ " {2} was registered.",
+ i + 1, "java.sql.Types=" + columnType, "java.sql.Types=" + functionReturnType[j]),
+ PSQLState.DATA_TYPE_MISMATCH);
+ }
+ }
+
+ }
}
rs.close();
synchronized (this) {
@@ -157,6 +218,18 @@ class PgCallableStatement extends PgPreparedStatement implements CallableStateme
return false;
}
+ /**
+ * Whether it contains special characters
+ *
+ * @param str string used for judgment
+ * @return contains or does not contain
+ */
+ private boolean isContainSpecialChar(String str) {
+ return str.contains(Character.toString('"')) || str.contains(Character.toString('\\')) ||
+ str.contains(Character.toString('(')) || str.contains(Character.toString(')')) ||
+ str.contains(Character.toString(',')) || str.contains(Character.toString(' '));
+ }
+
/**
* {@inheritDoc}
*
@@ -214,6 +287,19 @@ class PgCallableStatement extends PgPreparedStatement implements CallableStateme
checkIndex(parameterIndex, false);
preparedParameters.registerOutParameter(parameterIndex, sqlType);
+
+ // determine whether to overwrite the original VOID with the oid of the out parameter according to the
+ // compatibility mode and the state of the guc parameter value
+ if (isOracleCompatibilityAndOverLoad()) {
+ Integer oid;
+ if (sqlTypeToOid.get(sqlType) == null) {
+ oid = Integer.valueOf(0);
+ } else {
+ oid = sqlTypeToOid.get(sqlType);
+ }
+ preparedParameters.bindRegisterOutParameter(parameterIndex, oid, isOracleCompatibilityFunction);
+ }
+
// functionReturnType contains the user supplied value to check
// testReturn contains a modified version to make it easier to
// check the getXXX methods..
@@ -229,6 +315,45 @@ class PgCallableStatement extends PgPreparedStatement implements CallableStateme
returnTypeSet = true;
}
+ private static HashMap sqlTypeToOid = new HashMap<>();
+ static {
+ sqlTypeToOid.put(Types.SQLXML, Oid.XML);
+ sqlTypeToOid.put(Types.INTEGER, Oid.INT4);
+ sqlTypeToOid.put(Types.TINYINT, Oid.INT1);
+ sqlTypeToOid.put(Types.SMALLINT, Oid.INT2);
+ sqlTypeToOid.put(Types.BIGINT, Oid.INT8);
+ sqlTypeToOid.put(Types.REAL, Oid.FLOAT4);
+ sqlTypeToOid.put(Types.VARCHAR, Oid.VARCHAR);
+ sqlTypeToOid.put(Types.DOUBLE, Oid.FLOAT8);
+ sqlTypeToOid.put(Types.FLOAT, Oid.FLOAT8);
+ sqlTypeToOid.put(Types.DECIMAL, Oid.NUMERIC);
+ sqlTypeToOid.put(Types.NUMERIC, Oid.NUMERIC);
+ sqlTypeToOid.put(Types.CHAR, Oid.BPCHAR);
+ sqlTypeToOid.put(Types.DATE, Oid.DATE);
+ sqlTypeToOid.put(Types.TIME, Oid.TIME);
+ sqlTypeToOid.put(Types.TIMESTAMP, Oid.TIMESTAMP);
+ sqlTypeToOid.put(Types.TIME_WITH_TIMEZONE, Oid.UNSPECIFIED);
+ sqlTypeToOid.put(Types.TIMESTAMP_WITH_TIMEZONE, Oid.UNSPECIFIED);
+ sqlTypeToOid.put(Types.BOOLEAN, Oid.BOOL);
+ sqlTypeToOid.put(Types.BIT, Oid.BOOL);
+ sqlTypeToOid.put(Types.BINARY, Oid.BYTEA);
+ sqlTypeToOid.put(Types.VARBINARY, Oid.BYTEA);
+ sqlTypeToOid.put(Types.LONGVARBINARY, Oid.BYTEA);
+ sqlTypeToOid.put(Types.BLOB, Oid.BLOB);
+ sqlTypeToOid.put(Types.CLOB, Oid.CLOB);
+ sqlTypeToOid.put(Types.ARRAY, Oid.VARCHAR_ARRAY);
+ sqlTypeToOid.put(Types.DISTINCT, Oid.UNSPECIFIED);
+ sqlTypeToOid.put(Types.STRUCT, Oid.UNSPECIFIED);
+ sqlTypeToOid.put(Types.NULL, Oid.UNSPECIFIED);
+ sqlTypeToOid.put(Types.OTHER, Oid.UNSPECIFIED);
+ sqlTypeToOid.put(Types.LONGVARCHAR, Oid.VARCHAR);
+ sqlTypeToOid.put(Types.NVARCHAR, Oid.VARCHAR);
+ sqlTypeToOid.put(Types.LONGNVARCHAR, Oid.VARCHAR);
+ sqlTypeToOid.put(Types.NCHAR, Oid.CHAR);
+ sqlTypeToOid.put(Types.REF_CURSOR, Oid.REF_CURSOR);
+
+ }
+
public boolean wasNull() throws SQLException {
if (lastIndex == 0) {
throw new PSQLException(GT.tr("wasNull cannot be call before fetching a result."),
@@ -557,9 +682,91 @@ class PgCallableStatement extends PgPreparedStatement implements CallableStateme
return connection.getTimestampUtils().toTimestamp(cal, value);
}
+ private PreparedStatement getCompositeTypeStatement(String typeName) throws SQLException {
+ // query the column name and oid value of a custom type sub-column.
+ if (getCompositeTypeStatementSimple == null) {
+ String sql = "SELECT attname, atttypid " +
+ "FROM pg_attribute a " +
+ "JOIN pg_class c ON a.attrelid = c.oid " +
+ "WHERE c.oid IN ( " +
+ "SELECT a.typrelid " +
+ "FROM ( " +
+ "SELECT pn.nspname || '.' || pt.typname AS typname, pt.typrelid " +
+ "FROM pg_namespace pn " +
+ "LEFT JOIN pg_type pt ON pn.oid = pt.typnamespace" +
+ ") a " +
+ "WHERE a.typname = ? " +
+ ") " +
+ "AND a.attnum > 0 ORDER BY a.attnum";
+ getCompositeTypeStatementSimple = connection.prepareStatement(sql);
+ }
+ getCompositeTypeStatementSimple.setString(1, typeName);
+ return getCompositeTypeStatementSimple;
+ }
+
+ /**
+ * get custom type structure based on index
+ * @param index element index
+ * @return struct of the composite type
+ */
+ private Object[] getcompositeTypeStruct(int index) {
+ List struct = compositeTypeStructMap.get(index);
+ Object[] res = new Object[struct.size()];
+ for (int i = 0; i < struct.size(); i++) {
+ res[i] = struct.get(i)[0];
+ }
+ return res;
+ }
+
public void registerOutParameter(int parameterIndex, int sqlType, String typeName)
throws SQLException {
- throw Driver.notImplemented(this.getClass(), "registerOutParameter(int,int,String)");
+ if (sqlType == Types.STRUCT) {
+ checkClosed();
+ if (!isFunction) {
+ throw new PSQLException(
+ GT.tr(
+ "This statement does not declare an OUT parameter. Use '{' ?= call ... '}' to declare one."),
+ PSQLState.STATEMENT_NOT_ALLOWED_IN_FUNCTION_CALL);
+ }
+ checkIndex(parameterIndex, false);
+ if (compositeTypeMap.containsKey(typeName)) {
+ compositeTypeStructMap.put(parameterIndex, compositeTypeMap.get(typeName));
+ } else {
+ PreparedStatement compositeTypeStatement = getCompositeTypeStatement(typeName);
+ // Go through BaseStatement to avoid transaction start.
+ if (!((BaseStatement) compositeTypeStatement).executeWithFlags(QueryExecutor.QUERY_SUPPRESS_BEGIN)) {
+ throw new PSQLException(GT.tr("No results were returned by the query."), PSQLState.NO_DATA);
+ }
+ ResultSet rs = compositeTypeStatement.getResultSet();
+ List compositeType = new ArrayList<>();
+ while (rs.next()) {
+ compositeType.add(new Object[]{rs.getString(1), rs.getInt(2)});
+ }
+ rs.close();
+ compositeTypeStructMap.put(parameterIndex, compositeType);
+ }
+
+ // determine whether to overwrite the original VOID with the oid of the out parameter according to the
+ // compatibility mode and the state of the guc parameter value
+ preparedParameters.registerOutParameter(parameterIndex, Types.OTHER);
+ if (isOracleCompatibilityAndOverLoad()) {
+ preparedParameters.bindRegisterOutParameter(parameterIndex, connection.getTypeInfo().getPGType(typeName), isOracleCompatibilityFunction);
+ }
+ functionReturnType[parameterIndex - 1] = Types.OTHER;
+ testReturn[parameterIndex - 1] = Types.OTHER;
+ returnTypeSet = true;
+ isContainCompositeType = true;
+ } else {
+ throw Driver.notImplemented(this.getClass(), "registerOutParameter(int,int,String)");
+ }
+ }
+
+ /**
+ * whether it is oracle compatibility mode and reload is turned on
+ * @return true or false
+ */
+ private boolean isOracleCompatibilityAndOverLoad() {
+ return enableOutparamOveride && ("A".equalsIgnoreCase(compatibilityMode) || "ORA".equalsIgnoreCase(compatibilityMode));
}
public RowId getRowId(int parameterIndex) throws SQLException {
diff --git a/pgjdbc/src/main/java/org/postgresql/jdbc/PgCallstatementTypeCompatibility.java b/pgjdbc/src/main/java/org/postgresql/jdbc/PgCallstatementTypeCompatibility.java
index b321910..65e8d84 100644
--- a/pgjdbc/src/main/java/org/postgresql/jdbc/PgCallstatementTypeCompatibility.java
+++ b/pgjdbc/src/main/java/org/postgresql/jdbc/PgCallstatementTypeCompatibility.java
@@ -42,18 +42,6 @@ public class PgCallstatementTypeCompatibility {
}
};
- private static TypeConvert smallint2Tinyint = input -> {
- int bit;
- int result = 0;
- for (int i = 0; i < 8; i++) {
- bit = ((int)input >> i) & 0x01;
- if (bit == 1) {
- result += 1 << i;
- }
- }
- return result;
- };
-
private static Map typeConvertMap = new ConcurrentHashMap<>();
static {
@@ -65,8 +53,8 @@ public class PgCallstatementTypeCompatibility {
addConvert(Types.INTEGER, Types.NUMERIC, noneConvert);
addConvert(Types.OTHER, -10, noneConvert);
addConvert(Types.OTHER, Types.BLOB, noneConvert);
+ addConvert(Types.BLOB, Types.OTHER, noneConvert);
addConvert(Types.REF_CURSOR, Types.OTHER, noneConvert);
- addConvert(Types.SMALLINT, Types.TINYINT, smallint2Tinyint);
}
private int actualType;
diff --git a/pgjdbc/src/main/java/org/postgresql/jdbc/PgConnection.java b/pgjdbc/src/main/java/org/postgresql/jdbc/PgConnection.java
index e2f77a6..fdf2d73 100644
--- a/pgjdbc/src/main/java/org/postgresql/jdbc/PgConnection.java
+++ b/pgjdbc/src/main/java/org/postgresql/jdbc/PgConnection.java
@@ -92,6 +92,7 @@ public class PgConnection implements BaseConnection {
private static final SQLPermission SQL_PERMISSION_ABORT = new SQLPermission("callAbort");
private static final SQLPermission SQL_PERMISSION_NETWORK_TIMEOUT = new SQLPermission("setNetworkTimeout");
private static final Map CONNECTION_INFO_REPORT_BLACK_LIST;
+ private static final int SUPPORT_SINGLE_SLICE_MIN_VERSION = 92367;
static {
CONNECTION_INFO_REPORT_BLACK_LIST = new HashMap<>();
CONNECTION_INFO_REPORT_BLACK_LIST.put("user","");
@@ -126,6 +127,9 @@ public class PgConnection implements BaseConnection {
private ClientLogic clientLogic = null;
+ /* reload client cache flag compared with timestamp */
+ private boolean reloadClientLogicCacehOnIsValid = true;
+
private final TypeInfo _typeCache;
private boolean disableColumnSanitiser = false;
@@ -156,8 +160,7 @@ public class PgConnection implements BaseConnection {
public boolean batchInsert = true;
public boolean blobmode = true;
-
- //Default statement fetchsize
+ // Default statement fetchsize
private int fetchSize = -1;
// Bind String to UNSPECIFIED or VARCHAR?
@@ -177,6 +180,11 @@ public class PgConnection implements BaseConnection {
*/
private final boolean replicationConnection;
+ /**
+ * Connection's uppercase attribute name state.
+ */
+ private boolean isUpperCase = false;
+
private final LruCache fieldMetadataCache;
private final String xmlFactoryFactoryClass;
@@ -242,7 +250,11 @@ public class PgConnection implements BaseConnection {
LOGGER.trace("Catch Exception while compare allow and FALSE. ", e);
}
- this.creatingURL = url;
+ if (PGProperty.UPPERCASE_ATTRIBUTE_NAME.getBoolean(info)) {
+ setIsUpperCase(true);
+ }
+
+ this.creatingURL = url;
setDefaultFetchSize(PGProperty.DEFAULT_ROW_FETCH_SIZE.getInt(info));
@@ -468,6 +480,11 @@ public class PgConnection implements BaseConnection {
clientLogic = new ClientLogic();
String databaseName = PGProperty.PG_DBNAME.get(info);
clientLogic.linkClientLogic(databaseName, this);
+
+ if (PGProperty.REFRESH_CLIENT_ENCRYPTION.get(info) != null &&
+ !PGProperty.REFRESH_CLIENT_ENCRYPTION.get(info).equals("1")) {
+ reloadClientLogicCacehOnIsValid = false;
+ }
}
catch (ClientLogicException e) {
clientLogic = null;
@@ -1263,18 +1280,18 @@ public class PgConnection implements BaseConnection {
return (notifications.length == 0 ? null : notifications);
}
- /**
- * Handler for transaction queries.
- */
- private class TransactionCommandHandler extends ResultHandlerBase {
- public void handleCompletion() throws SQLException {
- SQLWarning warning = getWarning();
- if (warning != null) {
- PgConnection.this.addWarning(warning);
+ /**
+ * Handler for transaction queries.
+ */
+ private class TransactionCommandHandler extends ResultHandlerBase {
+ public void handleCompletion() throws SQLException {
+ SQLWarning warning = getWarning();
+ if (warning != null) {
+ PgConnection.this.addWarning(warning);
+ }
+ super.handleCompletion();
}
- super.handleCompletion();
}
- }
public int getPrepareThreshold() {
return prepareThreshold;
@@ -1612,6 +1629,17 @@ public class PgConnection implements BaseConnection {
return makeArray(oid, sb.toString());
}
+ /**
+ * Use JNI to reload the client logic cache only if the cached configuration timestamp is
+ * earlier that the maximum configuration timestamp on the server
+ */
+ private void reloadClientLogicCacheIfNeeded() {
+ if (clientLogic == null || !reloadClientLogicCacehOnIsValid) {
+ return;
+ }
+ clientLogic.reloadCacheIfNeeded();
+ }
+
@Override
public boolean isValid(int timeout) throws SQLException {
if (timeout < 0) {
@@ -1622,28 +1650,47 @@ public class PgConnection implements BaseConnection {
return false;
}
try {
- if (replicationConnection) {
- Statement statement = createStatement();
- statement.execute("IDENTIFY_SYSTEM");
- statement.close();
- } else {
- if (checkConnectionQuery == null) {
- checkConnectionQuery = prepareStatement("");
+ if (replicationConnection) {
+ Statement statement = createStatement();
+ statement.execute("IDENTIFY_SYSTEM");
+ statement.close();
+ } else {
+ if (checkConnectionQuery == null) {
+ checkConnectionQuery = prepareStatement("");
+ }
+ checkConnectionQuery.setQueryTimeout(timeout);
+ checkConnectionQuery.executeUpdate();
}
- checkConnectionQuery.setQueryTimeout(timeout);
- checkConnectionQuery.executeUpdate();
- }
- return true;
+
+ reloadClientLogicCacheIfNeeded();
+ return true;
} catch (SQLException e) {
if (PSQLState.IN_FAILED_SQL_TRANSACTION.getState().equals(e.getSQLState())) {
- // "current transaction aborted", assume the connection is up and running
- return true;
+ // "current transaction aborted", assume the connection is up and running
+ reloadClientLogicCacheIfNeeded();
+ return true;
}
LOGGER.debug(GT.tr("Validating connection."), e);
}
return false;
}
+ private static boolean isKmsInfo(String name) {
+ String[] kmsNames = {"iamUser", "iamPassword", "kmsDomain", "kmsProjectName", "kmsProjectId"};
+
+ if (name == null || name.trim().length() == 0) {
+ return false;
+ }
+
+ for (String kmsName : kmsNames) {
+ if (name.trim().equals(kmsName)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
@Override
public void setClientInfo(String name, String value) throws SQLClientInfoException {
try {
@@ -1654,6 +1701,24 @@ public class PgConnection implements BaseConnection {
throw new SQLClientInfoException(GT.tr("This connection has been closed."), failures, cause);
}
+ /*
+ * if the client info related to Huawei KMS:
+ * {iamUser, iamPassword, kmsDomain, kmsProjectName, kmsProjectId}
+ * we will pass them into "libgauss_cl_jni.so".
+ * then, when user executes SQL related to encryption and decryption,
+ * 'libgauss_cl_jni.so' will use the parameters to establish the connection.
+ */
+ if (isKmsInfo(name)) {
+ try {
+ clientLogic.setKmsInfo(name.trim(), value);
+ } catch (ClientLogicException cle) {
+ Map failures = new HashMap();
+ failures.put(name, ClientInfoStatus.REASON_UNKNOWN);
+ throw new SQLClientInfoException(
+ GT.tr("Failed to set ClientInfo property: " + name), failures, cle);
+ }
+ }
+
if (haveMinimumServerVersion(ServerVersion.v9_0) && "ApplicationName".equals(name) || "ApplicationType".equals(name)) {
MapappInfo=new HashMap();
appInfo.put("ApplicationName","application_name");
@@ -1686,6 +1751,24 @@ public class PgConnection implements BaseConnection {
return;
}
+ if ("nodeName".equals(name)) {
+ if (Integer.parseInt(this.getQueryExecutor().getWorkingVersionNum())
+ >= SUPPORT_SINGLE_SLICE_MIN_VERSION) {
+ _clientInfo.put(name, value);
+ return;
+ } else {
+ Map failures = new HashMap();
+ failures.put(name, ClientInfoStatus.REASON_UNKNOWN_PROPERTY);
+ throw new SQLClientInfoException(
+ GT.tr("Single slice query function is not available."
+ + System.lineSeparator()
+ + "The current version of the database is "
+ + this.getQueryExecutor().getWorkingVersionNum()
+ + "," + "but the database version that JDBC supports using this function is "
+ + SUPPORT_SINGLE_SLICE_MIN_VERSION), failures);
+ }
+ }
+
addWarning(new SQLWarning(GT.tr("ClientInfo property not supported."),
PSQLState.NOT_IMPLEMENTED.getState()));
}
@@ -2055,5 +2138,12 @@ public class PgConnection implements BaseConnection {
return this.socketAddress;
}
+ private void setIsUpperCase(boolean isUpperCase) {
+ this.isUpperCase = isUpperCase;
+ }
+
+ protected boolean getIsUpperCase() {
+ return isUpperCase;
+ }
}
diff --git a/pgjdbc/src/main/java/org/postgresql/jdbc/PgDatabaseMetaData.java b/pgjdbc/src/main/java/org/postgresql/jdbc/PgDatabaseMetaData.java
index 1259684..c9c6360 100644
--- a/pgjdbc/src/main/java/org/postgresql/jdbc/PgDatabaseMetaData.java
+++ b/pgjdbc/src/main/java/org/postgresql/jdbc/PgDatabaseMetaData.java
@@ -27,6 +27,7 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.StringTokenizer;
@@ -1033,16 +1034,19 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
+ " LEFT JOIN pg_catalog.pg_namespace pn ON (c.relnamespace=pn.oid AND pn.nspname='pg_catalog') "
+ " WHERE p.pronamespace=n.oid ";
if (schemaPattern != null && !schemaPattern.isEmpty()) {
+ schemaPattern = lowCase(schemaPattern);
sql += " AND n.nspname LIKE " + escapeQuotes(schemaPattern);
}
if (procedureNamePattern != null && !procedureNamePattern.isEmpty()) {
+ procedureNamePattern = lowCase(procedureNamePattern);
sql += " AND p.proname LIKE " + escapeQuotes(procedureNamePattern);
}
sql += " ORDER BY PROCEDURE_SCHEM, PROCEDURE_NAME, p.oid::text ";
- return createMetaDataStatement().executeQuery(sql);
+ return resultConvert(createMetaDataStatement().executeQuery(sql));
}
+
public ResultSet getProcedureColumns(String catalog, String schemaPattern,
String procedureNamePattern, String columnNamePattern) throws SQLException {
int columns = 20;
@@ -1071,15 +1075,37 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
f[18] = new Field("IS_NULLABLE", Oid.VARCHAR);
f[19] = new Field("SPECIFIC_NAME", Oid.VARCHAR);
+ Boolean isClientLogic = false;
+ String clinetLogicSelectClause = "";
+ String clinetLogicFromClause = "";
+ String clientLogicMultiColumnSelectClause = "";
+ String clientLogicMultiColumnFromClause = "";
+ if (connection.getClientLogic() != null) {
+ isClientLogic = true;
+ clinetLogicSelectClause = ",ce.prorettype_orig, ce.proallargtypes_orig ";
+ clinetLogicFromClause = " LEFT JOIN pg_catalog.gs_encrypted_proc ce ON (p.oid = ce.func_id) ";
+ clientLogicMultiColumnSelectClause = ", ce.data_type_original_oid ";
+ clientLogicMultiColumnFromClause =
+ " LEFT JOIN pg_catalog.gs_encrypted_columns ce ON (a.attrelid = ce.rel_id and a.attname = ce.column_name) ";
+ }
String sql;
sql = "SELECT n.nspname,p.proname,p.prorettype,p.proargtypes, t.typtype,t.typrelid, "
- + " p.proargnames, p.proargmodes, p.proallargtypes, p.oid "
- + " FROM pg_catalog.pg_proc p, pg_catalog.pg_namespace n, pg_catalog.pg_type t "
+ + " p.proargnames, p.proargmodes, p.proallargtypes, p.oid ";
+ if (isClientLogic) {
+ sql += clinetLogicSelectClause;
+ }
+ sql += " FROM pg_catalog.pg_proc p ";
+ if (isClientLogic) {
+ sql += clinetLogicFromClause;
+ }
+ sql += " , pg_catalog.pg_namespace n, pg_catalog.pg_type t "
+ " WHERE p.pronamespace=n.oid AND p.prorettype=t.oid ";
if (schemaPattern != null && !schemaPattern.isEmpty()) {
+ schemaPattern = lowCase(schemaPattern);
sql += " AND n.nspname LIKE " + escapeQuotes(schemaPattern);
}
if (procedureNamePattern != null && !procedureNamePattern.isEmpty()) {
+ procedureNamePattern = lowCase(procedureNamePattern);
sql += " AND p.proname LIKE " + escapeQuotes(procedureNamePattern);
}
sql += " ORDER BY n.nspname, p.proname, p.oid::text ";
@@ -1094,6 +1120,13 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
byte[] specificName =
connection.encodeString(rs.getString("proname") + "_" + rs.getString("oid"));
int returnType = (int) rs.getLong("prorettype");
+
+ if (isClientLogic) {
+ if (rs.getLong("prorettype_orig") > 0) {
+ returnType = (int) rs.getLong("prorettype_orig");
+ }
+ }
+
String returnTypeType = rs.getString("typtype");
int returnTypeRelid = (int) rs.getLong("typrelid");
@@ -1125,6 +1158,14 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
numArgs = allArgTypes.length;
}
+ Long[] allArgTypesClientLogic = null;
+ Array allArgTypesArrayClientLogic = null;
+ if (isClientLogic) {
+ allArgTypesArrayClientLogic = rs.getArray("proallargtypes_orig");
+ if (allArgTypesArrayClientLogic != null) {
+ allArgTypesClientLogic = (Long[]) allArgTypesArrayClientLogic.getArray();
+ }
+ }
// decide if we are returning a single column result.
if (returnTypeType.equals("b") || returnTypeType.equals("d")
|| (returnTypeType.equals("p") && argModesArray == null)) {
@@ -1179,6 +1220,12 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
int argOid;
if (allArgTypes != null) {
argOid = allArgTypes[i].intValue();
+
+ if (isClientLogic && allArgTypesClientLogic != null && i < allArgTypesClientLogic.length) {
+ if (allArgTypesClientLogic[i] > 0) {
+ argOid = allArgTypesClientLogic[i].intValue();
+ }
+ }
} else {
argOid = argTypes.get(i).intValue();
}
@@ -1200,15 +1247,29 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
v.add(tuple);
}
- // if we are returning a multi-column result.
- if (returnTypeType.equals("c") || (returnTypeType.equals("p") && argModesArray != null)) {
- String columnsql = "SELECT a.attname,a.atttypid FROM pg_catalog.pg_attribute a "
- + " WHERE a.attrelid = " + returnTypeRelid
- + " AND NOT a.attisdropped AND a.attnum > 0 ORDER BY a.attnum ";
- Statement columnstmt = connection.createStatement();
- ResultSet columnrs = columnstmt.executeQuery(columnsql);
- while (columnrs.next()) {
- int columnTypeOid = (int) columnrs.getLong("atttypid");
+ // if we are returning a multi-column result.
+ if (returnTypeType.equals("c") || (returnTypeType.equals("p") && argModesArray != null)) {
+ String columnsql = "SELECT a.attname,a.atttypid ";
+ if (isClientLogic) {
+ columnsql += clientLogicMultiColumnSelectClause;
+ }
+ columnsql += "FROM pg_catalog.pg_attribute a ";
+ if (isClientLogic) {
+ columnsql += clientLogicMultiColumnFromClause;
+ }
+ columnsql += " WHERE a.attrelid = " + returnTypeRelid +
+ " AND NOT a.attisdropped AND a.attnum > 0 ORDER BY a.attnum ";
+ Statement columnstmt = connection.createStatement();
+ ResultSet columnrs = columnstmt.executeQuery(columnsql);
+ while (columnrs.next()) {
+ int columnTypeOid = (int) columnrs.getLong("atttypid");
+ if (isClientLogic && columnrs.getString("data_type_original_oid") != null &&
+ !columnrs.getString("data_type_original_oid").equals("")) {
+ if (columnrs.getLong("data_type_original_oid") > 0) {
+ columnTypeOid = (int) columnrs.getLong("data_type_original_oid");
+ }
+ }
+
byte[][] tuple = new byte[columns][];
tuple[0] = null;
tuple[1] = schema;
@@ -1239,7 +1300,8 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
rs.close();
stmt.close();
- return ((BaseStatement) createMetaDataStatement()).createDriverResultSet(f, v);
+ return resultConvert(((BaseStatement) createMetaDataStatement())
+ .createDriverResultSet(f, v));
}
@Override
@@ -1291,11 +1353,13 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
+ " WHERE c.relnamespace = n.oid ";
if (schemaPattern != null && !schemaPattern.isEmpty()) {
+ schemaPattern = lowCase(schemaPattern);
select += " AND n.nspname LIKE " + escapeQuotes(schemaPattern);
}
orderby = " ORDER BY TABLE_TYPE,TABLE_SCHEM,TABLE_NAME ";
if (tableNamePattern != null && !tableNamePattern.isEmpty()) {
+ tableNamePattern = lowCase(tableNamePattern);
select += " AND c.relname LIKE " + escapeQuotes(tableNamePattern);
}
if (types != null) {
@@ -1312,7 +1376,7 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
}
String sql = select + orderby;
- return createMetaDataStatement().executeQuery(sql);
+ return resultConvert(createMetaDataStatement().executeQuery(sql));
}
private static final Map> tableTypeClauses;
@@ -1408,11 +1472,12 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
+ " OR nspname = (pg_catalog.current_schemas(true))[1]) AND (nspname !~ '^pg_toast_temp_' "
+ " OR nspname = replace((pg_catalog.current_schemas(true))[1], 'pg_temp_', 'pg_toast_temp_')) ";
if (schemaPattern != null && !schemaPattern.isEmpty()) {
+ schemaPattern = lowCase(schemaPattern);
sql += " AND nspname LIKE " + escapeQuotes(schemaPattern);
}
sql += " ORDER BY TABLE_SCHEM";
- return createMetaDataStatement().executeQuery(sql);
+ return resultConvert(createMetaDataStatement().executeQuery(sql));
}
/**
@@ -1531,15 +1596,18 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
+ " WHERE c.relkind in ('r','p','v','f','m') and a.attnum > 0 AND NOT a.attisdropped ";
if (schemaPattern != null && !schemaPattern.isEmpty()) {
+ schemaPattern = lowCase(schemaPattern);
sql += " AND n.nspname LIKE " + escapeQuotes(schemaPattern);
}
if (tableNamePattern != null && !tableNamePattern.isEmpty()) {
+ tableNamePattern = lowCase(tableNamePattern);
sql += " AND c.relname LIKE " + escapeQuotes(tableNamePattern);
}
if (connection.haveMinimumServerVersion(ServerVersion.v8_4)) {
sql += ") c WHERE true ";
}
if (columnNamePattern != null && !columnNamePattern.isEmpty()) {
+ columnNamePattern = lowCase(columnNamePattern);
sql += " AND attname LIKE " + escapeQuotes(columnNamePattern);
}
sql += " ORDER BY nspname,c.relname,attnum ";
@@ -1650,7 +1718,8 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
rs.close();
stmt.close();
- return ((BaseStatement) createMetaDataStatement()).createDriverResultSet(f, v);
+ return resultConvert(((BaseStatement) createMetaDataStatement())
+ .createDriverResultSet(f, v));
}
@Override
@@ -1668,6 +1737,8 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
f[6] = new Field("PRIVILEGE", Oid.VARCHAR);
f[7] = new Field("IS_GRANTABLE", Oid.VARCHAR);
+
+
String sql;
sql = "SELECT n.nspname,c.relname,r.rolname,c.relacl, "
+ (connection.haveMinimumServerVersion(ServerVersion.v8_4) ? "a.attacl, " : "")
@@ -1681,12 +1752,15 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
+ " AND a.attnum > 0 AND NOT a.attisdropped ";
if (schema != null && !schema.isEmpty()) {
+ schema = lowCase(schema);
sql += " AND n.nspname = " + escapeQuotes(schema);
}
if (table != null && !table.isEmpty()) {
+ table = lowCase(table);
sql += " AND c.relname = " + escapeQuotes(table);
}
if (columnNamePattern != null && !columnNamePattern.isEmpty()) {
+ columnNamePattern = lowCase(columnNamePattern);
sql += " AND a.attname LIKE " + escapeQuotes(columnNamePattern);
}
sql += " ORDER BY attname ";
@@ -1735,7 +1809,7 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
rs.close();
stmt.close();
- return ((BaseStatement) createMetaDataStatement()).createDriverResultSet(f, v);
+ return resultConvert(((BaseStatement) createMetaDataStatement()).createDriverResultSet(f, v));
}
@Override
@@ -1760,10 +1834,12 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
+ " AND c.relkind IN ('r','p') ";
if (schemaPattern != null && !schemaPattern.isEmpty()) {
+ schemaPattern = lowCase(schemaPattern);
sql += " AND n.nspname LIKE " + escapeQuotes(schemaPattern);
}
if (tableNamePattern != null && !tableNamePattern.isEmpty()) {
+ tableNamePattern = lowCase(tableNamePattern);
sql += " AND c.relname LIKE " + escapeQuotes(tableNamePattern);
}
sql += " ORDER BY nspname, relname ";
@@ -1805,7 +1881,7 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
rs.close();
stmt.close();
- return ((BaseStatement) createMetaDataStatement()).createDriverResultSet(f, v);
+ return resultConvert(((BaseStatement) createMetaDataStatement()).createDriverResultSet(f, v));
}
/**
@@ -1987,6 +2063,7 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
f[6] = new Field("DECIMAL_DIGITS", Oid.INT2);
f[7] = new Field("PSEUDO_COLUMN", Oid.INT2);
+
/*
* At the moment this simply returns a table's primary key, if there is one. I believe other
* unique indexes, ctid, and oid should also be considered. -KJ
@@ -2004,9 +2081,11 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
+ "WHERE true ";
if (schema != null && !schema.isEmpty()) {
+ schema = lowCase(schema);
sql += " AND n.nspname = " + escapeQuotes(schema);
}
+ table = lowCase(table);
sql += " AND ct.relname = " + escapeQuotes(table)
+ " AND i.indisprimary "
+ " ORDER BY a.attnum ";
@@ -2037,7 +2116,7 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
rs.close();
stmt.close();
- return ((BaseStatement) createMetaDataStatement()).createDriverResultSet(f, v);
+ return resultConvert(((BaseStatement) createMetaDataStatement()).createDriverResultSet(f, v));
}
public ResultSet getVersionColumns(String catalog, String schema, String table)
@@ -2084,32 +2163,57 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
public ResultSet getPrimaryKeys(String catalog, String schema, String table)
throws SQLException {
+ return getPrimaryKeys(schema, table, true);
+ }
+
+ /**
+ * Get the primary key of a partitioned table.
+ *
+ * @param catalog database name
+ * @param schema schema name
+ * @param table table name
+ * @return each row is a primary key column description
+ * @throws SQLException each row is a primary key column description
+ */
+ public ResultSet getPartitionTablePrimaryKeys(String catalog, String schema, String table)
+ throws SQLException {
+ return getPrimaryKeys(schema, table, false);
+ }
+
+ private ResultSet getPrimaryKeys(String schema, String table, Boolean needHiddenColumns)
+ throws SQLException {
String sql;
sql = "SELECT NULL AS TABLE_CAT, n.nspname AS TABLE_SCHEM, "
- + " ct.relname AS TABLE_NAME, a.attname AS COLUMN_NAME, "
- + " (i.keys).n AS KEY_SEQ, ci.relname AS PK_NAME "
- + "FROM pg_catalog.pg_class ct "
- + " JOIN pg_catalog.pg_attribute a ON (ct.oid = a.attrelid) "
- + " JOIN pg_catalog.pg_namespace n ON (ct.relnamespace = n.oid) "
- + " JOIN (SELECT i.indexrelid, i.indrelid, i.indisprimary, "
- + " information_schema._pg_expandarray(i.indkey) AS keys "
- + " FROM pg_catalog.pg_index i) i "
- + " ON (a.attnum = (i.keys).x AND a.attrelid = i.indrelid) "
- + " JOIN pg_catalog.pg_class ci ON (ci.oid = i.indexrelid) "
- + "WHERE true ";
+ + " ct.relname AS TABLE_NAME, a.attname AS COLUMN_NAME, "
+ + " (i.keys).n AS KEY_SEQ, ci.relname AS PK_NAME "
+ + "FROM pg_catalog.pg_class ct "
+ + " JOIN pg_catalog.pg_attribute a ON (ct.oid = a.attrelid) "
+ + " JOIN pg_catalog.pg_namespace n ON (ct.relnamespace = n.oid) "
+ + " JOIN (SELECT i.indexrelid, i.indrelid, i.indisprimary, "
+ + " information_schema._pg_expandarray(i.indkey) AS keys "
+ + " FROM pg_catalog.pg_index i) i "
+ + " ON (a.attnum = (i.keys).x AND a.attrelid = i.indrelid) "
+ + " JOIN pg_catalog.pg_class ci ON (ci.oid = i.indexrelid) "
+ + "WHERE true ";
if (schema != null && !schema.isEmpty()) {
+ schema = lowCase(schema);
sql += " AND n.nspname = " + escapeQuotes(schema);
}
if (table != null && !table.isEmpty()) {
+ table = lowCase(table);
sql += " AND ct.relname = " + escapeQuotes(table);
}
- sql += " AND i.indisprimary "
- + " ORDER BY table_name, pk_name, key_seq";
+ if (!needHiddenColumns) {
+ sql += " AND a.attnum > 0 ";
+ }
- return createMetaDataStatement().executeQuery(sql);
+ sql += " AND i.indisprimary "
+ + " ORDER BY table_name, pk_name, key_seq";
+
+ return resultConvert(createMetaDataStatement().executeQuery(sql));
}
/**
@@ -2184,15 +2288,19 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
}
if (primarySchema != null && !primarySchema.isEmpty()) {
+ primarySchema = lowCase(primarySchema);
sql += " AND pkn.nspname = " + escapeQuotes(primarySchema);
}
if (foreignSchema != null && !foreignSchema.isEmpty()) {
+ foreignSchema = lowCase(foreignSchema);
sql += " AND fkn.nspname = " + escapeQuotes(foreignSchema);
}
if (primaryTable != null && !primaryTable.isEmpty()) {
+ primaryTable = lowCase(primaryTable);
sql += " AND pkc.relname = " + escapeQuotes(primaryTable);
}
if (foreignTable != null && !foreignTable.isEmpty()) {
+ foreignTable = lowCase(foreignTable);
sql += " AND fkc.relname = " + escapeQuotes(foreignTable);
}
@@ -2202,7 +2310,7 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
sql += " ORDER BY pkn.nspname,pkc.relname, con.conname,pos.n";
}
- return createMetaDataStatement().executeQuery(sql);
+ return resultConvert(createMetaDataStatement().executeQuery(sql));
}
public ResultSet getImportedKeys(String catalog, String schema, String table)
@@ -2324,6 +2432,7 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
public ResultSet getIndexInfo(String catalog, String schema, String tableName,
boolean unique, boolean approximate) throws SQLException {
+
/*
* This is a complicated function because we have three possible situations: <= 7.2 no schemas,
* single column functional index 7.3 schemas, single column functional index >= 7.4 schemas,
@@ -2378,6 +2487,7 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
+ "WHERE true ";
if (schema != null && !schema.isEmpty()) {
+ schema = lowCase(schema);
sql += " AND n.nspname = " + escapeQuotes(schema);
}
} else {
@@ -2416,6 +2526,7 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
+ where;
}
+ tableName = lowCase(tableName);
sql += " AND ct.relname = " + escapeQuotes(tableName);
if (unique) {
@@ -2423,7 +2534,7 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
}
sql += " ORDER BY NON_UNIQUE, TYPE, INDEX_NAME, ORDINAL_POSITION ";
- return createMetaDataStatement().executeQuery(sql);
+ return resultConvert(createMetaDataStatement().executeQuery(sql));
}
// ** JDBC 2 Extensions **
@@ -2535,6 +2646,7 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
// then the schema and catalog are ignored
if (typeNamePattern != null) {
+ typeNamePattern = lowCase(typeNamePattern);
// search for qualifier
int firstQualifier = typeNamePattern.indexOf('.');
int secondQualifier = typeNamePattern.lastIndexOf('.');
@@ -2556,11 +2668,13 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
// schemaPattern may have been modified above
if (schemaPattern != null) {
+ schemaPattern = lowCase(schemaPattern);
toAdd.append(" and n.nspname like ").append(escapeQuotes(schemaPattern));
}
sql += toAdd.toString();
sql += " order by data_type, type_schem, type_name";
- return createMetaDataStatement().executeQuery(sql);
+
+ return resultConvert(createMetaDataStatement().executeQuery(sql));
}
@@ -2659,14 +2773,16 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
+ "LEFT JOIN pg_catalog.pg_description d ON p.oid=d.objoid "
+ "WHERE pg_function_is_visible(p.oid) ";
if (schemaPattern != null && !schemaPattern.isEmpty()) {
+ schemaPattern = lowCase(schemaPattern);
sql += " AND n.nspname LIKE " + escapeQuotes(schemaPattern);
}
if (functionNamePattern != null && !functionNamePattern.isEmpty()) {
+ functionNamePattern = lowCase(functionNamePattern);
sql += " AND p.proname LIKE " + escapeQuotes(functionNamePattern);
}
sql += " ORDER BY FUNCTION_SCHEM, FUNCTION_NAME, p.oid::text ";
- return createMetaDataStatement().executeQuery(sql);
+ return resultConvert(createMetaDataStatement().executeQuery(sql));
}
public ResultSet getFunctionColumns(String catalog, String schemaPattern,
@@ -2766,4 +2882,33 @@ public class PgDatabaseMetaData implements DatabaseMetaData {
public boolean supportsStatementPooling() throws SQLException {
return false;
}
+
+ /**
+ * It is used for lowercase conversion without making any non null judgment on the parameter
+ *
+ * @param sql SQL statement
+ * @return String
+ */
+ private String lowCase(final String sql) {
+ String tempSql = sql;
+ if (connection.getIsUpperCase()) {
+ tempSql = tempSql.toLowerCase(Locale.ENGLISH);
+ }
+ return tempSql;
+ }
+
+ /**
+ * Set the parameters in PgResultSet, and the results will be capitalized when obtaining the results later
+ *
+ * @param resultSet Search results
+ * @return PgResultSet
+ */
+ private PgResultSet resultConvert(final ResultSet resultSet) {
+ PgResultSet pgResultSet = (PgResultSet) resultSet;
+ if (connection.getIsUpperCase()) {
+ pgResultSet.setUppercase(true);
+ }
+ return pgResultSet;
+ }
+
}
diff --git a/pgjdbc/src/main/java/org/postgresql/jdbc/PgPreparedStatement.java b/pgjdbc/src/main/java/org/postgresql/jdbc/PgPreparedStatement.java
index 6668a89..e2057d1 100644
--- a/pgjdbc/src/main/java/org/postgresql/jdbc/PgPreparedStatement.java
+++ b/pgjdbc/src/main/java/org/postgresql/jdbc/PgPreparedStatement.java
@@ -14,7 +14,6 @@ import org.postgresql.core.Query;
import org.postgresql.core.QueryExecutor;
import org.postgresql.core.ServerVersion;
import org.postgresql.core.TypeInfo;
-import org.postgresql.core.types.PGBlob;
import org.postgresql.core.v3.BatchedQuery;
import org.postgresql.core.v3.ConnectionFactoryImpl;
import org.postgresql.largeobject.LargeObject;
@@ -31,20 +30,17 @@ import org.postgresql.util.PSQLState;
import org.postgresql.util.ReaderInputStream;
import org.postgresql.log.Logger;
import org.postgresql.log.Log;
+import org.postgresql.util.HintNodeName;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
-import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
-import java.io.Writer;
-import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;
-import java.nio.charset.Charset;
import java.sql.Array;
import java.sql.Blob;
import java.sql.Clob;
@@ -152,6 +148,10 @@ class PgPreparedStatement extends PgStatement implements PreparedStatement {
if (connection.getPreferQueryMode() == PreferQueryMode.SIMPLE) {
flags |= QueryExecutor.QUERY_EXECUTE_AS_SIMPLE;
}
+ // Update when the value of nodeName changes
+ if (connection.getClientInfo("nodeName") != null ) {
+ this.preparedQuery.query.setNodeName(connection.getClientInfo("nodeName"));
+ }
execute(preparedQuery, preparedParameters, flags);
@@ -426,22 +426,7 @@ class PgPreparedStatement extends PgStatement implements PreparedStatement {
throw new PSQLException(
GT.tr("Invalid stream length {0}.", Integer.valueOf(length)), PSQLState.INVALID_PARAMETER_VALUE);
}
- Blob blob = new PGBlob();
- byte[] tmp = new byte[length];
- try {
- int len = x.read(tmp);
- if (len < length) {
- throw new PSQLException(
- GT.tr("Invalid stream length {0}.", Integer.valueOf(length)),
- PSQLState.INVALID_PARAMETER_VALUE);
- }
- blob.setBytes(1, tmp);
- } catch (IOException e) {
- throw new PSQLException(GT.tr("Provided InputStream failed."), PSQLState.UNEXPECTED_ERROR, e);
- }
-
- setBlob(parameterIndex, blob);
-
+ preparedParameters.setBlob(parameterIndex, x, length);
} else {
if (x == null) {
setNull(parameterIndex, Types.VARBINARY);
@@ -1434,11 +1419,20 @@ class PgPreparedStatement extends PgStatement implements PreparedStatement {
throw new PSQLException(GT.tr("Object is too large to send over the protocol."),
PSQLState.NUMERIC_CONSTANT_OUT_OF_RANGE);
}
- preparedParameters.setBytea(parameterIndex, value, (int) length);
+ if (((PgConnection) this.connection).isBlobMode()) {
+ preparedParameters.setBlob(parameterIndex, value, (int)length);
+ } else {
+ preparedParameters.setBytea(parameterIndex, value, (int) length);
+ }
}
public void setBinaryStream(int parameterIndex, InputStream value) throws SQLException {
- preparedParameters.setBytea(parameterIndex, value);
+ checkClosed();
+ if (((PgConnection) this.connection).isBlobMode()) {
+ preparedParameters.setBlob(parameterIndex, value);
+ } else {
+ preparedParameters.setBytea(parameterIndex, value);
+ }
}
public void setAsciiStream(int parameterIndex, InputStream value, long length)
@@ -1503,30 +1497,32 @@ class PgPreparedStatement extends PgStatement implements PreparedStatement {
public void setBlob(int i, InputStream in) throws SQLException{
checkClosed();
-
if (in == null)
{
setNull(i, Types.BLOB);
return;
}
- try {
- preparedParameters.setBlob(i, in, in.available());
- } catch (IOException e1) {
- throw new SQLException(e1.getMessage());
- }
+ preparedParameters.setBlob(i, in);
}
@Override
public void setBlob(int parameterIndex, InputStream inputStream, long length) throws SQLException {
checkClosed();
-
if (inputStream == null)
{
setNull(parameterIndex, Types.BLOB);
return;
}
+ if (length > Integer.MAX_VALUE) {
+ throw new PSQLException(GT.tr("Object is too large to send over the protocol. {0}", length),
+ PSQLState.NUMERIC_CONSTANT_OUT_OF_RANGE);
+ }
+ if (length < 0) {
+ throw new PSQLException(
+ GT.tr("Invalid stream length {0}.", length),
+ PSQLState.INVALID_PARAMETER_VALUE);
+ }
preparedParameters.setBlob(parameterIndex, inputStream, (int)length);
-
}
diff --git a/pgjdbc/src/main/java/org/postgresql/jdbc/PgResultSet.java b/pgjdbc/src/main/java/org/postgresql/jdbc/PgResultSet.java
index d3a6c87..8f0db82 100644
--- a/pgjdbc/src/main/java/org/postgresql/jdbc/PgResultSet.java
+++ b/pgjdbc/src/main/java/org/postgresql/jdbc/PgResultSet.java
@@ -74,6 +74,9 @@ import java.util.concurrent.TimeUnit;
public class PgResultSet implements ResultSet, org.postgresql.PGRefCursorResultSet {
+ private final static int RECORDID_OID = 2249;
+ private final static int MIN_TABLE_OID = 16000;
+
// needed for updateable result set support
private boolean updateable = false;
private boolean doingUpdates = false;
@@ -87,10 +90,21 @@ public class PgResultSet implements ResultSet, org.postgresql.PGRefCursorResultS
private PreparedStatement insertStatement = null;
private PreparedStatement deleteStatement = null;
private PreparedStatement selectStatement = null;
+ private ResultSetMetaData rsMetaData;
private final int resultsettype;
private final int resultsetconcurrency;
private int fetchdirection = ResultSet.FETCH_UNKNOWN;
private TimeZone defaultTimeZone;
+
+ // Flag that keeps if the client logic record data were loaded
+ private boolean isClientLogicRecordDataLoaded = false;
+
+ // flag that sets if any of the fields needs to be handled by client logic
+ private boolean isAnyColumnContainsClientLogic = false;
+
+ // Flag to indicate failure in converting client logic values back to user format:
+ private boolean didClientLogicFail = false;
+
protected final BaseConnection connection; // the connection we belong to
protected final BaseStatement statement; // the statement we belong to
protected final Field[] fields; // Field metadata for this resultset.
@@ -119,7 +133,18 @@ public class PgResultSet implements ResultSet, org.postgresql.PGRefCursorResultS
private Map columnNameIndexMap; // Speed up findColumn by caching lookups
- private ResultSetMetaData rsMetaData;
+ /**
+ * Whether the result needs to return uppercase
+ */
+ protected boolean isUpperCase = false;
+
+ protected void setUppercase(boolean isUpperCase) {
+ this.isUpperCase = isUpperCase;
+ }
+
+ private String resultUppercase(String result) {
+ return isUpperCase && result != null && !result.isEmpty() ? result.toUpperCase(Locale.ENGLISH) : result;
+ }
protected ResultSetMetaData createMetaData() throws SQLException {
return new PgResultSetMetaData(connection, fields);
@@ -149,7 +174,7 @@ public class PgResultSet implements ResultSet, org.postgresql.PGRefCursorResultS
this.statement = statement;
this.fields = fields;
this.rows = tuples;
- clientLogicGetData();
+ clientLogicGetData(false);
this.cursor = cursor;
this.maxRows = maxRows;
this.maxFieldSize = maxFieldSize;
@@ -173,16 +198,69 @@ public class PgResultSet implements ResultSet, org.postgresql.PGRefCursorResultS
return new String(hexCharArray);
}
+ /**
+ * This method is used to transform data that is client logic from record data back to user input format
+ *
+ * @param clientLogic client logic
+ * @param field the field which need to encode
+ * @param encoding the encoding of connection
+ * @param fieldIndex the index of field
+ * @return void
+ * @throws SQLException if something wrong happens
+ */
+ private void clientLogicGetDataFromRecord(ClientLogic clientLogic, Field field, Encoding encoding, int fieldIndex)
+ throws SQLException {
+ if (!ClientLogic.isClientLogicField(field.getOID()) && field.getClientLogicFieldOriginalIdS() != null &&
+ field.getClientLogicFieldOriginalIdS().size() > 0) {
+ try {
+ for (int rowIndex = 0; rowIndex < rows.size(); ++rowIndex) {
+ byte[] fieldData = rows.get(rowIndex)[fieldIndex];
+ if (fieldData == null) {
+ continue;
+ }
+ String clientLogicValue = encoding.decode(fieldData);
+ String userInputValue = "";
+ try {
+ userInputValue =
+ clientLogic.runClientLogic4Record(clientLogicValue, field.getClientLogicFieldOriginalIdS());
+ // Encode the data back the same way, so the field is now not binary
+ } catch (ClientLogicException e) {
+ connection.getLogger().error("client logic failed for field:" + field.getColumnLabel() +
+ ", value: " + clientLogicValue + " Error:" + e.getErrorCode() + ":" + e.getErrorText());
+ throw e;
+ }
+ rows.get(rowIndex)[fieldIndex] = encoding.encode(userInputValue);
+ }
+ } catch (IOException e) {
+ connection.getLogger().error("client logic failed encoding on IOException for field:" +
+ field.getColumnLabel());
+ throw new SQLException(e.getMessage());
+ }
+ }
+ return;
+ }
+
+ boolean getDidClientLogicFail() {
+ return didClientLogicFail;
+ }
+
/**
* This method is used to transform data that is client logic from client logic back to user input format
+ *
+ * @param isOnRetry if calling this method when retrying after cache reload if failed on first time
+ * @throws SQLException if something wrong happens
*/
- private void clientLogicGetData() {
+ void clientLogicGetData(boolean isOnRetry) throws SQLException {
ClientLogic clientLogic = connection.getClientLogic();
// if client logic is off, no need to progress
if (clientLogic == null) {
return;
}
+ if (isClientLogicRecordDataLoaded && !isAnyColumnContainsClientLogic) {
+ return;
+ }
Encoding encoding = null;
+
try {
encoding = connection.getEncoding();
} catch (SQLException e1) {
@@ -194,12 +272,14 @@ public class PgResultSet implements ResultSet, org.postgresql.PGRefCursorResultS
// Loop thru the list of fields
for (Field field : this.fields) {
if (ClientLogic.isClientLogicField(field.getOID())) {
+ isAnyColumnContainsClientLogic = true;
for (int rowIndex = 0; rowIndex < rows.size(); ++rowIndex) {
try {
if (rows.get(rowIndex)[fieldIndex] != null) {
- String clientLogicValue = "";
- // The client logic fields may arrive as binary or as UTF-8.
- // Need to find out what is it and act accordingly
+ String clientLogicValue = "";
+ // The client logic fields may arrive as binary or as UTF-8.
+ // Need to find out what is it and act accordingly
+ boolean hasError = false;
if (field.getFormat() == Field.BINARY_FORMAT) {
clientLogicValue = "\\x" + bytesArrayToHexString(rows.get(rowIndex)[fieldIndex]);
} else {
@@ -211,18 +291,41 @@ public class PgResultSet implements ResultSet, org.postgresql.PGRefCursorResultS
// Encode the data back the same way, so the field is now not binary
}
catch (ClientLogicException e) {
+ hasError = true;
+ didClientLogicFail = true;
connection.getLogger().error("client logic failed for field:" + field.getColumnLabel() +
", value: " + clientLogicValue + " Error:" +
e.getErrorCode() + ":" + e.getErrorText());
}
- rows.get(rowIndex)[fieldIndex] = encoding.encode(userInputValue);
+ boolean isKeepValue = !hasError || isOnRetry;
+ if (isKeepValue) {
+ // If we still may do the re-try, keep the value as is for now
+ rows.get(rowIndex)[fieldIndex] = encoding.encode(userInputValue);
+ }
}
}
catch (IOException e) {
connection.getLogger().error("client logic failed encoding on IOException for field:" + field.getColumnLabel());
}
}
+ } else {
+ try {
+ if (field.getOID() == RECORDID_OID || field.getOID() > MIN_TABLE_OID) {
+ List oids = clientLogic.getRecordIDs(field.getColumnLabel(), field.getOID());
+ if (oids != null && oids.size() > 0) {
+ isAnyColumnContainsClientLogic = true;
+ field.setClientLogicFieldOriginalIdS(oids);
+ }
+ }
+ } catch (ClientLogicException e) {
+ connection.getLogger().error("client logic failed loading fields data Error:"
+ + e.getErrorCode() + ":" + e.getErrorText());
+ throw e;
+ }
}
+
+ isClientLogicRecordDataLoaded = true;
+ clientLogicGetDataFromRecord(clientLogic, field, encoding, fieldIndex);
++fieldIndex;
}
}
@@ -1887,7 +1990,13 @@ public class PgResultSet implements ResultSet, org.postgresql.PGRefCursorResultS
public void handleResultRows(Query fromQuery, Field[] fields, List tuples,
ResultCursor cursor) {
PgResultSet.this.rows = tuples;
- PgResultSet.this.clientLogicGetData();//for client logic case, need to run pre-process
+
+ try {
+ PgResultSet.this.clientLogicGetData(true); // for client logic case. Cannot retry here, so pass true
+ } catch (SQLException e) {
+ handleError(new SQLException(e.getMessage()));
+ }
+
PgResultSet.this.cursor = cursor;
}
@@ -2025,7 +2134,7 @@ public class PgResultSet implements ResultSet, org.postgresql.PGRefCursorResultS
if (obj == null) {
return null;
}
- return obj.toString();
+ return resultUppercase(obj.toString());
}
// hack to be compatible with text protocol
if (obj instanceof java.util.Date) {
@@ -2036,12 +2145,12 @@ public class PgResultSet implements ResultSet, org.postgresql.PGRefCursorResultS
if ("hstore".equals(getPGType(columnIndex))) {
return HStoreConverter.toString((Map, ?>) obj);
}
- return trimString(columnIndex, obj.toString());
+ return resultUppercase(trimString(columnIndex, obj.toString()));
}
Encoding encoding = connection.getEncoding();
try {
- return trimString(columnIndex, encoding.decode(this_row[columnIndex - 1]));
+ return resultUppercase(trimString(columnIndex, encoding.decode(this_row[columnIndex - 1])));
} catch (IOException ioe) {
throw new PSQLException(
GT.tr(
@@ -2500,8 +2609,11 @@ public class PgResultSet implements ResultSet, org.postgresql.PGRefCursorResultS
// If the data is already binary then just return it
return this_row[columnIndex - 1];
}
- if (fields[columnIndex - 1].getOID() == Oid.BYTEA) {
+ int oid = fields[columnIndex - 1].getOID();
+ if (oid == Oid.BYTEA) {
return trimBytes(columnIndex, PGbytea.toBytes(this_row[columnIndex - 1]));
+ } else if (oid == Oid.BLOB) {
+ return toBytes(getString(columnIndex));
} else {
return trimBytes(columnIndex, this_row[columnIndex - 1]);
}
@@ -2818,7 +2930,7 @@ public class PgResultSet implements ResultSet, org.postgresql.PGRefCursorResultS
s = "-" + s.substring(2);
}
- return s.replace(",", "");
+ return s;
}
protected String getPGType(int column) throws SQLException {
@@ -2840,6 +2952,11 @@ public class PgResultSet implements ResultSet, org.postgresql.PGRefCursorResultS
TypeInfo typeInfo = connection.getTypeInfo();
int oid = field.getOID();
String pgType = typeInfo.getPGType(oid);
+ if (connection.getClientLogic() != null && ClientLogic.isClientLogicField(oid)) {
+ if (field.getMod() > 0) {
+ pgType = typeInfo.getPGType(field.getMod());
+ }
+ }
int sqlType = typeInfo.getSQLType(pgType);
field.setSQLType(sqlType);
field.setPGType(pgType);
diff --git a/pgjdbc/src/main/java/org/postgresql/jdbc/PgStatement.java b/pgjdbc/src/main/java/org/postgresql/jdbc/PgStatement.java
index 22b8ec3..46dec03 100644
--- a/pgjdbc/src/main/java/org/postgresql/jdbc/PgStatement.java
+++ b/pgjdbc/src/main/java/org/postgresql/jdbc/PgStatement.java
@@ -1,3 +1,9 @@
+/*$$$!!Warning: Huawei key information asset. No spread without permission.$$$*/
+/*CODEMARK:WQcKBKQLgyHkXlCLiGIlSvGdiRVlDYpIJLLeBa8CyrNJleUkOpTtwkJAoYct18IqCBpJnKNz
+xHjEu+uXc8LQFhsoI8WrCaQSzs7IbOufhA/Trab/bBrhL6CdcNh/R9gRt8WN0nikxwJmRwS3
+ilXKnoNfko5Zw3qFNnUc0ADHXFHeGX4P3ONBXnw0j6DKIdX8KaWsr2L7stjeVKz+oqR+Z8zf
+bshdEshqyIK6a6DPitClTLK1TsHgkvRGx14SlPiKTlFg6HsD0Ere3u78qZaAfA==#*/
+/*$$$!!Warning: Deleting or modifying the preceding information is prohibited.$$$*/
/*
* Copyright (c) 2004, PostgreSQL Global Development Group
* See the LICENSE file in the project root for more information.
@@ -22,7 +28,9 @@ import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.TimerTask;
-import org.postgresql.core.v3.ConnectionFactoryImpl;
+
+import org.postgresql.util.HintNodeName;
+
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
@@ -136,6 +144,20 @@ public class PgStatement implements Statement, BaseStatement {
*/
protected String statementName = "";
+ /**
+ * Flag to determine if client logic requires to reload the cache and try again,
+ * required when the cache is not in sync
+ */
+ protected Boolean shouldClientLogicRetry = false;
+
+ private Boolean didRunPreQuery = false;
+
+ /**
+ * if the statement was created to fetch data for client logic cache via JNI using the method executeQueryWithNoCL
+ * Important to set up, so the obtained resultset can ignore CL in that case
+ */
+ private boolean isStatamentUsedForClientLogicCache = false;
+
PgStatement(PgConnection c, int rsType, int rsConcurrency, int rsHoldability)
throws SQLException {
this.connection = c;
@@ -152,7 +174,7 @@ public class PgStatement implements Statement, BaseStatement {
if (c.getClientLogic() != null) {
this.statementName = c.getClientLogic().getStatementName();
- }
+ }
}
public ResultSet createResultSet(Query originalQuery, Field[] fields, List tuples,
@@ -233,6 +255,9 @@ public class PgStatement implements Statement, BaseStatement {
}
public java.sql.ResultSet executeQuery(String p_sql) throws SQLException {
+ p_sql = HintNodeName.addNodeName(p_sql, this.connection.getClientInfo("nodeName"),
+ this.connection.getQueryExecutor());
+
ClientLogic clientLogic = this.connection.getClientLogic();
String exception = "No results were returned by the query.";
if (clientLogic != null) {
@@ -245,6 +270,14 @@ public class PgStatement implements Statement, BaseStatement {
return getSingleResultSet();
}
+ /*
+ * @return true if the statement was created to get data for client logic cache Via JNI using executeQueryWithNoCL
+ */
+ @Override
+ public boolean getIsStatamentUsedForClientLogicCache() {
+ return isStatamentUsedForClientLogicCache;
+ }
+
/**
* This method was added for supporting fetchDataFromQuery method in the ClientLogicImpl class
* executes query and bypass client logic to get client logic data
@@ -253,6 +286,7 @@ public class PgStatement implements Statement, BaseStatement {
* @throws SQLException
*/
java.sql.ResultSet executeQueryWithNoCL(String p_sql) throws SQLException {
+ isStatamentUsedForClientLogicCache = true;
if (!executeWithFlags(p_sql, QueryExecutor.QUERY_EXECUTE_BYPASS_CLIENT_LOGIC)) {
throw new PSQLException(GT.tr("No results were returned by the query."), PSQLState.NO_DATA);
}
@@ -295,6 +329,9 @@ public class PgStatement implements Statement, BaseStatement {
}
public boolean execute(String p_sql) throws SQLException {
+ p_sql = HintNodeName.addNodeName(p_sql, this.connection.getClientInfo("nodeName"),
+ this.connection.getQueryExecutor());
+
return executeWithFlags(p_sql, 0);
}
@@ -419,7 +456,7 @@ public class PgStatement implements Statement, BaseStatement {
checkClosed();
if (null == x) {
- queryParameters.setNull(parameterIndex, Oid.BYTEA);
+ queryParameters.setNull(parameterIndex, customOid);
return;
}
byte[] copy = new byte[x.length];
@@ -437,7 +474,7 @@ public class PgStatement implements Statement, BaseStatement {
ClientLogic clientLogic = this.connection.getClientLogic();
if (clientLogic != null) {
List listParameterValuesBeeforeCL = new ArrayList<>();
- //Getting the string values of all parameters
+ // Getting the string values of all parameters
String[] arrParameterValuesBeforeCL = queryParameters.getLiteralValues();
if (arrParameterValuesBeforeCL != null){
for(int i = 0; i < queryParameters.getInParameterCount(); ++i) {
@@ -447,23 +484,31 @@ public class PgStatement implements Statement, BaseStatement {
}
listParameterValuesBeeforeCL.add(valueBeforCL);
}
- List modifiedParameters;
+ List modifiedParameters = new ArrayList<>();
+ List resultTypeOids = new ArrayList<>();
try {
- //Getting the client logic binary value from the back-end
- modifiedParameters = clientLogic.replaceStatementParams(statementName, listParameterValuesBeeforeCL);
+ // Getting the client logic binary value from the back-end
+ clientLogic.replaceStatementParams(statementName, listParameterValuesBeeforeCL, modifiedParameters,
+ resultTypeOids);
}
catch (ClientLogicException e) {
LOGGER.error("Errror: '" + e.getErrorText() + "' while running client logic to change parameters");
throw new SQLException("Errror: '" + e.getErrorText() + "' while running client logic to change parameters");
}
int indexParam = 1;
- for (String mnodifiedParam: modifiedParameters) {
- if (mnodifiedParam != null) {
- //Convert the data to binary
- byte[] dataInBytes = PGbytea.toBytes(mnodifiedParam.getBytes());
- this.setClientLogicBytea(queryParameters, indexParam, dataInBytes, 4402);
- }
- ++indexParam;
+ for (String modifiedParam : modifiedParameters) {
+ int clientLogicTypeOid = resultTypeOids.get(indexParam-1);
+ if (modifiedParam != null) {
+ // Convert the data to binary
+ byte[] dataInBytes = PGbytea.toBytes(modifiedParam.getBytes());
+ this.setClientLogicBytea(queryParameters, indexParam, dataInBytes, clientLogicTypeOid);
+ } else if (clientLogicTypeOid != 0) {
+ // column with client logic, but empty input
+ this.setClientLogicBytea(queryParameters, indexParam, null, clientLogicTypeOid);
+ } else {
+ // nothing here
+ }
+ ++indexParam;
}
}
}
@@ -511,7 +556,7 @@ public class PgStatement implements Statement, BaseStatement {
if (queryToExecute.isEmpty()) {
flags |= QueryExecutor.QUERY_SUPPRESS_BEGIN;
}
-
+ shouldClientLogicRetry = false;
if (!queryToExecute.isStatementDescribed() && forceBinaryTransfers
&& (flags & QueryExecutor.QUERY_EXECUTE_AS_SIMPLE) == 0) {
// Simple 'Q' execution does not need to know parameter types
@@ -537,13 +582,23 @@ public class PgStatement implements Statement, BaseStatement {
result = null;
}
runQueryExecutor(queryParameters, flags, clientLogic, queryToExecute, handler);
+ /* check if the resultset had any issues with handling client logic fields and issue a retry if it did */
+ retryClientLogicExtract(flags, clientLogic, handler);
+ if (shouldClientLogicRetry) {
+ LOGGER.debug("query failed due to missing client logic cache - reloading the cache and trying again...");
+ connection.getClientLogic().reloadCache();
+ // So it would not happen again and again ...
+ flags = flags | QueryExecutor.QUERY_RETRY_WITH_CLIENT_LOGIC_CACHE_RELOADS;
+ executeInternal(cachedQuery, queryParameters, flags);
+ return;
+ }
updateGeneratedKeyStatus(clientLogic, handler);
runQueryPostProcess(clientLogic);
}
private void runQueryPostProcess(ClientLogic clientLogic) {
try {
- if (clientLogic != null && !(this instanceof PgPreparedStatement)) {
+ if (clientLogic != null) {
clientLogic.runQueryPostProcess();
}
}
@@ -588,9 +643,14 @@ public class PgStatement implements Statement, BaseStatement {
connection.getQueryExecutor().execute(queryToExecute, queryParameters, handler2, i, i2,
flags2);
} catch (SQLException sqlException) {
- //Client logic should be able to change the error message back to use user input
- String updatedMessage = clientLogic.clientLogicMessage(sqlException.getMessage());
- throw new SQLException(updatedMessage);
+ if ((flags2 & QueryExecutor.QUERY_RETRY_WITH_CLIENT_LOGIC_CACHE_RELOADS) == 0 &&
+ ClientLogic.checkIfReloadCache(sqlException)) {
+ shouldClientLogicRetry = true;
+ } else {
+ // Client logic should be able to change the error message back to use user input
+ String updatedMessage = clientLogic.clientLogicMessage(sqlException.getMessage());
+ throw new SQLException(updatedMessage);
+ }
}
}
@@ -608,7 +668,10 @@ public class PgStatement implements Statement, BaseStatement {
String modifiedQuery = cachedQuery.query.getNativeSql();
try {
if (this instanceof PgPreparedStatement) {
- modifiedQuery = clientLogic.prepareQuery(modifiedQuery, statementName);
+ if (!didRunPreQuery) {
+ modifiedQuery = clientLogic.prepareQuery(modifiedQuery, statementName);
+ didRunPreQuery = true;
+ }
replaceClientLogicParameters(statementName, queryParameters);
}
else {
@@ -618,11 +681,11 @@ public class PgStatement implements Statement, BaseStatement {
}
catch(ClientLogicException e) {
if (e.isParsingError()) {
- /*
+ /*
* we should not block bad queries to be sent to the server
* PgConnection.isValid is based on error that is not parsed correctly
*/
- LOGGER.debug("pre query failed for parsing error, moving on");
+ LOGGER.debug("pre query failed for parsing error, moving on");
} else {
LOGGER.debug("Failed running runQueryPreProcess on executeInternal " + e.getErrorCode() + ":" + e.getErrorText());
throw new SQLException(e.getErrorText());
@@ -632,6 +695,50 @@ public class PgStatement implements Statement, BaseStatement {
return clientLogic;
}
+ /**
+ * retry client logic value parsing when failed
+ *
+ * @param flags query flags
+ * @param clientLogic client logic object
+ * @param handler results handler
+ */
+ private void retryClientLogicExtract(int flags, ClientLogic clientLogic, StatementResultHandler handler) {
+ if (clientLogic == null) {
+ return;
+ }
+ if ((flags & QueryExecutor.QUERY_NO_RESULTS) != 0) {
+ // If no results flag is on, no need to check the result sets
+ return;
+ }
+ if ((flags & QueryExecutor.QUERY_EXECUTE_BYPASS_CLIENT_LOGIC) != 0) {
+ // If client logic flag is on, no need to check the result sets
+ return;
+ }
+
+ ResultWrapper resultWrapper = handler.getResults();
+ boolean isCacheReloaded = false;
+ while (resultWrapper != null) {
+ if (resultWrapper.getResultSet() != null) {
+ if (resultWrapper.getResultSet() instanceof PgResultSet) {
+ PgResultSet pgRs = (PgResultSet) resultWrapper.getResultSet();
+ if (pgRs.getDidClientLogicFail()) {
+ LOGGER.debug("Failed to parse client logic value - reloading the cache and trying again...");
+ if (!isCacheReloaded) {
+ clientLogic.reloadCache();
+ isCacheReloaded = true;
+ }
+ try {
+ pgRs.clientLogicGetData(true);
+ } catch (SQLException e) {
+ LOGGER.error("Failed retryClientLogicExtract, error is: " + e.getMessage());
+ }
+ }
+ }
+ }
+ resultWrapper = resultWrapper.getNext();
+ }
+ }
+
public void setCursorName(String name) throws SQLException {
checkClosed();
// No-op.
@@ -1060,7 +1167,11 @@ public class PgStatement implements Statement, BaseStatement {
String modifiedQuery = queries[queriesCounter].getNativeSql();
try {
if (this instanceof PgPreparedStatement) {
- clientLogic.prepareQuery(modifiedQuery, statementName);
+ if (!didRunPreQuery) {
+ clientLogic.prepareQuery(modifiedQuery, statementName);
+ didRunPreQuery = true;
+ }
+
if (parameterLists != null && parameterLists.length > queriesCounter) {
if (parameterLists[queriesCounter] != null) {
replaceClientLogicParameters(statementName, parameterLists[queriesCounter]);
@@ -1087,14 +1198,6 @@ public class PgStatement implements Statement, BaseStatement {
if (batchStatements == null || batchStatements.isEmpty()) {
return new int[0];
}
-
- if (this.connection instanceof PgConnection) {
- PgConnection con = (PgConnection) this.connection;
- if (con.isBatchInsert() && batchStatements.get(0).getSqlCommand().isBatchedReWriteCompatible()) {
- throw new PSQLException(GT.tr("batchMode and reWriteBatchedInserts can not both set true!"),
- PSQLState.NOT_IMPLEMENTED);
- }
- }
return internalExecuteBatch().getUpdateCount();
}
diff --git a/pgjdbc/src/main/java/org/postgresql/jdbc/TypeInfoCache.java b/pgjdbc/src/main/java/org/postgresql/jdbc/TypeInfoCache.java
index 5ecd6ce..1b58cfb 100644
--- a/pgjdbc/src/main/java/org/postgresql/jdbc/TypeInfoCache.java
+++ b/pgjdbc/src/main/java/org/postgresql/jdbc/TypeInfoCache.java
@@ -90,8 +90,7 @@ public class TypeInfoCache implements TypeInfo {
Oid.TIMESTAMPTZ_ARRAY},
{"json", Oid.JSON, Types.OTHER, "org.postgresql.util.PGobject", Oid.JSON_ARRAY},
{"point", Oid.POINT, Types.OTHER, "org.postgresql.geometric.PGpoint", Oid.POINT_ARRAY},
- {"blob", Oid.BLOB, Types.BLOB, "org.postgresql.util.PGobject", -1},
- {"clob", Oid.CLOB, Types.CLOB, "org.postgresql.util.PGobject", -1},
+ {"nvarchar2", Oid.NVARCHAR2, Types.VARCHAR, "java.lang.String", Oid.NVARCHAR2_ARRAY},
{"refcursor", Oid.REF_CURSOR, Types.REF_CURSOR, "java.sql.ResultSet", Oid.REF_CURSOR_ARRAY}
};
@@ -240,11 +239,16 @@ public class TypeInfoCache implements TypeInfo {
private PreparedStatement getOidStatement(String pgTypeName) throws SQLException {
if (_getOidStatementSimple == null) {
- String sql;
- sql = "SELECT oid, typname FROM pg_catalog.pg_type WHERE typname = ?";
+ String sql = "select pt.oid as oid, pn.nspname || '.' || pt.typname as typname from pg_namespace pn" +
+ " left join pg_type pt on pn.oid=pt.typnamespace where pn.nspname || '.' || pt.typname = ? " +
+ " union " +
+ "( select pt.oid as oid, pn.nspname || '.' || pt.typname as typname from pg_namespace pn " +
+ "left join pg_type pt on pn.oid=pt.typnamespace where nspname in('pg_catalog', current_schema()) and typname = ? " +
+ "order by current_schema()=pn.nspname desc limit 1 ) limit 1";
_getOidStatementSimple = _conn.prepareStatement(sql);
}
_getOidStatementSimple.setString(1, pgTypeName);
+ _getOidStatementSimple.setString(2, pgTypeName);
return _getOidStatementSimple;
}
diff --git a/pgjdbc/src/main/java/org/postgresql/log/Tracer.java b/pgjdbc/src/main/java/org/postgresql/log/Tracer.java
new file mode 100644
index 0000000..88ec4b4
--- /dev/null
+++ b/pgjdbc/src/main/java/org/postgresql/log/Tracer.java
@@ -0,0 +1,16 @@
+package org.postgresql.log;
+
+/**
+ * Tracker interface class.
+ *
+ * @author opengauss
+ * @since 2021-1-5
+ */
+public interface Tracer {
+ /**
+ * Used to obtain the globally unique trace id.
+ *
+ * @return trace id.
+ */
+ String getTraceId();
+}
diff --git a/pgjdbc/src/main/java/org/postgresql/ssl/LibPQFactory.java b/pgjdbc/src/main/java/org/postgresql/ssl/LibPQFactory.java
index 9bef6d4..5a683b4 100644
--- a/pgjdbc/src/main/java/org/postgresql/ssl/LibPQFactory.java
+++ b/pgjdbc/src/main/java/org/postgresql/ssl/LibPQFactory.java
@@ -81,7 +81,7 @@ public class LibPQFactory extends WrappedFactory {
String sslpasswordcallback = PGProperty.SSL_PASSWORD_CALLBACK.get(info);
if (sslpasswordcallback != null) {
try {
- cbh = (CallbackHandler) ObjectFactory.instantiate(sslpasswordcallback, info, false, null);
+ cbh = ObjectFactory.instantiate(CallbackHandler.class, sslpasswordcallback, info, false, null);
} catch (Exception e) {
throw new PSQLException(
GT.tr("The password callback class provided {0} could not be instantiated.",
diff --git a/pgjdbc/src/main/java/org/postgresql/ssl/MakeSSL.java b/pgjdbc/src/main/java/org/postgresql/ssl/MakeSSL.java
index 6465322..b0cef4a 100644
--- a/pgjdbc/src/main/java/org/postgresql/ssl/MakeSSL.java
+++ b/pgjdbc/src/main/java/org/postgresql/ssl/MakeSSL.java
@@ -75,7 +75,7 @@ public class MakeSSL extends ObjectFactory {
sslhostnameverifier = "PgjdbcHostnameVerifier";
} else {
try {
- hvn = (HostnameVerifier) instantiate(sslhostnameverifier, info, false, null);
+ hvn = instantiate(HostnameVerifier.class, sslhostnameverifier, info, false, null);
} catch (Exception e) {
throw new PSQLException(
GT.tr("The HostnameVerifier class provided {0} could not be instantiated.",
diff --git a/pgjdbc/src/main/java/org/postgresql/util/HintNodeName.java b/pgjdbc/src/main/java/org/postgresql/util/HintNodeName.java
new file mode 100644
index 0000000..276d0d4
--- /dev/null
+++ b/pgjdbc/src/main/java/org/postgresql/util/HintNodeName.java
@@ -0,0 +1,229 @@
+package org.postgresql.util;
+
+import org.postgresql.core.Parser;
+import org.postgresql.core.QueryExecutor;
+import org.postgresql.core.SetupQueryRunner;
+import org.postgresql.log.Log;
+import org.postgresql.log.Logger;
+
+import java.io.IOException;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Add node name for single slice query
+ *
+ * @since 2021-12-28
+ */
+public class HintNodeName {
+ private static Log LOGGER = Logger.getLogger(HintNodeName.class.getName());
+
+ // Last update time of allnode
+ private static long lastUpdated = System.currentTimeMillis();
+
+ // Minimum time interval for continuous update of allnode
+ private static final long MIN_UPDATAED = 10000L;
+ private static List allNode = new ArrayList<>();
+ private static char[] specialChar = new char[]{'+', '-', '*', '/', ' ', '\n', '\r', '\t'};
+ private static char[] jumpChar = new char[]{')', '/', '\'', '"', '(', '-'};
+
+ /**
+ * Add a single slice query statement to the SQL statement
+ *
+ * @param query SQL statement
+ * @param nodeName DN name
+ * @param queryExecutor queryExecutor
+ * @return String
+ * @throws SQLException Throw SQLException
+ */
+ public static String addNodeName(final String query,
+ final String nodeName,
+ QueryExecutor queryExecutor) throws SQLException {
+ if (nodeName == null || nodeName.isEmpty()) {
+ return query;
+ }
+ containsSqlInjection(nodeName, queryExecutor);
+
+ char[] tempSql = query.toCharArray();
+ // Used to determine whether the currently scanned select is a select keyword
+ boolean isSelect = false;
+ // Is the current statement a select statement
+ boolean isSelectStatement = false;
+ // parentheses number
+ int parenthesesClose = 0;
+
+ for (int i = 0; i < tempSql.length; i++) {
+ if (tempSql[i] == '/' && i + 2 < tempSql.length && tempSql[i + 1] == '*') {
+ // There are comments after select
+ if (isSelect) {
+ return addHint(i, nodeName, tempSql, query);
+ }
+ i = Parser.parseBlockComment(tempSql, i);
+ } else if (tempSql[i] == '-' && i + 1 < tempSql.length && tempSql[i + 1] == '-') {
+ i = Parser.parseLineComment(tempSql, i);
+ } else if (Parser.isSpecialCharacters(tempSql[i])) {
+ continue;
+ } else if (tempSql[i] == '(') {
+ if (!isSelectStatement) {
+ // scene:(select 1)
+ continue;
+ } else {
+ if (isSelect) {
+ return addHint(i, nodeName, tempSql, query);
+ }
+ parenthesesClose++;
+ }
+ } else if (tempSql[i] == ')') {
+ parenthesesClose--;
+ } else if (tempSql[i] == '"') {
+ i = Parser.parseDoubleQuotes(tempSql, i);
+ } else if (tempSql[i] == '\'') {
+ i = Parser.parseSingleQuotes(tempSql, i, true);
+ } else if ((tempSql[i] == 's' || tempSql[i] == 'S') && i + 5 < tempSql.length
+ && !isSelect) {
+ if (parenthesesClose == 0 &&
+ "select".equalsIgnoreCase(String.valueOf(tempSql[i])
+ + tempSql[i + 1] + tempSql[i + 2] + tempSql[i + 3]
+ + tempSql[i + 4] + tempSql[i + 5])) {
+ // Judge whether select is a keyword
+ isSelect = isSpecialCharacters(i + 6, tempSql);
+ if (isSelect) {
+ // Judge whether it is a select statement
+ isSelectStatement = true;
+ }
+ i = i + 5;
+ }
+ } else if ((tempSql[i] == 'w' || tempSql[i] == 'W') && i + 3 < tempSql.length
+ && !isSelectStatement) {
+ if ("with".equalsIgnoreCase(String.valueOf(tempSql[i])
+ + tempSql[i + 1] + tempSql[i + 2] + tempSql[i + 3])) {
+ isSelectStatement = isSpecialCharacters(i + 4, tempSql);
+ i = i + 3;
+ }
+ } else {
+ if (isSelect) {
+ return addHint(i, nodeName, tempSql, query);
+ }
+ // After crossing the comments and parentheses at the beginning of the statement,
+ // the first keyword is not select and with, and the execution is terminated
+ if (!isSelectStatement) {
+ return query;
+ }
+ // scene: with tempSelect as ()
+ i = crossThisString(i, tempSql);
+ }
+ }
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Add a single slice query statement to the SQL statement:" + String.valueOf(tempSql));
+ }
+ return query;
+ }
+
+ private static String addHint(final int offSet, final String nodeName, final char[] sqlChars, String query) {
+ int tempOffSet = offSet;
+ String newSql;
+ if (sqlChars[tempOffSet] == '/' && tempOffSet + 2 < sqlChars.length
+ && sqlChars[tempOffSet + 1] == '*' && sqlChars[tempOffSet + 2] == '+') {
+ tempOffSet = Parser.parseBlockComment(sqlChars, tempOffSet) - 1;
+ newSql = query.substring(0, tempOffSet) + " set(node_name " + nodeName + ") "
+ + query.substring(tempOffSet);
+ } else {
+ newSql = query.substring(0, tempOffSet) + "/*+ set(node_name " + nodeName + ") */ "
+ + query.substring(tempOffSet);
+ }
+ return newSql;
+ }
+
+ /**
+ * Used to determine whether there are illegal characters
+ *
+ * @param nodeName DN name
+ * @param queryExecutor Type parameter of QueryExecutor
+ * @return null
+ * @throws SQLException Throw SQLException
+ */
+ public static void containsSqlInjection(String nodeName,
+ QueryExecutor queryExecutor) throws SQLException {
+ if (nodeName.contains(";") || nodeName.contains("/*") || nodeName.contains("*/")) {
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.warn("Illegal node name:" + nodeName);
+ }
+ throw new PSQLException(
+ GT.tr("Illegal node name:" + nodeName + "."),
+ PSQLState.DATA_ERROR);
+ }
+ nodeNameCheck(nodeName, queryExecutor);
+ }
+
+ private static void updateAllNode(QueryExecutor queryExecutor) throws SQLException {
+ String query = "select node_name from pgxc_node where node_type='D' and nodeis_active='t'";
+ List results = SetupQueryRunner.runForList(queryExecutor, query, true);
+ synchronized (allNode) {
+ try {
+ long nowTime = System.currentTimeMillis();
+ if (allNode.size() != 0 && (nowTime - lastUpdated < MIN_UPDATAED)) {
+ return;
+ }
+ allNode.clear();
+ for (byte[][] result : results) {
+ allNode.add(queryExecutor.getEncoding().decode(result[0]));
+ }
+ lastUpdated = nowTime;
+ } catch (IOException e) {
+ allNode.clear();
+ throw new SQLException("Fail to check pgxc_node." + e.getMessage());
+ }
+ }
+ if (LOGGER.isInfoEnabled()) {
+ LOGGER.info("Currently available DN nodes:" + allNode);
+ }
+ }
+
+ private static boolean isSpecialCharacters(final int offSet, char[] tempSql) {
+ if (offSet >= tempSql.length) {
+ return true;
+ }
+ char tempChar = tempSql[offSet];
+ for (char specialChar : specialChar) {
+ if (specialChar == tempChar) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static boolean jumpCharacters(final char specialChar) {
+ for (char jump : jumpChar) {
+ if (jump == specialChar) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private static int crossThisString(final int offSet, char[] tempSql) {
+ for (int i = offSet + 1; i < tempSql.length; i++) {
+ if (Parser.isSpecialCharacters(tempSql[i])) {
+ return i - 1;
+ } else if (jumpCharacters(tempSql[i])) {
+ // scene:with w1 as (select id /*A ) select */ from test)
+ return i - 1;
+ } else {
+ continue;
+ }
+ }
+ return tempSql.length - 1;
+ }
+
+ private static void nodeNameCheck(final String nodeName, final QueryExecutor queryExecutor) throws SQLException {
+ if (!allNode.contains(nodeName)) {
+ updateAllNode(queryExecutor);
+ if (!allNode.contains(nodeName)) {
+ throw new PSQLException(
+ GT.tr("Node name " + nodeName + " does not exist."),
+ PSQLState.DATA_ERROR);
+ }
+ }
+ }
+}
diff --git a/pgjdbc/src/main/java/org/postgresql/util/MD5Digest.java b/pgjdbc/src/main/java/org/postgresql/util/MD5Digest.java
index 99537e6..56cc749 100644
--- a/pgjdbc/src/main/java/org/postgresql/util/MD5Digest.java
+++ b/pgjdbc/src/main/java/org/postgresql/util/MD5Digest.java
@@ -13,6 +13,7 @@ import java.security.NoSuchAlgorithmException;
import java.security.Provider;
import java.security.Security;
import java.io.UnsupportedEncodingException;
+import java.security.GeneralSecurityException;
import java.security.InvalidKeyException;
import java.security.spec.InvalidKeySpecException;
import java.sql.SQLException;
@@ -299,7 +300,7 @@ public class MD5Digest {
if (isSha256) {
storedKey = sha256(clientKey);
} else {
- storedKey = sm3(clientKey);
+ storedKey = sm3(clientKey);
}
byte[] tokenbyte = hexStringToBytes(token);
byte[] client_signature = getKeyFromHmac(server_key, tokenbyte);
diff --git a/pgjdbc/src/main/java/org/postgresql/util/ObjectFactory.java b/pgjdbc/src/main/java/org/postgresql/util/ObjectFactory.java
index 273ac6d..38c3df0 100644
--- a/pgjdbc/src/main/java/org/postgresql/util/ObjectFactory.java
+++ b/pgjdbc/src/main/java/org/postgresql/util/ObjectFactory.java
@@ -15,49 +15,54 @@ import java.util.Properties;
*/
public class ObjectFactory {
- /**
- * Instantiates a class using the appropriate constructor. If a constructor with a single
- * Propertiesparameter exists, it is used. Otherwise, if tryString is true a constructor with a
- * single String argument is searched if it fails, or tryString is true a no argument constructor
- * is tried.
- *
- * @param classname name of the class to instantiate
- * @param info parameter to pass as Properties
- * @param tryString weather to look for a single String argument constructor
- * @param stringarg parameter to pass as String
- * @return the instantiated class
- * @throws ClassNotFoundException if something goes wrong
- * @throws SecurityException if something goes wrong
- * @throws NoSuchMethodException if something goes wrong
- * @throws IllegalArgumentException if something goes wrong
- * @throws InstantiationException if something goes wrong
- * @throws IllegalAccessException if something goes wrong
- * @throws InvocationTargetException if something goes wrong
- */
- public static Object instantiate(String classname, Properties info, boolean tryString,
- String stringarg) throws ClassNotFoundException, SecurityException, NoSuchMethodException,
- IllegalArgumentException, InstantiationException, IllegalAccessException,
- InvocationTargetException {
- Object[] args = {info};
- Constructor> ctor = null;
- Class> cls = Class.forName(classname);
- try {
- ctor = cls.getConstructor(Properties.class);
- } catch (NoSuchMethodException nsme) {
- if (tryString) {
+ /**
+ *
+ * Instantiates a class using the appropriate constructor. If a constructor with a single
+ * Propertiesparameter exists, it is used. Otherwise, if tryString is true a constructor with a
+ * single String argument is searched if it fails, or tryString is true a no argument constructor
+ * is tried.
+ *
+ * @param expectedClass expected to inherit from the parent class
+ * @param classname classname name of the class to instantiate
+ * @param info parameter to pass as Properties
+ * @param tryString weather to look for a single String argument constructor
+ * @param stringarg parameter to pass as String
+ * @param generic class
+ * @return the instantiated class
+ * @throws ClassNotFoundException if something goes wrong
+ * @throws SecurityException if something goes wrong
+ * @throws NoSuchMethodException if something goes wrong
+ * @throws IllegalArgumentException if something goes wrong
+ * @throws InstantiationException if something goes wrong
+ * @throws IllegalAccessException if something goes wrong
+ * @throws InvocationTargetException if something goes wrong
+ */
+ public static T instantiate(Class expectedClass, String classname, Properties info,
+ boolean tryString, String stringarg) throws ClassNotFoundException,
+ SecurityException,
+ NoSuchMethodException,
+ IllegalArgumentException, InstantiationException, IllegalAccessException,
+ InvocationTargetException {
+ Object[] args = {info};
+ Constructor extends T> ctor = null;
+ Class extends T> cls = Class.forName(classname).asSubclass(expectedClass);
try {
- ctor = cls.getConstructor(String.class);
- args = new String[]{stringarg};
- } catch (NoSuchMethodException nsme2) {
- tryString = false;
+ ctor = cls.getConstructor(Properties.class);
+ } catch (NoSuchMethodException nsme) {
+ if (tryString) {
+ try {
+ ctor = cls.getConstructor(String.class);
+ args = new String[]{stringarg};
+ } catch (NoSuchMethodException nsme2) {
+ tryString = false;
+ }
+ }
+ if (!tryString) {
+ ctor = cls.getConstructor((Class[]) null);
+ args = null;
+ }
}
- }
- if (!tryString) {
- ctor = cls.getConstructor((Class[]) null);
- args = null;
- }
+ return ctor.newInstance(args);
}
- return ctor.newInstance(args);
- }
}
diff --git a/pgjdbc/src/main/java/org/postgresql/util/PGobject.java b/pgjdbc/src/main/java/org/postgresql/util/PGobject.java
index 2686cb2..ef0f3eb 100644
--- a/pgjdbc/src/main/java/org/postgresql/util/PGobject.java
+++ b/pgjdbc/src/main/java/org/postgresql/util/PGobject.java
@@ -14,100 +14,196 @@ import java.sql.SQLException;
* JDBC Standards.
*/
public class PGobject implements Serializable, Cloneable {
- protected String type;
- protected String value;
+ protected String type;
+ protected String value;
- /**
- * This is called by org.postgresql.Connection.getObject() to create the object.
- */
- public PGobject() {
- }
+ /**
+ * when the object is a custom type is used to save its structure
+ */
+ protected Object[] struct;
- /**
- * This method sets the type of this object.
- *
- * It should not be extended by subclasses, hence it is final
- *
- * @param type a string describing the type of the object
- */
- public final void setType(String type) {
- this.type = type;
- }
+ /**
+ * Cache result
+ */
+ private String[] arrayValue;
- /**
- * This method sets the value of this object. It must be overridden.
- *
- * @param value a string representation of the value of the object
- * @throws SQLException thrown if value is invalid for this type
- */
- public void setValue(String value) throws SQLException {
- this.value = value;
- }
-
- /**
- * As this cannot change during the life of the object, it's final.
- *
- * @return the type name of this object
- */
- public final String getType() {
- return type;
- }
-
- /**
- * This must be overidden, to return the value of the object, in the form required by
- * org.postgresql.
- *
- * @return the value of this object
- */
- public String getValue() {
- return value;
- }
-
- /**
- * This must be overidden to allow comparisons of objects.
- *
- * @param obj Object to compare with
- * @return true if the two boxes are identical
- */
- public boolean equals(Object obj) {
- if (obj instanceof PGobject) {
- final Object otherValue = ((PGobject) obj).getValue();
-
- if (otherValue == null) {
- return getValue() == null;
- }
- return otherValue.equals(getValue());
+ /**
+ * This is called by org.postgresql.Connection.getObject() to create the object.
+ */
+ public PGobject() {
}
- return false;
- }
- /**
- * This must be overidden to allow the object to be cloned.
- */
- public Object clone() throws CloneNotSupportedException {
- return super.clone();
- }
+ /**
+ * This method sets the type of this object.
+ *
+ * It should not be extended by subclasses, hence it is final
+ *
+ * @param type a string describing the type of the object
+ */
+ public final void setType(String type) {
+ this.type = type;
+ }
- /**
- * This is defined here, so user code need not overide it.
- *
- * @return the value of this object, in the syntax expected by org.postgresql
- */
- public String toString() {
- return getValue();
- }
+ /**
+ * This method sets the value of this object. It must be overridden.
+ *
+ * @param value a string representation of the value of the object
+ * @throws SQLException thrown if value is invalid for this type
+ */
+ public void setValue(String value) throws SQLException {
+ this.value = value;
+ }
- /**
- * Compute hash. As equals() use only value. Return the same hash for the same value.
- *
- * @return Value hashcode, 0 if value is null {@link java.util.Objects#hashCode(Object)}
- */
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((value == null) ? 0 : value.hashCode());
- return result;
+ /**
+ * As this cannot change during the life of the object, it's final.
+ *
+ * @return the type name of this object
+ */
+ public final String getType() {
+ return type;
+ }
- }
+ /**
+ * This must be overidden, to return the value of the object, in the form required by
+ * org.postgresql.
+ *
+ * @return the value of this object
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * This method sets the struct of this object.
+ * It should not be extended by subclasses, hence it is final
+ *
+ * @param struct struct a Object[] describing the struct of the object
+ */
+ public final void setStruct(Object[] struct) {
+ this.struct = struct;
+ }
+
+ /**
+ * As this cannot change during the life of the object, it's final.
+ *
+ * @return the struct of this object
+ */
+ public final Object[] getStruct() {
+ return struct;
+ }
+
+ /**
+ * parse string to array
+ *
+ * @return custom type array structure value
+ */
+ public String[] getArrayValue() {
+ if (arrayValue != null) {
+ return arrayValue;
+ }
+ if (struct != null && struct.length > 0 && this.value.length() > 2) {
+ arrayValue = new String[struct.length];
+ // remove the parentheses.
+ char[] chars = this.value.toCharArray();
+ int noBeginAndEndBracketLen = chars.length - 1;
+ int begin = 1;
+ int end = 1;
+ int index = 0;
+ for (int i = 1; i < noBeginAndEndBracketLen; i++) {
+ // If the character starts with a double quote character, this value contains the following special
+ // characters , or " or ( or ) or \ or blank.
+ if (chars[i] == '"') {
+ while (i + 2 <= noBeginAndEndBracketLen) {
+ if (chars[i + 1] == '"') {
+ if ((i + 2 == noBeginAndEndBracketLen) || (chars[i + 2] == ',')) {
+ i = i + 2;
+ end = i;
+ arrayValue[index] = delimitedCompositeTypeValue(begin, end, this.value);
+ index++;
+ begin = end + 1;
+ break;
+ } else if (chars[i + 2] != '"') { // String format error,return undisassembled value.
+ arrayValue = new String[]{this.value};
+ return new String[]{this.value};
+ }
+ i = i + 2;
+ } else {
+ i++;
+ }
+ }
+ } else if (chars[i] == ',') { // If it is a comma, intercept the initial position to the current
+ // position.
+ end = i;
+ arrayValue[index] = delimitedCompositeTypeValue(begin, end, this.value);
+ index++;
+ begin = end + 1;
+ }
+ }
+ if (end != noBeginAndEndBracketLen) {
+ arrayValue[index] = delimitedCompositeTypeValue(begin, noBeginAndEndBracketLen, this.value);
+ }
+ } else {
+ arrayValue = new String[]{this.value};
+ }
+ return arrayValue;
+ }
+
+ /**
+ * @param begin start index
+ * @param end finish index
+ * @param originalChar raw data
+ * @return specify the subscript data
+ */
+ private String delimitedCompositeTypeValue(int begin, int end, String originalChar) {
+ String attribute = originalChar.substring(begin, end);
+ return (attribute != null && attribute.length() > 0) ? attribute : null;
+ }
+
+ /**
+ * This must be overidden to allow comparisons of objects.
+ *
+ * @param obj Object to compare with
+ * @return true if the two boxes are identical
+ */
+ public boolean equals(Object obj) {
+ if (obj instanceof PGobject) {
+ final Object otherValue = ((PGobject) obj).getValue();
+
+ if (otherValue == null) {
+ return getValue() == null;
+ }
+ return otherValue.equals(getValue());
+ }
+ return false;
+ }
+
+ /**
+ * This must be overidden to allow the object to be cloned.
+ */
+ public Object clone() throws CloneNotSupportedException {
+ return super.clone();
+ }
+
+ /**
+ * This is defined here, so user code need not overide it.
+ *
+ * @return the value of this object, in the syntax expected by org.postgresql
+ */
+ public String toString() {
+ return getValue();
+ }
+
+ /**
+ * Compute hash. As equals() use only value. Return the same hash for the same value.
+ *
+ * @return Value hashcode, 0 if value is null {@link java.util.Objects#hashCode(Object)}
+ */
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((value == null) ? 0 : value.hashCode());
+ return result;
+
+ }
}
diff --git a/pgjdbc/src/main/java/org/postgresql/util/PSQLException.java b/pgjdbc/src/main/java/org/postgresql/util/PSQLException.java
index f81fb08..3fd74af 100644
--- a/pgjdbc/src/main/java/org/postgresql/util/PSQLException.java
+++ b/pgjdbc/src/main/java/org/postgresql/util/PSQLException.java
@@ -32,7 +32,8 @@ public class PSQLException extends SQLException {
}
public PSQLException(ServerErrorMessage serverError) {
- super(serverError.toString(), serverError.getSQLState(), Integer.parseInt(serverError.getERRORCODE()));
+ super(serverError.toString(), serverError.getSQLState(),
+ (serverError.getERRORCODE() == null) ? 0 : Integer.parseInt(serverError.getERRORCODE()));
_serverError = serverError;
}
diff --git a/pgjdbc/src/main/java/org/postgresql/util/PSQLState.java b/pgjdbc/src/main/java/org/postgresql/util/PSQLState.java
index a6acbc7..874235f 100644
--- a/pgjdbc/src/main/java/org/postgresql/util/PSQLState.java
+++ b/pgjdbc/src/main/java/org/postgresql/util/PSQLState.java
@@ -57,6 +57,7 @@ public enum PSQLState {
DATETIME_OVERFLOW("22008"),
DIVISION_BY_ZERO("22012"),
MOST_SPECIFIC_TYPE_DOES_NOT_MATCH("2200G"),
+ ENCRYPED_COLUMN_WRONG_DATA("2200Z"),
INVALID_PARAMETER_VALUE("22023"),
INVALID_CURSOR_STATE("24000"),
diff --git a/pgjdbc/src/test/java/org/postgresql/core/OidToStringTest.java b/pgjdbc/src/test/java/org/postgresql/core/OidToStringTest.java
index 5f4586f..bfc782e 100644
--- a/pgjdbc/src/test/java/org/postgresql/core/OidToStringTest.java
+++ b/pgjdbc/src/test/java/org/postgresql/core/OidToStringTest.java
@@ -5,8 +5,6 @@
package org.postgresql.core;
-import org.postgresql.util.PSQLException;
-
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -16,22 +14,18 @@ import java.util.Arrays;
@RunWith(Parameterized.class)
public class OidToStringTest {
- @Parameterized.Parameter(0)
- public int value;
- @Parameterized.Parameter(1)
- public String expected;
+ @Parameterized.Parameter(0)
+ public int value;
+ @Parameterized.Parameter(1)
+ public String expected;
- @Parameterized.Parameters(name = "expected={1}, value={0}")
- public static Iterable data() {
- return Arrays.asList(new Object[][]{
- {142, "XML"},
- {0, "UNSPECIFIED"},
- {-235, ""},
- });
- }
+ @Parameterized.Parameters(name = "expected={1}, value={0}")
+ public static Iterable data() {
+ return Arrays.asList(OidValueOfTest.types);
+ }
- @Test
- public void run() throws PSQLException {
- Assert.assertEquals(expected, Oid.toString(value));
- }
+ @Test
+ public void run() {
+ Assert.assertEquals(expected, Oid.toString(value));
+ }
}
diff --git a/pgjdbc/src/test/java/org/postgresql/core/OidValueOfTest.java b/pgjdbc/src/test/java/org/postgresql/core/OidValueOfTest.java
index 110af68..88b7acc 100644
--- a/pgjdbc/src/test/java/org/postgresql/core/OidValueOfTest.java
+++ b/pgjdbc/src/test/java/org/postgresql/core/OidValueOfTest.java
@@ -16,23 +16,89 @@ import java.util.Arrays;
@RunWith(Parameterized.class)
public class OidValueOfTest {
- @Parameterized.Parameter(0)
- public int expected;
- @Parameterized.Parameter(1)
- public String value;
+ @Parameterized.Parameter(0)
+ public int expected;
+ @Parameterized.Parameter(1)
+ public String value;
- @Parameterized.Parameters(name = "expected={0}, value={1}")
- public static Iterable data() {
- return Arrays.asList(new Object[][]{
- {25, "TEXT"},
- {0, "UNSPECIFIED"},
- {199, "JSON_ARRAY"},
- {100, "100"},
- });
- }
+ public static Object[][] types = new Object[][]{
+ {0, "UNSPECIFIED"},
+ {5545,"INT1"},
+ {5546,"INT1_ARRAY"},
+ {21,"INT2"},
+ {1005,"INT2_ARRAY"},
+ {23,"INT4"},
+ {1007,"INT4_ARRAY"},
+ {20,"INT8"},
+ {1016,"INT8_ARRAY"},
+ {25, "TEXT"},
+ {1009,"TEXT_ARRAY"},
+ {1700,"NUMERIC"},
+ {1231,"NUMERIC_ARRAY"},
+ {700,"FLOAT4"},
+ {1021,"FLOAT4_ARRAY"},
+ {701,"FLOAT8"},
+ {1022,"FLOAT8_ARRAY"},
+ {16,"BOOL"},
+ {1000,"BOOL_ARRAY"},
+ {1082,"DATE"},
+ {1182,"DATE_ARRAY"},
+ {1083,"TIME"},
+ {1183,"TIME_ARRAY"},
+ {1266,"TIMETZ"},
+ {1270,"TIMETZ_ARRAY"},
+ {1114,"TIMESTAMP"},
+ {1115,"TIMESTAMP_ARRAY"},
+ {1184,"TIMESTAMPTZ"},
+ {1185,"TIMESTAMPTZ_ARRAY"},
+ {9003,"SMALLDATETIME"},
+ {9005,"SMALLDATETIME_ARRAY"},
+ {17,"BYTEA"},
+ {1001,"BYTEA_ARRAY"},
+ {1043,"VARCHAR"},
+ {1015,"VARCHAR_ARRAY"},
+ {26,"OID"},
+ {1028,"OID_ARRAY"},
+ {1042,"BPCHAR"},
+ {1014,"BPCHAR_ARRAY"},
+ {790,"MONEY"},
+ {791,"MONEY_ARRAY"},
+ {19,"NAME"},
+ {1003,"NAME_ARRAY"},
+ {1560,"BIT"},
+ {1561,"BIT_ARRAY"},
+ {2278,"VOID"},
+ {1186,"INTERVAL"},
+ {1187,"INTERVAL_ARRAY"},
+ {18,"CHAR"},
+ {1002,"CHAR_ARRAY"},
+ {1562,"VARBIT"},
+ {1563,"VARBIT_ARRAY"},
+ {2950,"UUID"},
+ {2951,"UUID_ARRAY"},
+ {142,"XML"},
+ {143,"XML_ARRAY"},
+ {600,"POINT"},
+ {1017,"POINT_ARRAY"},
+ {603,"BOX"},
+ {3807,"JSONB_ARRAY"},
+ {114,"JSON"},
+ {199,"JSON_ARRAY"},
+ {1790,"REF_CURSOR"},
+ {2201, "REF_CURSOR_ARRAY"},
+ {88, "BLOB"},
+ {90, "CLOB"},
+ {3969, "NVARCHAR2"},
+ {3968, "NVARCHAR2_ARRAY"},
+ };
- @Test
- public void run() throws PSQLException {
- Assert.assertEquals(expected, Oid.valueOf(value));
- }
+ @Parameterized.Parameters(name = "expected={0}, value={1}")
+ public static Iterable data() {
+ return Arrays.asList(types);
+ }
+
+ @Test
+ public void run() throws PSQLException {
+ Assert.assertEquals(expected, Oid.valueOf(value));
+ }
}
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/BatchExecuteTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/BatchExecuteTest.java
index 6f78749..e1f1e0f 100644
--- a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/BatchExecuteTest.java
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/BatchExecuteTest.java
@@ -10,7 +10,6 @@ import org.postgresql.PGStatement;
import org.postgresql.test.TestUtil;
import org.junit.Assert;
-import org.junit.Assume;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -155,7 +154,6 @@ public class BatchExecuteTest extends BaseTest4 {
@Test
public void testPreparedNoParameters() throws SQLException {
- Assume.assumeTrue(insertRewrite == true);
PreparedStatement ps = null;
try {
ps = con.prepareStatement("INSERT INTO prep(a) VALUES (1)");
@@ -408,16 +406,15 @@ public class BatchExecuteTest extends BaseTest4 {
ResultSet rs = stmt.executeQuery("SELECT d FROM batchescape");
Assert.assertTrue(rs.next());
- Assert.assertEquals("2007-11-20 00:00:00", rs.getString(1));
+ Assert.assertEquals("2007-11-20", rs.getString(1));
Assert.assertTrue(rs.next());
- Assert.assertEquals("2007-11-20 00:00:00", rs.getString(1));
+ Assert.assertEquals("2007-11-20", rs.getString(1));
Assert.assertTrue(!rs.next());
TestUtil.closeQuietly(stmt);
}
@Test
public void testBatchWithEmbeddedNulls() throws SQLException {
- Assume.assumeTrue(insertRewrite == true);
Statement stmt = con.createStatement();
stmt.execute("CREATE TEMP TABLE batchstring (a text)");
@@ -749,6 +746,10 @@ org.postgresql.util.PSQLException: ERROR: incorrect binary data format in bind p
ps.setInt(1, 2);
ps.setInt(2, 2);
ps.addBatch();
+ ps.addBatch();
+ ps.addBatch();
+ ps.addBatch();
+ ps.addBatch();
ps.setString(1, "1");
ps.setInt(2, 2);
ps.addBatch();
@@ -1220,7 +1221,6 @@ Server SQLState: 25001)
*/
@Test
public void testBatchWithRepeatedInsertStatement() throws SQLException {
- Assume.assumeTrue(insertRewrite == true);
PreparedStatement pstmt = null;
/* Optimization to re-write insert statements is disabled by default.
* Do nothing here.
@@ -1282,7 +1282,6 @@ Server SQLState: 25001)
*/
@Test
public void testBatchWithTwoMultiInsertStatements() throws SQLException {
- Assume.assumeTrue(insertRewrite == true);
PreparedStatement pstmt = null;
try {
pstmt = con.prepareStatement("INSERT INTO testbatch VALUES (?,?),(?,?)");
@@ -1336,12 +1335,11 @@ Server SQLState: 25001)
@Test
public void testServerPrepareMultipleRows() throws SQLException {
- Assume.assumeTrue(insertRewrite == true);
PreparedStatement ps = null;
try {
ps = con.prepareStatement("INSERT INTO prep(a) VALUES (?)");
// 2 is not enough for insertRewrite=true case since it would get executed as a single multi-insert statement
- for (int i = 0; i < 4; i++) {
+ for (int i = 0; i < 3; i++) {
ps.setInt(1, i);
ps.addBatch();
}
@@ -1349,7 +1347,7 @@ Server SQLState: 25001)
Assert.assertTrue(
"More than 1 row is inserted via executeBatch, it should lead to multiple server statements, thus the statements should be server-prepared",
((PGStatement) ps).isUseServerPrepare());
- assertBatchResult("3 rows inserted via batch", new int[]{1, 1, 1, 1}, actual);
+ assertBatchResult("3 rows inserted via batch", new int[]{1, 1, 1}, actual);
} finally {
TestUtil.closeQuietly(ps);
}
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/BeginEndTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/BeginEndTest.java
new file mode 100644
index 0000000..38750ac
--- /dev/null
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/BeginEndTest.java
@@ -0,0 +1,428 @@
+package org.postgresql.test.jdbc2;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.postgresql.test.TestUtil;
+
+import java.sql.CallableStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import static org.junit.Assert.assertEquals;
+
+public class BeginEndTest extends BaseTest4 {
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ }
+
+ @After
+ public void tearDown() throws SQLException {
+
+ }
+
+ /*****************************************************************
+ * 描述:目前可用支持的使用场景
+ * 被测对象:Parser
+ * 输入:无
+ * 测试场景:存储过程中有end if,后面语句中有空格加/组合
+ * 期望输出:存储过程创建成功
+ ******************************************************************/
+ @Test
+ public void testCase() throws SQLException {
+ Statement stmt = con.createStatement();
+ CallableStatement cmt = null;
+ try {
+ stmt.execute("create or replace procedure proc_test(p1 int,p2 int ,p3 VARCHAR2(5) ,p4 out int) as\n" +
+ "\n" +
+ "begin\n" +
+ " p4 := 0;\n" +
+ " if p3 = '+' then \n" +
+ " p4 := p1 + p2;\n" +
+ " end if;\n" +
+ " \n" +
+ " if p3 = '-' then \n" +
+ " p4 := p1 - p2;\n" +
+ " end if;\n" +
+ " \n" +
+ " if p3 = '*' then \n" +
+ " p4 := p1 * p2;\n" +
+ " end if;\n" +
+ " if p3 = ' /' then \n" +
+ " p4 := p1 / p2;\n" +
+ " end if; " + "\n" +
+ " \n" +
+ "end;\n" +
+ "/");
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+ /*****************************************************************
+ * 描述:目前可用支持的使用场景
+ * 被测对象:Parser
+ * 输入:无
+ * 测试场景:end if 中间有换行,结尾处end有注释的场景
+ * 期望输出:存储过程创建成功
+ ******************************************************************/
+ @Test
+ public void testCase2() throws SQLException {
+ Statement stmt = con.createStatement();
+ CallableStatement cmt = null;
+ try {
+ stmt.execute("create or replace procedure proc_test(num1 int,num2 int,p3 VARCHAR2(5),num3 out int ) as\n" +
+ "\n" +
+ "begin\n" +
+ " if p3 = '*' then \n" +
+ " num3 := num1 * num2;\n" +
+ " end \n" + "" +
+ " if;\n" +
+ " if p3 = '*' then \n" +
+ " num3 := num1 * num2;\n" +
+ " end if;\n" +
+ " if p3 = '/' then \n" +
+ " num3 := num1\n" +
+ " / num2+1;" + "\n" +
+ " end if;" + "\n" +
+ "end /*ffff*/ ----- \n " +
+ " /");
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+ /*****************************************************************
+ * 描述:目前可用支持的使用场景
+ * 被测对象:Parser
+ * 输入:无
+ * 测试场景:end if 中间有换行,结尾处end有注释的场景
+ * 期望输出:存储过程创建成功
+ ******************************************************************/
+ @Test
+ public void testCase3() throws SQLException {
+ Statement stmt = con.createStatement();
+ CallableStatement cmt = null;
+ try {
+ stmt.execute("create or replace procedure proc_test(num1 int,num2 int,p3 VARCHAR2(5),num3 out int ) as\n" +
+ "\n" +
+ "begin\n" +
+ " if p3 = '*' then \n" +
+ " num3 := num1 * num2;\n" +
+ " end \n" + "" +
+ " if;\n" +
+ " if p3 = '*' then \n" +
+ " num3 := num1 * num2;\n" +
+ " end if;\n" +
+ " if p3 = '/' then \n" +
+ " num3 := num1" +
+ " / num2+1;" + "\n" +
+ " end if;" + "\n" +
+ "end /" +
+ " " + "create or replace procedure proc_test(num1 int,num2 int,p3 VARCHAR2(5),num3 out int ) as\n" +
+ "\n" +
+ "begin\n" +
+ " if p3 = '*' then \n" +
+ " num3 := num1 * num2;\n" +
+ " end " + "" +
+ " if;\n" +
+ " if p3 = '*' then \n" +
+ " num3 := num1 * num2;\n" +
+ " end if;\n" +
+ " if p3 = '/' then \n" +
+ " num3 := num1" +
+ "/ num2+1;" + "\n" +
+ " end if;" + "\n" +
+ "end\t /*ffff*/ \n " +
+ " ");
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+ /*****************************************************************
+ * 描述:目前可用支持的使用场景
+ * 被测对象:Parser
+ * 输入:无
+ * 测试场景:执行两个带$$language的语句
+ * 期望输出:存储过程创建成功
+ ******************************************************************/
+ @Test
+ public void testCase4() throws SQLException {
+ Statement stmt = con.createStatement();
+ CallableStatement cmt = null;
+ try {
+ stmt.execute("CREATE OR REPLACE FUNCTION compute(i int, out result_1 bigint)\n" +
+ "returns SETOF RECORD\n" +
+ "as $$\n" +
+ "begin\n" +
+ " result_1 = i + 1;\n" +
+ "return next;\n" +
+ " end " +
+ "$$language plpgsql;\n" +
+ " /" + "CREATE OR REPLACE FUNCTION compute(i int, out result_1 bigint)\n" +
+ "returns SETOF RECORD\n" +
+ "as $$\n" +
+ "begin\n" +
+ " result_1 = i + 1;\n" +
+ "return next;\n" +
+ " end " +
+ "$$ language plpgsql;\n");
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+ /*****************************************************************
+ * 描述:目前可用支持的使用场景
+ * 被测对象:Parser
+ * 输入:无
+ * 测试场景:case和end的场景
+ * 期望输出:存储过程创建成功
+ ******************************************************************/
+ @Test
+ public void testCase5() throws SQLException {
+ Statement stmt = con.createStatement();
+ CallableStatement cmt = null;
+ try {
+ stmt.execute("select case when id =0 then '结果为0' when id=1 then '结果为1' end from company");
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+ /*****************************************************************
+ * 描述:目前可用支持的使用场景
+ * 被测对象:Parser
+ * 输入:无
+ * 测试场景:创建匿名块
+ * 期望输出:存储过程创建成功
+ ******************************************************************/
+ @Test
+ public void testCase6() throws SQLException {
+ Statement stmt = con.createStatement();
+ CallableStatement cmt = null;
+ try {
+ stmt.execute("DECLARE \n" +
+ " my_var VARCHAR2(30); \n" +
+ "BEGIN \n" +
+ " my_var :='world'; \n" +
+ " dbe_output.print_line('hello'||my_var); \n" +
+ "END \n" +
+ " /");
+ stmt.execute("BEGIN\n" +
+ " dbe_output.print_line('hello world!'); \n" +
+ "END; \n" +
+ "/");
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+ /*****************************************************************
+ * 描述:目前可用支持的使用场景
+ * 被测对象:Parser
+ * 输入:无
+ * 测试场景:end $$结尾
+ * 期望输出:存储过程创建成功
+ ******************************************************************/
+ @Test
+ public void testCase7() throws SQLException {
+ Statement stmt = con.createStatement();
+ CallableStatement cmt = null;
+ try {
+ stmt.execute("CREATE OR REPLACE FUNCTION func_return returns void\n" +
+ "language plpgsql\n" +
+ "AS $$\n" +
+ "DECLARE\n" +
+ "v_num INTEGER := 1;\n" +
+ "BEGIN\n" +
+ "dbe_output.print_line(v_num);\n" +
+ "RETURN; --返回语句\n" +
+ "END $$ /\n");
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+ /*****************************************************************
+ * 描述:目前可用支持的使用场景
+ * 被测对象:Parser
+ * 输入:无
+ * 测试场景:创建函数
+ * 期望输出:存储过程创建成功
+ ******************************************************************/
+ @Test
+ public void testCase8() throws SQLException {
+ Statement stmt = con.createStatement();
+ CallableStatement cmt = null;
+ try {
+ stmt.execute("create or replace function testVarchar()\n" +
+ "return nvarchar2\n" +
+ "as\n" +
+ "declare\n" +
+ "v_pare nvarchar2;\n" +
+ "begin\n" +
+ "select 'nvarchar2' into v_pare;\n" +
+ "return v_pare;\n" +
+ "end;");
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+ /*****************************************************************
+ * 描述:目前可用支持的使用场景
+ * 被测对象:Parser
+ * 输入:无
+ * 测试场景:存储过程中间包含end,但是语句中没有跟着 /
+ * 期望输出:存储过程创建成功
+ ******************************************************************/
+ @Test
+ public void testCase9() throws SQLException {
+ Statement stmt = con.createStatement();
+ CallableStatement cmt = null;
+ try {
+ stmt.execute("create or replace procedure proc_test1() as\n" +
+ "\n" +
+ "begin\n" +
+ "select 2 as end;\n" +
+ "end \n " +
+ " /" + "create or replace procedure proc_test1() as\n" +
+ "\n" +
+ "begin\n" +
+ "select 1 - 2;" +
+ "end \n " +
+ " /");
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+ /*****************************************************************
+ * 描述:目前可用支持的使用场景
+ * 被测对象:Parser
+ * 输入:无
+ * 测试场景:存储过程中间包含end,但是语句中的/,前面没有空格和回车
+ * 期望输出:存储过程创建成功
+ ******************************************************************/
+ @Test
+ public void testCase10() throws SQLException {
+ Statement stmt = con.createStatement();
+ CallableStatement cmt = null;
+ try {
+ stmt.execute("DECLARE \n" +
+ " my_var VARCHAR2(30); \n" +
+ "BEGIN \n" +
+ " my_var :='world'; \n" +
+ " dbe_output.print_line('hello'||my_var); \n" +
+ "END \n" +
+ " /" +
+ "");
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:目前可用支持的使用场景
+ * 被测对象:Parser
+ * 输入:无
+ * 测试场景:创建空包场景
+ * 期望输出:存储过程创建成功
+ ******************************************************************/
+ @Test
+ public void testCase10() throws SQLException {
+ Statement stmt = con.createStatement();
+ CallableStatement cmt = null;
+ try {
+ stmt.execute("create or replace package cnt6\n" +
+ "as\n" +
+ "count_sum constant number := 1;\n" +
+ "end cnt6;\n" +
+ "/");
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:目前可用支持的使用场景
+ * 被测对象:Parser
+ * 输入:无
+ * 测试场景:存储过程中间包含end加括号的组合
+ * 期望输出:存储过程创建成功
+ ******************************************************************/
+ @Test
+ public void testCase11() throws SQLException {
+ Statement stmt = con.createStatement();
+ CallableStatement cmt = null;
+ try {
+ stmt.execute("CREATE OR REPLACE PROCEDURE array_proc\n" +
+ "AS\n" +
+ "TYPE ARRAY_INTEGER IS VARRAY(1024) OF INTEGER;--定义数组类型\n" +
+ "ARRINT ARRAY_INTEGER := ARRAY_INTEGER(); --声明数组类型的变量\n" +
+ "BEGIN \n" +
+ "ARRINT.extend(10);\n" +
+ "FOR I IN 1..10 LOOP\n" +
+ "ARRINT(I) := I;\n" +
+ "END LOOP;\n" +
+ "DBE_OUTPUT.PRINT_LINE(ARRINT.COUNT);\n" +
+ "DBE_OUTPUT.PRINT_LINE(ARRINT(1));\n" +
+ "DBE_OUTPUT.PRINT_LINE(ARRINT(10));\n" +
+ "DBE_OUTPUT.PRINT_LINE(ARRINT(ARRINT.FIRST));\n" +
+ "DBE_OUTPUT.PRINT_LINE(ARRINT(ARRINT.last));\n" +
+ "END;\n" +
+ "/");
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:目前不可用场景,在存储过程内部构建出了end关键字。
+ * 被测对象:Parser
+ * 输入:无
+ * 测试场景:存储过程中间包含end,但是语句中的/,前面有空格或回车
+ * 期望输出:存储过程创建失败
+ ******************************************************************/
+ @Test
+ public void testFailCase() throws SQLException {
+ Statement stmt = con.createStatement();
+ CallableStatement cmt = null;
+ try {
+ try {
+ stmt.execute("create or replace procedure proc_test(num1 int,num2 int,p3 VARCHAR2(5),num3 out int ) as\n" +
+ "\n" +
+ "begin\n" +
+ "select 1 as " +
+ "end;\n" +
+ "select 1 /1;\n" +
+ "end\n " +
+ "/");
+ } catch (SQLException e) {
+ System.out.println(e.getMessage());
+ }
+ try {
+ stmt.execute("create or replace procedure proc_test(num1 int,num2 int,p3 VARCHAR2(5),num3 out int ) as\n" +
+ "\n" +
+ "begin\n" +
+ "select 1 as " +
+ "end;\n" +
+ "select 1\n/1;\n" +
+ "end\n " +
+ "/");
+ } catch (SQLException e) {
+ System.out.println(e.getMessage());
+ }
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+}
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/ConnectionTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/ConnectionTest.java
index 15565fc..a0e211b 100644
--- a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/ConnectionTest.java
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/ConnectionTest.java
@@ -222,7 +222,7 @@ public class ConnectionTest {
assertEquals(defaultLevel, con.getTransactionIsolation());
con.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
- assertEquals(Connection.TRANSACTION_REPEATABLE_READ, con.getTransactionIsolation());
+ assertEquals(Connection.TRANSACTION_SERIALIZABLE, con.getTransactionIsolation());
con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
assertEquals(Connection.TRANSACTION_READ_COMMITTED, con.getTransactionIsolation());
@@ -230,11 +230,11 @@ public class ConnectionTest {
// Test if a change of isolation level before beginning the
// transaction affects the isolation level inside the transaction.
con.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
- assertEquals(Connection.TRANSACTION_REPEATABLE_READ, con.getTransactionIsolation());
+ assertEquals(Connection.TRANSACTION_SERIALIZABLE, con.getTransactionIsolation());
con.setAutoCommit(false);
- assertEquals(Connection.TRANSACTION_REPEATABLE_READ, con.getTransactionIsolation());
+ assertEquals(Connection.TRANSACTION_SERIALIZABLE, con.getTransactionIsolation());
con.setAutoCommit(true);
- assertEquals(Connection.TRANSACTION_REPEATABLE_READ, con.getTransactionIsolation());
+ assertEquals(Connection.TRANSACTION_SERIALIZABLE, con.getTransactionIsolation());
con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
assertEquals(Connection.TRANSACTION_READ_COMMITTED, con.getTransactionIsolation());
con.setAutoCommit(false);
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/CopyTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/CopyTest.java
index b1a8997..01f9e80 100644
--- a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/CopyTest.java
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/CopyTest.java
@@ -48,7 +48,7 @@ public class CopyTest {
{"First Row\t1\t1.10\n",
"Second Row\t2\t-22.20\n",
"\\N\t\\N\t\\N\n",
- "\\N\t4\t444.40\n"};
+ "\t4\t444.40\n"};
private int dataRows = origData.length;
private byte[] getData(String[] origData) {
@@ -356,7 +356,7 @@ public class CopyTest {
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select pg_backend_pid()");
rs.next();
- Long pid = rs.getLong(1);
+ int pid = rs.getInt(1);
rs.close();
stmt.close();
@@ -420,7 +420,7 @@ public class CopyTest {
}
}
- private void killConnection(Long pid) throws SQLException {
+ private void killConnection(int pid) throws SQLException {
Connection killerCon;
try {
killerCon = TestUtil.openPrivilegedDB();
@@ -430,7 +430,7 @@ public class CopyTest {
}
try {
PreparedStatement stmt = killerCon.prepareStatement("select pg_terminate_backend(?)");
- stmt.setLong(1, pid);
+ stmt.setInt(1, pid);
stmt.execute();
} finally {
killerCon.close();
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/GeometricTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/GeometricTest.java
index fe17858..e2c8710 100644
--- a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/GeometricTest.java
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/GeometricTest.java
@@ -45,7 +45,7 @@ public class GeometricTest extends BaseTest4 {
@Parameterized.Parameters(name = "binary = {0}")
public static Iterable data() {
- Collection ids = new ArrayList<>();
+ Collection ids = new ArrayList();
for (BinaryMode binaryMode : BinaryMode.values()) {
ids.add(new Object[]{binaryMode});
}
@@ -55,7 +55,7 @@ public class GeometricTest extends BaseTest4 {
public void setUp() throws Exception {
super.setUp();
TestUtil.createTable(con, "testgeometric",
- "boxval box, circleval circle, lsegval lseg, pathval path, polygonval polygon, pointval point");
+ "boxval box, circleval circle, lsegval lseg, pathval path, polygonval polygon, pointval point, lineval line");
}
public void tearDown() throws SQLException {
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/HintNodeNameTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/HintNodeNameTest.java
new file mode 100644
index 0000000..a506017
--- /dev/null
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/HintNodeNameTest.java
@@ -0,0 +1,287 @@
+package org.postgresql.test.jdbc2;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.postgresql.test.TestUtil;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import static org.junit.Assert.assertEquals;
+
+public class HintNodeNameTest extends BaseTest4 {
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ }
+
+ @After
+ public void tearDown() throws SQLException {
+
+ }
+
+ /*****************************************************************
+ * 描述:先设置nodeName的值,测试prepareStatement(String sql)方法
+ * 被测对象:PgConnection
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testPrepareStatementScene1() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ con.setClientInfo("nodeName","datanode1");
+ ResultSet rs;
+ PreparedStatement cs;
+ cs = con.prepareStatement("/*+ ddd*/select name as selectp from test");
+ rs = cs.executeQuery();
+ rs.next();
+ assertEquals("lisi", rs.getString(1));
+ cs = con.prepareStatement("select /*+ */ name as selectp from test");
+ rs = cs.executeQuery();
+ rs.next();
+ assertEquals("lisi", rs.getString(1));
+ cs = con.prepareStatement("------select" + "\n" +
+ "/**/select " + "\n" +
+ " name as selectp from test;" + "\n" +
+ "/*===select==*/" + "\n" +
+ "/*delete*/");
+ cs.execute();
+
+ cs = con.prepareStatement("------select" + "\n" +
+ "/**/select " + "\n" +
+ " name as selectp from test where id in (select id from test)" + "\n" +
+ "/*===select==*/" + "\n" +
+ "/*delete*/");
+ rs = cs.executeQuery();
+ rs.next();
+ assertEquals("lisi", rs.getString(1));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:先调用prepareStatement(String sql)方法,在设置nodeName的值,执行SQL语句
+ * 被测对象:PgConnection
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testPrepareStatementScene2() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ ResultSet rs;
+ PreparedStatement cs;
+ cs = con.prepareStatement("select name as selectp from test");
+ con.setClientInfo("nodeName","datanode1");
+ rs = cs.executeQuery();
+ rs.next();
+ assertEquals("lisi", rs.getString(1));
+ con.setClientInfo("nodeName","");
+ cs = con.prepareStatement("select /*+ */ name as selectp from test");
+ con.setClientInfo("nodeName","datanode1");
+ rs = cs.executeQuery();
+ rs.next();
+ assertEquals("lisi", rs.getString(1));
+ con.setClientInfo("nodeName","");
+ cs = con.prepareStatement("------select" + "\n" +
+ "/**/select " + "\n" +
+ " name as selectp from test where id in (select id from test)" + "\n" +
+ "/*===select==*/" + "\n" +
+ "/*delete*/");
+ con.setClientInfo("nodeName","datanode1");
+ rs = cs.executeQuery();
+ rs.next();
+ assertEquals("lisi", rs.getString(1));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:设置nodeName测试prepareStatement(String sql)方法,多次执行后,修改nodeName值,
+ * 被测对象:PgConnection
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testManyPrepareStatementScene1() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ ResultSet rs;
+ PreparedStatement cs;
+ con.setClientInfo("nodeName","datanode1");
+ cs = con.prepareStatement("with w1 as (select id /*A ) select */ from test) select id from w1");
+ cs.executeQuery();
+ cs.executeQuery();
+ cs.executeQuery();
+ cs.executeQuery();
+ cs.executeQuery();
+ rs = cs.executeQuery();
+ rs.next();
+ assertEquals("1", rs.getString(1));
+ con.setClientInfo("nodeName","datanode2");
+ rs = cs.executeQuery();
+ rs.next();
+ assertEquals("ll", rs.getString(1));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试prepareStatement(String sql)方法,多次执行触发缓存后,设置nodeName
+ * 被测对象:PgConnection
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testManyPrepareStatementScene2() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ ResultSet rs;
+ PreparedStatement cs;
+ cs = con.prepareStatement("select name as selectp from test");
+ cs.executeQuery();
+ cs.executeQuery();
+ cs.executeQuery();
+ cs.executeQuery();
+ cs.executeQuery();
+ con.setClientInfo("nodeName","datanode1");
+ rs = cs.executeQuery();
+ rs.next();
+ assertEquals("lisi", rs.getString(1));
+ cs = con.prepareStatement("select name as selectp from test");
+ con.setClientInfo("nodeName","datanode2");
+ rs = cs.executeQuery();
+ rs.next();
+ assertEquals("ll", rs.getString(1));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试executeQuery(String sql)方法
+ * 被测对象:PgConnection
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testExecuteQuery() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ con.setClientInfo("nodeName","datanode1");
+ ResultSet rs;
+ Statement statement = con.createStatement();
+ rs = statement.executeQuery(" with w1 as (select id as with_ABC from test) select/**/ id from w1 ");
+ rs.next();
+ assertEquals("1", rs.getString(1));
+ rs = statement.executeQuery("select /*+*/ name from test ");
+ rs.next();
+ assertEquals("lisi", rs.getString(1));
+ rs = statement.executeQuery("--select * from " +
+ "\n/*select * from*/------ \n select " +
+ " name from test ");
+ rs.next();
+ assertEquals("lisi", rs.getString(1));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试execute(String sql)方法
+ * 被测对象:PgConnection
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testExecute() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ con.setClientInfo("nodeName","datanode1");
+ ResultSet rs;
+ Statement statement = con.createStatement();
+ statement.execute("with /*+'''*/ temp as (select id from test) select id from temp ");
+ rs=statement.getResultSet();
+ rs.next();
+ assertEquals("1", rs.getString(1));
+ statement.execute("select /*+*/ name from test ");
+ rs=statement.getResultSet();
+ rs.next();
+ assertEquals("lisi", rs.getString(1));
+ statement.execute("--select * from " +
+ "\n/*select * from*/------ \n select " +
+ " name from test ");
+ rs=statement.getResultSet();
+ rs.next();
+ assertEquals("lisi", rs.getString(1));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+ /*----------------负向用例----------------*/
+ /*****************************************************************
+ * 描述:测试设置节点错误方法
+ * 被测对象:PgConnection
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testWrongNode() {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ try {
+ con.setClientInfo("nodeName","datanode12");
+ ResultSet rs;
+ Statement statement = con.createStatement();
+ statement.execute(" select name from test ");
+ rs=statement.getResultSet();
+ rs.next();
+ }catch (SQLException e){
+ assertEquals("Node name does not exist.",e.getMessage());
+ }
+ try {
+ con.setClientInfo("nodeName","datanode1/*");
+ ResultSet rs;
+ Statement statement = con.createStatement();
+ statement.execute(" select name from test ");
+ rs=statement.getResultSet();
+ rs.next();
+ }catch (SQLException e){
+ assertEquals("Illegal node name.",e.getMessage());
+ }
+
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+}
+
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/Jdbc2TestSuite.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/Jdbc2TestSuite.java
index 4645386..009116a 100644
--- a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/Jdbc2TestSuite.java
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/Jdbc2TestSuite.java
@@ -101,6 +101,7 @@ import org.junit.runners.Suite;
DeepBatchedInsertStatementTest.class,
JBuilderTest.class,
MiscTest.class,
+ NotifyTest.class,
DatabaseEncodingTest.class,
ClientEncodingTest.class,
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/NotifyTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/NotifyTest.java
new file mode 100644
index 0000000..faaa82b
--- /dev/null
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/NotifyTest.java
@@ -0,0 +1,257 @@
+/*
+ * Copyright (c) 2004, PostgreSQL Global Development Group
+ * See the LICENSE file in the project root for more information.
+ */
+
+package org.postgresql.test.jdbc2;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import org.postgresql.PGConnection;
+import org.postgresql.PGNotification;
+import org.postgresql.core.ServerVersion;
+import org.postgresql.test.TestUtil;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+public class NotifyTest {
+ private Connection conn;
+
+ @Before
+ public void setUp() throws Exception {
+ conn = TestUtil.openDB();
+ }
+
+ @After
+ public void tearDown() throws SQLException {
+ TestUtil.closeDB(conn);
+ }
+
+ @Test(timeout = 60000)
+ public void testNotify() throws SQLException {
+ Statement stmt = conn.createStatement();
+ stmt.executeUpdate("LISTEN mynotification");
+ stmt.executeUpdate("NOTIFY mynotification");
+
+ PGNotification[] notifications = conn.unwrap(PGConnection.class).getNotifications();
+ assertNotNull(notifications);
+ assertEquals(1, notifications.length);
+ assertEquals("mynotification", notifications[0].getName());
+ assertEquals("", notifications[0].getParameter());
+
+ stmt.close();
+ }
+
+ @Test(timeout = 60000)
+ public void testNotifyArgument() throws Exception {
+ if (!TestUtil.haveMinimumServerVersion(conn, ServerVersion.v9_0)) {
+ return;
+ }
+
+ Statement stmt = conn.createStatement();
+ stmt.executeUpdate("LISTEN mynotification");
+ stmt.executeUpdate("NOTIFY mynotification, 'message'");
+
+ PGNotification[] notifications = conn.unwrap(PGConnection.class).getNotifications();
+ assertNotNull(notifications);
+ assertEquals(1, notifications.length);
+ assertEquals("mynotification", notifications[0].getName());
+ assertEquals("message", notifications[0].getParameter());
+
+ stmt.close();
+ }
+
+ @Test(timeout = 60000)
+ public void testAsyncNotify() throws Exception {
+ Statement stmt = conn.createStatement();
+ stmt.executeUpdate("LISTEN mynotification");
+
+ // Notify on a separate connection to get an async notify on the first.
+ connectAndNotify("mynotification");
+
+ // Wait a bit to let the notify come through... Changed this so the test takes ~2 seconds
+ // less to run and is still as effective.
+ PGNotification[] notifications = null;
+ try {
+ int retries = 20;
+ while (retries-- > 0
+ && (notifications = conn.unwrap(PGConnection.class).getNotifications()) == null ) {
+ Thread.sleep(100);
+ }
+ } catch (InterruptedException ie) {
+ }
+
+ assertNotNull("Notification is expected to be delivered when subscription was created"
+ + " before sending notification", notifications);
+ assertEquals(1, notifications.length);
+ assertEquals("mynotification", notifications[0].getName());
+ assertEquals("", notifications[0].getParameter());
+
+ stmt.close();
+ }
+
+ /**
+ * To test timeouts we have to send the notification from another thread, because we
+ * listener is blocking.
+ */
+ @Test(timeout = 60000)
+ public void testAsyncNotifyWithTimeout() throws Exception {
+ Statement stmt = conn.createStatement();
+ stmt.executeUpdate("LISTEN mynotification");
+
+ // Here we let the getNotifications() timeout.
+ long startMillis = System.currentTimeMillis();
+ PGNotification[] notifications = conn.unwrap(PGConnection.class).getNotifications(500);
+ long endMillis = System.currentTimeMillis();
+ long runtime = endMillis - startMillis;
+ assertNull("There have been notifications, although none have been expected.",notifications);
+ Assert.assertTrue("We didn't wait long enough! runtime=" + runtime, runtime > 450);
+
+ stmt.close();
+ }
+
+ @Test(timeout = 60000)
+ public void testAsyncNotifyWithTimeoutAndMessagesAvailableWhenStartingListening() throws Exception {
+ Statement stmt = conn.createStatement();
+ stmt.executeUpdate("LISTEN mynotification");
+
+ // Now we check the case where notifications are already available while we are starting to
+ // listen for notifications
+ connectAndNotify("mynotification");
+
+ PGNotification[] notifications = conn.unwrap(PGConnection.class).getNotifications(10000);
+ assertNotNull(notifications);
+ assertEquals(1, notifications.length);
+ assertEquals("mynotification", notifications[0].getName());
+ assertEquals("", notifications[0].getParameter());
+
+ stmt.close();
+ }
+
+ @Test(timeout = 60000)
+ public void testAsyncNotifyWithEndlessTimeoutAndMessagesAvailableWhenStartingListening() throws Exception {
+ Statement stmt = conn.createStatement();
+ stmt.executeUpdate("LISTEN mynotification");
+
+ // Now we check the case where notifications are already available while we are waiting forever
+ connectAndNotify("mynotification");
+
+ PGNotification[] notifications = conn.unwrap(PGConnection.class).getNotifications(0);
+ assertNotNull(notifications);
+ assertEquals(1, notifications.length);
+ assertEquals("mynotification", notifications[0].getName());
+ assertEquals("", notifications[0].getParameter());
+
+ stmt.close();
+ }
+
+ @Test(timeout = 60000)
+ public void testAsyncNotifyWithTimeoutAndMessagesSendAfter() throws Exception {
+ Statement stmt = conn.createStatement();
+ stmt.executeUpdate("LISTEN mynotification");
+
+ // Now we check the case where notifications are send after we have started to listen for
+ // notifications
+ new Thread( new Runnable() {
+ public void run() {
+ try {
+ Thread.sleep(200);
+ } catch (InterruptedException ie) {
+ }
+ connectAndNotify("mynotification");
+ }
+ }).start();
+
+ PGNotification[] notifications = conn.unwrap(PGConnection.class).getNotifications(10000);
+ assertNotNull(notifications);
+ assertEquals(1, notifications.length);
+ assertEquals("mynotification", notifications[0].getName());
+ assertEquals("", notifications[0].getParameter());
+
+ stmt.close();
+ }
+
+ @Test(timeout = 60000)
+ public void testAsyncNotifyWithEndlessTimeoutAndMessagesSendAfter() throws Exception {
+ Statement stmt = conn.createStatement();
+ stmt.executeUpdate("LISTEN mynotification");
+
+ // Now we check the case where notifications are send after we have started to listen for
+ // notifications forever
+ new Thread( new Runnable() {
+ public void run() {
+ try {
+ Thread.sleep(200);
+ } catch (InterruptedException ie) {
+ }
+ connectAndNotify("mynotification");
+ }
+ }).start();
+
+ PGNotification[] notifications = conn.unwrap(PGConnection.class).getNotifications(0);
+ assertNotNull(notifications);
+ assertEquals(1, notifications.length);
+ assertEquals("mynotification", notifications[0].getName());
+ assertEquals("", notifications[0].getParameter());
+
+ stmt.close();
+ }
+
+ @Test(timeout = 60000)
+ public void testAsyncNotifyWithTimeoutAndSocketThatBecomesClosed() throws Exception {
+ Statement stmt = conn.createStatement();
+ stmt.executeUpdate("LISTEN mynotification");
+
+ // Here we check what happens when the connection gets closed from another thread. This
+ // should be able, and this test ensures that no synchronized statements will stop the
+ // connection from becoming closed.
+ new Thread( new Runnable() {
+ public void run() {
+ try {
+ Thread.sleep(500);
+ } catch (InterruptedException ie) {
+ }
+ try {
+ conn.close();
+ } catch (SQLException e) {
+ }
+ }
+ }).start();
+
+ try {
+ conn.unwrap(PGConnection.class).getNotifications(40000);
+ Assert.fail("The getNotifications(...) call didn't return when the socket closed.");
+ } catch (SQLException e) {
+ // We expected that
+ }
+
+ stmt.close();
+ }
+
+ private static void connectAndNotify(String channel) {
+ Connection conn2 = null;
+ try {
+ conn2 = TestUtil.openDB();
+ Statement stmt2 = conn2.createStatement();
+ stmt2.executeUpdate("NOTIFY " + channel);
+ stmt2.close();
+ } catch (Exception e) {
+ throw new RuntimeException("Couldn't notify '" + channel + "'.",e);
+ } finally {
+ try {
+ conn2.close();
+ } catch (SQLException e) {
+ }
+ }
+ }
+
+}
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/PGPropertyTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/PGPropertyTest.java
index d05bbcb..a5bb319 100644
--- a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/PGPropertyTest.java
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/PGPropertyTest.java
@@ -28,10 +28,8 @@ import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.sql.DriverPropertyInfo;
import java.util.ArrayList;
-import java.util.HashSet;
import java.util.Map;
import java.util.Properties;
-import java.util.Set;
import java.util.TreeMap;
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/PgCallableStatementTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/PgCallableStatementTest.java
new file mode 100644
index 0000000..46fec4c
--- /dev/null
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/PgCallableStatementTest.java
@@ -0,0 +1,263 @@
+package org.postgresql.test.jdbc2;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.postgresql.test.TestUtil;
+import org.postgresql.util.PGobject;
+
+import java.sql.*;
+import java.util.Arrays;
+
+import static org.junit.Assert.assertEquals;
+
+public class PgCallableStatementTest extends BaseTest4 {
+
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ TestUtil.execute("set behavior_compat_options='proc_outparam_override'", con);
+ TestUtil.createCompositeType(con, "compfoos", "f1 int, f2 varchar(20), f3 varchar(20)");
+ TestUtil.createTable(con, "test_user_type", "a int, b compfoos, c compfoos, d varchar(20)");
+ String insertSQL = TestUtil.insertSQL("test_user_type", "1, (1,'demo','demo'), (1,'demo1','demo1'), " +
+ "'123456@email'");
+ TestUtil.execute(insertSQL, con);
+ TestUtil.createTable(con, "test_tbl_commonType", "" +
+ "col_str varchar(26),\n" +
+ "col_bool bool,\n" +
+ "col_byte TINYINT,\n" +
+ "col_short smallint,\n" +
+ "col_int int,\n" +
+ "col_long bigint,\n" +
+ "col_float REAL,\n" +
+ "col_doule DOUBLE PRECISION,\n" +
+ "col_bigDecimal number,\n" +
+ "col_bytes bytea,\n" +
+ "col_date date,\n" +
+ "col_time time,\n" +
+ "col_timestamp timestamp,\n" +
+ "col_object varchar(52)");
+ TestUtil.execute(TestUtil.insertSQL("test_tbl_commonType", "" +
+ "'abcdefghijklmnopqrstuvwxyz',\n" +
+ "true,\n" +
+ "12,\n" +
+ "123,\n" +
+ "888888888,\n" +
+ "999999999,\n" +
+ "123456.789123,\n" +
+ "123456.789123,\n" +
+ "99999999999999999999.1234567890123456,\n" +
+ "E'DEADBEEF',\n" +
+ "'2010-12-12',\n" +
+ "'21:21:21',\n" +
+ "'2003-04-12 04:05:06',\n" +
+ "'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'"), con);
+ }
+
+ @After
+ public void tearDown() throws SQLException {
+ TestUtil.dropType(con, "compfoos");
+ TestUtil.dropTable(con, "test_user_type");
+ }
+
+ @Test
+ public void testOneCompositeTypeOutParam() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ stmt = con.createStatement();
+ stmt.execute("CREATE OR REPLACE PROCEDURE test_proc_user_type_out(id in int,name out compfoos,address in " +
+ "int)\n" +
+ "AS\n" +
+ "BEGIN\n" +
+ "select b into name from test_user_type where a = id or a = address;\n" +
+ "END;\n");
+ String query_str = "{call test_proc_user_type_out(?,?,?)}";
+ cmt = con.prepareCall(query_str);
+ cmt.setInt(1, 1);
+ cmt.registerOutParameter(2, Types.STRUCT, "wumk3.compfoos");
+ cmt.setInt(3, 1);
+ cmt.execute();
+ PGobject object = (PGobject) cmt.getObject(2);
+ assertEquals("(1,demo,demo)", object.getValue());
+ assertEquals("[f1, f2, f3]", Arrays.toString(object.getStruct()));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ @Test
+ public void testMultipleCompositeTypeOutParam() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ stmt = con.createStatement();
+ stmt.execute("CREATE OR REPLACE PROCEDURE test_proc_user_type_out(id in int,name out compfoos,address out" +
+ " compfoos,email out varchar(20))\n" +
+ "AS\n" +
+ "BEGIN\n" +
+ "select b into name from test_user_type where a = id;\n" +
+ "select c into address from test_user_type where a = id;\n" +
+ "select d into email from test_user_type where a = id;\n" +
+ "END;\n");
+ String query_str = "{call test_proc_user_type_out(?,?,?,?)}";
+ cmt = con.prepareCall(query_str);
+ cmt.setInt(1, 1);
+ cmt.registerOutParameter(2, Types.STRUCT, "wumk3.compfoos");
+ cmt.registerOutParameter(3, Types.STRUCT, "wumk3.compfoos");
+ cmt.registerOutParameter(4, Types.VARCHAR);
+ cmt.execute();
+ PGobject firstObject = (PGobject) cmt.getObject(2);
+ assertEquals("[f1, f2, f3]", Arrays.toString(firstObject.getStruct()));
+ assertEquals("(1,demo,demo)", firstObject.getValue());
+ PGobject secondObject = (PGobject) cmt.getObject(3);
+ assertEquals("[f1, f2, f3]", Arrays.toString(secondObject.getStruct()));
+ assertEquals("(1,demo1,demo1)", secondObject.getValue());
+ assertEquals("123456@email", cmt.getString(4));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ @Test
+ public void testCommonTypesOutParam() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ stmt = con.createStatement();
+ String createProcedure = "CREATE OR REPLACE PROCEDURE procedure_test("
+ + "v_str OUT varchar(26),"
+ + "v_bool OUT bool,"
+ + "v_byte OUT TINYINT,"
+ + "v_short OUT smallint,"
+ + "v_int OUT int,"
+ + "v_long OUT bigint,"
+ + "v_float OUT REAL,"
+ + "v_doule OUT DOUBLE PRECISION,"
+ + "v_bigDecimal OUT number,"
+ + "v_bytes OUT bytea,"
+ + "v_date OUT date,"
+ + "v_time OUT time,"
+ + "v_timestamp OUT timestamp,"
+ + "v_object OUT varchar(52))"
+ + " AS "
+ + " BEGIN "
+ + "SELECT col_str INTO v_str FROM test_tbl_err_2;"
+ + "SELECT col_bool INTO v_bool FROM test_tbl_err_2;"
+ + "SELECT col_byte INTO v_byte FROM test_tbl_err_2;"
+ + "SELECT col_short INTO v_short FROM test_tbl_err_2;"
+ + "SELECT col_int INTO v_int FROM test_tbl_err_2;"
+ + "SELECT col_long INTO v_long FROM test_tbl_err_2;"
+ + "SELECT col_float INTO v_float FROM test_tbl_err_2;"
+ + "SELECT col_doule INTO v_doule FROM test_tbl_err_2;"
+ + "SELECT col_bigDecimal INTO v_bigDecimal FROM test_tbl_err_2;"
+ + "SELECT col_bytes INTO v_bytes FROM test_tbl_err_2;"
+ + "SELECT col_date INTO v_date FROM test_tbl_err_2;"
+ + "SELECT col_time INTO v_time FROM test_tbl_err_2;"
+ + "SELECT col_timestamp INTO v_timestamp FROM test_tbl_err_2;"
+ + "SELECT col_object INTO v_object FROM test_tbl_err_2;"
+ + " END;";
+ stmt.execute(createProcedure);
+ String sql = "{call procedure_test(?,?,?,?,?,?,?,?,?,?,?,?,?,?)}";
+ cmt = con.prepareCall(sql);
+ cmt.registerOutParameter(1, Types.VARCHAR);
+ cmt.registerOutParameter(2, Types.BOOLEAN);
+ cmt.registerOutParameter(3, Types.TINYINT);
+ cmt.registerOutParameter(4, Types.SMALLINT);
+ cmt.registerOutParameter(5, Types.INTEGER);
+ cmt.registerOutParameter(6, Types.BIGINT);
+ cmt.registerOutParameter(7, Types.REAL);
+ cmt.registerOutParameter(8, Types.DOUBLE);
+ cmt.registerOutParameter(9, Types.NUMERIC);
+ cmt.registerOutParameter(10, Types.BINARY);
+ cmt.registerOutParameter(11, Types.TIMESTAMP);
+ cmt.registerOutParameter(12, Types.TIME);
+ cmt.registerOutParameter(13, Types.TIMESTAMP);
+ cmt.registerOutParameter(14, Types.VARCHAR);
+ cmt.execute();
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试复合类型参数的取值
+ * 被测对象:PGobject
+ * 输入:复合类型值
+ * 测试场景:构造不同复合类型参数的值,验证返回与输入一致
+ * 期望输出:输入值与返回值一致
+ ******************************************************************/
+ @Test
+ public void testCompositeTypeValue() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ stmt = con.createStatement();
+ stmt.execute("CREATE OR REPLACE PROCEDURE test_proc_user_type_out2(id in int,name out compfoos) " +
+ "AS " +
+ "BEGIN " +
+ "select b into name from test_user_type where a = id;" +
+ "END;");
+
+ // (1,'demo','demo')
+ TestUtil.execute(TestUtil.insertSQL("test_user_type", "3, (1,'demo','demo'), null, null"), con);
+ cmt = con.prepareCall("{call test_proc_user_type_out2(?,?)}");
+ cmt.setInt(1, 3);
+ cmt.registerOutParameter(2, Types.STRUCT, "wumk3.compfoos");
+ cmt.execute();
+ PGobject firstObject = (PGobject) cmt.getObject(2);
+ assertEquals("[f1, f2, f3]", Arrays.toString(firstObject.getStruct()));
+ assertEquals("(1,demo,demo)", firstObject.getValue());
+ assertEquals("[1, demo, demo]", Arrays.toString(firstObject.getArrayValue()));
+ // (1,'','demo')
+ TestUtil.execute(TestUtil.insertSQL("test_user_type", "4, (1,'','demo'), null, null"), con);
+ cmt = con.prepareCall("{call test_proc_user_type_out2(?,?)}");
+ cmt.setInt(1, 4);
+ cmt.registerOutParameter(2, Types.STRUCT, "wumk3.compfoos");
+ cmt.execute();
+ PGobject secondObject = (PGobject) cmt.getObject(2);
+ assertEquals("[f1, f2, f3]", Arrays.toString(secondObject.getStruct()));
+ assertEquals("(1,,demo)", secondObject.getValue());
+ assertEquals("[1, null, demo]", Arrays.toString(secondObject.getArrayValue()));
+ // (1,'"""demo","','(1,de",mo,demo)
+ TestUtil.execute(TestUtil.insertSQL("test_user_type", "5, (1,'\"\"\"demo\",\"','(1,de\",mo,demo)'), null," +
+ "null"), con);
+ cmt = con.prepareCall("{call test_proc_user_type_out2(?,?)}");
+ cmt.setInt(1, 5);
+ cmt.registerOutParameter(2, Types.STRUCT, "wumk3.compfoos");
+ cmt.execute();
+ PGobject thirdObject = (PGobject) cmt.getObject(2);
+ assertEquals("[f1, f2, f3]", Arrays.toString(thirdObject.getStruct()));
+ assertEquals("(1,\"\"\"\"\"\"\"demo\"\",\"\"\",\"(1,de\"\",mo,demo)\")", thirdObject.getValue());
+ assertEquals("[1, \"\"\"\"\"\"\"demo\"\",\"\"\", \"(1,de\"\",mo,demo)\"]", Arrays.toString(thirdObject.getArrayValue()));
+ // (1,'"\,| ''tt','')
+ TestUtil.execute(TestUtil.insertSQL("test_user_type", "6, (1,'\"\\,| ''tt',''), null," +
+ "null"), con);
+ cmt = con.prepareCall("{call test_proc_user_type_out2(?,?)}");
+ cmt.setInt(1, 6);
+ cmt.registerOutParameter(2, Types.STRUCT, "wumk3.compfoos");
+ cmt.execute();
+ PGobject fourthObject = (PGobject) cmt.getObject(2);
+ assertEquals("[f1, f2, f3]", Arrays.toString(fourthObject.getStruct()));
+ assertEquals("(1,\"\"\"\\\\,| 'tt\",)", fourthObject.getValue());
+ assertEquals("[1, \"\"\"\\\\,| 'tt\", null]", Arrays.toString(fourthObject.getArrayValue()));
+ // ('','','')
+ TestUtil.execute(TestUtil.insertSQL("test_user_type", "7, ('','',''), null," +
+ "null"), con);
+ cmt = con.prepareCall("{call test_proc_user_type_out2(?,?)}");
+ cmt.setInt(1, 7);
+ cmt.registerOutParameter(2, Types.STRUCT, "wumk3.compfoos");
+ cmt.execute();
+ PGobject fifthObject = (PGobject) cmt.getObject(2);
+ assertEquals("[f1, f2, f3]", Arrays.toString(fifthObject.getStruct()));
+ assertEquals("(,,)", fifthObject.getValue());
+ assertEquals("[null, null, null]", Arrays.toString(fifthObject.getArrayValue()));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+}
\ No newline at end of file
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/ProcOutparamOverrideTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/ProcOutparamOverrideTest.java
new file mode 100644
index 0000000..434b114
--- /dev/null
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/ProcOutparamOverrideTest.java
@@ -0,0 +1,290 @@
+package org.postgresql.test.jdbc2;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.postgresql.test.TestUtil;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Types;
+import java.util.Properties;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Adaptation overload function use case set.
+ */
+public class ProcOutparamOverrideTest extends BaseTest4 {
+
+ /**
+ * The sql of the create proc.
+ */
+ private static final String PROC_SQL = "CREATE OR REPLACE PROCEDURE test_proc(param_1 out integer,param_2 out " +
+ "integer," +
+ "param_3 in integer) " +
+ "AS " +
+ "DECLARE " +
+ "BEGIN " +
+ "select (1 + param_3) into param_1; " +
+ "select (2 + param_3) into param_2; " +
+ "END;";
+
+ /**
+ * The sql of the create package.
+ */
+ private static final String PACKAGE_SQL = "CREATE OR REPLACE package pck1 is " +
+ "procedure p1(a int,b out int); " +
+ "procedure p1(a2 int,b2 out varchar2); " +
+ "end pck1;";
+
+ /**
+ * The sql of the create package body.
+ */
+ private static final String PACKAGE_BODY_SQL = "CREATE OR REPLACE package body pck1 is " +
+ "procedure p1(a int,b out int) is " +
+ "begin " +
+ "b = a + 2; " +
+ "end; " +
+ "procedure p1(a2 int,b2 out varchar2) is " +
+ "begin " +
+ "b2 = a2 || b2; " +
+ "end; " +
+ "end pck1;";
+
+ /**
+ * The sql of the create proc no out param.
+ */
+ private static final String PROC_NO_OUTPARAM_SQL = "CREATE OR REPLACE PROCEDURE test_proc_1(id in integer,name in" +
+ " varchar) " +
+ "AS " +
+ "DECLARE " +
+ "BEGIN " +
+ "insert into test_1 values(id,name); " +
+ "END;";
+
+ /**
+ * The sql of the create table.
+ */
+ private static final String CREATE_TABLE_SQL = "CREATE TABLE test_1(id int,name varchar(20))";
+
+ /**
+ * The sql of the set guc param behavior_compat_options
+ */
+ private static final String TURN_ON_OVERRIDE = "set behavior_compat_options='proc_outparam_override'";
+
+ /**
+ * The sql of the set guc param behavior_compat_options
+ */
+ private static final String TURN_OFF_OVERRIDE = "set behavior_compat_options=''";
+
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ TestUtil.execute("CREATE DATABASE ora_compatible_db DBCOMPATIBILITY 'A'", con);
+ TestUtil.execute("CREATE DATABASE mysql_compatible_db DBCOMPATIBILITY 'B';", con);
+ TestUtil.execute("CREATE DATABASE td_compatible_db DBCOMPATIBILITY 'C';", con);
+ TestUtil.execute("CREATE DATABASE pg_compatible_db DBCOMPATIBILITY 'PG';", con);
+ }
+
+ @After
+ public void tearDown() throws SQLException {
+ TestUtil.execute("DROP DATABASE ora_compatible_db", con);
+ TestUtil.execute("DROP DATABASE mysql_compatible_db", con);
+ TestUtil.execute("DROP DATABASE td_compatible_db", con);
+ TestUtil.execute("DROP DATABASE pg_compatible_db", con);
+ }
+
+ /*****************************************************************
+ * 描述:测试Oracle兼容模式,重载开启与关闭下,存储过程的调用
+ * 被测对象:PgCallableStatement
+ * 输入:存储过程名
+ * 测试场景:开启重载,调用储存过程;关闭重载,调用存储过程
+ * 期望输出:正确返回结果
+ ******************************************************************/
+ @Test
+ public void testOraCompatible() throws Exception {
+ Properties props = new Properties();
+ props.setProperty("PGDBNAME", "ora_compatible_db");
+ con = TestUtil.openDB(props);
+ verifyOutparamOverride(con);
+ verifyPackageReloadProc(con);
+ verifyPrepareStatement(con);
+ }
+
+ /*****************************************************************
+ * 描述:测试MySQL兼容模式,重载开启与关闭下,存储过程的调用
+ * 被测对象:PgCallableStatement
+ * 输入:存储过程名
+ * 测试场景:开启重载,调用储存过程;关闭重载,调用存储过程
+ * 期望输出:正确返回结果
+ ******************************************************************/
+ @Test
+ public void testMysqlCompatible() throws Exception {
+ Properties props = new Properties();
+ props.setProperty("PGDBNAME", "mysql_compatible_db");
+ con = TestUtil.openDB(props);
+ verifyOutparamOverride(con);
+ verifyNotOracleCompatibilityMode(con);
+ }
+
+ /*****************************************************************
+ * 描述:测试Teradata兼容模式,重载开启与关闭下,存储过程的调用
+ * 被测对象:PgCallableStatement
+ * 输入:存储过程名
+ * 测试场景:开启重载,调用储存过程;关闭重载,调用存储过程
+ * 期望输出:正确返回结果
+ ******************************************************************/
+ @Test
+ public void testTdCompatible() throws Exception {
+ Properties props = new Properties();
+ props.setProperty("PGDBNAME", "td_compatible_db");
+ con = TestUtil.openDB(props);
+ verifyOutparamOverride(con);
+ verifyNotOracleCompatibilityMode(con);
+ }
+
+ /*****************************************************************
+ * 描述:测试PostgreSQL兼容模式,重载开启与关闭下,存储过程的调用
+ * 被测对象:PgCallableStatement
+ * 输入:存储过程名
+ * 测试场景:开启重载,调用储存过程;关闭重载,调用存储过程
+ * 期望输出:正确返回结果
+ ******************************************************************/
+ @Test
+ public void testPgCompatible() throws Exception {
+ Properties props = new Properties();
+ props.setProperty("PGDBNAME", "pg_compatible_db");
+ con = TestUtil.openDB(props);
+ verifyOutparamOverride(con);
+ verifyNotOracleCompatibilityMode(con);
+ }
+
+ /**
+ * Verify the result of reload open and close the stored procedure call.
+ *
+ * @param conn Database connection of different compatibility modes.
+ * @throws Exception if a JDBC or database problem occurs.
+ */
+ private void verifyOutparamOverride(Connection conn) throws Exception {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ String callProc = "{call test_proc(?,?,?)}";
+ try {
+ stmt = conn.createStatement();
+ stmt.execute(TURN_ON_OVERRIDE);
+ stmt.execute(PROC_SQL);
+ cmt = conn.prepareCall(callProc);
+ cmt.registerOutParameter(1, Types.INTEGER);
+ cmt.registerOutParameter(2, Types.INTEGER);
+ cmt.setInt(3, 1);
+ cmt.execute();
+ assertEquals(2, cmt.getInt(1));
+ assertEquals(3, cmt.getInt(2));
+
+ stmt.execute(TURN_OFF_OVERRIDE);
+ cmt = conn.prepareCall(callProc);
+ cmt.registerOutParameter(1, Types.INTEGER);
+ cmt.registerOutParameter(2, Types.INTEGER);
+ cmt.setInt(3, 6);
+ cmt.execute();
+ assertEquals(7, cmt.getInt(1));
+ assertEquals(8, cmt.getInt(2));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /**
+ * package contains a stored procedure with the same name.
+ *
+ * @param conn Database connection of different compatibility modes.
+ * @throws Exception if a JDBC or database problem occurs.
+ */
+ private void verifyPackageReloadProc(Connection conn) throws Exception {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ String callProc = "{call pck1.p1(?,?)}";
+ try {
+ stmt = conn.createStatement();
+ stmt.execute(TURN_ON_OVERRIDE);
+ stmt.execute(PACKAGE_SQL);
+ stmt.execute(PACKAGE_BODY_SQL);
+ cmt = conn.prepareCall(callProc);
+ cmt.setInt(1, 1);
+ cmt.registerOutParameter(2, Types.INTEGER);
+ cmt.execute();
+ assertEquals(3, cmt.getInt(2));
+ cmt = conn.prepareCall(callProc);
+ cmt.setInt(1, 2);
+ cmt.registerOutParameter(2, Types.VARCHAR);
+ cmt.execute();
+ assertEquals("2", cmt.getString(2));
+
+ stmt.execute(TURN_OFF_OVERRIDE);
+ cmt = conn.prepareCall(callProc);
+ cmt.setInt(1, 6);
+ cmt.registerOutParameter(2, Types.INTEGER);
+ cmt.execute();
+ assertEquals(8, cmt.getInt(2));
+ cmt = conn.prepareCall(callProc);
+ cmt.setInt(1, 2);
+ cmt.registerOutParameter(2, Types.VARCHAR);
+ cmt.execute();
+ assertEquals("4", cmt.getString(2));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /**
+ * Stored procedure call in other database compatibility mode.
+ *
+ * @param conn Database connection of different compatibility modes.
+ */
+ private void verifyNotOracleCompatibilityMode(Connection conn) {
+ try {
+ verifyPackageReloadProc(conn);
+ } catch (Exception e) {
+ assertTrue(e.getMessage().contains("ERROR: Package only allowed create in A compatibility"));
+ }
+ }
+
+ /**
+ * PrepareStatement call proc.
+ *
+ * @param conn Database connection of different compatibility modes.
+ * @throws Exception if a JDBC or database problem occurs.
+ */
+ private void verifyPrepareStatement(Connection conn) throws Exception {
+ Statement stmt = null;
+ PreparedStatement pstm = null;
+ try {
+ stmt = conn.createStatement();
+ stmt.execute(CREATE_TABLE_SQL);
+ stmt.execute(PROC_NO_OUTPARAM_SQL);
+ stmt.execute(TURN_ON_OVERRIDE);
+ pstm = conn.prepareStatement("select * from test_proc_1(?,?)");
+ pstm.setInt(1, 1);
+ pstm.setString(2, "Tom");
+ pstm.execute();
+
+ stmt.execute(TURN_OFF_OVERRIDE);
+ pstm = conn.prepareStatement("select * from test_proc_1(?,?)");
+ pstm.setInt(1, 2);
+ pstm.setString(2, "Jone");
+ pstm.execute();
+
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(pstm);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/ResultSetTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/ResultSetTest.java
index 20556bb..918ac67 100644
--- a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/ResultSetTest.java
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/ResultSetTest.java
@@ -15,7 +15,6 @@ import static org.junit.Assume.assumeTrue;
import org.postgresql.core.ServerVersion;
import org.postgresql.jdbc.PreferQueryMode;
import org.postgresql.test.TestUtil;
-import org.postgresql.util.DataBaseCompatibility;
import org.postgresql.util.PGobject;
import org.junit.Test;
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/SearchPathLookupTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/SearchPathLookupTest.java
index 0ebd2ae..5bc7f8a 100644
--- a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/SearchPathLookupTest.java
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/SearchPathLookupTest.java
@@ -6,7 +6,6 @@
package org.postgresql.test.jdbc2;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.postgresql.core.BaseConnection;
@@ -49,14 +48,13 @@ public class SearchPathLookupTest {
TestUtil.createTable(con, "third_schema.x", "third_schema_field_n float");
TestUtil.createSchema(con, "last_schema");
TestUtil.createTable(con, "last_schema.x", "last_schema_field_n text");
- stmt.execute("SET search_path TO third_schema");
- ResultSet rs1 = stmt.executeQuery("SELECT 'x'::regtype::oid");
- assertTrue(rs1.next());
- int OID = rs1.getInt(1);
- ResultSet rs2 = stmt.executeQuery("SELECT 'third_schema.x'::regtype::oid");
- assertTrue(rs2.next());
- assertEquals(OID, rs2.getInt(1));
- assertFalse(rs2.next());
+ stmt.execute("SET search_path TO third_schema;");
+ TypeInfo typeInfo = con.getTypeInfo();
+ int OID = typeInfo.getPGType("x");
+ ResultSet rs = stmt.executeQuery("SELECT 'third_schema.x'::regtype::oid");
+ assertTrue(rs.next());
+ assertEquals(OID, rs.getInt(1));
+ assertTrue(!rs.next());
TestUtil.dropSchema(con, "first_schema");
TestUtil.dropSchema(con, "second_schema");
TestUtil.dropSchema(con, "third_schema");
@@ -86,13 +84,13 @@ public class SearchPathLookupTest {
TestUtil.createTable(con, "third_schema.x", "third_schema_field_n float");
TestUtil.createSchema(con, "last_schema");
TestUtil.createTable(con, "last_schema.y", "last_schema_field_n text");
- stmt.execute("SET search_path TO first_schema, second_schema, last_schema, public");
+ stmt.execute("SET search_path TO first_schema, second_schema, last_schema, public;");
TypeInfo typeInfo = con.getTypeInfo();
int OID = typeInfo.getPGType("y");
ResultSet rs = stmt.executeQuery("SELECT 'second_schema.y'::regtype::oid");
assertTrue(rs.next());
assertEquals(OID, rs.getInt(1));
- assertFalse(rs.next());
+ assertTrue(!rs.next());
TestUtil.dropSchema(con, "first_schema");
TestUtil.dropSchema(con, "second_schema");
TestUtil.dropSchema(con, "third_schema");
@@ -116,10 +114,10 @@ public class SearchPathLookupTest {
TypeInfo typeInfo = con.getTypeInfo();
int OID = typeInfo.getPGType("x");
ResultSet rs = stmt
- .executeQuery("SELECT oid FROM pg_type WHERE typname = 'x' ORDER BY oid LIMIT 1");
+ .executeQuery("SELECT oid FROM pg_type WHERE typname = 'x' ORDER BY oid DESC LIMIT 1");
assertTrue(rs.next());
assertEquals(OID, rs.getInt(1));
- assertFalse(rs.next());
+ assertTrue(!rs.next());
TestUtil.dropSchema(con, "first_schema");
TestUtil.dropSchema(con, "second_schema");
} finally {
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc2/SupportCaseTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/SupportCaseTest.java
new file mode 100644
index 0000000..ccdab16
--- /dev/null
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc2/SupportCaseTest.java
@@ -0,0 +1,862 @@
+package org.postgresql.test.jdbc2;
+
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.postgresql.test.TestUtil;
+
+import java.sql.CallableStatement;
+import java.sql.DatabaseMetaData;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import static org.junit.Assert.assertEquals;
+
+public class SupportCaseTest extends BaseTest4 {
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ }
+
+ @After
+ public void tearDown() throws SQLException {
+ TestUtil.dropType(con, "compfoos");
+ TestUtil.dropTable(con, "test_user_type");
+ }
+
+ /*****************************************************************
+ * 描述:测试getTables方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testGetTables() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ con.setClientInfo("uppercaseAttributeName", "true");
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getTables(con.getCatalog(), "test", "COMPANY", new String[]{"TABLE"});
+ tables.next();
+ assertEquals("COMPANY", tables.getString("TABLE_NAME"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getColumns方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testGetColumns() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getColumns(con.getCatalog(), "test", "COMPANY", "ID");
+ tables.next();
+ assertEquals("ID", tables.getString("COLUMN_NAME"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getTablePrivileges方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testGetTablePrivileges() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getTablePrivileges(con.getCatalog(), "test", "COMPANY");
+ tables.next();
+ assertEquals("YES", tables.getString("IS_GRANTABLE"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getIndexInfo方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testGetIndexInfo() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getIndexInfo(con.getCatalog(), "test", "COMPANY", true, true);
+ tables.next();
+ assertEquals("TEST", tables.getString("TABLE_SCHEM"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getColumnPrivileges方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testGetColumnPrivileges() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getColumnPrivileges(con.getCatalog(), "test", "COMPANY", "id");
+ tables.next();
+ assertEquals("TEST", tables.getString("GRANTOR"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getBestRowIdentifier方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testGetBestRowIdentifier() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getBestRowIdentifier(con.getCatalog(), "test", "COMPANY", 1, true);
+ tables.next();
+ assertEquals("INT4", tables.getString("TYPE_NAME"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getPrimaryKeys方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testGetPrimaryKeys() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getPrimaryKeys(con.getCatalog(), "test", "COMPANY");
+ tables.next();
+ assertEquals("COMPANY_PKEY", tables.getString("PK_NAME"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getUDTs方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testGetUDTs() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getUDTs(con.getCatalog(), "test", "COMPANY", new int[]{2002});
+ tables.next();
+ assertEquals("TEST", tables.getString("type_schem"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getProcedureColumns方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testGetProcedureColumns() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getProcedureColumns(con.getCatalog(), "test", "test_proc_user_type_out", "id");
+ tables.next();
+ assertEquals("TEST_PROC_USER_TYPE_OUT", tables.getString("PROCEDURE_NAME"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getFunctions方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testGetFunctions() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getFunctions(con.getCatalog(), "test", null);
+ tables.next();
+ assertEquals("TEST", tables.getString("FUNCTION_SCHEM"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getProcedures方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testGetProcedures() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getProcedures(con.getCatalog(), "test", "test_proc_user_type_out");
+ tables.next();
+ assertEquals("TEST_PROC_USER_TYPE_OUT_16467", tables.getString("SPECIFIC_NAME"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getSchemas方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:运行方法看是否可以正常运行
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testGetSchemas() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getSchemas(con.getCatalog(), "test");
+ tables.next();
+ assertEquals("TEST", tables.getString("TABLE_SCHEM"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getTables方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:负向用例场景,大小写参数关闭时用户执行大写字段输入
+ * 期望输出:获取结果为空
+ ******************************************************************/
+ @Test
+ public void testFailGetTables() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getSchemas(con.getCatalog(), "test");
+ tables.next();
+ } catch (SQLException e) {
+ assertEquals(e.getMessage(), "查询结果指标位置不正确,您也许需要呼叫 ResultSet 的 next() 方法。");
+ }
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getColumns方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:负向用例场景,大小写参数关闭时用户执行大写字段输入
+ * 期望输出:获取结果为空
+ ******************************************************************/
+ @Test
+ public void testFailGetColumns() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getColumns(con.getCatalog(), "test", "COMPANY", "ID");
+ tables.next();
+ } catch (SQLException e) {
+ assertEquals(e.getMessage(), "查询结果指标位置不正确,您也许需要呼叫 ResultSet 的 next() 方法。");
+ }
+
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getTablePrivileges方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:负向用例场景,大小写参数关闭时用户执行大写字段输入
+ * 期望输出:获取结果为空
+ ******************************************************************/
+ @Test
+ public void testFailGetTablePrivileges() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getTablePrivileges(con.getCatalog(), "test", "COMPANY");
+ tables.next();
+ } catch (SQLException e) {
+ assertEquals(e.getMessage(), "查询结果指标位置不正确,您也许需要呼叫 ResultSet 的 next() 方法。");
+ }
+
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getIndexInfo方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:负向用例场景,大小写参数关闭时用户执行大写字段输入
+ * 期望输出:获取结果为空
+ ******************************************************************/
+ @Test
+ public void testFailGetIndexInfo() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getIndexInfo(con.getCatalog(), "test", "COMPANY", true, true);
+ tables.next();
+ } catch (SQLException e) {
+ assertEquals(e.getMessage(), "查询结果指标位置不正确,您也许需要呼叫 ResultSet 的 next() 方法。");
+ }
+
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getColumnPrivileges方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:负向用例场景,大小写参数关闭时用户执行大写字段输入
+ * 期望输出:获取结果为空
+ ******************************************************************/
+ @Test
+ public void testFailGetColumnPrivileges() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getColumnPrivileges(con.getCatalog(), "test", "COMPANY", "id");
+ tables.next();
+ } catch (SQLException e) {
+ assertEquals(e.getMessage(), "查询结果指标位置不正确,您也许需要呼叫 ResultSet 的 next() 方法。");
+ }
+
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getBestRowIdentifier方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:负向用例场景,大小写参数关闭时用户执行大写字段输入
+ * 期望输出:获取结果为空
+ ******************************************************************/
+ @Test
+ public void testFailGetBestRowIdentifier() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getBestRowIdentifier(con.getCatalog(), "test", "COMPANY", 1, true);
+ tables.next();
+ } catch (SQLException e) {
+ assertEquals(e.getMessage(), "查询结果指标位置不正确,您也许需要呼叫 ResultSet 的 next() 方法。");
+ }
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getPrimaryKeys方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:负向用例场景,大小写参数关闭时用户执行大写字段输入
+ * 期望输出:获取结果为空
+ ******************************************************************/
+ @Test
+ public void testFailGetPrimaryKeys() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getPrimaryKeys(con.getCatalog(), "test", "COMPANY");
+ tables.next();
+ } catch (SQLException e) {
+ assertEquals(e.getMessage(), "查询结果指标位置不正确,您也许需要呼叫 ResultSet 的 next() 方法。");
+ }
+
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getUDTs方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:负向用例场景,大小写参数关闭时用户执行大写字段输入
+ * 期望输出:获取结果为空
+ ******************************************************************/
+ @Test
+ public void testFailGetUDTs() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getUDTs(con.getCatalog(), "test", "COMPANY", new int[]{2002});
+ tables.next();
+ } catch (SQLException e) {
+ assertEquals(e.getMessage(), "查询结果指标位置不正确,您也许需要呼叫 ResultSet 的 next() 方法。");
+ }
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getProcedureColumns方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:负向用例场景,大小写参数关闭时用户执行大写字段输入
+ * 期望输出:获取结果为空
+ ******************************************************************/
+ @Test
+ public void testFailGetProcedureColumns() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getProcedureColumns(con.getCatalog(), "test", "test_proc_user_type_out", "id");
+ tables.next();
+ } catch (SQLException e) {
+ assertEquals(e.getMessage(), "查询结果指标位置不正确,您也许需要呼叫 ResultSet 的 next() 方法。");
+ }
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getFunctions方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:负向用例场景,大小写参数关闭时用户执行大写字段输入
+ * 期望输出:获取结果为空
+ ******************************************************************/
+ @Test
+ public void testFailGetFunctions() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getFunctions(con.getCatalog(), "test", null);
+ tables.next();
+ } catch (SQLException e) {
+ assertEquals(e.getMessage(), "查询结果指标位置不正确,您也许需要呼叫 ResultSet 的 next() 方法。");
+ }
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getProcedures方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:负向用例场景,大小写参数关闭时用户执行大写字段输入
+ * 期望输出:获取结果为空
+ ******************************************************************/
+ @Test
+ public void testFailGetProcedures() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getProcedures(con.getCatalog(), "test", "test_proc_user_type_out");
+ tables.next();
+ } catch (SQLException e) {
+ assertEquals(e.getMessage(), "查询结果指标位置不正确,您也许需要呼叫 ResultSet 的 next() 方法。");
+ }
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getSchemas方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:负向用例场景,大小写参数关闭时用户执行大写字段输入
+ * 期望输出:获取结果为空
+ ******************************************************************/
+ @Test
+ public void testFailGetSchemas() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getSchemas(con.getCatalog(), "test");
+ tables.next();
+ } catch (SQLException e) {
+ assertEquals(e.getMessage(), "查询结果指标位置不正确,您也许需要呼叫 ResultSet 的 next() 方法。");
+ }
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getTables方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:黑盒测试,开启参数,模拟用户输入场景,测试输入为大小写混合
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testBlackBoxGetTables() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getTables(con.getCatalog(), "Test", "Company", new String[]{"TABLE"});
+ tables.next();
+ assertEquals("COMPANY", tables.getString("TABLE_NAME"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getColumns方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:黑盒测试,开启参数,模拟用户输入场景,测试输入为大小写混合
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testBlackBoxGetColumns() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getColumns(con.getCatalog(), "Test", "Company", "ID");
+ tables.next();
+ assertEquals("ID", tables.getString("COLUMN_NAME"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getTablePrivileges方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:黑盒测试,开启参数,模拟用户输入场景,测试输入为大小写混合
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testBlackBoxGetTablePrivileges() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getTablePrivileges(con.getCatalog(), "Test", "Company");
+ tables.next();
+ assertEquals("YES", tables.getString("IS_GRANTABLE"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getIndexInfo方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:黑盒测试,开启参数,模拟用户输入场景,测试输入为大小写混合
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testBlackBoxGetIndexInfo() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getIndexInfo(con.getCatalog(), "Test", "Company", true, true);
+ tables.next();
+ assertEquals("TEST", tables.getString("TABLE_SCHEM"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getColumnPrivileges方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:黑盒测试,开启参数,模拟用户输入场景,测试输入为大小写混合
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testBlackBoxGetColumnPrivileges() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getColumnPrivileges(con.getCatalog(), "Test", "Company", "id");
+ tables.next();
+ assertEquals("TEST", tables.getString("GRANTOR"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getBestRowIdentifier方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:黑盒测试,开启参数,模拟用户输入场景,测试输入为大小写混合
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testBlackBoxGetBestRowIdentifier() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getBestRowIdentifier(con.getCatalog(), "Test", "Company", 1, true);
+ tables.next();
+ assertEquals("INT4", tables.getString("TYPE_NAME"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getPrimaryKeys方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:黑盒测试,开启参数,模拟用户输入场景,测试输入为大小写混合
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testBlackBoxGetPrimaryKeys() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getPrimaryKeys(con.getCatalog(), "Test", "Company");
+ tables.next();
+ assertEquals("COMPANY_PKEY", tables.getString("PK_NAME"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getUDTs方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:黑盒测试,开启参数,模拟用户输入场景,测试输入为大小写混合
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testBlackBoxGetUDTs() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getUDTs(con.getCatalog(), "Test", "Company", new int[]{2002});
+ tables.next();
+ assertEquals("TEST", tables.getString("type_schem"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getProcedureColumns方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:黑盒测试,开启参数,模拟用户输入场景,测试输入为大小写混合
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testBlackBoxGetProcedureColumns() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getProcedureColumns(con.getCatalog(), "Test", "test_proc_user_type_out", "id");
+ tables.next();
+ assertEquals("TEST_PROC_USER_TYPE_OUT", tables.getString("PROCEDURE_NAME"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getFunctions方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:黑盒测试,开启参数,模拟用户输入场景,测试输入为大小写混合
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testBlackBoxGetFunctions() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getFunctions(con.getCatalog(), "Test", null);
+ tables.next();
+ assertEquals("TEST", tables.getString("FUNCTION_SCHEM"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getProcedures方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:黑盒测试,开启参数,模拟用户输入场景,测试输入为大小写混合
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testBlackBoxGetProcedures() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getProcedures(con.getCatalog(), "Test", "test_proc_user_type_out");
+ tables.next();
+ assertEquals("TEST_PROC_USER_TYPE_OUT_16467", tables.getString("SPECIFIC_NAME"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+
+ /*****************************************************************
+ * 描述:测试getSchemas方法
+ * 被测对象:PgDatabaseMetaData
+ * 输入:无
+ * 测试场景:黑盒测试,开启参数,模拟用户输入场景,测试输入为大小写混合
+ * 期望输出:可以正常运行无报错
+ ******************************************************************/
+ @Test
+ public void testBlackBoxGetSchemas() throws SQLException {
+ Statement stmt = null;
+ CallableStatement cmt = null;
+ try {
+ DatabaseMetaData metaData = con.getMetaData();
+ ResultSet tables = metaData.getSchemas(con.getCatalog(), "Test");
+ tables.next();
+ assertEquals("TEST", tables.getString("TABLE_SCHEM"));
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cmt);
+ }
+ }
+}
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc3/GeneratedKeysTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc3/GeneratedKeysTest.java
index 2bd233d..7cca349 100644
--- a/pgjdbc/src/test/java/org/postgresql/test/jdbc3/GeneratedKeysTest.java
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc3/GeneratedKeysTest.java
@@ -90,7 +90,7 @@ public class GeneratedKeysTest extends BaseTest4 {
@Override
public void setUp() throws Exception {
super.setUp();
- TestUtil.createTable(con, "genkeys", "a serial, b varchar(5), c int");
+ TestUtil.createTempTable(con, "genkeys", "a serial, b varchar(5), c int");
}
@Override
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc3/Jdbc3BlobTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc3/Jdbc3BlobTest.java
new file mode 100644
index 0000000..21f5d27
--- /dev/null
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc3/Jdbc3BlobTest.java
@@ -0,0 +1,312 @@
+/*
+ * Copyright (c) 2005, PostgreSQL Global Development Group
+ * See the LICENSE file in the project root for more information.
+ */
+
+package org.postgresql.test.jdbc3;
+
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.postgresql.core.ServerVersion;
+import org.postgresql.test.TestUtil;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.sql.Blob;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+public class Jdbc3BlobTest {
+ private static final String TABLE = "blobtest";
+ private static final String INSERT = "INSERT INTO " + TABLE + " VALUES (1, lo_creat(-1))";
+ private static final String SELECT = "SELECT ID, DATA FROM " + TABLE + " WHERE ID = 1";
+
+ private Connection _conn;
+
+ @Before
+ public void setUp() throws Exception {
+ _conn = TestUtil.openDB();
+ TestUtil.createTable(_conn, TABLE, "ID INT PRIMARY KEY, DATA OID");
+ _conn.setAutoCommit(false);
+ }
+
+ @After
+ public void tearDown() throws SQLException {
+ _conn.setAutoCommit(true);
+ try {
+ Statement stmt = _conn.createStatement();
+ try {
+ stmt.execute("SELECT lo_unlink(DATA) FROM " + TABLE);
+ } finally {
+ try {
+ stmt.close();
+ } catch (Exception e) {
+ }
+ }
+ } finally {
+ TestUtil.dropTable(_conn, TABLE);
+ TestUtil.closeDB(_conn);
+ }
+ }
+
+ /**
+ * Test the writing and reading of a single byte.
+ */
+ @Test
+ public void test1Byte() throws SQLException {
+ byte[] data = {(byte) 'a'};
+ readWrite(data);
+ }
+
+ /**
+ * Test the writing and reading of a few bytes.
+ */
+ @Test
+ public void testManyBytes() throws SQLException {
+ byte[] data = "aaaaaaaaaa".getBytes();
+ readWrite(data);
+ }
+
+ /**
+ * Test writing a single byte with an offset.
+ */
+ @Test
+ public void test1ByteOffset() throws SQLException {
+ byte[] data = {(byte) 'a'};
+ readWrite(10, data);
+ }
+
+ /**
+ * Test the writing and reading of a few bytes with an offset.
+ */
+ @Test
+ public void testManyBytesOffset() throws SQLException {
+ byte[] data = "aaaaaaaaaa".getBytes();
+ readWrite(10, data);
+ }
+
+ /**
+ * Tests all of the byte values from 0 - 255.
+ */
+ @Test
+ public void testAllBytes() throws SQLException {
+ byte[] data = new byte[256];
+ for (int i = 0; i < data.length; i++) {
+ data[i] = (byte) i;
+ }
+ readWrite(data);
+ }
+
+ @Test
+ public void testTruncate() throws SQLException {
+ if (!TestUtil.haveMinimumServerVersion(_conn, ServerVersion.v8_3)) {
+ return;
+ }
+
+ byte[] data = new byte[100];
+ for (byte i = 0; i < data.length; i++) {
+ data[i] = i;
+ }
+ readWrite(data);
+
+ PreparedStatement ps = _conn.prepareStatement(SELECT);
+ ResultSet rs = ps.executeQuery();
+
+ assertTrue(rs.next());
+ Blob blob = rs.getBlob("DATA");
+
+ assertEquals(100, blob.length());
+
+ blob.truncate(50);
+ assertEquals(50, blob.length());
+
+ blob.truncate(150);
+ assertEquals(150, blob.length());
+
+ data = blob.getBytes(1, 200);
+ assertEquals(150, data.length);
+ for (byte i = 0; i < 50; i++) {
+ assertEquals(i, data[i]);
+ }
+
+ for (int i = 50; i < 150; i++) {
+ assertEquals(0, data[i]);
+ }
+ }
+
+ /**
+ *
+ * @param data data to write
+ * @throws SQLException if something goes wrong
+ */
+ public void readWrite(byte[] data) throws SQLException {
+ readWrite(1, data);
+ }
+
+ /**
+ *
+ * @param offset data offset
+ * @param data data to write
+ * @throws SQLException if something goes wrong
+ */
+ public void readWrite(int offset, byte[] data) throws SQLException {
+ PreparedStatement ps = _conn.prepareStatement(INSERT);
+ ps.executeUpdate();
+ ps.close();
+
+ ps = _conn.prepareStatement(SELECT);
+ ResultSet rs = ps.executeQuery();
+
+ assertTrue(rs.next());
+ Blob b = rs.getBlob("DATA");
+ b.setBytes(offset, data);
+
+ rs.close();
+ ps.close();
+
+ ps = _conn.prepareStatement(SELECT);
+ rs = ps.executeQuery();
+
+ assertTrue(rs.next());
+ b = rs.getBlob("DATA");
+ byte[] rspData = b.getBytes(offset, data.length);
+ assertArrayEquals("Request should be the same as the response", data, rspData);
+
+ rs.close();
+ ps.close();
+ }
+
+
+ /**
+ * Test the writing and reading of a single byte.
+ */
+ @Test
+ public void test1ByteStream() throws SQLException, IOException {
+ byte[] data = {(byte) 'a'};
+ readWriteStream(data);
+ }
+
+ /**
+ * Test the writing and reading of a few bytes.
+ */
+ @Test
+ public void testManyBytesStream() throws SQLException, IOException {
+ byte[] data = "aaaaaaaaaa".getBytes();
+ readWriteStream(data);
+ }
+
+ /**
+ * Test writing a single byte with an offset.
+ */
+ @Test
+ public void test1ByteOffsetStream() throws SQLException, IOException {
+ byte[] data = {(byte) 'a'};
+ readWriteStream(10, data);
+ }
+
+ /**
+ * Test the writing and reading of a few bytes with an offset.
+ */
+ @Test
+ public void testManyBytesOffsetStream() throws SQLException, IOException {
+ byte[] data = "aaaaaaaaaa".getBytes();
+ readWriteStream(10, data);
+ }
+
+ /**
+ * Tests all of the byte values from 0 - 255.
+ */
+ @Test
+ public void testAllBytesStream() throws SQLException, IOException {
+ byte[] data = new byte[256];
+ for (int i = 0; i < data.length; i++) {
+ data[i] = (byte) i;
+ }
+ readWriteStream(data);
+ }
+
+ public void readWriteStream(byte[] data) throws SQLException, IOException {
+ readWriteStream(1, data);
+ }
+
+
+ /**
+ * Reads then writes data to the blob via a stream.
+ */
+ public void readWriteStream(int offset, byte[] data) throws SQLException, IOException {
+ PreparedStatement ps = _conn.prepareStatement(INSERT);
+ ps.executeUpdate();
+ ps.close();
+
+ ps = _conn.prepareStatement(SELECT);
+ ResultSet rs = ps.executeQuery();
+
+ assertTrue(rs.next());
+ Blob b = rs.getBlob("DATA");
+ OutputStream out = b.setBinaryStream(offset);
+ out.write(data);
+ out.flush();
+ out.close();
+
+ rs.close();
+ ps.close();
+
+ ps = _conn.prepareStatement(SELECT);
+ rs = ps.executeQuery();
+
+ assertTrue(rs.next());
+ b = rs.getBlob("DATA");
+ InputStream in = b.getBinaryStream();
+ byte[] rspData = new byte[data.length];
+ in.skip(offset - 1);
+ in.read(rspData);
+ in.close();
+
+ assertArrayEquals("Request should be the same as the response", data, rspData);
+
+ rs.close();
+ ps.close();
+ }
+
+ @Test
+ public void testPattern() throws SQLException {
+ byte[] data = "abcdefghijklmnopqrstuvwxyx0123456789".getBytes();
+ byte[] pattern = "def".getBytes();
+
+ PreparedStatement ps = _conn.prepareStatement(INSERT);
+ ps.executeUpdate();
+ ps.close();
+
+ ps = _conn.prepareStatement(SELECT);
+ ResultSet rs = ps.executeQuery();
+
+ assertTrue(rs.next());
+ Blob b = rs.getBlob("DATA");
+ b.setBytes(1, data);
+
+ rs.close();
+ ps.close();
+
+ ps = _conn.prepareStatement(SELECT);
+ rs = ps.executeQuery();
+
+ assertTrue(rs.next());
+ b = rs.getBlob("DATA");
+ long position = b.position(pattern, 1);
+ byte[] rspData = b.getBytes(position, pattern.length);
+ assertArrayEquals("Request should be the same as the response", pattern, rspData);
+
+ rs.close();
+ ps.close();
+ }
+}
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc3/Jdbc3CallableStatementTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc3/Jdbc3CallableStatementTest.java
index cfc99ae..10157d4 100644
--- a/pgjdbc/src/test/java/org/postgresql/test/jdbc3/Jdbc3CallableStatementTest.java
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc3/Jdbc3CallableStatementTest.java
@@ -286,10 +286,10 @@ public class Jdbc3CallableStatementTest extends BaseTest4 {
boolean ret = stmt.execute("create or replace function "
+ "insert_bit( inout IMAX boolean, inout IMIN boolean, inout INUL boolean) as "
+ "'begin "
+ + "insert into bit_tab values( imax, imin, inul);"
+ "select max_val into imax from bit_tab;"
+ "select min_val into imin from bit_tab;"
+ "select null_val into inul from bit_tab;"
- + "insert into bit_tab values( imax, imin, inul);"
+ " end;' "
+ "language plpgsql;");
} catch (Exception ex) {
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc3/StringTypeParameterTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc3/StringTypeParameterTest.java
index 8b3b208..bb1d1d7 100644
--- a/pgjdbc/src/test/java/org/postgresql/test/jdbc3/StringTypeParameterTest.java
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc3/StringTypeParameterTest.java
@@ -140,7 +140,7 @@ public class StringTypeParameterTest extends BaseTest4 {
// all good
update.clearParameters();
- update.setObject(1, "happy");
+ update.setObject(1, "happy", Types.VARCHAR);
update.executeUpdate();
// all good
update.close();
@@ -149,14 +149,14 @@ public class StringTypeParameterTest extends BaseTest4 {
query.setString(1, "happy");
ResultSet rs = query.executeQuery();
assertTrue(rs.next());
- assertEquals("happy", rs.getString("m"));
+ assertEquals("happy", rs.getObject("m"));
rs.close();
query.clearParameters();
- query.setObject(1, "happy");
+ query.setObject(1, "happy", Types.VARCHAR);
rs = query.executeQuery();
assertTrue(rs.next());
- assertEquals("happy", rs.getObject("m").toString());
+ assertEquals("happy", rs.getObject("m"));
// all good
rs.close();
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc3/TypesTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc3/TypesTest.java
index 25ac65d..d75c29b 100644
--- a/pgjdbc/src/test/java/org/postgresql/test/jdbc3/TypesTest.java
+++ b/pgjdbc/src/test/java/org/postgresql/test/jdbc3/TypesTest.java
@@ -22,7 +22,6 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
-import java.util.Properties;
public class TypesTest extends BaseTest4 {
@@ -31,8 +30,6 @@ public class TypesTest extends BaseTest4 {
@Override
public void setUp() throws Exception {
super.setUp();
- Properties props = new Properties();
- updateProperties(props);
_conn = con;
Statement stmt = _conn.createStatement();
stmt.execute(
@@ -48,12 +45,6 @@ public class TypesTest extends BaseTest4 {
super.tearDown();
}
- @Override
- protected void updateProperties(Properties props) {
- super.updateProperties(props);
- props.setProperty("use_boolean", "true");
- }
-
@Test
public void testPreparedBoolean() throws SQLException {
PreparedStatement pstmt = _conn.prepareStatement("SELECT ?,?,?,?");
diff --git a/pgjdbc/src/test/java/org/postgresql/test/jdbc42/DeepInsertBatchAndBatchModeTest.java b/pgjdbc/src/test/java/org/postgresql/test/jdbc42/DeepInsertBatchAndBatchModeTest.java
deleted file mode 100644
index c3c6dd4..0000000
--- a/pgjdbc/src/test/java/org/postgresql/test/jdbc42/DeepInsertBatchAndBatchModeTest.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 2004, PostgreSQL Global Development Group
- * See the LICENSE file in the project root for more information.
- */
-
-package org.postgresql.test.jdbc42;
-
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import org.postgresql.PGProperty;
-import org.postgresql.test.TestUtil;
-import org.postgresql.test.jdbc2.BaseTest4;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Properties;
-
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-
-/**
- * Title: the DeepInsertBatchAndBatchModeTest class.
- *
- * Description: this to test use reWriteBatchInserts and batchMode props.
- *
- * @author justbk
- * @version [2.1.0, 2022/1/18]
- * @since 2022/1/18
- */
-@RunWith(Parameterized.class)
-public class DeepInsertBatchAndBatchModeTest extends BaseTest4 {
-
- private static final String TABLE_NAME = "batch_test";
-
- @Parameterized.Parameters(name = "binary = {0},batchMode = {1}, reWriteBatchedInserts = {2}")
- public static Iterable data() {
- Collection ids = new ArrayList();
- for (BinaryMode binaryMode : BinaryMode.values()) {
- for (String batchMode: new String[]{"ON", "OFF"}) {
- for (boolean reWriteBatched: new boolean[] {true, false}) {
- ids.add(new Object[]{binaryMode, batchMode, reWriteBatched});
- }
- }
- }
- return ids;
- }
-
- private String batchMode;
- private boolean reWriteBatch;
-
- public DeepInsertBatchAndBatchModeTest(BinaryMode mode, String batchMode, boolean reWriteBatch) {
- this.batchMode = batchMode;
- this.reWriteBatch = reWriteBatch;
- setBinaryMode(mode);
- }
-
- private void createTable() throws SQLException {
- TestUtil.createTable(con, TABLE_NAME, "id int primary key, data varchar(100)");
- }
-
- private void dropTable() throws SQLException {
- TestUtil.dropTable(con, TABLE_NAME);
- }
-
- @Override
- protected void updateProperties(Properties props) {
- PGProperty.REWRITE_BATCHED_INSERTS.set(props, reWriteBatch);
- props.setProperty("batchMode", this.batchMode);
- }
-
- @Before
- @Override
- public void setUp() throws Exception {
- super.setUp();
- createTable();
- }
-
- @After
- @Override
- public void tearDown() throws SQLException {
- dropTable();
- super.tearDown();
- }
-
- @Test
- public void test() throws SQLException {
- String sql = String.format("insert into batch_test values (?, ?)");
- int batchLen = 129;
- try (PreparedStatement ps = con.prepareStatement(sql)) {
- for (int i = 0; i < batchLen; i++) {
- ps.setInt(1, i);
- ps.setString(2, "aaa");
- ps.addBatch();
- }
- boolean bothSet = batchMode.equals("ON") && reWriteBatch;
- try {
- int[] result = ps.executeBatch();
- if (bothSet) {
- fail("both set batchMode and reWriteBatchedInserts can not run here!");
- }
- assertEquals(batchLen, result.length);
- } catch (SQLException sqlExp) {
- if (!bothSet) {
- throw sqlExp;
- }
- }
- }
- }
-}
diff --git a/pgjdbc/src/test/java/org/postgresql/test/log/MDC.java b/pgjdbc/src/test/java/org/postgresql/test/log/MDC.java
new file mode 100644
index 0000000..b45dcf8
--- /dev/null
+++ b/pgjdbc/src/test/java/org/postgresql/test/log/MDC.java
@@ -0,0 +1,44 @@
+package org.postgresql.test.log;
+
+import java.util.HashMap;
+
+public class MDC {
+ static final private ThreadLocal> threadLocal = new ThreadLocal<>();
+
+ public void put(String key, String val) {
+ if (key == null || val == null) {
+ throw new IllegalArgumentException("key or val cannot be null");
+ } else {
+ if (threadLocal.get() == null) {
+ threadLocal.set(new HashMap<>());
+ }
+ threadLocal.get().put(key, val);
+ }
+ }
+
+ public String get(String key) {
+ if (key == null) {
+ throw new IllegalArgumentException("key cannot be null");
+ } else if (threadLocal.get() == null) {
+ return null;
+ } else {
+ return threadLocal.get().get(key);
+ }
+ }
+
+ public void remove(String key) {
+ if (threadLocal.get() == null) {
+ return;
+ } else {
+ threadLocal.get().remove(key);
+ }
+ }
+
+ public void clear() {
+ if (threadLocal.get() == null) {
+ return;
+ } else {
+ threadLocal.get().clear();
+ }
+ }
+}
diff --git a/pgjdbc/src/test/java/org/postgresql/test/log/OpenGaussTraceImpl.java b/pgjdbc/src/test/java/org/postgresql/test/log/OpenGaussTraceImpl.java
new file mode 100644
index 0000000..796a9e7
--- /dev/null
+++ b/pgjdbc/src/test/java/org/postgresql/test/log/OpenGaussTraceImpl.java
@@ -0,0 +1,22 @@
+package org.postgresql.test.log;
+
+import org.postgresql.log.Tracer;
+
+public class OpenGaussTraceImpl implements Tracer {
+ private static MDC mdc = new MDC();
+
+ private final String TRACE_ID_KEY = "traceId";
+
+ public void set(String traceId) {
+ mdc.put(TRACE_ID_KEY, traceId);
+ }
+
+ public void reset() {
+ mdc.clear();
+ }
+
+ @Override
+ public String getTraceId() {
+ return mdc.get(TRACE_ID_KEY);
+ }
+}
diff --git a/pgjdbc/src/test/java/org/postgresql/test/log/TraceTest.java b/pgjdbc/src/test/java/org/postgresql/test/log/TraceTest.java
new file mode 100644
index 0000000..8e2dab1
--- /dev/null
+++ b/pgjdbc/src/test/java/org/postgresql/test/log/TraceTest.java
@@ -0,0 +1,237 @@
+package org.postgresql.test.log;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.postgresql.test.TestUtil;
+import org.postgresql.test.jdbc2.BaseTest4;
+
+import java.sql.CallableStatement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.sql.Types;
+import java.util.UUID;
+
+public class TraceTest extends BaseTest4 {
+
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ TestUtil.createTable(con, "test_trace_id", "id int,name varchar(100)");
+ }
+
+ @After
+ public void tearDown() throws SQLException {
+ TestUtil.dropTable(con, "test_trace_id");
+ }
+
+ /**
+ * Use statement to execute single group and multiple groups of SQL, traceId is correctly associated.
+ *
+ * @throws SQLException if a JDBC or database problem occurs.
+ */
+ @Test
+ public void testStatementSendTraceId() throws SQLException {
+ OpenGaussTraceImpl openGaussTrace = new OpenGaussTraceImpl();
+ Statement stmt = null;
+ try {
+ stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
+ // simulate one request with one sql.
+ String traceId1 = UUID.randomUUID().toString().replaceAll("-", "");
+ openGaussTrace.set(traceId1);
+ stmt.execute("insert into test_trace_id values(1,'test1')");
+ openGaussTrace.reset();
+ ResultSet rs1 =
+ stmt.executeQuery("select query,trace_id from statement_history where trace_id='" + traceId1 + "'");
+ rs1.last();
+ Assert.assertEquals(1, rs1.getRow());
+
+ // simulate one request with multiple sql.
+ String traceId2 = UUID.randomUUID().toString().replaceAll("-", "");
+ openGaussTrace.set(traceId2);
+ stmt.execute("insert into test_trace_id values(2,'test2')");
+ stmt.execute("select count(1) from test_trace_id");
+ openGaussTrace.reset();
+ ResultSet rs2 =
+ stmt.executeQuery("select query,trace_id from statement_history where trace_id='" + traceId2 + "'");
+ rs2.last();
+ Assert.assertEquals(2, rs1.getRow());
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ }
+ }
+
+ /**
+ * Use PreparedStatement to execute single group and multiple groups of SQL, traceId is correctly associated.
+ *
+ * @throws SQLException if a JDBC or database problem occurs.
+ */
+ @Test
+ public void testPrepareStatementSendTraceId() throws SQLException {
+ OpenGaussTraceImpl openGaussTrace = new OpenGaussTraceImpl();
+ PreparedStatement pstm = null;
+ Statement stmt = null;
+ try {
+ stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
+ // simulate one request with one sql.
+ String traceId1 = UUID.randomUUID().toString().replaceAll("-", "");
+ openGaussTrace.set(traceId1);
+ pstm = con.prepareStatement("insert into test_trace_id values(?,?)");
+ pstm.setInt(1, 3);
+ pstm.setString(2, "test3");
+ pstm.execute();
+ openGaussTrace.reset();
+ ResultSet rs1 =
+ stmt.executeQuery("select query,trace_id from statement_history where trace_id='" + traceId1 + "'");
+ rs1.last();
+ Assert.assertEquals(1, rs1.getRow());
+
+ // simulate one request with multiple sql.
+ String traceId2 = UUID.randomUUID().toString().replaceAll("-", "");
+ openGaussTrace.set(traceId2);
+ pstm = con.prepareStatement("select * from test_trace_id where id = ?");
+ pstm.setInt(1, 3);
+ pstm.execute();
+ pstm = con.prepareStatement("insert into test_trace_id values(?,?)");
+ pstm.setInt(1, 4);
+ pstm.setString(2, "test4");
+ pstm.execute();
+ openGaussTrace.reset();
+ openGaussTrace.reset();
+ ResultSet rs2 =
+ stmt.executeQuery("select query,trace_id from statement_history where trace_id='" + traceId2 + "'");
+ rs1.last();
+ Assert.assertEquals(2, rs2.getRow());
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(pstm);
+ }
+ }
+
+ /**
+ * Use CallableStatement to execute single group and multiple groups of SQL, traceId is correctly associated.
+ *
+ * @throws SQLException if a JDBC or database problem occurs.
+ */
+ @Test
+ public void testCallableStatementendTraceId() throws SQLException {
+ OpenGaussTraceImpl openGaussTrace = new OpenGaussTraceImpl();
+ Statement stmt = null;
+ CallableStatement cs = null;
+ try {
+ stmt.execute("create function test_func1() " +
+ "RETURNS int AS " +
+ "$$ " +
+ "DECLARE " +
+ "total int; " +
+ "BEGIN " +
+ "select 255 into total;" +
+ "return total; " +
+ "END " +
+ "$$ LANGUAGE PLPGSQL;");
+ stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
+ // simulate one request with one sql.
+ String traceId1 = UUID.randomUUID().toString().replaceAll("-", "");
+ openGaussTrace.set(traceId1);
+ cs = con.prepareCall("{? = call test_func1()}");
+ cs.registerOutParameter(1, Types.INTEGER);
+ cs.execute();
+ openGaussTrace.reset();
+ ResultSet rs1 =
+ stmt.executeQuery("select query,trace_id from statement_history where trace_id='" + traceId1 + "'");
+ rs1.last();
+ Assert.assertEquals(1, rs1.getRow());
+
+ // simulate one request with multiple sql.
+ String traceId2 = UUID.randomUUID().toString().replaceAll("-", "");
+ openGaussTrace.set(traceId2);
+ cs = con.prepareCall("{? = call test_func1()}");
+ cs.registerOutParameter(1, Types.INTEGER);
+ cs.execute();
+ cs = con.prepareCall("{? = call test_func1()}");
+ cs.registerOutParameter(1, Types.INTEGER);
+ cs.execute();
+ openGaussTrace.reset();
+ ResultSet rs2 =
+ stmt.executeQuery("select query,trace_id from statement_history where trace_id='" + traceId2 + "'");
+ rs2.last();
+ Assert.assertEquals(2, rs1.getRow());
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ TestUtil.closeQuietly(cs);
+ }
+ }
+
+ /**
+ * Batch execution scenarios.
+ *
+ * @throws SQLException if a JDBC or database problem occurs.
+ */
+ @Test
+ public void testBatchTraceId() throws SQLException {
+ OpenGaussTraceImpl openGaussTrace = new OpenGaussTraceImpl();
+ PreparedStatement pstm = null;
+ Statement stmt = null;
+ try {
+ stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
+ // if it exceeds 32 bits, it will be intercepted
+ String traceId1 = UUID.randomUUID().toString().replaceAll("-", "");
+ openGaussTrace.set(traceId1 + "test");
+ pstm = con.prepareStatement("insert into test_trace_id values(?,?)");
+ pstm.setInt(1, 8);
+ pstm.setString(2, "test8");
+ pstm.addBatch();
+ pstm.setInt(1, 9);
+ pstm.setString(2, "test9");
+ pstm.addBatch();
+ pstm.execute();
+ openGaussTrace.reset();
+ ResultSet rs1 =
+ stmt.executeQuery("select query,trace_id from statement_history where trace_id='" + traceId1 + "'");
+ rs1.last();
+ Assert.assertEquals(1, rs1.getRow());
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ }
+ }
+
+ /**
+ * Verify that the length exceeds 32 bits or is empty
+ *
+ * @throws SQLException if a JDBC or database problem occurs.
+ */
+ @Test
+ public void testLengthNotmatchTraceId() throws SQLException {
+ OpenGaussTraceImpl openGaussTrace = new OpenGaussTraceImpl();
+ Statement stmt = null;
+ try {
+ stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
+ // if it exceeds 32 bits, it will be intercepted
+ String traceId1 = UUID.randomUUID().toString().replaceAll("-", "");
+ openGaussTrace.set(traceId1 + "test");
+ stmt.execute("insert into test_trace_id values(5,'test5')");
+ openGaussTrace.reset();
+ ResultSet rs1 =
+ stmt.executeQuery("select query,trace_id from statement_history where trace_id='" + traceId1 + "'");
+ rs1.last();
+ Assert.assertEquals(1, rs1.getRow());
+
+ // empty string scene,output warning log
+ openGaussTrace.set("");
+ stmt.execute("insert into test_trace_id values(6,'test6')");
+ openGaussTrace.reset();
+
+ // null.
+ openGaussTrace.set(null);
+ stmt.execute("insert into test_trace_id values(7,'test7')");
+ openGaussTrace.reset();
+
+ } finally {
+ TestUtil.closeQuietly(stmt);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/pgjdbc/src/test/java/org/postgresql/util/ObjectFactoryTest.java b/pgjdbc/src/test/java/org/postgresql/util/ObjectFactoryTest.java
new file mode 100644
index 0000000..8df9e7a
--- /dev/null
+++ b/pgjdbc/src/test/java/org/postgresql/util/ObjectFactoryTest.java
@@ -0,0 +1,91 @@
+package org.postgresql.util;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+
+import org.postgresql.PGProperty;
+import org.postgresql.jdbc.SslMode;
+import org.postgresql.test.TestUtil;
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Assertions;
+import org.opentest4j.MultipleFailuresError;
+
+import java.sql.SQLException;
+import java.util.Properties;
+
+import javax.net.SocketFactory;
+public class ObjectFactoryTest {
+ Properties props = new Properties();
+
+ static class BadObject {
+ static boolean wasInstantiated = false;
+
+ BadObject() {
+ wasInstantiated = true;
+ throw new RuntimeException("I should not be instantiated");
+ }
+ }
+
+ private void testInvalidInstantiation(PGProperty prop, PSQLState expectedSqlState) {
+ prop.set(props, BadObject.class.getName());
+
+ BadObject.wasInstantiated = false;
+ SQLException ex = assertThrows(SQLException.class, () -> {
+ TestUtil.openDB(props);
+ });
+
+ try {
+ Assertions.assertAll(
+ () -> assertFalse(BadObject.wasInstantiated, "ObjectFactory should not have "
+ + "instantiated bad object for " + prop),
+ () -> assertEquals(expectedSqlState.getState(), ex.getSQLState(), () -> "#getSQLState()"),
+ () -> {
+ assertThrows(
+ ClassCastException.class,
+ () -> {
+ throw ex.getCause();
+ },
+ () -> "Wrong class specified for " + prop.name()
+ + " => ClassCastException is expected in SQLException#getCause()"
+ );
+ }
+ );
+ } catch (MultipleFailuresError e) {
+ // Add the original exception so it is easier to understand the reason for the test to fail
+ e.addSuppressed(ex);
+ }
+ }
+
+ @Test
+ public void testInvalidSocketFactory() {
+ testInvalidInstantiation(PGProperty.SOCKET_FACTORY, PSQLState.CONNECTION_FAILURE);
+ }
+
+ @Test
+ public void testInvalidSSLFactory() {
+ TestUtil.assumeSslTestsEnabled();
+ // We need at least "require" to trigger SslSockerFactory instantiation
+ PGProperty.SSL_MODE.set(props, SslMode.REQUIRE.value);
+ testInvalidInstantiation(PGProperty.SSL_FACTORY, PSQLState.CONNECTION_FAILURE);
+ }
+
+ @Test
+ public void testInvalidSslHostnameVerifier() {
+ TestUtil.assumeSslTestsEnabled();
+ // Hostname verification is done at verify-full level only
+ PGProperty.SSL_MODE.set(props, SslMode.VERIFY_FULL.value);
+ PGProperty.SSL_ROOT_CERT.set(props, TestUtil.getSslTestCertPath("goodroot.crt"));
+ testInvalidInstantiation(PGProperty.SSL_HOSTNAME_VERIFIER, PSQLState.CONNECTION_FAILURE);
+ }
+
+ @Test
+ public void testInstantiateInvalidSocketFactory() {
+ Properties props = new Properties();
+ assertThrows(ClassCastException.class, () -> {
+ ObjectFactory.instantiate(SocketFactory.class, BadObject.class.getName(), props,
+ false, null);
+ });
+ }
+}
diff --git a/pom.xml b/pom.xml
index 659acf0..a6f1587 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
https://github.com/pgjdbc/pgjdbc
- jdbc
+ pgjdbc
diff --git a/build.sh b/script/build.sh
old mode 100755
new mode 100644
similarity index 52%
rename from build.sh
rename to script/build.sh
index 885b252..dd46545
--- a/build.sh
+++ b/script/build.sh
@@ -16,15 +16,17 @@
# ----------------------------------------------------------------------------
# Description : shell script for jdbc package.
#############################################################################
+set -e
BUILD_FAILED=1
java_path=""
ant_path=""
-JDBC_DIR=$(dirname $(readlink -f $0))
+JDBC_DIR="$(dirname $(readlink -f $0))/../../openGauss-connector-jdbc"
LOG_FILE=$JDBC_DIR/logfile
-THIRD_DIR=$JDBC_DIR/buildtools
+THIRD_DIR="$(dirname $(readlink -f $0))/../../../.."
+ARCH=$(uname -m)
+MAVEN_SETTINGS=$JDBC_DIR/buildtools/settings.xml
libs=$JDBC_DIR/libs
-NOTICE_FILE='Copyright Notice.doc'
#detect platform information.
PLATFORM=32
bit=$(getconf LONG_BIT)
@@ -43,6 +45,9 @@ elif [ -f "/etc/openEuler-release" ]; then
elif [ -f "/etc/centos-release" ]; then
kernel=$(cat /etc/centos-release | awk -F ' ' '{print $1}' | tr A-Z a-z)
version=$(cat /etc/centos-release | awk -F '(' '{print $2}'| awk -F ')' '{print $1}' | tr A-Z a-z)
+elif [ -f "/etc/kylin-release" ]; then
+ kernel=$(cat /etc/kylin-release | awk -F ' ' '{print $1}' | tr A-Z a-z)
+ version=$(cat /etc/kylin-release | awk '{print $6}' | tr A-Z a-z)
else
kernel=$(lsb_release -d | awk -F ' ' '{print $2}'| tr A-Z a-z)
version=$(lsb_release -r | awk -F ' ' '{print $2}')
@@ -50,37 +55,28 @@ fi
if [ X"$kernel" == X"euleros" ]; then
dist_version="EULER"
-elif [ X"$kernel" == X"centos" ]; then
+elif [ X"$kernel" == X"centos" ]; then
dist_version="CENTOS"
-elif [ X"$kernel" == X"openeuler" ]; then
+elif [ X"$kernel" == X"openeuler" ]; then
dist_version="OPENEULER"
+elif [ X"$kernel" == X"kylin" ]; then
+ dist_version="KYLIN"
+elif [ X"$kernel" = X"suse" ]; then
+ dist_version="SUSE"
else
- echo "Only support EulerOS, OPENEULER(aarch64) and CentOS platform."
+ echo "Only support EulerOS, OPENEULER(aarch64), SUSE, and CentOS platform."
echo "Kernel is $kernel"
exit 1
fi
-export PLAT_FORM_STR=$(sh "${JDBC_DIR}/get_PlatForm_str.sh")
declare install_package_format='tar'
declare mppdb_version='GaussDB Kernel'
declare mppdb_name_for_package="$(echo ${mppdb_version} | sed 's/ /-/g')"
-declare version_number='V500R001C20'
+declare version_number='V500R002C10'
declare version_string="${mppdb_name_for_package}-${version_number}"
declare package_pre_name="${version_string}-${dist_version}-${PLATFORM}bit"
declare jdbc_package_name="${package_pre_name}-Jdbc.${install_package_format}.gz"
-coretype=$(uname -p)
-mvn_name="apache-maven-3.6.3-bin.tar.gz"
-jdk_name="OpenJDK8U-jdk_x64_linux_hotspot_8u222b10.tar.gz"
-
-if [ X"$coretype" == X"aarch64" ]; then
- jdk_name="OpenJDK8U-jdk_aarch64_linux_hotspot_8u222b10.tar.gz"
-fi
-
-tar -zxvf buildtools/$jdk_name -C buildtools/ > /dev/null
-mkdir -p buildtools/maven
-tar -zxvf buildtools/$mvn_name -C buildtools/maven/ > /dev/null
-
die()
{
echo "ERROR: $@"
@@ -90,91 +86,102 @@ die()
function prepare_java_env()
{
echo "Prepare the build enviroment."
- export JAVA_HOME=$THIRD_DIR/jdk8u222-b10
+ export JAVA_HOME=$THIRD_DIR/platform/huaweijdk8/${ARCH}/jdk
export JRE_HOME=$JAVA_HOME/jre
export LD_LIBRARY_PATH=$JRE_HOME/lib/amd64/server:$LD_LIBRARY_PATH
- export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
- JAVA_VERSION=`java -version 2>&1 | awk -F '"' '/version/ {print $2}'`
+ export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
+ JAVA_VERSION=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}')
echo java version is $JAVA_VERSION
}
function prepare_env()
{
prepare_java_env
- prepare_maven_env
}
-function prepare_maven_env()
-{
- export MAVEN_HOME=$THIRD_DIR/maven/apache-maven-3.6.3/
- export PATH=$MAVEN_HOME/bin:$PATH
- MAVEN_VERSION=`mvn -v 2>&1 | awk '/Apache Maven / {print $3}'`
- echo maven version is $MAVEN_VERSION
-}
function install_jdbc()
{
export JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF8"
+ export HUAWEI_JDBC_PACKAGE_NAME='com.huawei.gauss200.jdbc'
+ export HUAWEI_JDBC_PACKAGE_DIR=$(echo $HUAWEI_JDBC_PACKAGE_NAME | sed 's#\.#/#g')
+ export HUAWEI_OPENGAUSSJDBC_PACKAGE_NAME='com.huawei.opengauss.jdbc'
+ export HUAWEI_OPENGAUSSJDBC_PACKAGE_DIR=$(echo $HUAWEI_JDBC_PACKAGE_NAME | sed 's#\.#/#g')
export COMMIT=$(git rev-parse --short HEAD)
- export OPENGAUSS_PACKAGE_NAME="org.opengauss";
-
export GS_VERSION="compiled at $(date +%Y-%m-%d-%H:%M:%S) build ${COMMIT}"
export OUTPUT_DIR="${JDBC_DIR}/output"
echo "Begin make jdbc..."
export CLASSPATH=".:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar"
echo ${JDBC_DIR}
- cd "${JDBC_DIR}/shade"
- mvn clean install -Dmaven.test.skip=true >> "$LOG_FILE" 2>&1
- cd "${JDBC_DIR}/shade/target"
- jar -xf demo-0.0.1-SNAPSHOT.jar
- rm -rf "${JDBC_DIR}/shade/temp/"
- mkdir -p "${JDBC_DIR}/shade/temp/"
- cp -r ./com "${JDBC_DIR}/shade/temp/"
- cd "${JDBC_DIR}/shade/temp"
- find ./com -name "*" | sort |xargs zip demo-0.0.1-SNAPSHOT.jar >> "$LOG_FILE" 2>&1
- mvn install:install-file -Dfile=${JDBC_DIR}/shade/temp/demo-0.0.1-SNAPSHOT.jar -DgroupId=com.huawei -DartifactId=demo-0.0.1-SNAPSHOT -Dversion=0.0.1 -Dpackaging=jar
- if [ $? -ne 0 ]; then
- die "mvn install demo failed."
- fi
rm -rf "${JDBC_DIR}/jdbc"
cp "${JDBC_DIR}/pgjdbc" "${JDBC_DIR}/jdbc" -r
cd "${JDBC_DIR}/jdbc"
find . -name 'Driver.java' | xargs sed -i "s/@GSVERSION@/${GS_VERSION}/g"
- mvn clean install -Dmaven.test.skip=true >> "$LOG_FILE" 2>&1
+ mvn clean install --settings ${MAVEN_SETTINGS} -Dmaven.test.skip=true >> "$LOG_FILE" 2>&1
if [ $? -ne 0 ]; then
- die "mvn install driver failed."
+ die "mvn failed."
fi
echo ${OUTPUT_DIR}
if [ ! -d "${OUTPUT_DIR}" ]; then
mkdir ${OUTPUT_DIR}
fi
- cd ${OUTPUT_DIR}
- rm -rf *.jar
- version=`awk '/[^<]+<\/version>/{gsub(/|<\/version>/,"",$1);print $1;exit;}' ${JDBC_DIR}/jdbc/pom.xml`
- mv ${JDBC_DIR}/jdbc/target/opengauss-jdbc-${version}.jar ./postgresql.jar
- echo "Successfully make postgresql.jar"
-
+ mkdir ${JDBC_DIR}/jdbc/target/tmp
+ mv ${JDBC_DIR}/jdbc/target/opengauss-jdbc-2.0.0.jar ${JDBC_DIR}/jdbc/target/tmp
+ cd ${JDBC_DIR}/jdbc/target/tmp
+ jar -xvf opengauss-jdbc-2.0.0.jar
+ rm -rf opengauss-jdbc-2.0.0.jar
+ zip -r opengauss-jdbc-2.0.0.jar ./ >> "$LOG_FILE" 2>&1
+ mv ${JDBC_DIR}/jdbc/target/tmp/opengauss-jdbc-2.0.0.jar ${OUTPUT_DIR}/gsjdbc4.jar
rm -rf "${JDBC_DIR}/jdbc"
- cp "${JDBC_DIR}/pgjdbc" "${JDBC_DIR}/jdbc" -r
+ cp "${JDBC_DIR}/pgjdbc" "${JDBC_DIR}/jdbc" -r
cd "${JDBC_DIR}/jdbc"
+ echo "Successfully make gsjdbc4.jar"
find . -name 'Driver.java' | xargs sed -i "s/@GSVERSION@/${GS_VERSION}/g"
- find . -name 'Driver.java' | xargs sed -i "s/jdbc:postgresql:/jdbc:opengauss:/g"
- find . -name 'java.sql.Driver' | xargs sed -i "s#org\.postgresql#${OPENGAUSS_PACKAGE_NAME}#g"
- find . -name '*.java' -type f | xargs sed -i "s#org\.postgresql#${OPENGAUSS_PACKAGE_NAME}#g"
+ find -name '*.java' -type f | xargs sed -i "s#org\.postgresql#${HUAWEI_JDBC_PACKAGE_NAME}#g"
+ find . -name 'Driver.java' | xargs sed -i "s/jdbc:postgresql:/jdbc:gaussdb:/g"
if [ $? -ne 0 ]; then
- die "failed to replace url name"
+ die "failed to replace url name."
+ fi
+ find . -name 'BaseDataSource.java' | xargs sed -i "s/jdbc:postgresql:/jdbc:gaussdb:/g"
+ if [ $? -ne 0 ]; then
+ die "failed to replace url name."
+ fi
+ mvn clean install --settings ${MAVEN_SETTINGS} -Dmaven.test.skip=true >> "$LOG_FILE" 2>&1
+ if [ $? -ne 0 ]; then
+ die "mvn failed."
+ fi
+ mkdir ${JDBC_DIR}/jdbc/target/tmp
+ mv ${JDBC_DIR}/jdbc/target/opengauss-jdbc-2.0.0.jar ${JDBC_DIR}/jdbc/target/tmp
+ cd ${JDBC_DIR}/jdbc/target/tmp
+ jar -xvf opengauss-jdbc-2.0.0.jar
+ rm -rf opengauss-jdbc-2.0.0.jar
+ zip -r opengauss-jdbc-2.0.0.jar ./ >> "$LOG_FILE" 2>&1
+ mv ${JDBC_DIR}/jdbc/target/tmp/opengauss-jdbc-2.0.0.jar ${OUTPUT_DIR}/gsjdbc200.jar
+ rm -rf "${JDBC_DIR}/jdbc"
+ cp "${JDBC_DIR}/pgjdbc" "${JDBC_DIR}/jdbc" -r
+ cd "${JDBC_DIR}/jdbc"
+ echo "Successfully make gsjdbc200.jar"
+ find . -name 'Driver.java' | xargs sed -i "s/@GSVERSION@/${GS_VERSION}/g"
+ find . -name '*.java' -type f | xargs sed -i "s#org\.postgresql#${HUAWEI_OPENGAUSSJDBC_PACKAGE_NAME}#g"
+ find . -name 'Driver.java' | xargs sed -i "s/jdbc:postgresql:/jdbc:opengauss:/g"
+ if [ $? -ne 0 ]; then
+ die "failed to replace url name."
fi
find . -name 'BaseDataSource.java' | xargs sed -i "s/jdbc:postgresql:/jdbc:opengauss:/g"
if [ $? -ne 0 ]; then
- die "fail to replace url name in BaseDataSource"
+ die "failed to replace url name."
fi
-
- mvn clean install -Dmaven.test.skip=true >> "$LOG_FILE" 2>&1
- cp ${JDBC_DIR}/jdbc/target/opengauss-jdbc-${version}.jar ${OUTPUT_DIR}/
- echo "Successfully make opengauss-jdbc jar package"
-
- cd ${OUTPUT_DIR}/
- tar -zcvf ${JDBC_DIR}/openGauss-${version}-JDBC.tar.gz *.jar
- echo "Successfully make jdbc jar package"
+ mvn clean install --settings ${MAVEN_SETTINGS} -Dmaven.test.skip=true >> "$LOG_FILE" 2>&1
+ if [ $? -ne 0 ]; then
+ die "mvn failed."
+ fi
+ mkdir ${JDBC_DIR}/jdbc/target/tmp
+ mv ${JDBC_DIR}/jdbc/target/opengauss-jdbc-2.0.0.jar ${JDBC_DIR}/jdbc/target/tmp
+ cd ${JDBC_DIR}/jdbc/target/tmp
+ jar -xvf opengauss-jdbc-2.0.0.jar
+ rm -rf opengauss-jdbc-2.0.0.jar
+ zip -r opengauss-jdbc-2.0.0.jar ./ >> "$LOG_FILE" 2>&1
+ mv ${JDBC_DIR}/jdbc/target/tmp/opengauss-jdbc-2.0.0.jar ${OUTPUT_DIR}/opengaussjdbc.jar
+ echo "Successfully make opengaussjdbc.jar"
}
function clean()
@@ -212,56 +219,50 @@ function select_package_command()
function make_package()
{
cd ${JDBC_DIR}/output
- cp ${JDBC_DIR}/"${NOTICE_FILE}" ./
select_package_command
echo "packaging jdbc..."
- $package_command "${jdbc_package_name}" ./gsjdbc4.jar "${NOTICE_FILE}" >> "$LOG_FILE" 2>&1
+ $package_command "${jdbc_package_name}" ./gsjdbc200.jar ./gsjdbc4.jar ./opengaussjdbc.jar >> "$LOG_FILE" 2>&1
if [ $? -ne 0 ]; then
- die "$package_command ${jdbc_package_name} failed"
+ die "$package_command ${jdbc_package_name} failed"
fi
- cp "${jdbc_package_name}" ../
+ cd $JDBC_DIR
+ cp ./output/"${jdbc_package_name}" ../../../output
echo "$pkgname tools is ${jdbc_package_name} of ${JDBC_DIR} directory " >> "$LOG_FILE" 2>&1
echo "success!"
}
-function registerJars()
+function register_jars()
{
- for src in `find $third_part_lib -name '*.jar'`
- do
- cp $src $libs/
- done
- echo "copy finished"
+ cd $THIRD_PART_LIB/common/slf4j
+ cp *.jar $libs
+
cd $libs
prepare_env
- mvn install:install-file -Dfile=./commons-logging-1.2.jar -DgroupId=commons-logging -DartifactId=commons-logging -Dversion=1.2 -Dpackaging=jar
- mvn install:install-file -Dfile=./commons-codec-1.11.jar -DgroupId=commons-codec -DartifactId=commons-codec -Dversion=1.11 -Dpackaging=jar
- mvn install:install-file -Dfile=./httpclient-4.5.13.jar -DgroupId=org.apache.httpcomponents -DartifactId=httpclient -Dversion=4.5.13 -Dpackaging=jar
- mvn install:install-file -Dfile=./httpcore-4.4.13.jar -DgroupId=org.apache.httpcomponents -DartifactId=httpcore -Dversion=4.4.13 -Dpackaging=jar
- mvn install:install-file -Dfile=./fastjson-1.2.70.jar -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.2.70 -Dpackaging=jar
- mvn install:install-file -Dfile=./joda-time-2.10.6.jar -DgroupId=joda-time -DartifactId=joda-time -Dversion=2.10.6 -Dpackaging=jar
- mvn install:install-file -Dfile=./jackson-databind-2.11.2.jar -DgroupId=com.fasterxml.jackson.core -DartifactId=jackson-databind -Dversion=2.11.2 -Dpackaging=jar
- mvn install:install-file -Dfile=./jackson-core-2.11.2.jar -DgroupId=com.fasterxml.jackson.core -DartifactId=jackson-core -Dversion=2.11.2 -Dpackaging=jar
- mvn install:install-file -Dfile=./jackson-annotations-2.11.2.jar -DgroupId=com.fasterxml.jackson.core -DartifactId=jackson-annotations -Dversion=2.11.2 -Dpackaging=jar
- mvn install:install-file -Dfile=./slf4j-api-1.7.30.jar -DgroupId=org.slf4j -DartifactId=slf4j-api -Dversion=1.7.30 -Dpackaging=jar
- mvn install:install-file -Dfile=./java-sdk-core-3.0.12.jar -DgroupId=com.huawei.apigateway -DartifactId=hw-java-sdk-core -Dversion=3.0.12 -Dpackaging=jar
+ mvn install:install-file -Dfile=./slf4j-api-1.7.30.jar -DgroupId=org.slf4j -DartifactId=slf4j-api -Dversion=1.7.30 -Dpackaging=jar
}
prepare_env
-export third_part_lib=""
+export THIRD_PART_LIB=""
if [ ! -d "${libs}" ]; then
mkdir ${libs}
fi
-case $1 in
+case "$1" in
-3rd | --3rd)
if [ ! -n "$2" ]; then
die "3rd should not be empty"
fi
- third_part_lib="$2"
- registerJars
+ THIRD_PART_LIB="$2"
+ register_jars
;;
*);;
esac
install_jdbc
-clean
+make_package
+if [ "$1" = "-n" ] ;then
+ echo "the temporary directory has not been cleaned up, please clean up by yourself!"
+else
+ echo "clean up temporary directory!"
+ clean
+fi
echo "now, all packages has finished!"
exit 0
diff --git a/shade/pom.xml b/shade/pom.xml
index 604b9c8..a9e982d 100644
--- a/shade/pom.xml
+++ b/shade/pom.xml
@@ -3,148 +3,4 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
- com.huawei
- demo
- 0.0.1-SNAPSHOT
-
-
- commons-logging
- commons-logging
- 1.2
-
-
- commons-codec
- commons-codec
- 1.11
-
-
- org.apache.httpcomponents
- httpclient
- 4.5.13
-
-
- org.apache.httpcomponents
- httpcore
- 4.4.13
-
-
- com.alibaba
- fastjson
- 1.2.75
-
-
- joda-time
- joda-time
- 2.10.6
-
-
- com.fasterxml.jackson.core
- jackson-databind
- 2.11.2
-
-
- com.fasterxml.jackson.core
- jackson-core
- 2.11.2
-
-
- com.fasterxml.jackson.core
- jackson-annotations
- 2.11.2
-
-
- com.huawei.apigateway
- hw-java-sdk-core
- 3.0.12
-
-
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
- 3.2.0
-
- false
-
-
-
- package
-
- shade
-
-
-
-
- org.apache
- com.huawei.shade.org.apache
-
-
- com.alibaba.fastjson
- com.huawei.shade.com.alibaba.fastjson
-
-
- org.joda
- com.huawei.shade.org.joda
-
-
- com.fasterxml
- com.huawei.shade.com.fasterxml
-
-
- com.cloud
- com.huawei.shade.com.cloud
-
-
-
-
- org.apache.httpcomponents:*
-
- META-INF/LICENSE.txt
- META-INF/NOTICE.txt
-
-
-
- com.alibaba:fastjson:*
-
- META-INF/LICENSE.txt
- META-INF/NOTICE.txt
-
-
-
- joda-time:*
-
- META-INF/LICENSE.txt
- META-INF/NOTICE.txt
-
-
-
- jackson-databind:*
-
- META-INF/LICENSE.txt
- META-INF/NOTICE.txt
-
-
-
- jackson-core:*
-
- META-INF/LICENSE.txt
- META-INF/NOTICE.txt
-
-
-
- jackson-annotations:*
-
- META-INF/LICENSE.txt
- META-INF/NOTICE.txt
-
-
-
-
-
-
-
-
-
-