LICENSE AGREEMENT FOR PYCHARM
(Academic License)

IMPORTANT! READ CAREFULLY: THIS IS A LEGAL AGREEMENT. BY DOWNLOADING, INSTALLING, COPYING, SAVING ON YOUR COMPUTER, OR OTHERWISE USING THIS SOFTWARE, YOU (LICENSEE, AS DEFINED BELOW) ARE BECOMING A PARTY TO THIS AGREEMENT AND YOU ARE CONSENTING TO BE BOUND BY ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT.

IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT, YOU SHOULD NOT DOWNLOAD, INSTALL AND USE THE SOFTWARE.

1. PARTIES

(a) "Licensor" means JetBrains s.r.o., having its principal place of business at Na hrebenech II 1718/10, Prague, 14700, Czech Republic, registered with Commercial Register kept by the Municipal Court of Prague, Section C, file 86211, ID.Nr.: 265 02 275.

(b) "Licensee" means the individual who is a student, faculty or staff member at an educational institution, or the educational institution specified in the License Certificate, exercising rights under, and complying with all of the terms of, this Agreement. For purposes of this definition, "educational institution" means a public or private school, college, university or other post secondary educational establishment.

2. DEFINITIONS

(a) "Authorized User" means (i) if Licensee is an individual, sole Licensee; (ii) if Licensee is an educational institution, any student, faculty or staff member authorized by Licensee to use Software while performing duties within the scope of their employment or assignment.

(b) "Client" means a computer device used by Authorized User for running Software.

(c) "License Certificate" means evidence of a license provided by Licensor to Licensee in electronic or printed form.

(d) "License Key" means a unique key-code that enables a single Authorized User to use Software at a time. Only Licensor and/or its representatives are permitted to produce License Keys for Software.

(e) "Software" means software program known as PyCharm in binary form, including its documentation, upgrades provided pursuant to Section 8 of this Agreement, and any third party software programs that are owned and licensed pursuant to Section 5 of this Agreement by parties other than Licensor and that are either integrated with or made part of PyCharm (collectively, "Third Party Software").

3. OWNERSHIP

(a) Software is the property of Licensor or its suppliers. Software is licensed, not sold. Title and copyrights to Software, in whole and in part and all copies thereof, and all modifications, enhancements, derivatives and other alterations of Software regardless of who made any modifications, if any, are, and will remain, the sole and exclusive property of Licensor and its suppliers.

(b) Software is protected by United States Copyright Law and International Treaty provisions. Further, the structure, organization, and code embodied in Software are the valuable and confidential trade secrets of Licensor and its suppliers and are protected by intellectual property laws and treaties. Licensee agrees to abide by the copyright law and all other applicable laws of the United States including, but not limited to, export control laws.

4. GRANT OF LICENSE

Subject to the terms, conditions, and limitations set forth in this Agreement, including any amendments thereto, Licensor hereby grants to Licensee a limited, non-exclusive, non-transferable license to use Software as follows:

(a) Licensee may:

(i) install and use the licensed edition and version of Software specified in License Certificate(s) on any number of Clients and on any operating system supported by Software, provided that a number of concurrent users of Software never exceeds the number of Authorized Users specified in the appropriate License Certificate(s) and that the same License Key is not used by multiple Authorized Users, on multiple Clients, or on different operating systems at a time;

(ii) use Software for non-commercial, educational purposes only, including conducting academic research or providing educational services; and

(iii) make one back-up copy of Software solely for archival purposes.

(b) Licensee may not:

(i) sell, redistribute, encumber, give, lend, rent, lease, sublicense, or otherwise transfer Software, or any portions of Software, to anyone without the prior written consent of Licensor;

(ii) reverse-engineer, decompile, disassemble, modify, translate, make any attempt to discover the source code of Software, or create derivative works from Software;

(iii) allow the use of the same License Key by multiple Authorized Users, on multiple Clients or on different operating systems at a time. Software may contain a feature preventing concurrent use of the same License Key by multiple Authorized Users, on multiple Clients or on different operating systems at a time; or

(iv) use Software for any commercial purpose.

5. THIRD PARTY SOFTWARE LICENSE

(a) Licensee agrees to comply with the terms and conditions contained in Third-Party Software license agreements with respect to the applicable Third-Party Software.

(b) Licensee agrees and acknowledges that Sections 9 and 10 of this Agreement shall also govern Licensee's use of the Third-Party Software. Licensor will have no responsibility with respect to any Third Party Software, and Licensee will look solely to the licensor(s) of the Third Party Software for any remedy. Licensor claims no right in the Third Party Software, and the same is owned exclusively by the licensor(s) of the Third Party Software.

(c) LICENSOR PROVIDES NO WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT, WITH RESPECT TO ANY THIRD PARTY SOFTWARE.

6. RESTRICTED USE DURING EVALUATION PERIOD

(a) Subject to the terms of this Agreement, Licensee is granted a right to use Software for evaluation purposes without charge for a period of thirty (30) days from the date of installation of Software unless otherwise specified (Evaluation Period).

(b) Licensees use of Software during Evaluation Period shall be limited to the internal evaluation of Software for the sole purpose of determining whether Software meets Licensees requirements and whether Licensee desires to continue using Software.

(c) Upon expiration of Evaluation Period, Licensee must obtain License Key for perpetual use of Software or cease using Software. Software contains a feature that will automatically disable Software upon expiration of Evaluation Period. Licensee may not disable, destroy, or remove this feature of Software, and any attempt to do so will be in violation of this Agreement and will terminate Licensee's rights to use Software.

7. LICENSE FEES AND PAYMENTS

Licensee will pay to Licensor the license fee and other charges and expenses as set forth in an appropriate invoice or other purchase documentation. Licensor may charge Licensee interest for any payment that is more than thirty (30) days past due at the rate of one and one-half percent (1.5%) per month or the highest amount allowed by law, whichever is lower.

8. UPGRADES

(a) All generally available Upgrades to Software will be free of charge to Licensee during the initial one (1) year period after purchase of Software. If Licensee obtains a new License Key for upgrade, Licensee shall destroy a License Key obtained for the previous version of Software.

(b) If not agreed otherwise in writing between Licensor and Licensee, upon upgrading to new version of Software the relationship between parties shall be governed and amended (if applicable) by the terms and conditions of License agreement related to Software available at www.jetbrains.com on the day of upgrade purchase.

9. LIMITED WARRANTY

SOFTWARE IS PROVIDED TO LICENSEE "AS IS" AND WITHOUT WARRANTIES. LICENSOR MAKES NO WARRANTY AS TO ITS USE OR PERFORMANCE. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, LICENSOR, AND ITS AFFILIATES, SUPPLIERS AND RESELLERS, DISCLAIM ALL OTHER WARRANTIES AND CONDITIONS, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT, WITH REGARD TO SOFTWARE, AND THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT SERVICES.

10. DISCLAIMER OF DAMAGES

(a)	TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR OR ITS AFFILIATES, LICENSORS, SUPPLIERS OR RESELLERS BE LIABLE TO LICENSEE UNDER ANY THEORY FOR ANY DAMAGES SUFFERED BY LICENSEE OR ANY USER OF SOFTWARE, OR FOR ANY SPECIAL, INCIDENTAL, INDIRECT, CONSEQUENTIAL, OR SIMILAR DAMAGES (INCLUDING, BUT NOT LIMITED TO, DAMAGES FOR LOSS OF PROFITS OR CONFIDENTIAL OR OTHER INFORMATION, FOR BUSINESS INTERRUPTION, FOR PERSONAL INJURY, FOR LOSS OF PRIVACY, FOR FAILURE TO MEET ANY DUTY INCLUDING OF GOOD FAITH OR OF REASONABLE CARE, FOR NEGLIGENCE, AND FOR ANY OTHER PECUNIARY OR OTHER LOSS WHATSOEVER ) ARISING OUT OF THE USE OR INABILITY TO USE SOFTWARE, OR THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT SERVICES, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, AND REGARDLESS OF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT OR OTHERWISE) UPON WHICH THE CLAIM IS BASED.

(b)	IN ANY CASE, LICENSOR'S ENTIRE LIABILITY UNDER ANY PROVISION OF THIS AGREEMENT WILL BE LIMITED TO THE AMOUNT ACTUALLY PAID BY LICENSEE FOR SOFTWARE UNDER THIS AGREEMENT.

11. EXPORT REGULATIONS

Licensee agrees and accepts that Software may be subject to import and export laws of any country, including those of the European Union and United States (specifically the Export Administration Regulations (EAR)). Licensee acknowledges that it is not a citizen, national, or resident of, and is not under control of the governments of Cuba, Iran, North Korea, Sudan or Syria and is not otherwise a restricted end-user as defined by applicable export control laws. Further, Licensee acknowledges that it will not download or otherwise export or re-export Software or any related technical data directly or indirectly to the above-mentioned countries or to citizens, nationals, or residents of those countries, or to any other restricted end user or for any restricted end-use.

12. TERMINATION

If Licensee fails to comply with the terms and conditions of this Agreement, this Agreement and Licensee's right and license to use Software will terminate immediately. Licensee may terminate this Agreement at any time by notifying Licensor. Upon the termination of this Agreement, Licensee must cease using Software and delete Software from its Clients and archives.

LICENSEE AGREES THAT UPON TERMINATION OF THIS AGREEMENT FOR ANY REASON, LICENSOR MAY TAKE ACTIONS SO THAT SOFTWARE NO LONGER OPERATES.

13. MARKETING

Licensee agree to be identified as a customer of Licensor and that Licensor may refer to Licensee by name, trade name and trademark, if applicable, and may briefly describe Licensee's business in Licensor's marketing materials, on Licensor's web site, in public or legal documents. Licensee hereby grants Licensor a license to use Licensee's name and any of Licensee's trade names and trademarks solely pursuant to this marketing section.

14. GENERAL

(a) Licensor reserves the right at any time to cease the support of Software and to alter prices, features, specifications, capabilities, functions, licensing terms, release dates, general availability or other characteristics of Software.

(b) This Agreement, including the Third Party Software license agreements, constitutes the entire agreement between the parties concerning Licensee's use of Software, and supersedes any and all prior or contemporaneous oral or written representations, communications, or advertising with respect to Software. No purchase order, other ordering document or any hand written or typewritten text which purports to modify or supplement the printed text of this Agreement or any schedule will add to or vary the terms of this Agreement unless signed by both Licensee and Licensor.

(c) A waiver by either party of any term or condition of this Agreement or any breach thereof, in any one instance, will not waive such term or condition or any subsequent breach. The provisions of this Agreement which require or contemplate performance after the expiration or termination of this Agreement will be enforceable notwithstanding said expiration or termination.

(d) This Agreement will be governed by the laws of Czech Republic, without reference to conflict of laws principles. Licensee agrees that any litigation relating to this Agreement may only be brought in, and will be subject to the jurisdiction of, any Court of Czech Republic.

(e) Titles are inserted for convenience only and will not affect in any way the meaning or interpretation of this Agreement. If any provision of this Agreement is held invalid, the remainder of this Agreement will continue in full force and effect. Either Licensor or Licensee may assign this Agreement in the case of a merger or sale of substantially all of its respective assets to another entity. This Agreement will be binding upon and will inure to the benefit of the parties, their successors and assigns.

For exceptions or modifications to this Agreement, please contact Licensor at:

Address: Na hrebenech II 1718/10, Prague, 14700, Czech Republic
Fax: +420 241 722 540
E-mail: sales@jetbrains.com
