diff --git a/NOTICE.txt b/NOTICE.txt
index 63d06c7..fd52738 100644
--- a/NOTICE.txt
+++ b/NOTICE.txt
@@ -2,14 +2,14 @@
 Notices for file(s):
 lib/devices.xml
 lib/android.el
-support/typos-tr.txt
 support/typos-de.txt
-support/typos-hu.txt
-support/typos-en.txt
-support/typos-pt.txt
 support/typos-es.txt
+support/typos-en.txt
+support/typos-tr.txt
+support/typos-pt.txt
 support/typos-it.txt
 support/typos-nb.txt
+support/typos-hu.txt
 ------------------------------------------------------------
 
    Copyright (c) 2005-2014, The Android Open Source Project
@@ -203,7 +203,7 @@
 
 ============================================================
 Notices for file(s):
-lib/x86_64/swt.jar
+lib/x86/swt.jar
 ------------------------------------------------------------
 
     Eclipse Public License - v 1.0
@@ -431,7 +431,7 @@
 
 ============================================================
 Notices for file(s):
-lib/x86/swt.jar
+lib/x86_64/swt.jar
 ------------------------------------------------------------
 
     Eclipse Public License - v 1.0
@@ -6136,200 +6136,6 @@
 
 ============================================================
 Notices for file(s):
-lib/apkanalyzer.jar
-------------------------------------------------------------
-
-   Copyright (c) 2011, The Android Open Source Project
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-
-   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.
-
-
-                                 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
-
-============================================================
-Notices for file(s):
 lib/explainer.jar
 lib/generator.jar
 lib/shared.jar
@@ -6563,6 +6369,200 @@
 
 ============================================================
 Notices for file(s):
+lib/apkanalyzer.jar
+------------------------------------------------------------
+
+   Copyright (c) 2011, The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+
+   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.
+
+
+                                 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
+
+============================================================
+Notices for file(s):
 lib/apkanalyzer-cli.jar
 ------------------------------------------------------------
 
@@ -6964,210 +6964,28 @@
 
 ============================================================
 Notices for file(s):
-lib/commons-codec-1.6.jar
+lib/kxml2-2.3.0.jar
 ------------------------------------------------------------
+Copyright (c) 2002,2003, Stefan Haustein, Oberhausen, Rhld., Germany
 
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
+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:
 
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+The  above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
-   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.
+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. 
+ 
 
 ============================================================
 Notices for file(s):
@@ -7378,28 +7196,464 @@
 
 ============================================================
 Notices for file(s):
-lib/kxml2-2.3.0.jar
+lib/protobuf-java-3.0.0.jar
 ------------------------------------------------------------
-Copyright (c) 2002,2003, Stefan Haustein, Oberhausen, Rhld., Germany
+This license applies to all parts of Protocol Buffers except the following:
 
-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:
+  - Atomicops support for generic gcc, located in
+    src/google/protobuf/stubs/atomicops_internals_generic_gcc.h.
+    This file is copyrighted by Red Hat Inc.
 
-The  above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
+  - Atomicops support for AIX/POWER, located in
+    src/google/protobuf/stubs/atomicops_internals_power.h.
+    This file is copyrighted by Bloomberg Finance LP.
 
-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. 
- 
+Copyright 2014, Google Inc.  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 Google Inc. 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.
+
+Code generated by the Protocol Buffer compiler is owned by the owner
+of the input file used when generating it.  This code is not
+standalone and requires a support library to be linked with it.  This
+support library is itself covered by the above license.
+
+============================================================
+Notices for file(s):
+lib/httpclient-4.2.6.jar
+------------------------------------------------------------
+
+                                 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.
+
+============================================================
+Notices for file(s):
+lib/j2objc-annotations-1.1.jar
+------------------------------------------------------------
+
+                                 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.
 
 ============================================================
 Notices for file(s):
@@ -7610,6 +7864,213 @@
 
 ============================================================
 Notices for file(s):
+lib/commons-compress-1.12.jar
+------------------------------------------------------------
+
+                                 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.
+
+============================================================
+Notices for file(s):
 lib/bcpkix-jdk15on-1.56.jar
 ------------------------------------------------------------
 Copyright (c) 2000 - 2013 The Legion of the Bouncy Castle Inc. (http://www.bouncycastle.org)
@@ -7622,213 +8083,6 @@
 
 ============================================================
 Notices for file(s):
-lib/commons-compress-1.12.jar
-------------------------------------------------------------
-
-                                 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.
-
-============================================================
-Notices for file(s):
 lib/error_prone_annotations-2.0.18.jar
 ------------------------------------------------------------
 
@@ -8036,7 +8290,203 @@
 
 ============================================================
 Notices for file(s):
-lib/jsr305-1.3.9.jar
+lib/commons-logging-1.1.1.jar
+------------------------------------------------------------
+Apache HttpComponents Client
+Copyright 1999-2011 The Apache Software Foundation
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
+
+This project contains annotations derived from JCIP-ANNOTATIONS
+Copyright (c) 2005 Brian Goetz and Tim Peierls. See http://www.jcip.net
+
+
+                                 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
+   
+This project contains annotations derived from JCIP-ANNOTATIONS
+Copyright (c) 2005 Brian Goetz and Tim Peierls.
+See http://www.jcip.net and the Creative Commons Attribution License 
+(http://creativecommons.org/licenses/by/2.5)
+
+============================================================
+Notices for file(s):
+lib/jimfs-1.1.jar
 ------------------------------------------------------------
 
                                  Apache License
@@ -8243,7 +8693,7 @@
 
 ============================================================
 Notices for file(s):
-lib/httpcore-4.2.5.jar
+lib/guava-22.0.jar
 ------------------------------------------------------------
 
                                  Apache License
@@ -8450,6 +8900,19 @@
 
 ============================================================
 Notices for file(s):
+lib/kotlin-stdlib-1.1.3-2.jar
+------------------------------------------------------------
+   =========================================================================
+   ==  NOTICE file corresponding to the section 4 d of                    ==
+   ==  the Apache License, Version 2.0,                                   ==
+   ==  in this case for the Kotlin Compiler distribution.                 ==
+   =========================================================================
+
+   Kotlin Compiler
+   Copyright 2010-2015 JetBrains s.r.o and respective authors and developers
+
+============================================================
+Notices for file(s):
 lib/annotations-13.0.jar
 ------------------------------------------------------------
 
@@ -8657,19 +9120,7 @@
 
 ============================================================
 Notices for file(s):
-lib/bcprov-jdk15on-1.56.jar
-------------------------------------------------------------
-Copyright (c) 2000 - 2013 The Legion of the Bouncy Castle Inc. (http://www.bouncycastle.org)
-
-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.
-
-============================================================
-Notices for file(s):
-lib/jimfs-1.1.jar
+lib/httpcore-4.2.5.jar
 ------------------------------------------------------------
 
                                  Apache License
@@ -9153,470 +9604,19 @@
 
 ============================================================
 Notices for file(s):
-lib/protobuf-java-3.0.0.jar
+lib/bcprov-jdk15on-1.56.jar
 ------------------------------------------------------------
-This license applies to all parts of Protocol Buffers except the following:
+Copyright (c) 2000 - 2013 The Legion of the Bouncy Castle Inc. (http://www.bouncycastle.org)
 
-  - Atomicops support for generic gcc, located in
-    src/google/protobuf/stubs/atomicops_internals_generic_gcc.h.
-    This file is copyrighted by Red Hat Inc.
+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:
 
-  - Atomicops support for AIX/POWER, located in
-    src/google/protobuf/stubs/atomicops_internals_power.h.
-    This file is copyrighted by Bloomberg Finance LP.
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 
-Copyright 2014, Google Inc.  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 Google Inc. 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.
-
-Code generated by the Protocol Buffer compiler is owned by the owner
-of the input file used when generating it.  This code is not
-standalone and requires a support library to be linked with it.  This
-support library is itself covered by the above license.
+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.
 
 ============================================================
 Notices for file(s):
-lib/j2objc-annotations-1.1.jar
-------------------------------------------------------------
-
-                                 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.
-
-============================================================
-Notices for file(s):
-lib/commons-logging-1.1.1.jar
-------------------------------------------------------------
-Apache HttpComponents Client
-Copyright 1999-2011 The Apache Software Foundation
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-This project contains annotations derived from JCIP-ANNOTATIONS
-Copyright (c) 2005 Brian Goetz and Tim Peierls. See http://www.jcip.net
-
-
-                                 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
-   
-This project contains annotations derived from JCIP-ANNOTATIONS
-Copyright (c) 2005 Brian Goetz and Tim Peierls.
-See http://www.jcip.net and the Creative Commons Attribution License 
-(http://creativecommons.org/licenses/by/2.5)
-
-============================================================
-Notices for file(s):
-lib/kotlin-stdlib-1.1.3-2.jar
-------------------------------------------------------------
-   =========================================================================
-   ==  NOTICE file corresponding to the section 4 d of                    ==
-   ==  the Apache License, Version 2.0,                                   ==
-   ==  in this case for the Kotlin Compiler distribution.                 ==
-   =========================================================================
-
-   Kotlin Compiler
-   Copyright 2010-2015 JetBrains s.r.o and respective authors and developers
-
-============================================================
-Notices for file(s):
-lib/guava-22.0.jar
+lib/commons-codec-1.6.jar
 ------------------------------------------------------------
 
                                  Apache License
@@ -10019,7 +10019,7 @@
 
 ============================================================
 Notices for file(s):
-lib/httpclient-4.2.6.jar
+lib/jsr305-1.3.9.jar
 ------------------------------------------------------------
 
                                  Apache License
@@ -10226,517 +10226,27 @@
 
 ============================================================
 Notices for file(s):
-lib/asm-5.1.jar
+lib/lombok-ast-0.2.3.jar
 ------------------------------------------------------------
+Copyright (C) 2010-2011 The Project Lombok Authors.
 
- ASM: a very small and fast Java bytecode manipulation framework
- Copyright (c) 2000-2005 INRIA, France Telecom
- All rights reserved.
+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:
 
- 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 holders nor the names of its
-    contributors may be used to endorse or promote products derived from
-    this software without specific prior written permission.
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
 
- 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.
-
-============================================================
-Notices for file(s):
-lib/kotlin-reflect-1.1.3-2.jar
-------------------------------------------------------------
-   =========================================================================
-   ==  NOTICE file corresponding to the section 4 d of                    ==
-   ==  the Apache License, Version 2.0,                                   ==
-   ==  in this case for the Kotlin Compiler distribution.                 ==
-   =========================================================================
-
-   Kotlin Compiler
-   Copyright 2010-2015 JetBrains s.r.o and respective authors and developers
-
-============================================================
-Notices for file(s):
-lib/uast-26.0.0-dev.jar
-------------------------------------------------------------
-
-                                 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 2000-2016 JetBrains s.r.o.
-
-   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.
-
-============================================================
-Notices for file(s):
-lib/asm-analysis-5.1.jar
-------------------------------------------------------------
-
- ASM: a very small and fast Java bytecode manipulation framework
- Copyright (c) 2000-2005 INRIA, France Telecom
- 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 holders 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.
-
-============================================================
-Notices for file(s):
-lib/ecj-4.6.1.jar
-------------------------------------------------------------
-
-    Eclipse Public License - v 1.0
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF
-THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-*1. DEFINITIONS*
-
-"Contribution" means:
-
-a) in the case of the initial Contributor, the initial code and
-documentation distributed under this Agreement, and
-
-b) in the case of each subsequent Contributor:
-
-i) changes to the Program, and
-
-ii) additions to the Program;
-
-where such changes and/or additions to the Program originate from and
-are distributed by that particular Contributor. A Contribution
-'originates' from a Contributor if it was added to the Program by such
-Contributor itself or anyone acting on such Contributor's behalf.
-Contributions do not include additions to the Program which: (i) are
-separate modules of software distributed in conjunction with the Program
-under their own license agreement, and (ii) are not derivative works of
-the Program.
-
-"Contributor" means any person or entity that distributes the Program.
-
-"Licensed Patents" mean patent claims licensable by a Contributor which
-are necessarily infringed by the use or sale of its Contribution alone
-or when combined with the Program.
-
-"Program" means the Contributions distributed in accordance with this
-Agreement.
-
-"Recipient" means anyone who receives the Program under this Agreement,
-including all Contributors.
-
-*2. GRANT OF RIGHTS*
-
-a) Subject to the terms of this Agreement, each Contributor hereby
-grants Recipient a non-exclusive, worldwide, royalty-free copyright
-license to reproduce, prepare derivative works of, publicly display,
-publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and
-object code form.
-
-b) Subject to the terms of this Agreement, each Contributor hereby
-grants Recipient a non-exclusive, worldwide, royalty-free patent license
-under Licensed Patents to make, use, sell, offer to sell, import and
-otherwise transfer the Contribution of such Contributor, if any, in
-source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the
-Contribution is added by the Contributor, such addition of the
-Contribution causes such combination to be covered by the Licensed
-Patents. The patent license shall not apply to any other combinations
-which include the Contribution. No hardware per se is licensed hereunder.
-
-c) Recipient understands that although each Contributor grants the
-licenses to its Contributions set forth herein, no assurances are
-provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.
-
-d) Each Contributor represents that to its knowledge it has sufficient
-copyright rights in its Contribution, if any, to grant the copyright
-license set forth in this Agreement.
-
-*3. REQUIREMENTS*
-
-A Contributor may choose to distribute the Program in object code form
-under its own license agreement, provided that:
-
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties
-and conditions, express and implied, including warranties or conditions
-of title and non-infringement, and implied warranties or conditions of
-merchantability and fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for
-damages, including direct, indirect, special, incidental and
-consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are
-offered by that Contributor alone and not by any other party; and
-
-iv) states that source code for the Program is available from such
-Contributor, and informs licensees how to obtain it in a reasonable
-manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained
-within the Program.
-
-Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.
-
-*4. COMMERCIAL DISTRIBUTION*
-
-Commercial distributors of software may accept certain responsibilities
-with respect to end users, business partners and the like. While this
-license is intended to facilitate the commercial use of the Program, the
-Contributor who includes the Program in a commercial product offering
-should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in
-a commercial product offering, such Contributor ("Commercial
-Contributor") hereby agrees to defend and indemnify every other
-Contributor ("Indemnified Contributor") against any losses, damages and
-costs (collectively "Losses") arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified
-Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the
-Program in a commercial product offering. The obligations in this
-section do not apply to any claims or Losses relating to any actual or
-alleged intellectual property infringement. In order to qualify, an
-Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial
-Contributor to control, and cooperate with the Commercial Contributor
-in, the defense and any related settlement negotiations. The Indemnified
-Contributor may participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.
-
-*5. NO WARRANTY*
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED
-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. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program
-and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program
-errors, compliance with applicable laws, damage to or loss of data,
-programs or equipment, and unavailability or interruption of operations.
-
-*6. DISCLAIMER OF LIABILITY*
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
-ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), 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 OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-*7. GENERAL*
-
-If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including
-a cross-claim or counterclaim in a lawsuit) alleging that the Program
-itself (excluding combinations of the Program with other software or
-hardware) infringes such Recipient's patent(s), then such Recipient's
-rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails
-to comply with any of the material terms or conditions of this Agreement
-and does not cure such failure in a reasonable period of time after
-becoming aware of such noncompliance. If all Recipient's rights under
-this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's
-obligations under this Agreement and any licenses granted by Recipient
-relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement,
-but in order to avoid inconsistency the Agreement is copyrighted and may
-only be modified in the following manner. The Agreement Steward reserves
-the right to publish new versions (including revisions) of this
-Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the
-initial Agreement Steward. The Eclipse Foundation may assign the
-responsibility to serve as the Agreement Steward to a suitable separate
-entity. Each new version of the Agreement will be given a distinguishing
-version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was
-received. In addition, after a new version of the Agreement is
-published, Contributor may elect to distribute the Program (including
-its Contributions) under the new version. Except as expressly stated in
-Sections 2(a) and 2(b) above, Recipient receives no rights or licenses
-to the intellectual property of any Contributor under this Agreement,
-whether expressly, by implication, estoppel or otherwise. All rights in
-the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the
-intellectual property laws of the United States of America. No party to
-this Agreement will bring a legal action under this Agreement more than
-one year after the cause of action arose. Each party waives its rights
-to a jury trial in any resulting litigation.
+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.
 
 ============================================================
 Notices for file(s):
@@ -11248,234 +10758,16 @@
 
 ============================================================
 Notices for file(s):
-lib/lombok-ast-0.2.3.jar
+lib/kotlin-reflect-1.1.3-2.jar
 ------------------------------------------------------------
-Copyright (C) 2010-2011 The Project Lombok Authors.
+   =========================================================================
+   ==  NOTICE file corresponding to the section 4 d of                    ==
+   ==  the Apache License, Version 2.0,                                   ==
+   ==  in this case for the Kotlin Compiler distribution.                 ==
+   =========================================================================
 
-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.
-
-============================================================
-Notices for file(s):
-lib/intellij-core-26.0.0-dev.jar
-------------------------------------------------------------
-
-                                 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 2000-2016 JetBrains s.r.o.
-
-   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.
+   Kotlin Compiler
+   Copyright 2010-2015 JetBrains s.r.o and respective authors and developers
 
 ============================================================
 Notices for file(s):
@@ -11512,7 +10804,7 @@
 
 ============================================================
 Notices for file(s):
-lib/org-eclipse-core-commands-3.6.0.jar
+lib/ecj-4.6.1.jar
 ------------------------------------------------------------
 
     Eclipse Public License - v 1.0
@@ -11740,7 +11032,487 @@
 
 ============================================================
 Notices for file(s):
-lib/org-eclipse-jface-3.6.2.jar
+lib/uast-26.0.0-dev.jar
+------------------------------------------------------------
+
+                                 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 2000-2016 JetBrains s.r.o.
+
+   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.
+
+============================================================
+Notices for file(s):
+lib/intellij-core-26.0.0-dev.jar
+------------------------------------------------------------
+
+                                 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 2000-2016 JetBrains s.r.o.
+
+   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.
+
+============================================================
+Notices for file(s):
+lib/asm-analysis-5.1.jar
+------------------------------------------------------------
+
+ ASM: a very small and fast Java bytecode manipulation framework
+ Copyright (c) 2000-2005 INRIA, France Telecom
+ 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 holders 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.
+
+============================================================
+Notices for file(s):
+lib/asm-5.1.jar
+------------------------------------------------------------
+
+ ASM: a very small and fast Java bytecode manipulation framework
+ Copyright (c) 2000-2005 INRIA, France Telecom
+ 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 holders 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.
+
+============================================================
+Notices for file(s):
+lib/org-eclipse-core-commands-3.6.0.jar
 ------------------------------------------------------------
 
     Eclipse Public License - v 1.0
@@ -12196,742 +11968,6 @@
 
 ============================================================
 Notices for file(s):
-lib/osgi-4.0.0.jar
-------------------------------------------------------------
-
-    Eclipse Public License - v 1.0
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
-PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF
-THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-*1. DEFINITIONS*
-
-"Contribution" means:
-
-a) in the case of the initial Contributor, the initial code and
-documentation distributed under this Agreement, and
-
-b) in the case of each subsequent Contributor:
-
-i) changes to the Program, and
-
-ii) additions to the Program;
-
-where such changes and/or additions to the Program originate from and
-are distributed by that particular Contributor. A Contribution
-'originates' from a Contributor if it was added to the Program by such
-Contributor itself or anyone acting on such Contributor's behalf.
-Contributions do not include additions to the Program which: (i) are
-separate modules of software distributed in conjunction with the Program
-under their own license agreement, and (ii) are not derivative works of
-the Program.
-
-"Contributor" means any person or entity that distributes the Program.
-
-"Licensed Patents" mean patent claims licensable by a Contributor which
-are necessarily infringed by the use or sale of its Contribution alone
-or when combined with the Program.
-
-"Program" means the Contributions distributed in accordance with this
-Agreement.
-
-"Recipient" means anyone who receives the Program under this Agreement,
-including all Contributors.
-
-*2. GRANT OF RIGHTS*
-
-a) Subject to the terms of this Agreement, each Contributor hereby
-grants Recipient a non-exclusive, worldwide, royalty-free copyright
-license to reproduce, prepare derivative works of, publicly display,
-publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and
-object code form.
-
-b) Subject to the terms of this Agreement, each Contributor hereby
-grants Recipient a non-exclusive, worldwide, royalty-free patent license
-under Licensed Patents to make, use, sell, offer to sell, import and
-otherwise transfer the Contribution of such Contributor, if any, in
-source code and object code form. This patent license shall apply to the
-combination of the Contribution and the Program if, at the time the
-Contribution is added by the Contributor, such addition of the
-Contribution causes such combination to be covered by the Licensed
-Patents. The patent license shall not apply to any other combinations
-which include the Contribution. No hardware per se is licensed hereunder.
-
-c) Recipient understands that although each Contributor grants the
-licenses to its Contributions set forth herein, no assurances are
-provided by any Contributor that the Program does not infringe the
-patent or other intellectual property rights of any other entity. Each
-Contributor disclaims any liability to Recipient for claims brought by
-any other entity based on infringement of intellectual property rights
-or otherwise. As a condition to exercising the rights and licenses
-granted hereunder, each Recipient hereby assumes sole responsibility to
-secure any other intellectual property rights needed, if any. For
-example, if a third party patent license is required to allow Recipient
-to distribute the Program, it is Recipient's responsibility to acquire
-that license before distributing the Program.
-
-d) Each Contributor represents that to its knowledge it has sufficient
-copyright rights in its Contribution, if any, to grant the copyright
-license set forth in this Agreement.
-
-*3. REQUIREMENTS*
-
-A Contributor may choose to distribute the Program in object code form
-under its own license agreement, provided that:
-
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties
-and conditions, express and implied, including warranties or conditions
-of title and non-infringement, and implied warranties or conditions of
-merchantability and fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for
-damages, including direct, indirect, special, incidental and
-consequential damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are
-offered by that Contributor alone and not by any other party; and
-
-iv) states that source code for the Program is available from such
-Contributor, and informs licensees how to obtain it in a reasonable
-manner on or through a medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained
-within the Program.
-
-Each Contributor must identify itself as the originator of its
-Contribution, if any, in a manner that reasonably allows subsequent
-Recipients to identify the originator of the Contribution.
-
-*4. COMMERCIAL DISTRIBUTION*
-
-Commercial distributors of software may accept certain responsibilities
-with respect to end users, business partners and the like. While this
-license is intended to facilitate the commercial use of the Program, the
-Contributor who includes the Program in a commercial product offering
-should do so in a manner which does not create potential liability for
-other Contributors. Therefore, if a Contributor includes the Program in
-a commercial product offering, such Contributor ("Commercial
-Contributor") hereby agrees to defend and indemnify every other
-Contributor ("Indemnified Contributor") against any losses, damages and
-costs (collectively "Losses") arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified
-Contributor to the extent caused by the acts or omissions of such
-Commercial Contributor in connection with its distribution of the
-Program in a commercial product offering. The obligations in this
-section do not apply to any claims or Losses relating to any actual or
-alleged intellectual property infringement. In order to qualify, an
-Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial
-Contributor to control, and cooperate with the Commercial Contributor
-in, the defense and any related settlement negotiations. The Indemnified
-Contributor may participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial
-product offering, Product X. That Contributor is then a Commercial
-Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance
-claims and warranties are such Commercial Contributor's responsibility
-alone. Under this section, the Commercial Contributor would have to
-defend claims against the other Contributors related to those
-performance claims and warranties, and if a court requires any other
-Contributor to pay any damages as a result, the Commercial Contributor
-must pay those damages.
-
-*5. NO WARRANTY*
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED
-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. Each Recipient is solely responsible for
-determining the appropriateness of using and distributing the Program
-and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program
-errors, compliance with applicable laws, damage to or loss of data,
-programs or equipment, and unavailability or interruption of operations.
-
-*6. DISCLAIMER OF LIABILITY*
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
-ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
-INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
-WITHOUT LIMITATION LOST PROFITS), 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 OR
-DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
-HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-*7. GENERAL*
-
-If any provision of this Agreement is invalid or unenforceable under
-applicable law, it shall not affect the validity or enforceability of
-the remainder of the terms of this Agreement, and without further action
-by the parties hereto, such provision shall be reformed to the minimum
-extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including
-a cross-claim or counterclaim in a lawsuit) alleging that the Program
-itself (excluding combinations of the Program with other software or
-hardware) infringes such Recipient's patent(s), then such Recipient's
-rights granted under Section 2(b) shall terminate as of the date such
-litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails
-to comply with any of the material terms or conditions of this Agreement
-and does not cure such failure in a reasonable period of time after
-becoming aware of such noncompliance. If all Recipient's rights under
-this Agreement terminate, Recipient agrees to cease use and distribution
-of the Program as soon as reasonably practicable. However, Recipient's
-obligations under this Agreement and any licenses granted by Recipient
-relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement,
-but in order to avoid inconsistency the Agreement is copyrighted and may
-only be modified in the following manner. The Agreement Steward reserves
-the right to publish new versions (including revisions) of this
-Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the
-initial Agreement Steward. The Eclipse Foundation may assign the
-responsibility to serve as the Agreement Steward to a suitable separate
-entity. Each new version of the Agreement will be given a distinguishing
-version number. The Program (including Contributions) may always be
-distributed subject to the version of the Agreement under which it was
-received. In addition, after a new version of the Agreement is
-published, Contributor may elect to distribute the Program (including
-its Contributions) under the new version. Except as expressly stated in
-Sections 2(a) and 2(b) above, Recipient receives no rights or licenses
-to the intellectual property of any Contributor under this Agreement,
-whether expressly, by implication, estoppel or otherwise. All rights in
-the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the
-intellectual property laws of the United States of America. No party to
-this Agreement will bring a legal action under this Agreement more than
-one year after the cause of action arose. Each party waives its rights
-to a jury trial in any resulting litigation.
-
-============================================================
-Notices for file(s):
-lib/jfreechart-1.0.9.jar
-------------------------------------------------------------
-		  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.
-
-		  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., 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!
-
-
-============================================================
-Notices for file(s):
 lib/jcommon-1.0.12.jar
 ------------------------------------------------------------
 		  GNU LESSER GENERAL PUBLIC LICENSE
@@ -13440,6 +12476,742 @@
 
 ============================================================
 Notices for file(s):
+lib/jfreechart-1.0.9.jar
+------------------------------------------------------------
+		  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.
+
+		  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., 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!
+
+
+============================================================
+Notices for file(s):
+lib/osgi-4.0.0.jar
+------------------------------------------------------------
+
+    Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF
+THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+*1. DEFINITIONS*
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and
+documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and
+are distributed by that particular Contributor. A Contribution
+'originates' from a Contributor if it was added to the Program by such
+Contributor itself or anyone acting on such Contributor's behalf.
+Contributions do not include additions to the Program which: (i) are
+separate modules of software distributed in conjunction with the Program
+under their own license agreement, and (ii) are not derivative works of
+the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which
+are necessarily infringed by the use or sale of its Contribution alone
+or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+*2. GRANT OF RIGHTS*
+
+a) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free copyright
+license to reproduce, prepare derivative works of, publicly display,
+publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and
+object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free patent license
+under Licensed Patents to make, use, sell, offer to sell, import and
+otherwise transfer the Contribution of such Contributor, if any, in
+source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the
+Contribution is added by the Contributor, such addition of the
+Contribution causes such combination to be covered by the Licensed
+Patents. The patent license shall not apply to any other combinations
+which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the
+licenses to its Contributions set forth herein, no assurances are
+provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient
+copyright rights in its Contribution, if any, to grant the copyright
+license set forth in this Agreement.
+
+*3. REQUIREMENTS*
+
+A Contributor may choose to distribute the Program in object code form
+under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties
+and conditions, express and implied, including warranties or conditions
+of title and non-infringement, and implied warranties or conditions of
+merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for
+damages, including direct, indirect, special, incidental and
+consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are
+offered by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such
+Contributor, and informs licensees how to obtain it in a reasonable
+manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained
+within the Program.
+
+Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.
+
+*4. COMMERCIAL DISTRIBUTION*
+
+Commercial distributors of software may accept certain responsibilities
+with respect to end users, business partners and the like. While this
+license is intended to facilitate the commercial use of the Program, the
+Contributor who includes the Program in a commercial product offering
+should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in
+a commercial product offering, such Contributor ("Commercial
+Contributor") hereby agrees to defend and indemnify every other
+Contributor ("Indemnified Contributor") against any losses, damages and
+costs (collectively "Losses") arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified
+Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the
+Program in a commercial product offering. The obligations in this
+section do not apply to any claims or Losses relating to any actual or
+alleged intellectual property infringement. In order to qualify, an
+Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial
+Contributor to control, and cooperate with the Commercial Contributor
+in, the defense and any related settlement negotiations. The Indemnified
+Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.
+
+*5. NO WARRANTY*
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED
+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. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program
+and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program
+errors, compliance with applicable laws, damage to or loss of data,
+programs or equipment, and unavailability or interruption of operations.
+
+*6. DISCLAIMER OF LIABILITY*
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
+ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), 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 OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+*7. GENERAL*
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including
+a cross-claim or counterclaim in a lawsuit) alleging that the Program
+itself (excluding combinations of the Program with other software or
+hardware) infringes such Recipient's patent(s), then such Recipient's
+rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails
+to comply with any of the material terms or conditions of this Agreement
+and does not cure such failure in a reasonable period of time after
+becoming aware of such noncompliance. If all Recipient's rights under
+this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's
+obligations under this Agreement and any licenses granted by Recipient
+relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement,
+but in order to avoid inconsistency the Agreement is copyrighted and may
+only be modified in the following manner. The Agreement Steward reserves
+the right to publish new versions (including revisions) of this
+Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the
+initial Agreement Steward. The Eclipse Foundation may assign the
+responsibility to serve as the Agreement Steward to a suitable separate
+entity. Each new version of the Agreement will be given a distinguishing
+version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was
+received. In addition, after a new version of the Agreement is
+published, Contributor may elect to distribute the Program (including
+its Contributions) under the new version. Except as expressly stated in
+Sections 2(a) and 2(b) above, Recipient receives no rights or licenses
+to the intellectual property of any Contributor under this Agreement,
+whether expressly, by implication, estoppel or otherwise. All rights in
+the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to
+this Agreement will bring a legal action under this Agreement more than
+one year after the cause of action arose. Each party waives its rights
+to a jury trial in any resulting litigation.
+
+============================================================
+Notices for file(s):
 lib/jfreechart-swt-1.0.9.jar
 ------------------------------------------------------------
 		  GNU LESSER GENERAL PUBLIC LICENSE
@@ -13948,6 +13720,234 @@
 
 ============================================================
 Notices for file(s):
+lib/org-eclipse-jface-3.6.2.jar
+------------------------------------------------------------
+
+    Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF
+THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+*1. DEFINITIONS*
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and
+documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and
+are distributed by that particular Contributor. A Contribution
+'originates' from a Contributor if it was added to the Program by such
+Contributor itself or anyone acting on such Contributor's behalf.
+Contributions do not include additions to the Program which: (i) are
+separate modules of software distributed in conjunction with the Program
+under their own license agreement, and (ii) are not derivative works of
+the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which
+are necessarily infringed by the use or sale of its Contribution alone
+or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+*2. GRANT OF RIGHTS*
+
+a) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free copyright
+license to reproduce, prepare derivative works of, publicly display,
+publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and
+object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free patent license
+under Licensed Patents to make, use, sell, offer to sell, import and
+otherwise transfer the Contribution of such Contributor, if any, in
+source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the
+Contribution is added by the Contributor, such addition of the
+Contribution causes such combination to be covered by the Licensed
+Patents. The patent license shall not apply to any other combinations
+which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the
+licenses to its Contributions set forth herein, no assurances are
+provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient
+copyright rights in its Contribution, if any, to grant the copyright
+license set forth in this Agreement.
+
+*3. REQUIREMENTS*
+
+A Contributor may choose to distribute the Program in object code form
+under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties
+and conditions, express and implied, including warranties or conditions
+of title and non-infringement, and implied warranties or conditions of
+merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for
+damages, including direct, indirect, special, incidental and
+consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are
+offered by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such
+Contributor, and informs licensees how to obtain it in a reasonable
+manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained
+within the Program.
+
+Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.
+
+*4. COMMERCIAL DISTRIBUTION*
+
+Commercial distributors of software may accept certain responsibilities
+with respect to end users, business partners and the like. While this
+license is intended to facilitate the commercial use of the Program, the
+Contributor who includes the Program in a commercial product offering
+should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in
+a commercial product offering, such Contributor ("Commercial
+Contributor") hereby agrees to defend and indemnify every other
+Contributor ("Indemnified Contributor") against any losses, damages and
+costs (collectively "Losses") arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified
+Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the
+Program in a commercial product offering. The obligations in this
+section do not apply to any claims or Losses relating to any actual or
+alleged intellectual property infringement. In order to qualify, an
+Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial
+Contributor to control, and cooperate with the Commercial Contributor
+in, the defense and any related settlement negotiations. The Indemnified
+Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.
+
+*5. NO WARRANTY*
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED
+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. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program
+and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program
+errors, compliance with applicable laws, damage to or loss of data,
+programs or equipment, and unavailability or interruption of operations.
+
+*6. DISCLAIMER OF LIABILITY*
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
+ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), 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 OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+*7. GENERAL*
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including
+a cross-claim or counterclaim in a lawsuit) alleging that the Program
+itself (excluding combinations of the Program with other software or
+hardware) infringes such Recipient's patent(s), then such Recipient's
+rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails
+to comply with any of the material terms or conditions of this Agreement
+and does not cure such failure in a reasonable period of time after
+becoming aware of such noncompliance. If all Recipient's rights under
+this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's
+obligations under this Agreement and any licenses granted by Recipient
+relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement,
+but in order to avoid inconsistency the Agreement is copyrighted and may
+only be modified in the following manner. The Agreement Steward reserves
+the right to publish new versions (including revisions) of this
+Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the
+initial Agreement Steward. The Eclipse Foundation may assign the
+responsibility to serve as the Agreement Steward to a suitable separate
+entity. Each new version of the Agreement will be given a distinguishing
+version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was
+received. In addition, after a new version of the Agreement is
+published, Contributor may elect to distribute the Program (including
+its Contributions) under the new version. Except as expressly stated in
+Sections 2(a) and 2(b) above, Recipient receives no rights or licenses
+to the intellectual property of any Contributor under this Agreement,
+whether expressly, by implication, estoppel or otherwise. All rights in
+the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to
+this Agreement will bring a legal action under this Agreement more than
+one year after the cause of action arose. Each party waives its rights
+to a jury trial in any resulting litigation.
+
+============================================================
+Notices for file(s):
 lib/jsilver-1.0.0.jar
 ------------------------------------------------------------
 
@@ -14343,6 +14343,116 @@
 
 ============================================================
 Notices for file(s):
+lib/util-2.2.1.jar
+------------------------------------------------------------
+The majority of smali/baksmali is written and copyrighted by me (Ben Gruver)
+and released under the following license:
+
+*******************************************************************************
+Copyright (c) 2010 Ben Gruver (JesusFreke)
+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. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+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.
+*******************************************************************************
+
+
+Unless otherwise stated in the code/commit message, any changes with the
+committer of bgruv@google.com or wkal@google.com is copyrighted by 
+Google Inc. and released under the following license:
+
+*******************************************************************************
+Copyright 2011, Google Inc.
+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 Google Inc. 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.
+*******************************************************************************
+
+
+Various portions of the code are taken from the Android Open Source Project,
+and are used in accordance with the following license:
+
+*******************************************************************************
+Copyright (C) 2007 The Android Open Source Project
+
+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.
+*******************************************************************************
+
+
+Some parts of the smalidea plugin are based on code from the IDEA project, per the
+following license
+
+*******************************************************************************
+Copyright 2000-2014 JetBrains s.r.o.
+
+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.
+*******************************************************************************
+
+============================================================
+Notices for file(s):
 lib/jsr305-3.0.0.jar
 ------------------------------------------------------------
 The JSR-305 reference implementation (lib/jsr305.jar) is
@@ -14386,6 +14496,116 @@
 
 ============================================================
 Notices for file(s):
+lib/dexlib2-2.2.1.jar
+------------------------------------------------------------
+The majority of smali/baksmali is written and copyrighted by me (Ben Gruver)
+and released under the following license:
+
+*******************************************************************************
+Copyright (c) 2010 Ben Gruver (JesusFreke)
+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. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+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.
+*******************************************************************************
+
+
+Unless otherwise stated in the code/commit message, any changes with the
+committer of bgruv@google.com or wkal@google.com is copyrighted by 
+Google Inc. and released under the following license:
+
+*******************************************************************************
+Copyright 2011, Google Inc.
+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 Google Inc. 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.
+*******************************************************************************
+
+
+Various portions of the code are taken from the Android Open Source Project,
+and are used in accordance with the following license:
+
+*******************************************************************************
+Copyright (C) 2007 The Android Open Source Project
+
+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.
+*******************************************************************************
+
+
+Some parts of the smalidea plugin are based on code from the IDEA project, per the
+following license
+
+*******************************************************************************
+Copyright 2000-2014 JetBrains s.r.o.
+
+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.
+*******************************************************************************
+
+============================================================
+Notices for file(s):
 lib/baksmali-2.2.1.jar
 ------------------------------------------------------------
 The majority of smali/baksmali is written and copyrighted by me (Ben Gruver)
@@ -14703,226 +14923,6 @@
 
 ============================================================
 Notices for file(s):
-lib/util-2.2.1.jar
-------------------------------------------------------------
-The majority of smali/baksmali is written and copyrighted by me (Ben Gruver)
-and released under the following license:
-
-*******************************************************************************
-Copyright (c) 2010 Ben Gruver (JesusFreke)
-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. The name of the author may not be used to endorse or promote products
-   derived from this software without specific prior written permission.
-
-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.
-*******************************************************************************
-
-
-Unless otherwise stated in the code/commit message, any changes with the
-committer of bgruv@google.com or wkal@google.com is copyrighted by 
-Google Inc. and released under the following license:
-
-*******************************************************************************
-Copyright 2011, Google Inc.
-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 Google Inc. 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.
-*******************************************************************************
-
-
-Various portions of the code are taken from the Android Open Source Project,
-and are used in accordance with the following license:
-
-*******************************************************************************
-Copyright (C) 2007 The Android Open Source Project
-
-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.
-*******************************************************************************
-
-
-Some parts of the smalidea plugin are based on code from the IDEA project, per the
-following license
-
-*******************************************************************************
-Copyright 2000-2014 JetBrains s.r.o.
-
-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.
-*******************************************************************************
-
-============================================================
-Notices for file(s):
-lib/dexlib2-2.2.1.jar
-------------------------------------------------------------
-The majority of smali/baksmali is written and copyrighted by me (Ben Gruver)
-and released under the following license:
-
-*******************************************************************************
-Copyright (c) 2010 Ben Gruver (JesusFreke)
-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. The name of the author may not be used to endorse or promote products
-   derived from this software without specific prior written permission.
-
-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.
-*******************************************************************************
-
-
-Unless otherwise stated in the code/commit message, any changes with the
-committer of bgruv@google.com or wkal@google.com is copyrighted by 
-Google Inc. and released under the following license:
-
-*******************************************************************************
-Copyright 2011, Google Inc.
-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 Google Inc. 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.
-*******************************************************************************
-
-
-Various portions of the code are taken from the Android Open Source Project,
-and are used in accordance with the following license:
-
-*******************************************************************************
-Copyright (C) 2007 The Android Open Source Project
-
-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.
-*******************************************************************************
-
-
-Some parts of the smalidea plugin are based on code from the IDEA project, per the
-following license
-
-*******************************************************************************
-Copyright 2000-2014 JetBrains s.r.o.
-
-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.
-*******************************************************************************
-
-============================================================
-Notices for file(s):
 lib/jopt-simple-4.9.jar
 ------------------------------------------------------------
 The MIT License
diff --git a/lib/annotations-26.0.0-dev.jar b/lib/annotations-26.0.0-dev.jar
index 5ed7fb6..264425d 100644
--- a/lib/annotations-26.0.0-dev.jar
+++ b/lib/annotations-26.0.0-dev.jar
Binary files differ
diff --git a/lib/apkanalyzer-cli.jar b/lib/apkanalyzer-cli.jar
index 91eaf3a..577b82d 100644
--- a/lib/apkanalyzer-cli.jar
+++ b/lib/apkanalyzer-cli.jar
Binary files differ
diff --git a/lib/apkanalyzer.jar b/lib/apkanalyzer.jar
index c47f7c8..4568371 100644
--- a/lib/apkanalyzer.jar
+++ b/lib/apkanalyzer.jar
Binary files differ
diff --git a/lib/archquery-26.0.0-dev.jar b/lib/archquery-26.0.0-dev.jar
index 1cfd2fe..b8110f0 100644
--- a/lib/archquery-26.0.0-dev.jar
+++ b/lib/archquery-26.0.0-dev.jar
Binary files differ
diff --git a/lib/asset-studio-26.0.0-dev.jar b/lib/asset-studio-26.0.0-dev.jar
index d7b8684..fa5e972 100644
--- a/lib/asset-studio-26.0.0-dev.jar
+++ b/lib/asset-studio-26.0.0-dev.jar
Binary files differ
diff --git a/lib/binary-resources.jar b/lib/binary-resources.jar
index 9f572bd..e5c9ca6 100644
--- a/lib/binary-resources.jar
+++ b/lib/binary-resources.jar
Binary files differ
diff --git a/lib/builder-model-3.0.0-dev.jar b/lib/builder-model-3.0.0-dev.jar
index 66c81e4..7497f1f 100644
--- a/lib/builder-model-3.0.0-dev.jar
+++ b/lib/builder-model-3.0.0-dev.jar
Binary files differ
diff --git a/lib/chimpchat-26.0.0-dev.jar b/lib/chimpchat-26.0.0-dev.jar
index 9bf3b11..c9309f1 100644
--- a/lib/chimpchat-26.0.0-dev.jar
+++ b/lib/chimpchat-26.0.0-dev.jar
Binary files differ
diff --git a/lib/common-26.0.0-dev.jar b/lib/common-26.0.0-dev.jar
index 555f150..0d9b87f 100644
--- a/lib/common-26.0.0-dev.jar
+++ b/lib/common-26.0.0-dev.jar
Binary files differ
diff --git a/lib/ddmlib-26.0.0-dev.jar b/lib/ddmlib-26.0.0-dev.jar
index cb6f4b7..f075898 100644
--- a/lib/ddmlib-26.0.0-dev.jar
+++ b/lib/ddmlib-26.0.0-dev.jar
Binary files differ
diff --git a/lib/ddms-26.0.0-dev.jar b/lib/ddms-26.0.0-dev.jar
index 816a240..83702c7 100644
--- a/lib/ddms-26.0.0-dev.jar
+++ b/lib/ddms-26.0.0-dev.jar
Binary files differ
diff --git a/lib/ddmuilib-26.0.0-dev.jar b/lib/ddmuilib-26.0.0-dev.jar
index aaf7cf1..b432a7a 100644
--- a/lib/ddmuilib-26.0.0-dev.jar
+++ b/lib/ddmuilib-26.0.0-dev.jar
Binary files differ
diff --git a/lib/dvlib-26.0.0-dev.jar b/lib/dvlib-26.0.0-dev.jar
index 48de717..e47739f 100644
--- a/lib/dvlib-26.0.0-dev.jar
+++ b/lib/dvlib-26.0.0-dev.jar
Binary files differ
diff --git a/lib/fakeadbserver-26.0.0-dev.jar b/lib/fakeadbserver-26.0.0-dev.jar
index 57409aa..b3ae702 100644
--- a/lib/fakeadbserver-26.0.0-dev.jar
+++ b/lib/fakeadbserver-26.0.0-dev.jar
Binary files differ
diff --git a/lib/fat32lib.jar b/lib/fat32lib.jar
index 2ca2d0f..509ba19 100644
--- a/lib/fat32lib.jar
+++ b/lib/fat32lib.jar
Binary files differ
diff --git a/lib/hierarchyviewer2lib-26.0.0-dev.jar b/lib/hierarchyviewer2lib-26.0.0-dev.jar
index c37c1d7..39d46f7 100644
--- a/lib/hierarchyviewer2lib-26.0.0-dev.jar
+++ b/lib/hierarchyviewer2lib-26.0.0-dev.jar
Binary files differ
diff --git a/lib/intellij-core-26.0.0-dev.jar b/lib/intellij-core-26.0.0-dev.jar
index 5b275a5..798e73a 100644
--- a/lib/intellij-core-26.0.0-dev.jar
+++ b/lib/intellij-core-26.0.0-dev.jar
Binary files differ
diff --git a/lib/jobb-26.0.0-dev.jar b/lib/jobb-26.0.0-dev.jar
index f7b3688..77a7543 100644
--- a/lib/jobb-26.0.0-dev.jar
+++ b/lib/jobb-26.0.0-dev.jar
Binary files differ
diff --git a/lib/layoutlib-api-26.0.0-dev.jar b/lib/layoutlib-api-26.0.0-dev.jar
index d4e180e..7ddade1 100644
--- a/lib/layoutlib-api-26.0.0-dev.jar
+++ b/lib/layoutlib-api-26.0.0-dev.jar
Binary files differ
diff --git a/lib/lint-26.0.0-dev.jar b/lib/lint-26.0.0-dev.jar
index 98c0eb3..7547e8e 100644
--- a/lib/lint-26.0.0-dev.jar
+++ b/lib/lint-26.0.0-dev.jar
Binary files differ
diff --git a/lib/lint-api-26.0.0-dev.jar b/lib/lint-api-26.0.0-dev.jar
index bc5e1c2..5d9e799 100644
--- a/lib/lint-api-26.0.0-dev.jar
+++ b/lib/lint-api-26.0.0-dev.jar
Binary files differ
diff --git a/lib/lint-checks-26.0.0-dev.jar b/lib/lint-checks-26.0.0-dev.jar
index 15616b9..7053e05 100644
--- a/lib/lint-checks-26.0.0-dev.jar
+++ b/lib/lint-checks-26.0.0-dev.jar
Binary files differ
diff --git a/lib/manifest-merger-26.0.0-dev.jar b/lib/manifest-merger-26.0.0-dev.jar
index d8002eb..3e47cad 100644
--- a/lib/manifest-merger-26.0.0-dev.jar
+++ b/lib/manifest-merger-26.0.0-dev.jar
Binary files differ
diff --git a/lib/monitor-x86/artifacts.xml b/lib/monitor-x86/artifacts.xml
index 7f86e44..ecf2fd9 100644
--- a/lib/monitor-x86/artifacts.xml
+++ b/lib/monitor-x86/artifacts.xml
@@ -3,7 +3,7 @@
 <repository name='Bundle pool' type='org.eclipse.equinox.p2.artifact.repository.simpleRepository' version='1'>
   <properties size='2'>
     <property name='p2.system' value='true'/>
-    <property name='p2.timestamp' value='1504242036943'/>
+    <property name='p2.timestamp' value='1505339684484'/>
   </properties>
   <mappings size='3'>
     <rule filter='(&amp; (classifier=osgi.bundle))' output='${repoUrl}/plugins/${id}_${version}.jar'/>
@@ -57,11 +57,6 @@
         <property name='artifact.folder' value='true'/>
       </repositoryProperties>
     </artifact>
-    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.base' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='5335172'/>
-      </properties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.equinox.preferences' version='3.5.1.v20121031-182809'>
       <properties size='1'>
         <property name='download.size' value='126754'/>
@@ -122,6 +117,14 @@
         <property name='download.size' value='222823'/>
       </properties>
     </artifact>
+    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.gldebugger.feature' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='4757'/>
+      </properties>
+      <repositoryProperties size='1'>
+        <property name='artifact.folder' value='true'/>
+      </repositoryProperties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.core.filesystem.linux.x86' version='1.4.0.v20120522-1137'>
       <properties size='1'>
         <property name='download.size' value='10492'/>
@@ -170,6 +173,11 @@
         <property name='download.size' value='83983'/>
       </properties>
     </artifact>
+    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.hierarchyviewer' version='25.4.0.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='408641'/>
+      </properties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.equinox.p2.ql' version='2.0.100.v20110808-1657'>
       <properties size='1'>
         <property name='download.size' value='9256'/>
@@ -218,6 +226,11 @@
         <property name='download.size' value='23505'/>
       </properties>
     </artifact>
+    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.traceview' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='140887'/>
+      </properties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.core.runtime.compatibility' version='3.2.200.v20120521-2346'>
       <properties size='1'>
         <property name='download.size' value='94013'/>
@@ -253,14 +266,6 @@
         <property name='download.size' value='201594'/>
       </properties>
     </artifact>
-    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.gldebugger.feature' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='4757'/>
-      </properties>
-      <repositoryProperties size='1'>
-        <property name='artifact.folder' value='true'/>
-      </repositoryProperties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.equinox.jsp.jasper' version='1.0.400.v20120912-130548'>
       <properties size='1'>
         <property name='download.size' value='28284'/>
@@ -284,6 +289,14 @@
         <property name='download.size' value='17935'/>
       </properties>
     </artifact>
+    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.ddms.feature' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='5060'/>
+      </properties>
+      <repositoryProperties size='1'>
+        <property name='artifact.folder' value='true'/>
+      </repositoryProperties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.equinox.http.servlet' version='1.1.300.v20120912-130548'>
       <properties size='1'>
         <property name='download.size' value='45071'/>
@@ -294,29 +307,24 @@
         <property name='download.size' value='197480'/>
       </properties>
     </artifact>
+    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.hierarchyviewer.feature' version='25.4.0.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='4853'/>
+      </properties>
+      <repositoryProperties size='1'>
+        <property name='artifact.folder' value='true'/>
+      </repositoryProperties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.core.externaltools' version='1.0.100.v20120521-2012'>
       <properties size='1'>
         <property name='download.size' value='41085'/>
       </properties>
     </artifact>
-    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.hierarchyviewer' version='25.4.0.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='409627'/>
-      </properties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.equinox.event' version='1.2.200.v20120522-2049'>
       <properties size='1'>
         <property name='download.size' value='33750'/>
       </properties>
     </artifact>
-    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.ddms.feature' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='5059'/>
-      </properties>
-      <repositoryProperties size='1'>
-        <property name='artifact.folder' value='true'/>
-      </repositoryProperties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.e4.core.contexts' version='1.2.0.v20121221-192508'>
       <properties size='1'>
         <property name='download.size' value='48057'/>
@@ -407,14 +415,6 @@
         <property name='download.size' value='18001'/>
       </properties>
     </artifact>
-    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.monitor.feature' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='4874'/>
-      </properties>
-      <repositoryProperties size='1'>
-        <property name='artifact.folder' value='true'/>
-      </repositoryProperties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.equinox.security' version='1.1.100.v20120522-1841'>
       <properties size='1'>
         <property name='download.size' value='107463'/>
@@ -430,6 +430,14 @@
         <property name='download.size' value='3808742'/>
       </properties>
     </artifact>
+    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.monitor.feature' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='4874'/>
+      </properties>
+      <repositoryProperties size='1'>
+        <property name='artifact.folder' value='true'/>
+      </repositoryProperties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.jsch.core' version='1.1.400.v20120522-1148'>
       <properties size='1'>
         <property name='download.size' value='37557'/>
@@ -481,6 +489,11 @@
         <property name='download.size' value='499655'/>
       </properties>
     </artifact>
+    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.gldebugger' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='520659'/>
+      </properties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.core.databinding.observable' version='1.4.1.v20120521-2329'>
       <properties size='1'>
         <property name='download.size' value='297401'/>
@@ -597,21 +610,29 @@
         <property name='download.size' value='241154'/>
       </properties>
     </artifact>
-    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.monitor' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='217856'/>
-      </properties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.team.ui' version='3.6.201.v20130125-135424'>
       <properties size='1'>
         <property name='download.size' value='1445067'/>
       </properties>
     </artifact>
+    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.base' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='5335323'/>
+      </properties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='javax.xml' version='1.3.4.v201005080400'>
       <properties size='1'>
         <property name='download.size' value='237996'/>
       </properties>
     </artifact>
+    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.traceview.feature' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='4836'/>
+      </properties>
+      <repositoryProperties size='1'>
+        <property name='artifact.folder' value='true'/>
+      </repositoryProperties>
+    </artifact>
     <artifact classifier='org.eclipse.update.feature' id='org.eclipse.equinox.p2.core.feature' version='1.1.0.v20121211-153934-8297FndFWmE7h7Bpz-vcqkxyKz0'>
       <properties size='1'>
         <property name='download.size' value='31326'/>
@@ -628,11 +649,6 @@
         <property name='artifact.folder' value='true'/>
       </repositoryProperties>
     </artifact>
-    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.traceview' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='140826'/>
-      </properties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.debug.ui' version='3.8.2.v20130130-171415'>
       <properties size='1'>
         <property name='download.size' value='2614072'/>
@@ -683,14 +699,6 @@
         <property name='download.size' value='27328'/>
       </properties>
     </artifact>
-    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.hierarchyviewer.feature' version='25.4.0.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='4851'/>
-      </properties>
-      <repositoryProperties size='1'>
-        <property name='artifact.folder' value='true'/>
-      </repositoryProperties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.equinox.launcher' version='1.3.0.v20120522-1813'>
       <properties size='1'>
         <property name='download.size' value='49282'/>
@@ -837,19 +845,16 @@
         <property name='download.size' value='108906'/>
       </properties>
     </artifact>
+    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.ddms' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='2647417'/>
+      </properties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.help.base' version='3.6.101.v201302041200'>
       <properties size='1'>
         <property name='download.size' value='421642'/>
       </properties>
     </artifact>
-    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.traceview.feature' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='4836'/>
-      </properties>
-      <repositoryProperties size='1'>
-        <property name='artifact.folder' value='true'/>
-      </repositoryProperties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='com.ibm.icu' version='4.4.2.v20110823'>
       <properties size='1'>
         <property name='download.size' value='6701200'/>
@@ -860,11 +865,6 @@
         <property name='download.size' value='330211'/>
       </properties>
     </artifact>
-    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.ddms' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='2647232'/>
-      </properties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.jetty.io' version='8.1.3.v20120522'>
       <properties size='1'>
         <property name='download.size' value='111094'/>
@@ -966,6 +966,11 @@
         <property name='artifact.folder' value='true'/>
       </repositoryProperties>
     </artifact>
+    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.monitor' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='217856'/>
+      </properties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.core.variables' version='3.2.600.v20120521-2012'>
       <properties size='1'>
         <property name='download.size' value='34354'/>
@@ -1021,11 +1026,6 @@
         <property name='download.size' value='105407'/>
       </properties>
     </artifact>
-    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.gldebugger' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='520658'/>
-      </properties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.apache.commons.logging' version='1.0.4.v201101211617'>
       <properties size='1'>
         <property name='download.size' value='45405'/>
diff --git a/lib/monitor-x86/configuration/config.ini b/lib/monitor-x86/configuration/config.ini
index e42e7b8..e3701c5 100644
--- a/lib/monitor-x86/configuration/config.ini
+++ b/lib/monitor-x86/configuration/config.ini
@@ -1,9 +1,9 @@
 #This configuration file was written by: org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxFwConfigFileParser
-#Fri Sep 01 05:00:37 UTC 2017
+#Wed Sep 13 21:54:45 UTC 2017
 eclipse.p2.profile=DefaultProfile
 osgi.framework=file\:plugins/org.eclipse.osgi_3.8.2.v20130124-134944.jar
 equinox.use.ds=true
-osgi.bundles=reference\:file\:com.android.ide.eclipse.base_25.2.2.4311448.jar@4,reference\:file\:com.android.ide.eclipse.ddms_25.2.2.4311448.jar@4,reference\:file\:com.android.ide.eclipse.gldebugger_25.2.2.4311448.jar@4,reference\:file\:com.android.ide.eclipse.hierarchyviewer_25.4.0.4311448.jar@4,reference\:file\:com.android.ide.eclipse.monitor_25.2.2.4311448.jar@4,reference\:file\:com.android.ide.eclipse.traceview_25.2.2.4311448.jar@4,reference\:file\:com.ibm.icu_4.4.2.v20110823.jar@4,reference\:file\:com.jcraft.jsch_0.1.46.v201205102330.jar@4,reference\:file\:com.sun.el_2.2.0.v201108011116.jar@4,reference\:file\:javax.annotation_1.0.0.v20101115-0725.jar@4,reference\:file\:javax.el_2.2.0.v201108011116.jar@4,reference\:file\:javax.inject_1.0.0.v20091030.jar@4,reference\:file\:javax.servlet_3.0.0.v201112011016.jar@4,reference\:file\:javax.servlet.jsp_2.2.0.v201112011158.jar@4,reference\:file\:javax.xml_1.3.4.v201005080400.jar@4,reference\:file\:org.apache.ant_1.8.3.v201301120609/@4,reference\:file\:org.apache.batik.css_1.6.0.v201011041432.jar@4,reference\:file\:org.apache.batik.util_1.6.0.v201011041432.jar@4,reference\:file\:org.apache.batik.util.gui_1.6.0.v201011041432.jar@4,reference\:file\:org.apache.commons.codec_1.3.0.v201101211617.jar@4,reference\:file\:org.apache.commons.httpclient_3.1.0.v201012070820.jar@4,reference\:file\:org.apache.commons.logging_1.0.4.v201101211617.jar@4,reference\:file\:org.apache.felix.gogo.command_0.8.0.v201108120515.jar@4,reference\:file\:org.apache.felix.gogo.runtime_0.8.0.v201108120515.jar@4,reference\:file\:org.apache.felix.gogo.shell_0.8.0.v201110170705.jar@4,reference\:file\:org.apache.jasper.glassfish_2.2.2.v201205150955.jar@4,reference\:file\:org.apache.lucene_2.9.1.v201101211721.jar@4,reference\:file\:org.apache.lucene.analysis_2.9.1.v201101211721.jar@4,reference\:file\:org.apache.lucene.core_2.9.1.v201101211721.jar@4,reference\:file\:org.eclipse.ant.core_3.2.401.v20121204-162022.jar@4,reference\:file\:org.eclipse.compare_3.5.301.v20130125-135424.jar@4,reference\:file\:org.eclipse.compare.core_3.5.200.v20120522-1148.jar@4,reference\:file\:org.eclipse.core.commands_3.6.2.v20130123-162658.jar@4,reference\:file\:org.eclipse.core.contenttype_3.4.200.v20120523-2004.jar@4,reference\:file\:org.eclipse.core.databinding_1.4.1.v20120912-132807.jar@4,reference\:file\:org.eclipse.core.databinding.beans_1.2.200.v20120523-1955.jar@4,reference\:file\:org.eclipse.core.databinding.observable_1.4.1.v20120521-2329.jar@4,reference\:file\:org.eclipse.core.databinding.property_1.4.100.v20120523-1955.jar@4,reference\:file\:org.eclipse.core.expressions_3.4.401.v20120912-155018.jar@4,reference\:file\:org.eclipse.core.externaltools_1.0.100.v20120521-2012.jar@4,reference\:file\:org.eclipse.core.filebuffers_3.5.200.v20120523-1310.jar@4,reference\:file\:org.eclipse.core.filesystem_1.3.200.v20130115-145044.jar@4,reference\:file\:org.eclipse.core.filesystem.linux.x86_1.4.0.v20120522-1137.jar@4,reference\:file\:org.eclipse.core.jobs_3.5.300.v20120912-155018.jar@4,reference\:file\:org.eclipse.core.net_1.2.200.v20120914-093638.jar@4,reference\:file\:org.eclipse.core.net.linux.x86_1.1.200.v20120522-1148.jar@4,reference\:file\:org.eclipse.core.resources_3.8.1.v20121114-124432.jar@4,reference\:file\:org.eclipse.core.runtime_3.8.0.v20120912-155025.jar@2\:start,reference\:file\:org.eclipse.core.runtime.compatibility_3.2.200.v20120521-2346.jar@4,reference\:file\:org.eclipse.core.runtime.compatibility.registry_3.5.101.v20130108-163257/@4,reference\:file\:org.eclipse.core.variables_3.2.600.v20120521-2012.jar@4,reference\:file\:org.eclipse.debug.core_3.7.100.v20120521-2012.jar@4,reference\:file\:org.eclipse.debug.ui_3.8.2.v20130130-171415.jar@4,reference\:file\:org.eclipse.e4.core.commands_0.10.1.v20120523-1955.jar@4,reference\:file\:org.eclipse.e4.core.contexts_1.2.0.v20121221-192508.jar@4,reference\:file\:org.eclipse.e4.core.di_1.2.0.v20121024-173149.jar@4,reference\:file\:org.eclipse.e4.core.di.extensions_0.11.100.v20121024-182359.jar@4,reference\:file\:org.eclipse.e4.core.services_1.0.0.v20120521-2346.jar@4,reference\:file\:org.eclipse.e4.ui.bindings_0.10.3.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.css.core_0.10.2.v20120912-132817.jar@4,reference\:file\:org.eclipse.e4.ui.css.swt_0.10.3.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.css.swt.theme_0.9.4.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.di_0.10.1.v20120523-1955.jar@4,reference\:file\:org.eclipse.e4.ui.model.workbench_0.10.1.v20120523-1955.jar@4,reference\:file\:org.eclipse.e4.ui.services_0.10.3.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.widgets_0.12.3.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.workbench_0.11.0.v20130125-100758.jar@4,reference\:file\:org.eclipse.e4.ui.workbench.addons.swt_0.10.3.v20130124-185622.jar@4,reference\:file\:org.eclipse.e4.ui.workbench.renderers.swt_0.10.3.v20130124-170312.jar@4,reference\:file\:org.eclipse.e4.ui.workbench.swt_0.10.3.v20130124-133900.jar@4,reference\:file\:org.eclipse.e4.ui.workbench3_0.12.0.v20120521-2329.jar@4,reference\:file\:org.eclipse.ecf_3.1.300.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.filetransfer_5.0.0.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.identity_3.1.200.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.provider.filetransfer_3.2.0.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.provider.filetransfer.httpclient_4.0.200.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.provider.filetransfer.httpclient.ssl_1.0.0.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.provider.filetransfer.ssl_1.0.0.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.ssl_1.0.100.v20120610-1946.jar@4,reference\:file\:org.eclipse.emf.common_2.8.0.v20130125-0546.jar@4,reference\:file\:org.eclipse.emf.ecore_2.8.3.v20130125-0546.jar@4,reference\:file\:org.eclipse.emf.ecore.change_2.8.0.v20130125-0546.jar@4,reference\:file\:org.eclipse.emf.ecore.xmi_2.8.1.v20130125-0546.jar@4,reference\:file\:org.eclipse.equinox.app_1.3.100.v20120522-1841.jar@4,reference\:file\:org.eclipse.equinox.bidi_0.9.100.v20121107-021609.jar@4,reference\:file\:org.eclipse.equinox.common_3.6.100.v20120522-1841.jar@2\:start,reference\:file\:org.eclipse.equinox.console_1.0.0.v20120522-1841.jar@4,reference\:file\:org.eclipse.equinox.ds_1.4.1.v20120926-201320.jar@2\:start,reference\:file\:org.eclipse.equinox.event_1.2.200.v20120522-2049.jar@4,reference\:file\:org.eclipse.equinox.frameworkadmin_2.0.100.v20120913-155515.jar@4,reference\:file\:org.eclipse.equinox.frameworkadmin.equinox_1.0.400.v20120913-155709.jar@4,reference\:file\:org.eclipse.equinox.http.jetty_3.0.1.v20121109-203239.jar@4,reference\:file\:org.eclipse.equinox.http.registry_1.1.200.v20120912-130548.jar@4,reference\:file\:org.eclipse.equinox.http.servlet_1.1.300.v20120912-130548.jar@4,reference\:file\:org.eclipse.equinox.jsp.jasper_1.0.400.v20120912-130548.jar@4,reference\:file\:org.eclipse.equinox.jsp.jasper.registry_1.0.300.v20120912-130548.jar@4,reference\:file\:org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar@4,reference\:file\:org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.v20120913-144807/@4,reference\:file\:org.eclipse.equinox.p2.artifact.repository_1.1.200.v20120430-1959.jar@4,reference\:file\:org.eclipse.equinox.p2.console_1.0.300.v20120429-0125.jar@4,reference\:file\:org.eclipse.equinox.p2.core_2.2.0.v20120430-0525.jar@4,reference\:file\:org.eclipse.equinox.p2.director_2.2.0.v20120524-0542.jar@4,reference\:file\:org.eclipse.equinox.p2.director.app_1.0.300.v20120428-0517.jar@4,reference\:file\:org.eclipse.equinox.p2.directorywatcher_1.0.300.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.engine_2.2.0.v20130121-021919.jar@4,reference\:file\:org.eclipse.equinox.p2.extensionlocation_1.2.100.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.garbagecollector_1.0.200.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.jarprocessor_1.0.200.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.metadata_2.1.0.v20120430-2001.jar@4,reference\:file\:org.eclipse.equinox.p2.metadata.repository_1.2.100.v20120524-1717.jar@4,reference\:file\:org.eclipse.equinox.p2.operations_2.2.0.v20130119-010614.jar@4,reference\:file\:org.eclipse.equinox.p2.publisher_1.2.0.v20121002-080415.jar@4,reference\:file\:org.eclipse.equinox.p2.publisher.eclipse_1.1.0.v20120913-155635.jar@4,reference\:file\:org.eclipse.equinox.p2.ql_2.0.100.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.reconciler.dropins_1.1.200.v20120301-2145.jar@4,reference\:file\:org.eclipse.equinox.p2.repository_2.2.0.v20120524-1945.jar@4,reference\:file\:org.eclipse.equinox.p2.repository.tools_2.0.100.v20120501-1314.jar@4,reference\:file\:org.eclipse.equinox.p2.touchpoint.eclipse_2.1.100.v20120428-0117.jar@4,reference\:file\:org.eclipse.equinox.p2.touchpoint.natives_1.1.0.v20130121-021919.jar@4,reference\:file\:org.eclipse.equinox.p2.transport.ecf_1.0.100.v20120913-155635.jar@4,reference\:file\:org.eclipse.equinox.p2.ui_2.2.0.v20130119-010614.jar@4,reference\:file\:org.eclipse.equinox.p2.ui.importexport_1.0.1.v20120913-155635.jar@4,reference\:file\:org.eclipse.equinox.p2.ui.sdk_1.0.200.v20120515-1650.jar@4,reference\:file\:org.eclipse.equinox.p2.ui.sdk.scheduler_1.1.0.v20110815-1744.jar@4,reference\:file\:org.eclipse.equinox.p2.updatechecker_1.1.200.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.updatesite_1.0.400.v20120412-1615.jar@4,reference\:file\:org.eclipse.equinox.preferences_3.5.1.v20121031-182809.jar@4,reference\:file\:org.eclipse.equinox.registry_3.5.200.v20120522-1841.jar@4,reference\:file\:org.eclipse.equinox.security_1.1.100.v20120522-1841.jar@4,reference\:file\:org.eclipse.equinox.security.ui_1.1.100.v20120522-2049.jar@4,reference\:file\:org.eclipse.equinox.simpleconfigurator_1.0.301.v20120914-163612.jar@4,reference\:file\:org.eclipse.equinox.simpleconfigurator.manipulator_2.0.0.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.util_1.0.400.v20120917-192807.jar@4,reference\:file\:org.eclipse.help_3.6.0.v20120912-134126.jar@4,reference\:file\:org.eclipse.help.base_3.6.101.v201302041200.jar@4,reference\:file\:org.eclipse.help.ui_3.5.201.v20130108-092756.jar@4,reference\:file\:org.eclipse.help.webapp_3.6.101.v20130116-182509.jar@4,reference\:file\:org.eclipse.jetty.continuation_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.http_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.io_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.security_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.server_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.servlet_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.util_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jface_3.8.102.v20130123-162658.jar@4,reference\:file\:org.eclipse.jface.databinding_1.6.0.v20120912-132807.jar@4,reference\:file\:org.eclipse.jface.text_3.8.2.v20121126-164145.jar@4,reference\:file\:org.eclipse.jsch.core_1.1.400.v20120522-1148.jar@4,reference\:file\:org.eclipse.jsch.ui_1.1.400.v20120522-1148.jar@4,reference\:file\:org.eclipse.ltk.core.refactoring_3.6.0.v20120523-1543.jar@4,reference\:file\:org.eclipse.ltk.ui.refactoring_3.7.0.v20120523-1543.jar@4,reference\:file\:org.eclipse.osgi.services_3.3.100.v20120522-1822.jar@4,reference\:file\:org.eclipse.osgi.util_3.2.300.v20120913-144807.jar@4,reference\:file\:org.eclipse.platform_4.2.2.v201302041200/@4,reference\:file\:org.eclipse.platform.doc.user_4.2.2.v20130121-200410.jar@4,reference\:file\:org.eclipse.rcp_4.2.1.v201302041200.jar@4,reference\:file\:org.eclipse.search_3.8.0.v20120523-1540.jar@4,reference\:file\:org.eclipse.swt_3.100.1.v4236b.jar@4,reference\:file\:org.eclipse.swt.gtk.linux.x86_3.100.1.v4236b.jar@4,reference\:file\:org.eclipse.team.core_3.6.100.v20120524-0627.jar@4,reference\:file\:org.eclipse.team.ui_3.6.201.v20130125-135424.jar@4,reference\:file\:org.eclipse.text_3.5.200.v20120523-1310.jar@4,reference\:file\:org.eclipse.ui_3.104.0.v20121024-145224.jar@4,reference\:file\:org.eclipse.ui.browser_3.4.2.v20130123-162658.jar@4,reference\:file\:org.eclipse.ui.cheatsheets_3.4.200.v20120521-2344.jar@4,reference\:file\:org.eclipse.ui.console_3.5.100.v20120521-2012.jar@4,reference\:file\:org.eclipse.ui.editors_3.8.0.v20120523-1540.jar@4,reference\:file\:org.eclipse.ui.externaltools_3.2.100.v20120530-1753.jar@4,reference\:file\:org.eclipse.ui.forms_3.5.200.v20120705-114351.jar@4,reference\:file\:org.eclipse.ui.ide_3.8.2.v20121106-165923.jar@4,reference\:file\:org.eclipse.ui.ide.application_1.0.400.v20120523-1955.jar@4,reference\:file\:org.eclipse.ui.intro_3.4.200.v20120521-2344.jar@4,reference\:file\:org.eclipse.ui.intro.universal_3.2.600.v20120912-155524/@4,reference\:file\:org.eclipse.ui.navigator_3.5.200.v20120705-114103.jar@4,reference\:file\:org.eclipse.ui.navigator.resources_3.4.400.v20120705-114010.jar@4,reference\:file\:org.eclipse.ui.net_1.2.101.v20120914-093638.jar@4,reference\:file\:org.eclipse.ui.views_3.6.100.v20120705-114010.jar@4,reference\:file\:org.eclipse.ui.views.properties.tabbed_3.5.300.v20120912-132807.jar@4,reference\:file\:org.eclipse.ui.workbench_3.104.0.v20130204-164612.jar@4,reference\:file\:org.eclipse.ui.workbench.texteditor_3.8.0.v20120523-1310.jar@4,reference\:file\:org.eclipse.update.configurator_3.3.200.v20120912-144026.jar@4,reference\:file\:org.sat4j.core_2.3.0.v20110329.jar@4,reference\:file\:org.sat4j.pb_2.3.0.v20110329.jar@4,reference\:file\:org.w3c.css.sac_1.3.1.v200903091627.jar@4,reference\:file\:org.w3c.dom.smil_1.0.0.v200806040011.jar@4,reference\:file\:org.w3c.dom.svg_1.1.0.v201011041433.jar@4
+osgi.bundles=reference\:file\:com.android.ide.eclipse.base_25.2.2.4333796.jar@4,reference\:file\:com.android.ide.eclipse.ddms_25.2.2.4333796.jar@4,reference\:file\:com.android.ide.eclipse.gldebugger_25.2.2.4333796.jar@4,reference\:file\:com.android.ide.eclipse.hierarchyviewer_25.4.0.4333796.jar@4,reference\:file\:com.android.ide.eclipse.monitor_25.2.2.4333796.jar@4,reference\:file\:com.android.ide.eclipse.traceview_25.2.2.4333796.jar@4,reference\:file\:com.ibm.icu_4.4.2.v20110823.jar@4,reference\:file\:com.jcraft.jsch_0.1.46.v201205102330.jar@4,reference\:file\:com.sun.el_2.2.0.v201108011116.jar@4,reference\:file\:javax.annotation_1.0.0.v20101115-0725.jar@4,reference\:file\:javax.el_2.2.0.v201108011116.jar@4,reference\:file\:javax.inject_1.0.0.v20091030.jar@4,reference\:file\:javax.servlet_3.0.0.v201112011016.jar@4,reference\:file\:javax.servlet.jsp_2.2.0.v201112011158.jar@4,reference\:file\:javax.xml_1.3.4.v201005080400.jar@4,reference\:file\:org.apache.ant_1.8.3.v201301120609/@4,reference\:file\:org.apache.batik.css_1.6.0.v201011041432.jar@4,reference\:file\:org.apache.batik.util_1.6.0.v201011041432.jar@4,reference\:file\:org.apache.batik.util.gui_1.6.0.v201011041432.jar@4,reference\:file\:org.apache.commons.codec_1.3.0.v201101211617.jar@4,reference\:file\:org.apache.commons.httpclient_3.1.0.v201012070820.jar@4,reference\:file\:org.apache.commons.logging_1.0.4.v201101211617.jar@4,reference\:file\:org.apache.felix.gogo.command_0.8.0.v201108120515.jar@4,reference\:file\:org.apache.felix.gogo.runtime_0.8.0.v201108120515.jar@4,reference\:file\:org.apache.felix.gogo.shell_0.8.0.v201110170705.jar@4,reference\:file\:org.apache.jasper.glassfish_2.2.2.v201205150955.jar@4,reference\:file\:org.apache.lucene_2.9.1.v201101211721.jar@4,reference\:file\:org.apache.lucene.analysis_2.9.1.v201101211721.jar@4,reference\:file\:org.apache.lucene.core_2.9.1.v201101211721.jar@4,reference\:file\:org.eclipse.ant.core_3.2.401.v20121204-162022.jar@4,reference\:file\:org.eclipse.compare_3.5.301.v20130125-135424.jar@4,reference\:file\:org.eclipse.compare.core_3.5.200.v20120522-1148.jar@4,reference\:file\:org.eclipse.core.commands_3.6.2.v20130123-162658.jar@4,reference\:file\:org.eclipse.core.contenttype_3.4.200.v20120523-2004.jar@4,reference\:file\:org.eclipse.core.databinding_1.4.1.v20120912-132807.jar@4,reference\:file\:org.eclipse.core.databinding.beans_1.2.200.v20120523-1955.jar@4,reference\:file\:org.eclipse.core.databinding.observable_1.4.1.v20120521-2329.jar@4,reference\:file\:org.eclipse.core.databinding.property_1.4.100.v20120523-1955.jar@4,reference\:file\:org.eclipse.core.expressions_3.4.401.v20120912-155018.jar@4,reference\:file\:org.eclipse.core.externaltools_1.0.100.v20120521-2012.jar@4,reference\:file\:org.eclipse.core.filebuffers_3.5.200.v20120523-1310.jar@4,reference\:file\:org.eclipse.core.filesystem_1.3.200.v20130115-145044.jar@4,reference\:file\:org.eclipse.core.filesystem.linux.x86_1.4.0.v20120522-1137.jar@4,reference\:file\:org.eclipse.core.jobs_3.5.300.v20120912-155018.jar@4,reference\:file\:org.eclipse.core.net_1.2.200.v20120914-093638.jar@4,reference\:file\:org.eclipse.core.net.linux.x86_1.1.200.v20120522-1148.jar@4,reference\:file\:org.eclipse.core.resources_3.8.1.v20121114-124432.jar@4,reference\:file\:org.eclipse.core.runtime_3.8.0.v20120912-155025.jar@2\:start,reference\:file\:org.eclipse.core.runtime.compatibility_3.2.200.v20120521-2346.jar@4,reference\:file\:org.eclipse.core.runtime.compatibility.registry_3.5.101.v20130108-163257/@4,reference\:file\:org.eclipse.core.variables_3.2.600.v20120521-2012.jar@4,reference\:file\:org.eclipse.debug.core_3.7.100.v20120521-2012.jar@4,reference\:file\:org.eclipse.debug.ui_3.8.2.v20130130-171415.jar@4,reference\:file\:org.eclipse.e4.core.commands_0.10.1.v20120523-1955.jar@4,reference\:file\:org.eclipse.e4.core.contexts_1.2.0.v20121221-192508.jar@4,reference\:file\:org.eclipse.e4.core.di_1.2.0.v20121024-173149.jar@4,reference\:file\:org.eclipse.e4.core.di.extensions_0.11.100.v20121024-182359.jar@4,reference\:file\:org.eclipse.e4.core.services_1.0.0.v20120521-2346.jar@4,reference\:file\:org.eclipse.e4.ui.bindings_0.10.3.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.css.core_0.10.2.v20120912-132817.jar@4,reference\:file\:org.eclipse.e4.ui.css.swt_0.10.3.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.css.swt.theme_0.9.4.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.di_0.10.1.v20120523-1955.jar@4,reference\:file\:org.eclipse.e4.ui.model.workbench_0.10.1.v20120523-1955.jar@4,reference\:file\:org.eclipse.e4.ui.services_0.10.3.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.widgets_0.12.3.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.workbench_0.11.0.v20130125-100758.jar@4,reference\:file\:org.eclipse.e4.ui.workbench.addons.swt_0.10.3.v20130124-185622.jar@4,reference\:file\:org.eclipse.e4.ui.workbench.renderers.swt_0.10.3.v20130124-170312.jar@4,reference\:file\:org.eclipse.e4.ui.workbench.swt_0.10.3.v20130124-133900.jar@4,reference\:file\:org.eclipse.e4.ui.workbench3_0.12.0.v20120521-2329.jar@4,reference\:file\:org.eclipse.ecf_3.1.300.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.filetransfer_5.0.0.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.identity_3.1.200.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.provider.filetransfer_3.2.0.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.provider.filetransfer.httpclient_4.0.200.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.provider.filetransfer.httpclient.ssl_1.0.0.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.provider.filetransfer.ssl_1.0.0.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.ssl_1.0.100.v20120610-1946.jar@4,reference\:file\:org.eclipse.emf.common_2.8.0.v20130125-0546.jar@4,reference\:file\:org.eclipse.emf.ecore_2.8.3.v20130125-0546.jar@4,reference\:file\:org.eclipse.emf.ecore.change_2.8.0.v20130125-0546.jar@4,reference\:file\:org.eclipse.emf.ecore.xmi_2.8.1.v20130125-0546.jar@4,reference\:file\:org.eclipse.equinox.app_1.3.100.v20120522-1841.jar@4,reference\:file\:org.eclipse.equinox.bidi_0.9.100.v20121107-021609.jar@4,reference\:file\:org.eclipse.equinox.common_3.6.100.v20120522-1841.jar@2\:start,reference\:file\:org.eclipse.equinox.console_1.0.0.v20120522-1841.jar@4,reference\:file\:org.eclipse.equinox.ds_1.4.1.v20120926-201320.jar@2\:start,reference\:file\:org.eclipse.equinox.event_1.2.200.v20120522-2049.jar@4,reference\:file\:org.eclipse.equinox.frameworkadmin_2.0.100.v20120913-155515.jar@4,reference\:file\:org.eclipse.equinox.frameworkadmin.equinox_1.0.400.v20120913-155709.jar@4,reference\:file\:org.eclipse.equinox.http.jetty_3.0.1.v20121109-203239.jar@4,reference\:file\:org.eclipse.equinox.http.registry_1.1.200.v20120912-130548.jar@4,reference\:file\:org.eclipse.equinox.http.servlet_1.1.300.v20120912-130548.jar@4,reference\:file\:org.eclipse.equinox.jsp.jasper_1.0.400.v20120912-130548.jar@4,reference\:file\:org.eclipse.equinox.jsp.jasper.registry_1.0.300.v20120912-130548.jar@4,reference\:file\:org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar@4,reference\:file\:org.eclipse.equinox.launcher.gtk.linux.x86_1.1.200.v20120913-144807/@4,reference\:file\:org.eclipse.equinox.p2.artifact.repository_1.1.200.v20120430-1959.jar@4,reference\:file\:org.eclipse.equinox.p2.console_1.0.300.v20120429-0125.jar@4,reference\:file\:org.eclipse.equinox.p2.core_2.2.0.v20120430-0525.jar@4,reference\:file\:org.eclipse.equinox.p2.director_2.2.0.v20120524-0542.jar@4,reference\:file\:org.eclipse.equinox.p2.director.app_1.0.300.v20120428-0517.jar@4,reference\:file\:org.eclipse.equinox.p2.directorywatcher_1.0.300.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.engine_2.2.0.v20130121-021919.jar@4,reference\:file\:org.eclipse.equinox.p2.extensionlocation_1.2.100.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.garbagecollector_1.0.200.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.jarprocessor_1.0.200.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.metadata_2.1.0.v20120430-2001.jar@4,reference\:file\:org.eclipse.equinox.p2.metadata.repository_1.2.100.v20120524-1717.jar@4,reference\:file\:org.eclipse.equinox.p2.operations_2.2.0.v20130119-010614.jar@4,reference\:file\:org.eclipse.equinox.p2.publisher_1.2.0.v20121002-080415.jar@4,reference\:file\:org.eclipse.equinox.p2.publisher.eclipse_1.1.0.v20120913-155635.jar@4,reference\:file\:org.eclipse.equinox.p2.ql_2.0.100.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.reconciler.dropins_1.1.200.v20120301-2145.jar@4,reference\:file\:org.eclipse.equinox.p2.repository_2.2.0.v20120524-1945.jar@4,reference\:file\:org.eclipse.equinox.p2.repository.tools_2.0.100.v20120501-1314.jar@4,reference\:file\:org.eclipse.equinox.p2.touchpoint.eclipse_2.1.100.v20120428-0117.jar@4,reference\:file\:org.eclipse.equinox.p2.touchpoint.natives_1.1.0.v20130121-021919.jar@4,reference\:file\:org.eclipse.equinox.p2.transport.ecf_1.0.100.v20120913-155635.jar@4,reference\:file\:org.eclipse.equinox.p2.ui_2.2.0.v20130119-010614.jar@4,reference\:file\:org.eclipse.equinox.p2.ui.importexport_1.0.1.v20120913-155635.jar@4,reference\:file\:org.eclipse.equinox.p2.ui.sdk_1.0.200.v20120515-1650.jar@4,reference\:file\:org.eclipse.equinox.p2.ui.sdk.scheduler_1.1.0.v20110815-1744.jar@4,reference\:file\:org.eclipse.equinox.p2.updatechecker_1.1.200.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.updatesite_1.0.400.v20120412-1615.jar@4,reference\:file\:org.eclipse.equinox.preferences_3.5.1.v20121031-182809.jar@4,reference\:file\:org.eclipse.equinox.registry_3.5.200.v20120522-1841.jar@4,reference\:file\:org.eclipse.equinox.security_1.1.100.v20120522-1841.jar@4,reference\:file\:org.eclipse.equinox.security.ui_1.1.100.v20120522-2049.jar@4,reference\:file\:org.eclipse.equinox.simpleconfigurator_1.0.301.v20120914-163612.jar@4,reference\:file\:org.eclipse.equinox.simpleconfigurator.manipulator_2.0.0.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.util_1.0.400.v20120917-192807.jar@4,reference\:file\:org.eclipse.help_3.6.0.v20120912-134126.jar@4,reference\:file\:org.eclipse.help.base_3.6.101.v201302041200.jar@4,reference\:file\:org.eclipse.help.ui_3.5.201.v20130108-092756.jar@4,reference\:file\:org.eclipse.help.webapp_3.6.101.v20130116-182509.jar@4,reference\:file\:org.eclipse.jetty.continuation_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.http_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.io_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.security_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.server_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.servlet_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.util_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jface_3.8.102.v20130123-162658.jar@4,reference\:file\:org.eclipse.jface.databinding_1.6.0.v20120912-132807.jar@4,reference\:file\:org.eclipse.jface.text_3.8.2.v20121126-164145.jar@4,reference\:file\:org.eclipse.jsch.core_1.1.400.v20120522-1148.jar@4,reference\:file\:org.eclipse.jsch.ui_1.1.400.v20120522-1148.jar@4,reference\:file\:org.eclipse.ltk.core.refactoring_3.6.0.v20120523-1543.jar@4,reference\:file\:org.eclipse.ltk.ui.refactoring_3.7.0.v20120523-1543.jar@4,reference\:file\:org.eclipse.osgi.services_3.3.100.v20120522-1822.jar@4,reference\:file\:org.eclipse.osgi.util_3.2.300.v20120913-144807.jar@4,reference\:file\:org.eclipse.platform_4.2.2.v201302041200/@4,reference\:file\:org.eclipse.platform.doc.user_4.2.2.v20130121-200410.jar@4,reference\:file\:org.eclipse.rcp_4.2.1.v201302041200.jar@4,reference\:file\:org.eclipse.search_3.8.0.v20120523-1540.jar@4,reference\:file\:org.eclipse.swt_3.100.1.v4236b.jar@4,reference\:file\:org.eclipse.swt.gtk.linux.x86_3.100.1.v4236b.jar@4,reference\:file\:org.eclipse.team.core_3.6.100.v20120524-0627.jar@4,reference\:file\:org.eclipse.team.ui_3.6.201.v20130125-135424.jar@4,reference\:file\:org.eclipse.text_3.5.200.v20120523-1310.jar@4,reference\:file\:org.eclipse.ui_3.104.0.v20121024-145224.jar@4,reference\:file\:org.eclipse.ui.browser_3.4.2.v20130123-162658.jar@4,reference\:file\:org.eclipse.ui.cheatsheets_3.4.200.v20120521-2344.jar@4,reference\:file\:org.eclipse.ui.console_3.5.100.v20120521-2012.jar@4,reference\:file\:org.eclipse.ui.editors_3.8.0.v20120523-1540.jar@4,reference\:file\:org.eclipse.ui.externaltools_3.2.100.v20120530-1753.jar@4,reference\:file\:org.eclipse.ui.forms_3.5.200.v20120705-114351.jar@4,reference\:file\:org.eclipse.ui.ide_3.8.2.v20121106-165923.jar@4,reference\:file\:org.eclipse.ui.ide.application_1.0.400.v20120523-1955.jar@4,reference\:file\:org.eclipse.ui.intro_3.4.200.v20120521-2344.jar@4,reference\:file\:org.eclipse.ui.intro.universal_3.2.600.v20120912-155524/@4,reference\:file\:org.eclipse.ui.navigator_3.5.200.v20120705-114103.jar@4,reference\:file\:org.eclipse.ui.navigator.resources_3.4.400.v20120705-114010.jar@4,reference\:file\:org.eclipse.ui.net_1.2.101.v20120914-093638.jar@4,reference\:file\:org.eclipse.ui.views_3.6.100.v20120705-114010.jar@4,reference\:file\:org.eclipse.ui.views.properties.tabbed_3.5.300.v20120912-132807.jar@4,reference\:file\:org.eclipse.ui.workbench_3.104.0.v20130204-164612.jar@4,reference\:file\:org.eclipse.ui.workbench.texteditor_3.8.0.v20120523-1310.jar@4,reference\:file\:org.eclipse.update.configurator_3.3.200.v20120912-144026.jar@4,reference\:file\:org.sat4j.core_2.3.0.v20110329.jar@4,reference\:file\:org.sat4j.pb_2.3.0.v20110329.jar@4,reference\:file\:org.w3c.css.sac_1.3.1.v200903091627.jar@4,reference\:file\:org.w3c.dom.smil_1.0.0.v200806040011.jar@4,reference\:file\:org.w3c.dom.svg_1.1.0.v201011041433.jar@4
 eclipse.product=com.android.ide.eclipse.monitor.product
 osgi.splashPath=platform\:/base/plugins/com.android.ide.eclipse.monitor
 osgi.framework.extensions=
diff --git a/lib/monitor-x86/configuration/org.eclipse.update/platform.xml b/lib/monitor-x86/configuration/org.eclipse.update/platform.xml
index 3b8f816..51de2e9 100644
--- a/lib/monitor-x86/configuration/org.eclipse.update/platform.xml
+++ b/lib/monitor-x86/configuration/org.eclipse.update/platform.xml
@@ -1,33 +1,33 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<config date="1504242037693" transient="false">
+<config date="1505339685316" transient="false">
 	<site updateable="true" url="platform:/base/" enabled="true" policy="USER-EXCLUDE">
-		<feature id="com.android.ide.eclipse.gldebugger.feature" version="25.2.2.4311448" url="features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4311448/">
-		</feature>
-		<feature id="com.android.ide.eclipse.ddms.feature" version="25.2.2.4311448" url="features/com.android.ide.eclipse.ddms.feature_25.2.2.4311448/" plugin-identifier="com.android.ide.eclipse.ddms">
-		</feature>
-		<feature id="com.android.ide.eclipse.traceview.feature" version="25.2.2.4311448" url="features/com.android.ide.eclipse.traceview.feature_25.2.2.4311448/" plugin-identifier="com.android.ide.eclipse.traceview">
+		<feature id="com.android.ide.eclipse.gldebugger.feature" version="25.2.2.4333796" url="features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4333796/">
 		</feature>
 		<feature id="org.eclipse.equinox.p2.extras.feature" version="1.1.0.v20121211-153934-7A6FEcDiVOTg2RYDuZuFz-L2z00w" url="features/org.eclipse.equinox.p2.extras.feature_1.1.0.v20121211-153934-7A6FEcDiVOTg2RYDuZuFz-L2z00w/">
 		</feature>
 		<feature id="org.eclipse.help" version="1.4.1.v20120912-144938-8R7xFOXFLWUl7PpNBh_HIGkb4" url="features/org.eclipse.help_1.4.1.v20120912-144938-8R7xFOXFLWUl7PpNBh_HIGkb4/" plugin-identifier="org.eclipse.help.base">
 		</feature>
+		<feature id="com.android.ide.eclipse.ddms.feature" version="25.2.2.4333796" url="features/com.android.ide.eclipse.ddms.feature_25.2.2.4333796/" plugin-identifier="com.android.ide.eclipse.ddms">
+		</feature>
+		<feature id="com.android.ide.eclipse.monitor.feature" version="25.2.2.4333796" url="features/com.android.ide.eclipse.monitor.feature_25.2.2.4333796/" plugin-identifier="com.android.ide.eclipse.monitor">
+		</feature>
 		<feature id="org.eclipse.equinox.p2.user.ui" version="2.2.0.v20121212-204731-62DG9JXTlTj-UXcQ2y3NLn6U4Z3H" url="features/org.eclipse.equinox.p2.user.ui_2.2.0.v20121212-204731-62DG9JXTlTj-UXcQ2y3NLn6U4Z3H/">
 		</feature>
 		<feature id="org.eclipse.equinox.p2.core.feature" version="1.1.0.v20121211-153934-8297FndFWmE7h7Bpz-vcqkxyKz0" url="features/org.eclipse.equinox.p2.core.feature_1.1.0.v20121211-153934-8297FndFWmE7h7Bpz-vcqkxyKz0/">
 		</feature>
 		<feature id="org.eclipse.platform" version="4.2.1.v20130118-173121-9MF7GHYdG0B5kx4E_SkfZV-1mNjVATf67ZAb7" url="features/org.eclipse.platform_4.2.1.v20130118-173121-9MF7GHYdG0B5kx4E_SkfZV-1mNjVATf67ZAb7/">
 		</feature>
-		<feature id="com.android.ide.eclipse.hierarchyviewer.feature" version="25.4.0.4311448" url="features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4311448/" plugin-identifier="com.android.ide.eclipse.hierarchyviewer">
-		</feature>
 		<feature id="org.eclipse.emf.ecore" version="2.8.3.v20130125-0546" url="features/org.eclipse.emf.ecore_2.8.3.v20130125-0546/">
 		</feature>
 		<feature id="org.eclipse.e4.rcp" version="1.1.2.v20130130-191718-91FUvGP7GIX2Kgz-z-gvjMvXV1NS" url="features/org.eclipse.e4.rcp_1.1.2.v20130130-191718-91FUvGP7GIX2Kgz-z-gvjMvXV1NS/">
 		</feature>
+		<feature id="com.android.ide.eclipse.hierarchyviewer.feature" version="25.4.0.4333796" url="features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4333796/" plugin-identifier="com.android.ide.eclipse.hierarchyviewer">
+		</feature>
 		<feature id="org.eclipse.emf.common" version="2.8.0.v20130125-0546" url="features/org.eclipse.emf.common_2.8.0.v20130125-0546/">
 		</feature>
 		<feature id="org.eclipse.rcp" version="4.2.2.v20130129-152330-7IARAABrMQkGSvMgQnUlz-DQz00h" url="features/org.eclipse.rcp_4.2.2.v20130129-152330-7IARAABrMQkGSvMgQnUlz-DQz00h/">
 		</feature>
-		<feature id="com.android.ide.eclipse.monitor.feature" version="25.2.2.4311448" url="features/com.android.ide.eclipse.monitor.feature_25.2.2.4311448/" plugin-identifier="com.android.ide.eclipse.monitor">
+		<feature id="com.android.ide.eclipse.traceview.feature" version="25.2.2.4333796" url="features/com.android.ide.eclipse.traceview.feature_25.2.2.4333796/" plugin-identifier="com.android.ide.eclipse.traceview">
 		</feature>
 		<feature id="org.eclipse.equinox.p2.rcp.feature" version="1.1.0.v20121211-153934-785EoBqNKNZz-DW7sUc8hFwz00wd" url="features/org.eclipse.equinox.p2.rcp.feature_1.1.0.v20121211-153934-785EoBqNKNZz-DW7sUc8hFwz00wd/">
 		</feature>
diff --git a/lib/monitor-x86/features/com.android.ide.eclipse.ddms.feature_25.2.2.4311448/META-INF/MANIFEST.MF b/lib/monitor-x86/features/com.android.ide.eclipse.ddms.feature_25.2.2.4333796/META-INF/MANIFEST.MF
similarity index 100%
rename from lib/monitor-x86/features/com.android.ide.eclipse.ddms.feature_25.2.2.4311448/META-INF/MANIFEST.MF
rename to lib/monitor-x86/features/com.android.ide.eclipse.ddms.feature_25.2.2.4333796/META-INF/MANIFEST.MF
diff --git a/lib/monitor-x86/features/com.android.ide.eclipse.ddms.feature_25.2.2.4311448/feature.xml b/lib/monitor-x86/features/com.android.ide.eclipse.ddms.feature_25.2.2.4333796/feature.xml
similarity index 98%
rename from lib/monitor-x86/features/com.android.ide.eclipse.ddms.feature_25.2.2.4311448/feature.xml
rename to lib/monitor-x86/features/com.android.ide.eclipse.ddms.feature_25.2.2.4333796/feature.xml
index d07cd68..4c0a14f 100644
--- a/lib/monitor-x86/features/com.android.ide.eclipse.ddms.feature_25.2.2.4311448/feature.xml
+++ b/lib/monitor-x86/features/com.android.ide.eclipse.ddms.feature_25.2.2.4333796/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="com.android.ide.eclipse.ddms.feature"
       label="Android DDMS"
-      version="25.2.2.4311448"
+      version="25.2.2.4333796"
       provider-name="The Android Open Source Project"
       plugin="com.android.ide.eclipse.ddms">
 
@@ -240,14 +240,14 @@
          id="com.android.ide.eclipse.base"
          download-size="5210"
          install-size="5812"
-         version="25.2.2.4311448"
+         version="25.2.2.4333796"
          unpack="false"/>
 
    <plugin
          id="com.android.ide.eclipse.ddms"
          download-size="2585"
          install-size="2925"
-         version="25.2.2.4311448"
+         version="25.2.2.4333796"
          unpack="false"/>
 
 </feature>
diff --git a/lib/monitor-x86/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4311448/META-INF/MANIFEST.MF b/lib/monitor-x86/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4333796/META-INF/MANIFEST.MF
similarity index 100%
rename from lib/monitor-x86/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4311448/META-INF/MANIFEST.MF
rename to lib/monitor-x86/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4333796/META-INF/MANIFEST.MF
diff --git a/lib/monitor-x86/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4311448/feature.xml b/lib/monitor-x86/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4333796/feature.xml
similarity index 99%
rename from lib/monitor-x86/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4311448/feature.xml
rename to lib/monitor-x86/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4333796/feature.xml
index fa54125..256fbee 100644
--- a/lib/monitor-x86/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4311448/feature.xml
+++ b/lib/monitor-x86/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4333796/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="com.android.ide.eclipse.gldebugger.feature"
       label="Tracer for OpenGL ES"
-      version="25.2.2.4311448"
+      version="25.2.2.4333796"
       provider-name="The Android Open Source Project">
 
    <description>
@@ -226,7 +226,7 @@
          id="com.android.ide.eclipse.gldebugger"
          download-size="508"
          install-size="1077"
-         version="25.2.2.4311448"
+         version="25.2.2.4333796"
          unpack="false"/>
 
 </feature>
diff --git a/lib/monitor-x86/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4311448/META-INF/MANIFEST.MF b/lib/monitor-x86/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4333796/META-INF/MANIFEST.MF
similarity index 100%
rename from lib/monitor-x86/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4311448/META-INF/MANIFEST.MF
rename to lib/monitor-x86/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4333796/META-INF/MANIFEST.MF
diff --git a/lib/monitor-x86/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4311448/feature.xml b/lib/monitor-x86/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4333796/feature.xml
similarity index 98%
rename from lib/monitor-x86/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4311448/feature.xml
rename to lib/monitor-x86/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4333796/feature.xml
index 97eb410..841174d 100644
--- a/lib/monitor-x86/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4311448/feature.xml
+++ b/lib/monitor-x86/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4333796/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="com.android.ide.eclipse.hierarchyviewer.feature"
       label="Android Hierarchy Viewer"
-      version="25.4.0.4311448"
+      version="25.4.0.4333796"
       provider-name="The Android Open Source Project"
       plugin="com.android.ide.eclipse.hierarchyviewer">
 
@@ -231,9 +231,9 @@
 
    <plugin
          id="com.android.ide.eclipse.hierarchyviewer"
-         download-size="400"
+         download-size="399"
          install-size="478"
-         version="25.4.0.4311448"
+         version="25.4.0.4333796"
          unpack="false"/>
 
 </feature>
diff --git a/lib/monitor-x86/features/com.android.ide.eclipse.monitor.feature_25.2.2.4311448/META-INF/MANIFEST.MF b/lib/monitor-x86/features/com.android.ide.eclipse.monitor.feature_25.2.2.4333796/META-INF/MANIFEST.MF
similarity index 100%
rename from lib/monitor-x86/features/com.android.ide.eclipse.monitor.feature_25.2.2.4311448/META-INF/MANIFEST.MF
rename to lib/monitor-x86/features/com.android.ide.eclipse.monitor.feature_25.2.2.4333796/META-INF/MANIFEST.MF
diff --git a/lib/monitor-x86/features/com.android.ide.eclipse.monitor.feature_25.2.2.4311448/feature.xml b/lib/monitor-x86/features/com.android.ide.eclipse.monitor.feature_25.2.2.4333796/feature.xml
similarity index 99%
rename from lib/monitor-x86/features/com.android.ide.eclipse.monitor.feature_25.2.2.4311448/feature.xml
rename to lib/monitor-x86/features/com.android.ide.eclipse.monitor.feature_25.2.2.4333796/feature.xml
index 6d9ca6d..f34b57b 100644
--- a/lib/monitor-x86/features/com.android.ide.eclipse.monitor.feature_25.2.2.4311448/feature.xml
+++ b/lib/monitor-x86/features/com.android.ide.eclipse.monitor.feature_25.2.2.4333796/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="com.android.ide.eclipse.monitor.feature"
       label="Android Monitor"
-      version="25.2.2.4311448"
+      version="25.2.2.4333796"
       provider-name="The Android Open Source Project"
       plugin="com.android.ide.eclipse.monitor">
 
@@ -227,7 +227,7 @@
          id="com.android.ide.eclipse.monitor"
          download-size="212"
          install-size="284"
-         version="25.2.2.4311448"
+         version="25.2.2.4333796"
          unpack="false"/>
 
 </feature>
diff --git a/lib/monitor-x86/features/com.android.ide.eclipse.traceview.feature_25.2.2.4311448/META-INF/MANIFEST.MF b/lib/monitor-x86/features/com.android.ide.eclipse.traceview.feature_25.2.2.4333796/META-INF/MANIFEST.MF
similarity index 100%
rename from lib/monitor-x86/features/com.android.ide.eclipse.traceview.feature_25.2.2.4311448/META-INF/MANIFEST.MF
rename to lib/monitor-x86/features/com.android.ide.eclipse.traceview.feature_25.2.2.4333796/META-INF/MANIFEST.MF
diff --git a/lib/monitor-x86/features/com.android.ide.eclipse.traceview.feature_25.2.2.4311448/feature.xml b/lib/monitor-x86/features/com.android.ide.eclipse.traceview.feature_25.2.2.4333796/feature.xml
similarity index 99%
rename from lib/monitor-x86/features/com.android.ide.eclipse.traceview.feature_25.2.2.4311448/feature.xml
rename to lib/monitor-x86/features/com.android.ide.eclipse.traceview.feature_25.2.2.4333796/feature.xml
index 9e766b4..11ef3bd 100644
--- a/lib/monitor-x86/features/com.android.ide.eclipse.traceview.feature_25.2.2.4311448/feature.xml
+++ b/lib/monitor-x86/features/com.android.ide.eclipse.traceview.feature_25.2.2.4333796/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="com.android.ide.eclipse.traceview.feature"
       label="Android Traceview"
-      version="25.2.2.4311448"
+      version="25.2.2.4333796"
       provider-name="The Android Open Source Project"
       plugin="com.android.ide.eclipse.traceview">
 
@@ -233,7 +233,7 @@
          id="com.android.ide.eclipse.traceview"
          download-size="137"
          install-size="154"
-         version="25.2.2.4311448"
+         version="25.2.2.4333796"
          unpack="false"/>
 
 </feature>
diff --git a/lib/monitor-x86/p2/org.eclipse.equinox.p2.core/cache/artifacts.xml b/lib/monitor-x86/p2/org.eclipse.equinox.p2.core/cache/artifacts.xml
index 696dea3..6733a63 100644
--- a/lib/monitor-x86/p2/org.eclipse.equinox.p2.core/cache/artifacts.xml
+++ b/lib/monitor-x86/p2/org.eclipse.equinox.p2.core/cache/artifacts.xml
@@ -3,7 +3,7 @@
 <repository name='download cache' type='org.eclipse.equinox.p2.artifact.repository.simpleRepository' version='1.0.0'>
   <properties size='2'>
     <property name='p2.system' value='true'/>
-    <property name='p2.timestamp' value='1504242036824'/>
+    <property name='p2.timestamp' value='1505339684357'/>
   </properties>
   <mappings size='3'>
     <rule filter='(&amp; (classifier=osgi.bundle))' output='${repoUrl}/plugins/${id}_${version}.jar'/>
@@ -11,16 +11,16 @@
     <rule filter='(&amp; (classifier=org.eclipse.update.feature))' output='${repoUrl}/features/${id}_${version}.jar'/>
   </mappings>
   <artifacts size='3'>
+    <artifact classifier='binary' id='monitorproduct.executable.gtk.linux.x86' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='149957'/>
+      </properties>
+    </artifact>
     <artifact classifier='binary' id='org.eclipse.rcp_root' version='4.2.2.v20130129-152330-7IARAABrMQkGSvMgQnUlz-DQz00h'>
       <properties size='1'>
         <property name='download.size' value='37952'/>
       </properties>
     </artifact>
-    <artifact classifier='binary' id='monitorproduct.executable.gtk.linux.x86' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='149957'/>
-      </properties>
-    </artifact>
     <artifact classifier='binary' id='org.eclipse.platform_root' version='4.2.1.v20130118-173121-9MF7GHYdG0B5kx4E_SkfZV-1mNjVATf67ZAb7'>
       <properties size='1'>
         <property name='download.size' value='38125'/>
diff --git a/lib/monitor-x86/p2/org.eclipse.equinox.p2.core/cache/binary/monitorproduct.executable.gtk.linux.x86_25.2.2.4311448 b/lib/monitor-x86/p2/org.eclipse.equinox.p2.core/cache/binary/monitorproduct.executable.gtk.linux.x86_25.2.2.4333796
similarity index 99%
rename from lib/monitor-x86/p2/org.eclipse.equinox.p2.core/cache/binary/monitorproduct.executable.gtk.linux.x86_25.2.2.4311448
rename to lib/monitor-x86/p2/org.eclipse.equinox.p2.core/cache/binary/monitorproduct.executable.gtk.linux.x86_25.2.2.4333796
index e6c47f5..9fb9281 100644
--- a/lib/monitor-x86/p2/org.eclipse.equinox.p2.core/cache/binary/monitorproduct.executable.gtk.linux.x86_25.2.2.4311448
+++ b/lib/monitor-x86/p2/org.eclipse.equinox.p2.core/cache/binary/monitorproduct.executable.gtk.linux.x86_25.2.2.4333796
Binary files differ
diff --git a/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/.data/org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions/jvmargs b/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/.data/org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions/jvmargs
index b7589e9..c9b255a 100644
--- a/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/.data/org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions/jvmargs
+++ b/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/.data/org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions/jvmargs
@@ -1,4 +1,4 @@
-#Fri Sep 01 05:00:37 UTC 2017
+#Wed Sep 13 21:54:45 UTC 2017
 -Xms=512m
 -XX\:MaxPermSize\==256m
 -Xmx=1024m
diff --git a/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242036315.profile.gz b/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242036315.profile.gz
deleted file mode 100644
index b5d897f..0000000
--- a/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242036315.profile.gz
+++ /dev/null
Binary files differ
diff --git a/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242036318.profile.gz b/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242036318.profile.gz
deleted file mode 100644
index c02c0dc..0000000
--- a/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242036318.profile.gz
+++ /dev/null
Binary files differ
diff --git a/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242037540.profile.gz b/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242037540.profile.gz
deleted file mode 100644
index b7336bf..0000000
--- a/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242037540.profile.gz
+++ /dev/null
Binary files differ
diff --git a/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242037740.profile.gz b/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242037740.profile.gz
deleted file mode 100644
index 6d756f0..0000000
--- a/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242037740.profile.gz
+++ /dev/null
Binary files differ
diff --git a/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339684027.profile.gz b/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339684027.profile.gz
new file mode 100644
index 0000000..b560a54
--- /dev/null
+++ b/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339684027.profile.gz
Binary files differ
diff --git a/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339684029.profile.gz b/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339684029.profile.gz
new file mode 100644
index 0000000..7a8d7be
--- /dev/null
+++ b/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339684029.profile.gz
Binary files differ
diff --git a/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339685143.profile.gz b/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339685143.profile.gz
new file mode 100644
index 0000000..63f779c
--- /dev/null
+++ b/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339685143.profile.gz
Binary files differ
diff --git a/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339685370.profile.gz b/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339685370.profile.gz
new file mode 100644
index 0000000..f30dda0
--- /dev/null
+++ b/lib/monitor-x86/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339685370.profile.gz
Binary files differ
diff --git a/lib/monitor-x86/plugins/com.android.ide.eclipse.base_25.2.2.4311448.jar b/lib/monitor-x86/plugins/com.android.ide.eclipse.base_25.2.2.4333796.jar
similarity index 67%
rename from lib/monitor-x86/plugins/com.android.ide.eclipse.base_25.2.2.4311448.jar
rename to lib/monitor-x86/plugins/com.android.ide.eclipse.base_25.2.2.4333796.jar
index 7d2c46b..c12dc00 100644
--- a/lib/monitor-x86/plugins/com.android.ide.eclipse.base_25.2.2.4311448.jar
+++ b/lib/monitor-x86/plugins/com.android.ide.eclipse.base_25.2.2.4333796.jar
Binary files differ
diff --git a/lib/monitor-x86/plugins/com.android.ide.eclipse.ddms_25.2.2.4311448.jar b/lib/monitor-x86/plugins/com.android.ide.eclipse.ddms_25.2.2.4333796.jar
similarity index 64%
rename from lib/monitor-x86/plugins/com.android.ide.eclipse.ddms_25.2.2.4311448.jar
rename to lib/monitor-x86/plugins/com.android.ide.eclipse.ddms_25.2.2.4333796.jar
index f2ee1e3..7e5c967 100644
--- a/lib/monitor-x86/plugins/com.android.ide.eclipse.ddms_25.2.2.4311448.jar
+++ b/lib/monitor-x86/plugins/com.android.ide.eclipse.ddms_25.2.2.4333796.jar
Binary files differ
diff --git a/lib/monitor-x86/plugins/com.android.ide.eclipse.gldebugger_25.2.2.4311448.jar b/lib/monitor-x86/plugins/com.android.ide.eclipse.gldebugger_25.2.2.4333796.jar
similarity index 95%
rename from lib/monitor-x86/plugins/com.android.ide.eclipse.gldebugger_25.2.2.4311448.jar
rename to lib/monitor-x86/plugins/com.android.ide.eclipse.gldebugger_25.2.2.4333796.jar
index 5de9302..d16f080 100644
--- a/lib/monitor-x86/plugins/com.android.ide.eclipse.gldebugger_25.2.2.4311448.jar
+++ b/lib/monitor-x86/plugins/com.android.ide.eclipse.gldebugger_25.2.2.4333796.jar
Binary files differ
diff --git a/lib/monitor-x86/plugins/com.android.ide.eclipse.hierarchyviewer_25.4.0.4311448.jar b/lib/monitor-x86/plugins/com.android.ide.eclipse.hierarchyviewer_25.4.0.4311448.jar
deleted file mode 100644
index d269e85..0000000
--- a/lib/monitor-x86/plugins/com.android.ide.eclipse.hierarchyviewer_25.4.0.4311448.jar
+++ /dev/null
Binary files differ
diff --git a/lib/monitor-x86/plugins/com.android.ide.eclipse.hierarchyviewer_25.4.0.4333796.jar b/lib/monitor-x86/plugins/com.android.ide.eclipse.hierarchyviewer_25.4.0.4333796.jar
new file mode 100644
index 0000000..0e5c6cc
--- /dev/null
+++ b/lib/monitor-x86/plugins/com.android.ide.eclipse.hierarchyviewer_25.4.0.4333796.jar
Binary files differ
diff --git a/lib/monitor-x86/plugins/com.android.ide.eclipse.monitor_25.2.2.4311448.jar b/lib/monitor-x86/plugins/com.android.ide.eclipse.monitor_25.2.2.4333796.jar
similarity index 96%
rename from lib/monitor-x86/plugins/com.android.ide.eclipse.monitor_25.2.2.4311448.jar
rename to lib/monitor-x86/plugins/com.android.ide.eclipse.monitor_25.2.2.4333796.jar
index 6654cb5..233df4d 100644
--- a/lib/monitor-x86/plugins/com.android.ide.eclipse.monitor_25.2.2.4311448.jar
+++ b/lib/monitor-x86/plugins/com.android.ide.eclipse.monitor_25.2.2.4333796.jar
Binary files differ
diff --git a/lib/monitor-x86/plugins/com.android.ide.eclipse.traceview_25.2.2.4311448.jar b/lib/monitor-x86/plugins/com.android.ide.eclipse.traceview_25.2.2.4311448.jar
deleted file mode 100644
index 2d5f2ec..0000000
--- a/lib/monitor-x86/plugins/com.android.ide.eclipse.traceview_25.2.2.4311448.jar
+++ /dev/null
Binary files differ
diff --git a/lib/monitor-x86/plugins/com.android.ide.eclipse.traceview_25.2.2.4333796.jar b/lib/monitor-x86/plugins/com.android.ide.eclipse.traceview_25.2.2.4333796.jar
new file mode 100644
index 0000000..cb4b4ea
--- /dev/null
+++ b/lib/monitor-x86/plugins/com.android.ide.eclipse.traceview_25.2.2.4333796.jar
Binary files differ
diff --git a/lib/monitor-x86_64/artifacts.xml b/lib/monitor-x86_64/artifacts.xml
index 5439335..dee9eac 100644
--- a/lib/monitor-x86_64/artifacts.xml
+++ b/lib/monitor-x86_64/artifacts.xml
@@ -3,7 +3,7 @@
 <repository name='Bundle pool' type='org.eclipse.equinox.p2.artifact.repository.simpleRepository' version='1'>
   <properties size='2'>
     <property name='p2.system' value='true'/>
-    <property name='p2.timestamp' value='1504242040953'/>
+    <property name='p2.timestamp' value='1505339688447'/>
   </properties>
   <mappings size='3'>
     <rule filter='(&amp; (classifier=osgi.bundle))' output='${repoUrl}/plugins/${id}_${version}.jar'/>
@@ -54,11 +54,6 @@
         <property name='download.size' value='32030'/>
       </properties>
     </artifact>
-    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.base' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='5335172'/>
-      </properties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.equinox.preferences' version='3.5.1.v20121031-182809'>
       <properties size='1'>
         <property name='download.size' value='126754'/>
@@ -124,6 +119,14 @@
         <property name='download.size' value='222823'/>
       </properties>
     </artifact>
+    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.gldebugger.feature' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='4757'/>
+      </properties>
+      <repositoryProperties size='1'>
+        <property name='artifact.folder' value='true'/>
+      </repositoryProperties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.e4.ui.css.swt.theme' version='0.9.4.v20130123-162658'>
       <properties size='1'>
         <property name='download.size' value='25344'/>
@@ -167,6 +170,11 @@
         <property name='download.size' value='83983'/>
       </properties>
     </artifact>
+    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.hierarchyviewer' version='25.4.0.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='408641'/>
+      </properties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.equinox.p2.ql' version='2.0.100.v20110808-1657'>
       <properties size='1'>
         <property name='download.size' value='9256'/>
@@ -215,6 +223,11 @@
         <property name='download.size' value='23505'/>
       </properties>
     </artifact>
+    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.traceview' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='140887'/>
+      </properties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.core.runtime.compatibility' version='3.2.200.v20120521-2346'>
       <properties size='1'>
         <property name='download.size' value='94013'/>
@@ -250,14 +263,6 @@
         <property name='download.size' value='201594'/>
       </properties>
     </artifact>
-    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.gldebugger.feature' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='4757'/>
-      </properties>
-      <repositoryProperties size='1'>
-        <property name='artifact.folder' value='true'/>
-      </repositoryProperties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.equinox.jsp.jasper' version='1.0.400.v20120912-130548'>
       <properties size='1'>
         <property name='download.size' value='28284'/>
@@ -281,6 +286,14 @@
         <property name='download.size' value='17935'/>
       </properties>
     </artifact>
+    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.ddms.feature' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='5060'/>
+      </properties>
+      <repositoryProperties size='1'>
+        <property name='artifact.folder' value='true'/>
+      </repositoryProperties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.equinox.http.servlet' version='1.1.300.v20120912-130548'>
       <properties size='1'>
         <property name='download.size' value='45071'/>
@@ -291,29 +304,24 @@
         <property name='download.size' value='197480'/>
       </properties>
     </artifact>
+    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.hierarchyviewer.feature' version='25.4.0.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='4853'/>
+      </properties>
+      <repositoryProperties size='1'>
+        <property name='artifact.folder' value='true'/>
+      </repositoryProperties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.core.externaltools' version='1.0.100.v20120521-2012'>
       <properties size='1'>
         <property name='download.size' value='41085'/>
       </properties>
     </artifact>
-    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.hierarchyviewer' version='25.4.0.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='409627'/>
-      </properties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.equinox.event' version='1.2.200.v20120522-2049'>
       <properties size='1'>
         <property name='download.size' value='33750'/>
       </properties>
     </artifact>
-    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.ddms.feature' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='5059'/>
-      </properties>
-      <repositoryProperties size='1'>
-        <property name='artifact.folder' value='true'/>
-      </repositoryProperties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.e4.core.contexts' version='1.2.0.v20121221-192508'>
       <properties size='1'>
         <property name='download.size' value='48057'/>
@@ -404,14 +412,6 @@
         <property name='download.size' value='18001'/>
       </properties>
     </artifact>
-    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.monitor.feature' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='4874'/>
-      </properties>
-      <repositoryProperties size='1'>
-        <property name='artifact.folder' value='true'/>
-      </repositoryProperties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.equinox.security' version='1.1.100.v20120522-1841'>
       <properties size='1'>
         <property name='download.size' value='107463'/>
@@ -427,6 +427,14 @@
         <property name='download.size' value='3808742'/>
       </properties>
     </artifact>
+    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.monitor.feature' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='4874'/>
+      </properties>
+      <repositoryProperties size='1'>
+        <property name='artifact.folder' value='true'/>
+      </repositoryProperties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.jsch.core' version='1.1.400.v20120522-1148'>
       <properties size='1'>
         <property name='download.size' value='37557'/>
@@ -481,6 +489,11 @@
         <property name='download.size' value='499655'/>
       </properties>
     </artifact>
+    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.gldebugger' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='520659'/>
+      </properties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.core.databinding.observable' version='1.4.1.v20120521-2329'>
       <properties size='1'>
         <property name='download.size' value='297401'/>
@@ -597,16 +610,16 @@
         <property name='download.size' value='241154'/>
       </properties>
     </artifact>
-    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.monitor' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='217856'/>
-      </properties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.team.ui' version='3.6.201.v20130125-135424'>
       <properties size='1'>
         <property name='download.size' value='1445067'/>
       </properties>
     </artifact>
+    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.base' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='5335323'/>
+      </properties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.swt.gtk.linux.x86_64' version='3.100.1.v4236b'>
       <properties size='1'>
         <property name='download.size' value='2578203'/>
@@ -617,6 +630,14 @@
         <property name='download.size' value='237996'/>
       </properties>
     </artifact>
+    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.traceview.feature' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='4836'/>
+      </properties>
+      <repositoryProperties size='1'>
+        <property name='artifact.folder' value='true'/>
+      </repositoryProperties>
+    </artifact>
     <artifact classifier='org.eclipse.update.feature' id='org.eclipse.equinox.p2.core.feature' version='1.1.0.v20121211-153934-8297FndFWmE7h7Bpz-vcqkxyKz0'>
       <properties size='1'>
         <property name='download.size' value='31326'/>
@@ -633,11 +654,6 @@
         <property name='artifact.folder' value='true'/>
       </repositoryProperties>
     </artifact>
-    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.traceview' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='140826'/>
-      </properties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.debug.ui' version='3.8.2.v20130130-171415'>
       <properties size='1'>
         <property name='download.size' value='2614072'/>
@@ -688,14 +704,6 @@
         <property name='download.size' value='27328'/>
       </properties>
     </artifact>
-    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.hierarchyviewer.feature' version='25.4.0.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='4851'/>
-      </properties>
-      <repositoryProperties size='1'>
-        <property name='artifact.folder' value='true'/>
-      </repositoryProperties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.equinox.launcher' version='1.3.0.v20120522-1813'>
       <properties size='1'>
         <property name='download.size' value='49282'/>
@@ -837,19 +845,16 @@
         <property name='download.size' value='108906'/>
       </properties>
     </artifact>
+    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.ddms' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='2647417'/>
+      </properties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.help.base' version='3.6.101.v201302041200'>
       <properties size='1'>
         <property name='download.size' value='421642'/>
       </properties>
     </artifact>
-    <artifact classifier='org.eclipse.update.feature' id='com.android.ide.eclipse.traceview.feature' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='4836'/>
-      </properties>
-      <repositoryProperties size='1'>
-        <property name='artifact.folder' value='true'/>
-      </repositoryProperties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='com.ibm.icu' version='4.4.2.v20110823'>
       <properties size='1'>
         <property name='download.size' value='6701200'/>
@@ -860,11 +865,6 @@
         <property name='download.size' value='330211'/>
       </properties>
     </artifact>
-    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.ddms' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='2647232'/>
-      </properties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.jetty.io' version='8.1.3.v20120522'>
       <properties size='1'>
         <property name='download.size' value='111094'/>
@@ -966,6 +966,11 @@
         <property name='artifact.folder' value='true'/>
       </repositoryProperties>
     </artifact>
+    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.monitor' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='217856'/>
+      </properties>
+    </artifact>
     <artifact classifier='osgi.bundle' id='org.eclipse.core.variables' version='3.2.600.v20120521-2012'>
       <properties size='1'>
         <property name='download.size' value='34354'/>
@@ -1021,11 +1026,6 @@
         <property name='download.size' value='105407'/>
       </properties>
     </artifact>
-    <artifact classifier='osgi.bundle' id='com.android.ide.eclipse.gldebugger' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='520658'/>
-      </properties>
-    </artifact>
     <artifact classifier='osgi.bundle' id='org.apache.commons.logging' version='1.0.4.v201101211617'>
       <properties size='1'>
         <property name='download.size' value='45405'/>
diff --git a/lib/monitor-x86_64/configuration/config.ini b/lib/monitor-x86_64/configuration/config.ini
index 3e00f88..ca7bad9 100644
--- a/lib/monitor-x86_64/configuration/config.ini
+++ b/lib/monitor-x86_64/configuration/config.ini
@@ -1,9 +1,9 @@
 #This configuration file was written by: org.eclipse.equinox.internal.frameworkadmin.equinox.EquinoxFwConfigFileParser
-#Fri Sep 01 05:00:41 UTC 2017
+#Wed Sep 13 21:54:49 UTC 2017
 eclipse.p2.profile=DefaultProfile
 osgi.framework=file\:plugins/org.eclipse.osgi_3.8.2.v20130124-134944.jar
 equinox.use.ds=true
-osgi.bundles=reference\:file\:com.android.ide.eclipse.base_25.2.2.4311448.jar@4,reference\:file\:com.android.ide.eclipse.ddms_25.2.2.4311448.jar@4,reference\:file\:com.android.ide.eclipse.gldebugger_25.2.2.4311448.jar@4,reference\:file\:com.android.ide.eclipse.hierarchyviewer_25.4.0.4311448.jar@4,reference\:file\:com.android.ide.eclipse.monitor_25.2.2.4311448.jar@4,reference\:file\:com.android.ide.eclipse.traceview_25.2.2.4311448.jar@4,reference\:file\:com.ibm.icu_4.4.2.v20110823.jar@4,reference\:file\:com.jcraft.jsch_0.1.46.v201205102330.jar@4,reference\:file\:com.sun.el_2.2.0.v201108011116.jar@4,reference\:file\:javax.annotation_1.0.0.v20101115-0725.jar@4,reference\:file\:javax.el_2.2.0.v201108011116.jar@4,reference\:file\:javax.inject_1.0.0.v20091030.jar@4,reference\:file\:javax.servlet_3.0.0.v201112011016.jar@4,reference\:file\:javax.servlet.jsp_2.2.0.v201112011158.jar@4,reference\:file\:javax.xml_1.3.4.v201005080400.jar@4,reference\:file\:org.apache.ant_1.8.3.v201301120609/@4,reference\:file\:org.apache.batik.css_1.6.0.v201011041432.jar@4,reference\:file\:org.apache.batik.util_1.6.0.v201011041432.jar@4,reference\:file\:org.apache.batik.util.gui_1.6.0.v201011041432.jar@4,reference\:file\:org.apache.commons.codec_1.3.0.v201101211617.jar@4,reference\:file\:org.apache.commons.httpclient_3.1.0.v201012070820.jar@4,reference\:file\:org.apache.commons.logging_1.0.4.v201101211617.jar@4,reference\:file\:org.apache.felix.gogo.command_0.8.0.v201108120515.jar@4,reference\:file\:org.apache.felix.gogo.runtime_0.8.0.v201108120515.jar@4,reference\:file\:org.apache.felix.gogo.shell_0.8.0.v201110170705.jar@4,reference\:file\:org.apache.jasper.glassfish_2.2.2.v201205150955.jar@4,reference\:file\:org.apache.lucene_2.9.1.v201101211721.jar@4,reference\:file\:org.apache.lucene.analysis_2.9.1.v201101211721.jar@4,reference\:file\:org.apache.lucene.core_2.9.1.v201101211721.jar@4,reference\:file\:org.eclipse.ant.core_3.2.401.v20121204-162022.jar@4,reference\:file\:org.eclipse.compare_3.5.301.v20130125-135424.jar@4,reference\:file\:org.eclipse.compare.core_3.5.200.v20120522-1148.jar@4,reference\:file\:org.eclipse.core.commands_3.6.2.v20130123-162658.jar@4,reference\:file\:org.eclipse.core.contenttype_3.4.200.v20120523-2004.jar@4,reference\:file\:org.eclipse.core.databinding_1.4.1.v20120912-132807.jar@4,reference\:file\:org.eclipse.core.databinding.beans_1.2.200.v20120523-1955.jar@4,reference\:file\:org.eclipse.core.databinding.observable_1.4.1.v20120521-2329.jar@4,reference\:file\:org.eclipse.core.databinding.property_1.4.100.v20120523-1955.jar@4,reference\:file\:org.eclipse.core.expressions_3.4.401.v20120912-155018.jar@4,reference\:file\:org.eclipse.core.externaltools_1.0.100.v20120521-2012.jar@4,reference\:file\:org.eclipse.core.filebuffers_3.5.200.v20120523-1310.jar@4,reference\:file\:org.eclipse.core.filesystem_1.3.200.v20130115-145044.jar@4,reference\:file\:org.eclipse.core.filesystem.linux.x86_64_1.2.0.v20120522-1137.jar@4,reference\:file\:org.eclipse.core.jobs_3.5.300.v20120912-155018.jar@4,reference\:file\:org.eclipse.core.net_1.2.200.v20120914-093638.jar@4,reference\:file\:org.eclipse.core.net.linux.x86_64_1.1.0.v20120522-1148.jar@4,reference\:file\:org.eclipse.core.resources_3.8.1.v20121114-124432.jar@4,reference\:file\:org.eclipse.core.runtime_3.8.0.v20120912-155025.jar@2\:start,reference\:file\:org.eclipse.core.runtime.compatibility_3.2.200.v20120521-2346.jar@4,reference\:file\:org.eclipse.core.runtime.compatibility.registry_3.5.101.v20130108-163257/@4,reference\:file\:org.eclipse.core.variables_3.2.600.v20120521-2012.jar@4,reference\:file\:org.eclipse.debug.core_3.7.100.v20120521-2012.jar@4,reference\:file\:org.eclipse.debug.ui_3.8.2.v20130130-171415.jar@4,reference\:file\:org.eclipse.e4.core.commands_0.10.1.v20120523-1955.jar@4,reference\:file\:org.eclipse.e4.core.contexts_1.2.0.v20121221-192508.jar@4,reference\:file\:org.eclipse.e4.core.di_1.2.0.v20121024-173149.jar@4,reference\:file\:org.eclipse.e4.core.di.extensions_0.11.100.v20121024-182359.jar@4,reference\:file\:org.eclipse.e4.core.services_1.0.0.v20120521-2346.jar@4,reference\:file\:org.eclipse.e4.ui.bindings_0.10.3.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.css.core_0.10.2.v20120912-132817.jar@4,reference\:file\:org.eclipse.e4.ui.css.swt_0.10.3.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.css.swt.theme_0.9.4.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.di_0.10.1.v20120523-1955.jar@4,reference\:file\:org.eclipse.e4.ui.model.workbench_0.10.1.v20120523-1955.jar@4,reference\:file\:org.eclipse.e4.ui.services_0.10.3.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.widgets_0.12.3.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.workbench_0.11.0.v20130125-100758.jar@4,reference\:file\:org.eclipse.e4.ui.workbench.addons.swt_0.10.3.v20130124-185622.jar@4,reference\:file\:org.eclipse.e4.ui.workbench.renderers.swt_0.10.3.v20130124-170312.jar@4,reference\:file\:org.eclipse.e4.ui.workbench.swt_0.10.3.v20130124-133900.jar@4,reference\:file\:org.eclipse.e4.ui.workbench3_0.12.0.v20120521-2329.jar@4,reference\:file\:org.eclipse.ecf_3.1.300.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.filetransfer_5.0.0.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.identity_3.1.200.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.provider.filetransfer_3.2.0.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.provider.filetransfer.httpclient_4.0.200.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.provider.filetransfer.httpclient.ssl_1.0.0.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.provider.filetransfer.ssl_1.0.0.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.ssl_1.0.100.v20120610-1946.jar@4,reference\:file\:org.eclipse.emf.common_2.8.0.v20130125-0546.jar@4,reference\:file\:org.eclipse.emf.ecore_2.8.3.v20130125-0546.jar@4,reference\:file\:org.eclipse.emf.ecore.change_2.8.0.v20130125-0546.jar@4,reference\:file\:org.eclipse.emf.ecore.xmi_2.8.1.v20130125-0546.jar@4,reference\:file\:org.eclipse.equinox.app_1.3.100.v20120522-1841.jar@4,reference\:file\:org.eclipse.equinox.bidi_0.9.100.v20121107-021609.jar@4,reference\:file\:org.eclipse.equinox.common_3.6.100.v20120522-1841.jar@2\:start,reference\:file\:org.eclipse.equinox.console_1.0.0.v20120522-1841.jar@4,reference\:file\:org.eclipse.equinox.ds_1.4.1.v20120926-201320.jar@2\:start,reference\:file\:org.eclipse.equinox.event_1.2.200.v20120522-2049.jar@4,reference\:file\:org.eclipse.equinox.frameworkadmin_2.0.100.v20120913-155515.jar@4,reference\:file\:org.eclipse.equinox.frameworkadmin.equinox_1.0.400.v20120913-155709.jar@4,reference\:file\:org.eclipse.equinox.http.jetty_3.0.1.v20121109-203239.jar@4,reference\:file\:org.eclipse.equinox.http.registry_1.1.200.v20120912-130548.jar@4,reference\:file\:org.eclipse.equinox.http.servlet_1.1.300.v20120912-130548.jar@4,reference\:file\:org.eclipse.equinox.jsp.jasper_1.0.400.v20120912-130548.jar@4,reference\:file\:org.eclipse.equinox.jsp.jasper.registry_1.0.300.v20120912-130548.jar@4,reference\:file\:org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar@4,reference\:file\:org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20120913-144807/@4,reference\:file\:org.eclipse.equinox.p2.artifact.repository_1.1.200.v20120430-1959.jar@4,reference\:file\:org.eclipse.equinox.p2.console_1.0.300.v20120429-0125.jar@4,reference\:file\:org.eclipse.equinox.p2.core_2.2.0.v20120430-0525.jar@4,reference\:file\:org.eclipse.equinox.p2.director_2.2.0.v20120524-0542.jar@4,reference\:file\:org.eclipse.equinox.p2.director.app_1.0.300.v20120428-0517.jar@4,reference\:file\:org.eclipse.equinox.p2.directorywatcher_1.0.300.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.engine_2.2.0.v20130121-021919.jar@4,reference\:file\:org.eclipse.equinox.p2.extensionlocation_1.2.100.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.garbagecollector_1.0.200.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.jarprocessor_1.0.200.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.metadata_2.1.0.v20120430-2001.jar@4,reference\:file\:org.eclipse.equinox.p2.metadata.repository_1.2.100.v20120524-1717.jar@4,reference\:file\:org.eclipse.equinox.p2.operations_2.2.0.v20130119-010614.jar@4,reference\:file\:org.eclipse.equinox.p2.publisher_1.2.0.v20121002-080415.jar@4,reference\:file\:org.eclipse.equinox.p2.publisher.eclipse_1.1.0.v20120913-155635.jar@4,reference\:file\:org.eclipse.equinox.p2.ql_2.0.100.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.reconciler.dropins_1.1.200.v20120301-2145.jar@4,reference\:file\:org.eclipse.equinox.p2.repository_2.2.0.v20120524-1945.jar@4,reference\:file\:org.eclipse.equinox.p2.repository.tools_2.0.100.v20120501-1314.jar@4,reference\:file\:org.eclipse.equinox.p2.touchpoint.eclipse_2.1.100.v20120428-0117.jar@4,reference\:file\:org.eclipse.equinox.p2.touchpoint.natives_1.1.0.v20130121-021919.jar@4,reference\:file\:org.eclipse.equinox.p2.transport.ecf_1.0.100.v20120913-155635.jar@4,reference\:file\:org.eclipse.equinox.p2.ui_2.2.0.v20130119-010614.jar@4,reference\:file\:org.eclipse.equinox.p2.ui.importexport_1.0.1.v20120913-155635.jar@4,reference\:file\:org.eclipse.equinox.p2.ui.sdk_1.0.200.v20120515-1650.jar@4,reference\:file\:org.eclipse.equinox.p2.ui.sdk.scheduler_1.1.0.v20110815-1744.jar@4,reference\:file\:org.eclipse.equinox.p2.updatechecker_1.1.200.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.updatesite_1.0.400.v20120412-1615.jar@4,reference\:file\:org.eclipse.equinox.preferences_3.5.1.v20121031-182809.jar@4,reference\:file\:org.eclipse.equinox.registry_3.5.200.v20120522-1841.jar@4,reference\:file\:org.eclipse.equinox.security_1.1.100.v20120522-1841.jar@4,reference\:file\:org.eclipse.equinox.security.ui_1.1.100.v20120522-2049.jar@4,reference\:file\:org.eclipse.equinox.simpleconfigurator_1.0.301.v20120914-163612.jar@4,reference\:file\:org.eclipse.equinox.simpleconfigurator.manipulator_2.0.0.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.util_1.0.400.v20120917-192807.jar@4,reference\:file\:org.eclipse.help_3.6.0.v20120912-134126.jar@4,reference\:file\:org.eclipse.help.base_3.6.101.v201302041200.jar@4,reference\:file\:org.eclipse.help.ui_3.5.201.v20130108-092756.jar@4,reference\:file\:org.eclipse.help.webapp_3.6.101.v20130116-182509.jar@4,reference\:file\:org.eclipse.jetty.continuation_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.http_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.io_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.security_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.server_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.servlet_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.util_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jface_3.8.102.v20130123-162658.jar@4,reference\:file\:org.eclipse.jface.databinding_1.6.0.v20120912-132807.jar@4,reference\:file\:org.eclipse.jface.text_3.8.2.v20121126-164145.jar@4,reference\:file\:org.eclipse.jsch.core_1.1.400.v20120522-1148.jar@4,reference\:file\:org.eclipse.jsch.ui_1.1.400.v20120522-1148.jar@4,reference\:file\:org.eclipse.ltk.core.refactoring_3.6.0.v20120523-1543.jar@4,reference\:file\:org.eclipse.ltk.ui.refactoring_3.7.0.v20120523-1543.jar@4,reference\:file\:org.eclipse.osgi.services_3.3.100.v20120522-1822.jar@4,reference\:file\:org.eclipse.osgi.util_3.2.300.v20120913-144807.jar@4,reference\:file\:org.eclipse.platform_4.2.2.v201302041200/@4,reference\:file\:org.eclipse.platform.doc.user_4.2.2.v20130121-200410.jar@4,reference\:file\:org.eclipse.rcp_4.2.1.v201302041200.jar@4,reference\:file\:org.eclipse.search_3.8.0.v20120523-1540.jar@4,reference\:file\:org.eclipse.swt_3.100.1.v4236b.jar@4,reference\:file\:org.eclipse.swt.gtk.linux.x86_64_3.100.1.v4236b.jar@4,reference\:file\:org.eclipse.team.core_3.6.100.v20120524-0627.jar@4,reference\:file\:org.eclipse.team.ui_3.6.201.v20130125-135424.jar@4,reference\:file\:org.eclipse.text_3.5.200.v20120523-1310.jar@4,reference\:file\:org.eclipse.ui_3.104.0.v20121024-145224.jar@4,reference\:file\:org.eclipse.ui.browser_3.4.2.v20130123-162658.jar@4,reference\:file\:org.eclipse.ui.cheatsheets_3.4.200.v20120521-2344.jar@4,reference\:file\:org.eclipse.ui.console_3.5.100.v20120521-2012.jar@4,reference\:file\:org.eclipse.ui.editors_3.8.0.v20120523-1540.jar@4,reference\:file\:org.eclipse.ui.externaltools_3.2.100.v20120530-1753.jar@4,reference\:file\:org.eclipse.ui.forms_3.5.200.v20120705-114351.jar@4,reference\:file\:org.eclipse.ui.ide_3.8.2.v20121106-165923.jar@4,reference\:file\:org.eclipse.ui.ide.application_1.0.400.v20120523-1955.jar@4,reference\:file\:org.eclipse.ui.intro_3.4.200.v20120521-2344.jar@4,reference\:file\:org.eclipse.ui.intro.universal_3.2.600.v20120912-155524/@4,reference\:file\:org.eclipse.ui.navigator_3.5.200.v20120705-114103.jar@4,reference\:file\:org.eclipse.ui.navigator.resources_3.4.400.v20120705-114010.jar@4,reference\:file\:org.eclipse.ui.net_1.2.101.v20120914-093638.jar@4,reference\:file\:org.eclipse.ui.views_3.6.100.v20120705-114010.jar@4,reference\:file\:org.eclipse.ui.views.properties.tabbed_3.5.300.v20120912-132807.jar@4,reference\:file\:org.eclipse.ui.workbench_3.104.0.v20130204-164612.jar@4,reference\:file\:org.eclipse.ui.workbench.texteditor_3.8.0.v20120523-1310.jar@4,reference\:file\:org.eclipse.update.configurator_3.3.200.v20120912-144026.jar@4,reference\:file\:org.sat4j.core_2.3.0.v20110329.jar@4,reference\:file\:org.sat4j.pb_2.3.0.v20110329.jar@4,reference\:file\:org.w3c.css.sac_1.3.1.v200903091627.jar@4,reference\:file\:org.w3c.dom.smil_1.0.0.v200806040011.jar@4,reference\:file\:org.w3c.dom.svg_1.1.0.v201011041433.jar@4
+osgi.bundles=reference\:file\:com.android.ide.eclipse.base_25.2.2.4333796.jar@4,reference\:file\:com.android.ide.eclipse.ddms_25.2.2.4333796.jar@4,reference\:file\:com.android.ide.eclipse.gldebugger_25.2.2.4333796.jar@4,reference\:file\:com.android.ide.eclipse.hierarchyviewer_25.4.0.4333796.jar@4,reference\:file\:com.android.ide.eclipse.monitor_25.2.2.4333796.jar@4,reference\:file\:com.android.ide.eclipse.traceview_25.2.2.4333796.jar@4,reference\:file\:com.ibm.icu_4.4.2.v20110823.jar@4,reference\:file\:com.jcraft.jsch_0.1.46.v201205102330.jar@4,reference\:file\:com.sun.el_2.2.0.v201108011116.jar@4,reference\:file\:javax.annotation_1.0.0.v20101115-0725.jar@4,reference\:file\:javax.el_2.2.0.v201108011116.jar@4,reference\:file\:javax.inject_1.0.0.v20091030.jar@4,reference\:file\:javax.servlet_3.0.0.v201112011016.jar@4,reference\:file\:javax.servlet.jsp_2.2.0.v201112011158.jar@4,reference\:file\:javax.xml_1.3.4.v201005080400.jar@4,reference\:file\:org.apache.ant_1.8.3.v201301120609/@4,reference\:file\:org.apache.batik.css_1.6.0.v201011041432.jar@4,reference\:file\:org.apache.batik.util_1.6.0.v201011041432.jar@4,reference\:file\:org.apache.batik.util.gui_1.6.0.v201011041432.jar@4,reference\:file\:org.apache.commons.codec_1.3.0.v201101211617.jar@4,reference\:file\:org.apache.commons.httpclient_3.1.0.v201012070820.jar@4,reference\:file\:org.apache.commons.logging_1.0.4.v201101211617.jar@4,reference\:file\:org.apache.felix.gogo.command_0.8.0.v201108120515.jar@4,reference\:file\:org.apache.felix.gogo.runtime_0.8.0.v201108120515.jar@4,reference\:file\:org.apache.felix.gogo.shell_0.8.0.v201110170705.jar@4,reference\:file\:org.apache.jasper.glassfish_2.2.2.v201205150955.jar@4,reference\:file\:org.apache.lucene_2.9.1.v201101211721.jar@4,reference\:file\:org.apache.lucene.analysis_2.9.1.v201101211721.jar@4,reference\:file\:org.apache.lucene.core_2.9.1.v201101211721.jar@4,reference\:file\:org.eclipse.ant.core_3.2.401.v20121204-162022.jar@4,reference\:file\:org.eclipse.compare_3.5.301.v20130125-135424.jar@4,reference\:file\:org.eclipse.compare.core_3.5.200.v20120522-1148.jar@4,reference\:file\:org.eclipse.core.commands_3.6.2.v20130123-162658.jar@4,reference\:file\:org.eclipse.core.contenttype_3.4.200.v20120523-2004.jar@4,reference\:file\:org.eclipse.core.databinding_1.4.1.v20120912-132807.jar@4,reference\:file\:org.eclipse.core.databinding.beans_1.2.200.v20120523-1955.jar@4,reference\:file\:org.eclipse.core.databinding.observable_1.4.1.v20120521-2329.jar@4,reference\:file\:org.eclipse.core.databinding.property_1.4.100.v20120523-1955.jar@4,reference\:file\:org.eclipse.core.expressions_3.4.401.v20120912-155018.jar@4,reference\:file\:org.eclipse.core.externaltools_1.0.100.v20120521-2012.jar@4,reference\:file\:org.eclipse.core.filebuffers_3.5.200.v20120523-1310.jar@4,reference\:file\:org.eclipse.core.filesystem_1.3.200.v20130115-145044.jar@4,reference\:file\:org.eclipse.core.filesystem.linux.x86_64_1.2.0.v20120522-1137.jar@4,reference\:file\:org.eclipse.core.jobs_3.5.300.v20120912-155018.jar@4,reference\:file\:org.eclipse.core.net_1.2.200.v20120914-093638.jar@4,reference\:file\:org.eclipse.core.net.linux.x86_64_1.1.0.v20120522-1148.jar@4,reference\:file\:org.eclipse.core.resources_3.8.1.v20121114-124432.jar@4,reference\:file\:org.eclipse.core.runtime_3.8.0.v20120912-155025.jar@2\:start,reference\:file\:org.eclipse.core.runtime.compatibility_3.2.200.v20120521-2346.jar@4,reference\:file\:org.eclipse.core.runtime.compatibility.registry_3.5.101.v20130108-163257/@4,reference\:file\:org.eclipse.core.variables_3.2.600.v20120521-2012.jar@4,reference\:file\:org.eclipse.debug.core_3.7.100.v20120521-2012.jar@4,reference\:file\:org.eclipse.debug.ui_3.8.2.v20130130-171415.jar@4,reference\:file\:org.eclipse.e4.core.commands_0.10.1.v20120523-1955.jar@4,reference\:file\:org.eclipse.e4.core.contexts_1.2.0.v20121221-192508.jar@4,reference\:file\:org.eclipse.e4.core.di_1.2.0.v20121024-173149.jar@4,reference\:file\:org.eclipse.e4.core.di.extensions_0.11.100.v20121024-182359.jar@4,reference\:file\:org.eclipse.e4.core.services_1.0.0.v20120521-2346.jar@4,reference\:file\:org.eclipse.e4.ui.bindings_0.10.3.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.css.core_0.10.2.v20120912-132817.jar@4,reference\:file\:org.eclipse.e4.ui.css.swt_0.10.3.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.css.swt.theme_0.9.4.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.di_0.10.1.v20120523-1955.jar@4,reference\:file\:org.eclipse.e4.ui.model.workbench_0.10.1.v20120523-1955.jar@4,reference\:file\:org.eclipse.e4.ui.services_0.10.3.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.widgets_0.12.3.v20130123-162658.jar@4,reference\:file\:org.eclipse.e4.ui.workbench_0.11.0.v20130125-100758.jar@4,reference\:file\:org.eclipse.e4.ui.workbench.addons.swt_0.10.3.v20130124-185622.jar@4,reference\:file\:org.eclipse.e4.ui.workbench.renderers.swt_0.10.3.v20130124-170312.jar@4,reference\:file\:org.eclipse.e4.ui.workbench.swt_0.10.3.v20130124-133900.jar@4,reference\:file\:org.eclipse.e4.ui.workbench3_0.12.0.v20120521-2329.jar@4,reference\:file\:org.eclipse.ecf_3.1.300.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.filetransfer_5.0.0.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.identity_3.1.200.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.provider.filetransfer_3.2.0.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.provider.filetransfer.httpclient_4.0.200.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.provider.filetransfer.httpclient.ssl_1.0.0.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.provider.filetransfer.ssl_1.0.0.v20120610-1946.jar@4,reference\:file\:org.eclipse.ecf.ssl_1.0.100.v20120610-1946.jar@4,reference\:file\:org.eclipse.emf.common_2.8.0.v20130125-0546.jar@4,reference\:file\:org.eclipse.emf.ecore_2.8.3.v20130125-0546.jar@4,reference\:file\:org.eclipse.emf.ecore.change_2.8.0.v20130125-0546.jar@4,reference\:file\:org.eclipse.emf.ecore.xmi_2.8.1.v20130125-0546.jar@4,reference\:file\:org.eclipse.equinox.app_1.3.100.v20120522-1841.jar@4,reference\:file\:org.eclipse.equinox.bidi_0.9.100.v20121107-021609.jar@4,reference\:file\:org.eclipse.equinox.common_3.6.100.v20120522-1841.jar@2\:start,reference\:file\:org.eclipse.equinox.console_1.0.0.v20120522-1841.jar@4,reference\:file\:org.eclipse.equinox.ds_1.4.1.v20120926-201320.jar@2\:start,reference\:file\:org.eclipse.equinox.event_1.2.200.v20120522-2049.jar@4,reference\:file\:org.eclipse.equinox.frameworkadmin_2.0.100.v20120913-155515.jar@4,reference\:file\:org.eclipse.equinox.frameworkadmin.equinox_1.0.400.v20120913-155709.jar@4,reference\:file\:org.eclipse.equinox.http.jetty_3.0.1.v20121109-203239.jar@4,reference\:file\:org.eclipse.equinox.http.registry_1.1.200.v20120912-130548.jar@4,reference\:file\:org.eclipse.equinox.http.servlet_1.1.300.v20120912-130548.jar@4,reference\:file\:org.eclipse.equinox.jsp.jasper_1.0.400.v20120912-130548.jar@4,reference\:file\:org.eclipse.equinox.jsp.jasper.registry_1.0.300.v20120912-130548.jar@4,reference\:file\:org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar@4,reference\:file\:org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20120913-144807/@4,reference\:file\:org.eclipse.equinox.p2.artifact.repository_1.1.200.v20120430-1959.jar@4,reference\:file\:org.eclipse.equinox.p2.console_1.0.300.v20120429-0125.jar@4,reference\:file\:org.eclipse.equinox.p2.core_2.2.0.v20120430-0525.jar@4,reference\:file\:org.eclipse.equinox.p2.director_2.2.0.v20120524-0542.jar@4,reference\:file\:org.eclipse.equinox.p2.director.app_1.0.300.v20120428-0517.jar@4,reference\:file\:org.eclipse.equinox.p2.directorywatcher_1.0.300.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.engine_2.2.0.v20130121-021919.jar@4,reference\:file\:org.eclipse.equinox.p2.extensionlocation_1.2.100.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.garbagecollector_1.0.200.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.jarprocessor_1.0.200.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.metadata_2.1.0.v20120430-2001.jar@4,reference\:file\:org.eclipse.equinox.p2.metadata.repository_1.2.100.v20120524-1717.jar@4,reference\:file\:org.eclipse.equinox.p2.operations_2.2.0.v20130119-010614.jar@4,reference\:file\:org.eclipse.equinox.p2.publisher_1.2.0.v20121002-080415.jar@4,reference\:file\:org.eclipse.equinox.p2.publisher.eclipse_1.1.0.v20120913-155635.jar@4,reference\:file\:org.eclipse.equinox.p2.ql_2.0.100.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.reconciler.dropins_1.1.200.v20120301-2145.jar@4,reference\:file\:org.eclipse.equinox.p2.repository_2.2.0.v20120524-1945.jar@4,reference\:file\:org.eclipse.equinox.p2.repository.tools_2.0.100.v20120501-1314.jar@4,reference\:file\:org.eclipse.equinox.p2.touchpoint.eclipse_2.1.100.v20120428-0117.jar@4,reference\:file\:org.eclipse.equinox.p2.touchpoint.natives_1.1.0.v20130121-021919.jar@4,reference\:file\:org.eclipse.equinox.p2.transport.ecf_1.0.100.v20120913-155635.jar@4,reference\:file\:org.eclipse.equinox.p2.ui_2.2.0.v20130119-010614.jar@4,reference\:file\:org.eclipse.equinox.p2.ui.importexport_1.0.1.v20120913-155635.jar@4,reference\:file\:org.eclipse.equinox.p2.ui.sdk_1.0.200.v20120515-1650.jar@4,reference\:file\:org.eclipse.equinox.p2.ui.sdk.scheduler_1.1.0.v20110815-1744.jar@4,reference\:file\:org.eclipse.equinox.p2.updatechecker_1.1.200.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.p2.updatesite_1.0.400.v20120412-1615.jar@4,reference\:file\:org.eclipse.equinox.preferences_3.5.1.v20121031-182809.jar@4,reference\:file\:org.eclipse.equinox.registry_3.5.200.v20120522-1841.jar@4,reference\:file\:org.eclipse.equinox.security_1.1.100.v20120522-1841.jar@4,reference\:file\:org.eclipse.equinox.security.ui_1.1.100.v20120522-2049.jar@4,reference\:file\:org.eclipse.equinox.simpleconfigurator_1.0.301.v20120914-163612.jar@4,reference\:file\:org.eclipse.equinox.simpleconfigurator.manipulator_2.0.0.v20110808-1657.jar@4,reference\:file\:org.eclipse.equinox.util_1.0.400.v20120917-192807.jar@4,reference\:file\:org.eclipse.help_3.6.0.v20120912-134126.jar@4,reference\:file\:org.eclipse.help.base_3.6.101.v201302041200.jar@4,reference\:file\:org.eclipse.help.ui_3.5.201.v20130108-092756.jar@4,reference\:file\:org.eclipse.help.webapp_3.6.101.v20130116-182509.jar@4,reference\:file\:org.eclipse.jetty.continuation_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.http_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.io_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.security_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.server_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.servlet_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jetty.util_8.1.3.v20120522.jar@4,reference\:file\:org.eclipse.jface_3.8.102.v20130123-162658.jar@4,reference\:file\:org.eclipse.jface.databinding_1.6.0.v20120912-132807.jar@4,reference\:file\:org.eclipse.jface.text_3.8.2.v20121126-164145.jar@4,reference\:file\:org.eclipse.jsch.core_1.1.400.v20120522-1148.jar@4,reference\:file\:org.eclipse.jsch.ui_1.1.400.v20120522-1148.jar@4,reference\:file\:org.eclipse.ltk.core.refactoring_3.6.0.v20120523-1543.jar@4,reference\:file\:org.eclipse.ltk.ui.refactoring_3.7.0.v20120523-1543.jar@4,reference\:file\:org.eclipse.osgi.services_3.3.100.v20120522-1822.jar@4,reference\:file\:org.eclipse.osgi.util_3.2.300.v20120913-144807.jar@4,reference\:file\:org.eclipse.platform_4.2.2.v201302041200/@4,reference\:file\:org.eclipse.platform.doc.user_4.2.2.v20130121-200410.jar@4,reference\:file\:org.eclipse.rcp_4.2.1.v201302041200.jar@4,reference\:file\:org.eclipse.search_3.8.0.v20120523-1540.jar@4,reference\:file\:org.eclipse.swt_3.100.1.v4236b.jar@4,reference\:file\:org.eclipse.swt.gtk.linux.x86_64_3.100.1.v4236b.jar@4,reference\:file\:org.eclipse.team.core_3.6.100.v20120524-0627.jar@4,reference\:file\:org.eclipse.team.ui_3.6.201.v20130125-135424.jar@4,reference\:file\:org.eclipse.text_3.5.200.v20120523-1310.jar@4,reference\:file\:org.eclipse.ui_3.104.0.v20121024-145224.jar@4,reference\:file\:org.eclipse.ui.browser_3.4.2.v20130123-162658.jar@4,reference\:file\:org.eclipse.ui.cheatsheets_3.4.200.v20120521-2344.jar@4,reference\:file\:org.eclipse.ui.console_3.5.100.v20120521-2012.jar@4,reference\:file\:org.eclipse.ui.editors_3.8.0.v20120523-1540.jar@4,reference\:file\:org.eclipse.ui.externaltools_3.2.100.v20120530-1753.jar@4,reference\:file\:org.eclipse.ui.forms_3.5.200.v20120705-114351.jar@4,reference\:file\:org.eclipse.ui.ide_3.8.2.v20121106-165923.jar@4,reference\:file\:org.eclipse.ui.ide.application_1.0.400.v20120523-1955.jar@4,reference\:file\:org.eclipse.ui.intro_3.4.200.v20120521-2344.jar@4,reference\:file\:org.eclipse.ui.intro.universal_3.2.600.v20120912-155524/@4,reference\:file\:org.eclipse.ui.navigator_3.5.200.v20120705-114103.jar@4,reference\:file\:org.eclipse.ui.navigator.resources_3.4.400.v20120705-114010.jar@4,reference\:file\:org.eclipse.ui.net_1.2.101.v20120914-093638.jar@4,reference\:file\:org.eclipse.ui.views_3.6.100.v20120705-114010.jar@4,reference\:file\:org.eclipse.ui.views.properties.tabbed_3.5.300.v20120912-132807.jar@4,reference\:file\:org.eclipse.ui.workbench_3.104.0.v20130204-164612.jar@4,reference\:file\:org.eclipse.ui.workbench.texteditor_3.8.0.v20120523-1310.jar@4,reference\:file\:org.eclipse.update.configurator_3.3.200.v20120912-144026.jar@4,reference\:file\:org.sat4j.core_2.3.0.v20110329.jar@4,reference\:file\:org.sat4j.pb_2.3.0.v20110329.jar@4,reference\:file\:org.w3c.css.sac_1.3.1.v200903091627.jar@4,reference\:file\:org.w3c.dom.smil_1.0.0.v200806040011.jar@4,reference\:file\:org.w3c.dom.svg_1.1.0.v201011041433.jar@4
 eclipse.product=com.android.ide.eclipse.monitor.product
 osgi.splashPath=platform\:/base/plugins/com.android.ide.eclipse.monitor
 osgi.framework.extensions=
diff --git a/lib/monitor-x86_64/configuration/org.eclipse.update/platform.xml b/lib/monitor-x86_64/configuration/org.eclipse.update/platform.xml
index 5bf7cdb..8ccf03e 100644
--- a/lib/monitor-x86_64/configuration/org.eclipse.update/platform.xml
+++ b/lib/monitor-x86_64/configuration/org.eclipse.update/platform.xml
@@ -1,33 +1,33 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<config date="1504242041742" transient="false">
+<config date="1505339689092" transient="false">
 	<site updateable="true" url="platform:/base/" enabled="true" policy="USER-EXCLUDE">
-		<feature id="com.android.ide.eclipse.gldebugger.feature" version="25.2.2.4311448" url="features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4311448/">
-		</feature>
-		<feature id="com.android.ide.eclipse.ddms.feature" version="25.2.2.4311448" url="features/com.android.ide.eclipse.ddms.feature_25.2.2.4311448/" plugin-identifier="com.android.ide.eclipse.ddms">
-		</feature>
-		<feature id="com.android.ide.eclipse.traceview.feature" version="25.2.2.4311448" url="features/com.android.ide.eclipse.traceview.feature_25.2.2.4311448/" plugin-identifier="com.android.ide.eclipse.traceview">
+		<feature id="com.android.ide.eclipse.gldebugger.feature" version="25.2.2.4333796" url="features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4333796/">
 		</feature>
 		<feature id="org.eclipse.equinox.p2.extras.feature" version="1.1.0.v20121211-153934-7A6FEcDiVOTg2RYDuZuFz-L2z00w" url="features/org.eclipse.equinox.p2.extras.feature_1.1.0.v20121211-153934-7A6FEcDiVOTg2RYDuZuFz-L2z00w/">
 		</feature>
 		<feature id="org.eclipse.help" version="1.4.1.v20120912-144938-8R7xFOXFLWUl7PpNBh_HIGkb4" url="features/org.eclipse.help_1.4.1.v20120912-144938-8R7xFOXFLWUl7PpNBh_HIGkb4/" plugin-identifier="org.eclipse.help.base">
 		</feature>
+		<feature id="com.android.ide.eclipse.ddms.feature" version="25.2.2.4333796" url="features/com.android.ide.eclipse.ddms.feature_25.2.2.4333796/" plugin-identifier="com.android.ide.eclipse.ddms">
+		</feature>
+		<feature id="com.android.ide.eclipse.monitor.feature" version="25.2.2.4333796" url="features/com.android.ide.eclipse.monitor.feature_25.2.2.4333796/" plugin-identifier="com.android.ide.eclipse.monitor">
+		</feature>
 		<feature id="org.eclipse.equinox.p2.user.ui" version="2.2.0.v20121212-204731-62DG9JXTlTj-UXcQ2y3NLn6U4Z3H" url="features/org.eclipse.equinox.p2.user.ui_2.2.0.v20121212-204731-62DG9JXTlTj-UXcQ2y3NLn6U4Z3H/">
 		</feature>
 		<feature id="org.eclipse.equinox.p2.core.feature" version="1.1.0.v20121211-153934-8297FndFWmE7h7Bpz-vcqkxyKz0" url="features/org.eclipse.equinox.p2.core.feature_1.1.0.v20121211-153934-8297FndFWmE7h7Bpz-vcqkxyKz0/">
 		</feature>
 		<feature id="org.eclipse.platform" version="4.2.1.v20130118-173121-9MF7GHYdG0B5kx4E_SkfZV-1mNjVATf67ZAb7" url="features/org.eclipse.platform_4.2.1.v20130118-173121-9MF7GHYdG0B5kx4E_SkfZV-1mNjVATf67ZAb7/">
 		</feature>
-		<feature id="com.android.ide.eclipse.hierarchyviewer.feature" version="25.4.0.4311448" url="features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4311448/" plugin-identifier="com.android.ide.eclipse.hierarchyviewer">
-		</feature>
 		<feature id="org.eclipse.emf.ecore" version="2.8.3.v20130125-0546" url="features/org.eclipse.emf.ecore_2.8.3.v20130125-0546/">
 		</feature>
 		<feature id="org.eclipse.e4.rcp" version="1.1.2.v20130130-191718-91FUvGP7GIX2Kgz-z-gvjMvXV1NS" url="features/org.eclipse.e4.rcp_1.1.2.v20130130-191718-91FUvGP7GIX2Kgz-z-gvjMvXV1NS/">
 		</feature>
+		<feature id="com.android.ide.eclipse.hierarchyviewer.feature" version="25.4.0.4333796" url="features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4333796/" plugin-identifier="com.android.ide.eclipse.hierarchyviewer">
+		</feature>
 		<feature id="org.eclipse.emf.common" version="2.8.0.v20130125-0546" url="features/org.eclipse.emf.common_2.8.0.v20130125-0546/">
 		</feature>
 		<feature id="org.eclipse.rcp" version="4.2.2.v20130129-152330-7IARAABrMQkGSvMgQnUlz-DQz00h" url="features/org.eclipse.rcp_4.2.2.v20130129-152330-7IARAABrMQkGSvMgQnUlz-DQz00h/">
 		</feature>
-		<feature id="com.android.ide.eclipse.monitor.feature" version="25.2.2.4311448" url="features/com.android.ide.eclipse.monitor.feature_25.2.2.4311448/" plugin-identifier="com.android.ide.eclipse.monitor">
+		<feature id="com.android.ide.eclipse.traceview.feature" version="25.2.2.4333796" url="features/com.android.ide.eclipse.traceview.feature_25.2.2.4333796/" plugin-identifier="com.android.ide.eclipse.traceview">
 		</feature>
 		<feature id="org.eclipse.equinox.p2.rcp.feature" version="1.1.0.v20121211-153934-785EoBqNKNZz-DW7sUc8hFwz00wd" url="features/org.eclipse.equinox.p2.rcp.feature_1.1.0.v20121211-153934-785EoBqNKNZz-DW7sUc8hFwz00wd/">
 		</feature>
diff --git a/lib/monitor-x86_64/features/com.android.ide.eclipse.ddms.feature_25.2.2.4311448/feature.xml b/lib/monitor-x86_64/features/com.android.ide.eclipse.ddms.feature_25.2.2.4311448/feature.xml
deleted file mode 100644
index d07cd68..0000000
--- a/lib/monitor-x86_64/features/com.android.ide.eclipse.ddms.feature_25.2.2.4311448/feature.xml
+++ /dev/null
@@ -1,253 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="com.android.ide.eclipse.ddms.feature"
-      label="Android DDMS"
-      version="25.2.2.4311448"
-      provider-name="The Android Open Source Project"
-      plugin="com.android.ide.eclipse.ddms">
-
-   <description>
-      Android Dalvik Debug Monitor Service
-   </description>
-
-   <copyright>
-      Copyright (C) 2007-2011 The Android Open Source Project
-   </copyright>
-
-   <license url="http://www.apache.org/licenses/LICENSE-2.0">
-      Note:  jcommon-1.0.12.jar is under the BSD license rather than the APL.  You can find a copy of the BSD License at http://www.opensource.org/licenses/bsd-license.php
-
-   jfreechart-1.0.9.jar and jfreechart-1.0.9-swt.jar are under the LGPL rather than the APL.  You can find a copy of the LGPL at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt.  You can get the source code for these two components at http://android.git.kernel.org/pub/jfreechart-1.0.9.zip
-
-
-      Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      &quot;License&quot; shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      &quot;Licensor&quot; shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      &quot;Legal Entity&quot; 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,
-      &quot;control&quot; 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.
-
-      &quot;You&quot; (or &quot;Your&quot;) shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      &quot;Source&quot; form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      &quot;Object&quot; 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.
-
-      &quot;Work&quot; 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).
-
-      &quot;Derivative Works&quot; 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.
-
-      &quot;Contribution&quot; 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, &quot;submitted&quot;
-      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 &quot;Not a Contribution.&quot;
-
-      &quot;Contributor&quot; 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 &quot;NOTICE&quot; 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 &quot;AS IS&quot; 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 &quot;[]&quot;
-      replaced with your own identifying information. (Don&apos;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 &quot;printed page&quot; 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 &quot;License&quot;);
-   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 &quot;AS IS&quot; 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.
-   </license>
-
-   <url>
-      <update label="Android Update Site" url="https://dl-ssl.google.com/android/eclipse/"/>
-   </url>
-
-   <requires>
-      <import plugin="org.eclipse.ui" version="3.7.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.core.runtime" version="3.7.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.ui.console"/>
-      <import plugin="org.eclipse.core.resources"/>
-      <import plugin="org.eclipse.ui.ide"/>
-      <import plugin="org.eclipse.core.filesystem"/>
-   </requires>
-
-   <plugin
-         id="com.android.ide.eclipse.base"
-         download-size="5210"
-         install-size="5812"
-         version="25.2.2.4311448"
-         unpack="false"/>
-
-   <plugin
-         id="com.android.ide.eclipse.ddms"
-         download-size="2585"
-         install-size="2925"
-         version="25.2.2.4311448"
-         unpack="false"/>
-
-</feature>
diff --git a/lib/monitor-x86_64/features/com.android.ide.eclipse.ddms.feature_25.2.2.4311448/META-INF/MANIFEST.MF b/lib/monitor-x86_64/features/com.android.ide.eclipse.ddms.feature_25.2.2.4333796/META-INF/MANIFEST.MF
similarity index 100%
rename from lib/monitor-x86_64/features/com.android.ide.eclipse.ddms.feature_25.2.2.4311448/META-INF/MANIFEST.MF
rename to lib/monitor-x86_64/features/com.android.ide.eclipse.ddms.feature_25.2.2.4333796/META-INF/MANIFEST.MF
diff --git a/lib/monitor-x86/features/com.android.ide.eclipse.ddms.feature_25.2.2.4311448/feature.xml b/lib/monitor-x86_64/features/com.android.ide.eclipse.ddms.feature_25.2.2.4333796/feature.xml
similarity index 98%
copy from lib/monitor-x86/features/com.android.ide.eclipse.ddms.feature_25.2.2.4311448/feature.xml
copy to lib/monitor-x86_64/features/com.android.ide.eclipse.ddms.feature_25.2.2.4333796/feature.xml
index d07cd68..4c0a14f 100644
--- a/lib/monitor-x86/features/com.android.ide.eclipse.ddms.feature_25.2.2.4311448/feature.xml
+++ b/lib/monitor-x86_64/features/com.android.ide.eclipse.ddms.feature_25.2.2.4333796/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="com.android.ide.eclipse.ddms.feature"
       label="Android DDMS"
-      version="25.2.2.4311448"
+      version="25.2.2.4333796"
       provider-name="The Android Open Source Project"
       plugin="com.android.ide.eclipse.ddms">
 
@@ -240,14 +240,14 @@
          id="com.android.ide.eclipse.base"
          download-size="5210"
          install-size="5812"
-         version="25.2.2.4311448"
+         version="25.2.2.4333796"
          unpack="false"/>
 
    <plugin
          id="com.android.ide.eclipse.ddms"
          download-size="2585"
          install-size="2925"
-         version="25.2.2.4311448"
+         version="25.2.2.4333796"
          unpack="false"/>
 
 </feature>
diff --git a/lib/monitor-x86_64/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4311448/feature.xml b/lib/monitor-x86_64/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4311448/feature.xml
deleted file mode 100644
index fa54125..0000000
--- a/lib/monitor-x86_64/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4311448/feature.xml
+++ /dev/null
@@ -1,232 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="com.android.ide.eclipse.gldebugger.feature"
-      label="Tracer for OpenGL ES"
-      version="25.2.2.4311448"
-      provider-name="The Android Open Source Project">
-
-   <description>
-      GLESv2 Debugger Client (Alpha status).
-   </description>
-
-   <copyright>
-      Copyright (C) 2011 The Android Open Source Project
-   </copyright>
-
-   <license url="http://www.apache.org/licenses/LICENSE-2.0">
-      Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      &quot;License&quot; shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      &quot;Licensor&quot; shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      &quot;Legal Entity&quot; 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,
-      &quot;control&quot; 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.
-
-      &quot;You&quot; (or &quot;Your&quot;) shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      &quot;Source&quot; form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      &quot;Object&quot; 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.
-
-      &quot;Work&quot; 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).
-
-      &quot;Derivative Works&quot; 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.
-
-      &quot;Contribution&quot; 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, &quot;submitted&quot;
-      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 &quot;Not a Contribution.&quot;
-
-      &quot;Contributor&quot; 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 &quot;NOTICE&quot; 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 &quot;AS IS&quot; 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 &quot;[]&quot;
-      replaced with your own identifying information. (Don&apos;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 &quot;printed page&quot; 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 &quot;License&quot;);
-   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 &quot;AS IS&quot; 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.
-   </license>
-
-   <requires>
-      <import plugin="org.eclipse.ui"/>
-      <import plugin="org.eclipse.core.runtime"/>
-   </requires>
-
-   <plugin
-         id="com.android.ide.eclipse.gldebugger"
-         download-size="508"
-         install-size="1077"
-         version="25.2.2.4311448"
-         unpack="false"/>
-
-</feature>
diff --git a/lib/monitor-x86_64/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4311448/META-INF/MANIFEST.MF b/lib/monitor-x86_64/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4333796/META-INF/MANIFEST.MF
similarity index 100%
rename from lib/monitor-x86_64/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4311448/META-INF/MANIFEST.MF
rename to lib/monitor-x86_64/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4333796/META-INF/MANIFEST.MF
diff --git a/lib/monitor-x86/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4311448/feature.xml b/lib/monitor-x86_64/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4333796/feature.xml
similarity index 99%
copy from lib/monitor-x86/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4311448/feature.xml
copy to lib/monitor-x86_64/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4333796/feature.xml
index fa54125..256fbee 100644
--- a/lib/monitor-x86/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4311448/feature.xml
+++ b/lib/monitor-x86_64/features/com.android.ide.eclipse.gldebugger.feature_25.2.2.4333796/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="com.android.ide.eclipse.gldebugger.feature"
       label="Tracer for OpenGL ES"
-      version="25.2.2.4311448"
+      version="25.2.2.4333796"
       provider-name="The Android Open Source Project">
 
    <description>
@@ -226,7 +226,7 @@
          id="com.android.ide.eclipse.gldebugger"
          download-size="508"
          install-size="1077"
-         version="25.2.2.4311448"
+         version="25.2.2.4333796"
          unpack="false"/>
 
 </feature>
diff --git a/lib/monitor-x86_64/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4311448/feature.xml b/lib/monitor-x86_64/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4311448/feature.xml
deleted file mode 100644
index 97eb410..0000000
--- a/lib/monitor-x86_64/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4311448/feature.xml
+++ /dev/null
@@ -1,239 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="com.android.ide.eclipse.hierarchyviewer.feature"
-      label="Android Hierarchy Viewer"
-      version="25.4.0.4311448"
-      provider-name="The Android Open Source Project"
-      plugin="com.android.ide.eclipse.hierarchyviewer">
-
-   <description>
-      Android Hierarchy Viewer.
-   </description>
-
-   <copyright>
-      Copyright (C) 2010-2011 The Android Open Source Project
-   </copyright>
-
-   <license url="http://www.apache.org/licenses/LICENSE-2.0.txt">
-      Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      &quot;License&quot; shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      &quot;Licensor&quot; shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      &quot;Legal Entity&quot; 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,
-      &quot;control&quot; 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.
-
-      &quot;You&quot; (or &quot;Your&quot;) shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      &quot;Source&quot; form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      &quot;Object&quot; 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.
-
-      &quot;Work&quot; 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).
-
-      &quot;Derivative Works&quot; 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.
-
-      &quot;Contribution&quot; 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, &quot;submitted&quot;
-      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 &quot;Not a Contribution.&quot;
-
-      &quot;Contributor&quot; 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 &quot;NOTICE&quot; 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 &quot;AS IS&quot; 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 &quot;[]&quot;
-      replaced with your own identifying information. (Don&apos;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 &quot;printed page&quot; 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 &quot;License&quot;);
-   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 &quot;AS IS&quot; 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.
-   </license>
-
-   <url>
-      <update label="Android Update Site" url="https://dl-ssl.google.com/android/eclipse/"/>
-   </url>
-
-   <requires>
-      <import plugin="org.eclipse.ui" version="3.7.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.core.runtime" version="3.7.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.ui.console"/>
-      <import plugin="com.android.ide.eclipse.ddms" match="perfect"/>
-   </requires>
-
-   <plugin
-         id="com.android.ide.eclipse.hierarchyviewer"
-         download-size="400"
-         install-size="478"
-         version="25.4.0.4311448"
-         unpack="false"/>
-
-</feature>
diff --git a/lib/monitor-x86_64/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4311448/META-INF/MANIFEST.MF b/lib/monitor-x86_64/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4333796/META-INF/MANIFEST.MF
similarity index 100%
rename from lib/monitor-x86_64/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4311448/META-INF/MANIFEST.MF
rename to lib/monitor-x86_64/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4333796/META-INF/MANIFEST.MF
diff --git a/lib/monitor-x86/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4311448/feature.xml b/lib/monitor-x86_64/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4333796/feature.xml
similarity index 98%
copy from lib/monitor-x86/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4311448/feature.xml
copy to lib/monitor-x86_64/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4333796/feature.xml
index 97eb410..841174d 100644
--- a/lib/monitor-x86/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4311448/feature.xml
+++ b/lib/monitor-x86_64/features/com.android.ide.eclipse.hierarchyviewer.feature_25.4.0.4333796/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="com.android.ide.eclipse.hierarchyviewer.feature"
       label="Android Hierarchy Viewer"
-      version="25.4.0.4311448"
+      version="25.4.0.4333796"
       provider-name="The Android Open Source Project"
       plugin="com.android.ide.eclipse.hierarchyviewer">
 
@@ -231,9 +231,9 @@
 
    <plugin
          id="com.android.ide.eclipse.hierarchyviewer"
-         download-size="400"
+         download-size="399"
          install-size="478"
-         version="25.4.0.4311448"
+         version="25.4.0.4333796"
          unpack="false"/>
 
 </feature>
diff --git a/lib/monitor-x86_64/features/com.android.ide.eclipse.monitor.feature_25.2.2.4311448/feature.xml b/lib/monitor-x86_64/features/com.android.ide.eclipse.monitor.feature_25.2.2.4311448/feature.xml
deleted file mode 100644
index 6d9ca6d..0000000
--- a/lib/monitor-x86_64/features/com.android.ide.eclipse.monitor.feature_25.2.2.4311448/feature.xml
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="com.android.ide.eclipse.monitor.feature"
-      label="Android Monitor"
-      version="25.2.2.4311448"
-      provider-name="The Android Open Source Project"
-      plugin="com.android.ide.eclipse.monitor">
-
-   <description>
-      Android Debug Monitor
-   </description>
-
-   <copyright>
-      Copyright (C) 2007-2014 The Android Open Source Project
-   </copyright>
-
-   <license url="http://www.apache.org/licenses/LICENSE-2.0">
-      Note:  jcommon-1.0.12.jar is under the BSD license rather than the APL.  You can find a copy of the BSD License at http://www.opensource.org/licenses/bsd-license.php
-
-   jfreechart-1.0.9.jar and jfreechart-1.0.9-swt.jar are under the LGPL rather than the APL.  You can find a copy of the LGPL at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt.  You can get the source code for these two components at http://android.git.kernel.org/pub/jfreechart-1.0.9.zip
-
-
-      Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      &quot;License&quot; shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      &quot;Licensor&quot; shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      &quot;Legal Entity&quot; 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,
-      &quot;control&quot; 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.
-
-      &quot;You&quot; (or &quot;Your&quot;) shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      &quot;Source&quot; form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      &quot;Object&quot; 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.
-
-      &quot;Work&quot; 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).
-
-      &quot;Derivative Works&quot; 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.
-
-      &quot;Contribution&quot; 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, &quot;submitted&quot;
-      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 &quot;Not a Contribution.&quot;
-
-      &quot;Contributor&quot; 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 &quot;NOTICE&quot; 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 &quot;AS IS&quot; 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 &quot;[]&quot;
-      replaced with your own identifying information. (Don&apos;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 &quot;printed page&quot; 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 &quot;License&quot;);
-   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 &quot;AS IS&quot; 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.
-   </license>
-
-   <plugin
-         id="com.android.ide.eclipse.monitor"
-         download-size="212"
-         install-size="284"
-         version="25.2.2.4311448"
-         unpack="false"/>
-
-</feature>
diff --git a/lib/monitor-x86_64/features/com.android.ide.eclipse.monitor.feature_25.2.2.4311448/META-INF/MANIFEST.MF b/lib/monitor-x86_64/features/com.android.ide.eclipse.monitor.feature_25.2.2.4333796/META-INF/MANIFEST.MF
similarity index 100%
rename from lib/monitor-x86_64/features/com.android.ide.eclipse.monitor.feature_25.2.2.4311448/META-INF/MANIFEST.MF
rename to lib/monitor-x86_64/features/com.android.ide.eclipse.monitor.feature_25.2.2.4333796/META-INF/MANIFEST.MF
diff --git a/lib/monitor-x86/features/com.android.ide.eclipse.monitor.feature_25.2.2.4311448/feature.xml b/lib/monitor-x86_64/features/com.android.ide.eclipse.monitor.feature_25.2.2.4333796/feature.xml
similarity index 99%
copy from lib/monitor-x86/features/com.android.ide.eclipse.monitor.feature_25.2.2.4311448/feature.xml
copy to lib/monitor-x86_64/features/com.android.ide.eclipse.monitor.feature_25.2.2.4333796/feature.xml
index 6d9ca6d..f34b57b 100644
--- a/lib/monitor-x86/features/com.android.ide.eclipse.monitor.feature_25.2.2.4311448/feature.xml
+++ b/lib/monitor-x86_64/features/com.android.ide.eclipse.monitor.feature_25.2.2.4333796/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="com.android.ide.eclipse.monitor.feature"
       label="Android Monitor"
-      version="25.2.2.4311448"
+      version="25.2.2.4333796"
       provider-name="The Android Open Source Project"
       plugin="com.android.ide.eclipse.monitor">
 
@@ -227,7 +227,7 @@
          id="com.android.ide.eclipse.monitor"
          download-size="212"
          install-size="284"
-         version="25.2.2.4311448"
+         version="25.2.2.4333796"
          unpack="false"/>
 
 </feature>
diff --git a/lib/monitor-x86_64/features/com.android.ide.eclipse.traceview.feature_25.2.2.4311448/feature.xml b/lib/monitor-x86_64/features/com.android.ide.eclipse.traceview.feature_25.2.2.4311448/feature.xml
deleted file mode 100644
index 9e766b4..0000000
--- a/lib/monitor-x86_64/features/com.android.ide.eclipse.traceview.feature_25.2.2.4311448/feature.xml
+++ /dev/null
@@ -1,239 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="com.android.ide.eclipse.traceview.feature"
-      label="Android Traceview"
-      version="25.2.2.4311448"
-      provider-name="The Android Open Source Project"
-      plugin="com.android.ide.eclipse.traceview">
-
-   <description>
-      Android Traceview
-   </description>
-
-   <copyright>
-      Copyright (C) 2011 The Android Open Source Project
-   </copyright>
-
-   <license url="http://www.apache.org/licenses/LICENSE-2.0">
-      Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      &quot;License&quot; shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      &quot;Licensor&quot; shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      &quot;Legal Entity&quot; 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,
-      &quot;control&quot; 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.
-
-      &quot;You&quot; (or &quot;Your&quot;) shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      &quot;Source&quot; form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      &quot;Object&quot; 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.
-
-      &quot;Work&quot; 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).
-
-      &quot;Derivative Works&quot; 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.
-
-      &quot;Contribution&quot; 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, &quot;submitted&quot;
-      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 &quot;Not a Contribution.&quot;
-
-      &quot;Contributor&quot; 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 &quot;NOTICE&quot; 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 &quot;AS IS&quot; 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 &quot;[]&quot;
-      replaced with your own identifying information. (Don&apos;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 &quot;printed page&quot; 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 &quot;License&quot;);
-   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 &quot;AS IS&quot; 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.
-   </license>
-
-   <url>
-      <update label="Android Update Site" url="https://dl-ssl.google.com/android/eclipse/"/>
-   </url>
-
-   <requires>
-      <import plugin="org.eclipse.core.runtime" version="3.7.0" match="greaterOrEqual"/>
-      <import plugin="com.android.ide.eclipse.ddms" version="10.0.0" match="greaterOrEqual"/>
-      <import plugin="org.eclipse.core.filesystem"/>
-      <import plugin="org.eclipse.core.resources"/>
-   </requires>
-
-   <plugin
-         id="com.android.ide.eclipse.traceview"
-         download-size="137"
-         install-size="154"
-         version="25.2.2.4311448"
-         unpack="false"/>
-
-</feature>
diff --git a/lib/monitor-x86_64/features/com.android.ide.eclipse.traceview.feature_25.2.2.4311448/META-INF/MANIFEST.MF b/lib/monitor-x86_64/features/com.android.ide.eclipse.traceview.feature_25.2.2.4333796/META-INF/MANIFEST.MF
similarity index 100%
rename from lib/monitor-x86_64/features/com.android.ide.eclipse.traceview.feature_25.2.2.4311448/META-INF/MANIFEST.MF
rename to lib/monitor-x86_64/features/com.android.ide.eclipse.traceview.feature_25.2.2.4333796/META-INF/MANIFEST.MF
diff --git a/lib/monitor-x86/features/com.android.ide.eclipse.traceview.feature_25.2.2.4311448/feature.xml b/lib/monitor-x86_64/features/com.android.ide.eclipse.traceview.feature_25.2.2.4333796/feature.xml
similarity index 99%
copy from lib/monitor-x86/features/com.android.ide.eclipse.traceview.feature_25.2.2.4311448/feature.xml
copy to lib/monitor-x86_64/features/com.android.ide.eclipse.traceview.feature_25.2.2.4333796/feature.xml
index 9e766b4..11ef3bd 100644
--- a/lib/monitor-x86/features/com.android.ide.eclipse.traceview.feature_25.2.2.4311448/feature.xml
+++ b/lib/monitor-x86_64/features/com.android.ide.eclipse.traceview.feature_25.2.2.4333796/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="com.android.ide.eclipse.traceview.feature"
       label="Android Traceview"
-      version="25.2.2.4311448"
+      version="25.2.2.4333796"
       provider-name="The Android Open Source Project"
       plugin="com.android.ide.eclipse.traceview">
 
@@ -233,7 +233,7 @@
          id="com.android.ide.eclipse.traceview"
          download-size="137"
          install-size="154"
-         version="25.2.2.4311448"
+         version="25.2.2.4333796"
          unpack="false"/>
 
 </feature>
diff --git a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.core/cache/artifacts.xml b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.core/cache/artifacts.xml
index 8eabb1b..19e9dc4 100644
--- a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.core/cache/artifacts.xml
+++ b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.core/cache/artifacts.xml
@@ -3,7 +3,7 @@
 <repository name='download cache' type='org.eclipse.equinox.p2.artifact.repository.simpleRepository' version='1.0.0'>
   <properties size='2'>
     <property name='p2.system' value='true'/>
-    <property name='p2.timestamp' value='1504242040824'/>
+    <property name='p2.timestamp' value='1505339688321'/>
   </properties>
   <mappings size='3'>
     <rule filter='(&amp; (classifier=osgi.bundle))' output='${repoUrl}/plugins/${id}_${version}.jar'/>
@@ -11,16 +11,16 @@
     <rule filter='(&amp; (classifier=org.eclipse.update.feature))' output='${repoUrl}/features/${id}_${version}.jar'/>
   </mappings>
   <artifacts size='3'>
-    <artifact classifier='binary' id='monitorproduct.executable.gtk.linux.x86_64' version='25.2.2.4311448'>
-      <properties size='1'>
-        <property name='download.size' value='168388'/>
-      </properties>
-    </artifact>
     <artifact classifier='binary' id='org.eclipse.rcp_root' version='4.2.2.v20130129-152330-7IARAABrMQkGSvMgQnUlz-DQz00h'>
       <properties size='1'>
         <property name='download.size' value='37952'/>
       </properties>
     </artifact>
+    <artifact classifier='binary' id='monitorproduct.executable.gtk.linux.x86_64' version='25.2.2.4333796'>
+      <properties size='1'>
+        <property name='download.size' value='168388'/>
+      </properties>
+    </artifact>
     <artifact classifier='binary' id='org.eclipse.platform_root' version='4.2.1.v20130118-173121-9MF7GHYdG0B5kx4E_SkfZV-1mNjVATf67ZAb7'>
       <properties size='1'>
         <property name='download.size' value='38125'/>
diff --git a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.core/cache/binary/monitorproduct.executable.gtk.linux.x86_64_25.2.2.4311448 b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.core/cache/binary/monitorproduct.executable.gtk.linux.x86_64_25.2.2.4333796
similarity index 99%
rename from lib/monitor-x86_64/p2/org.eclipse.equinox.p2.core/cache/binary/monitorproduct.executable.gtk.linux.x86_64_25.2.2.4311448
rename to lib/monitor-x86_64/p2/org.eclipse.equinox.p2.core/cache/binary/monitorproduct.executable.gtk.linux.x86_64_25.2.2.4333796
index ee40a7d..c878794 100644
--- a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.core/cache/binary/monitorproduct.executable.gtk.linux.x86_64_25.2.2.4311448
+++ b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.core/cache/binary/monitorproduct.executable.gtk.linux.x86_64_25.2.2.4333796
Binary files differ
diff --git a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/.data/org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions/jvmargs b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/.data/org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions/jvmargs
index 16f0ebf..2ed1a2e 100644
--- a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/.data/org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions/jvmargs
+++ b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/.data/org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions/jvmargs
@@ -1,4 +1,4 @@
-#Fri Sep 01 05:00:41 UTC 2017
+#Wed Sep 13 21:54:48 UTC 2017
 -Xms=512m
 -XX\:MaxPermSize\==256m
 -Xmx=1024m
diff --git a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242040463.profile.gz b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242040463.profile.gz
deleted file mode 100644
index 3adee6a..0000000
--- a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242040463.profile.gz
+++ /dev/null
Binary files differ
diff --git a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242040465.profile.gz b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242040465.profile.gz
deleted file mode 100644
index fb1b92b..0000000
--- a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242040465.profile.gz
+++ /dev/null
Binary files differ
diff --git a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242041567.profile.gz b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242041567.profile.gz
deleted file mode 100644
index 0d0fd45..0000000
--- a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242041567.profile.gz
+++ /dev/null
Binary files differ
diff --git a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242042267.profile.gz b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242042267.profile.gz
deleted file mode 100644
index 6308010..0000000
--- a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1504242042267.profile.gz
+++ /dev/null
Binary files differ
diff --git a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339688032.profile.gz b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339688032.profile.gz
new file mode 100644
index 0000000..f7b8d0f
--- /dev/null
+++ b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339688032.profile.gz
Binary files differ
diff --git a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339688034.profile.gz b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339688034.profile.gz
new file mode 100644
index 0000000..e060463
--- /dev/null
+++ b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339688034.profile.gz
Binary files differ
diff --git a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339688931.profile.gz b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339688931.profile.gz
new file mode 100644
index 0000000..5eb649d
--- /dev/null
+++ b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339688931.profile.gz
Binary files differ
diff --git a/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339689154.profile.gz b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339689154.profile.gz
new file mode 100644
index 0000000..0c1f1e9
--- /dev/null
+++ b/lib/monitor-x86_64/p2/org.eclipse.equinox.p2.engine/profileRegistry/DefaultProfile.profile/1505339689154.profile.gz
Binary files differ
diff --git a/lib/monitor-x86_64/plugins/com.android.ide.eclipse.base_25.2.2.4311448.jar b/lib/monitor-x86_64/plugins/com.android.ide.eclipse.base_25.2.2.4333796.jar
similarity index 67%
rename from lib/monitor-x86_64/plugins/com.android.ide.eclipse.base_25.2.2.4311448.jar
rename to lib/monitor-x86_64/plugins/com.android.ide.eclipse.base_25.2.2.4333796.jar
index 7d2c46b..c12dc00 100644
--- a/lib/monitor-x86_64/plugins/com.android.ide.eclipse.base_25.2.2.4311448.jar
+++ b/lib/monitor-x86_64/plugins/com.android.ide.eclipse.base_25.2.2.4333796.jar
Binary files differ
diff --git a/lib/monitor-x86_64/plugins/com.android.ide.eclipse.ddms_25.2.2.4311448.jar b/lib/monitor-x86_64/plugins/com.android.ide.eclipse.ddms_25.2.2.4311448.jar
deleted file mode 100644
index f2ee1e3..0000000
--- a/lib/monitor-x86_64/plugins/com.android.ide.eclipse.ddms_25.2.2.4311448.jar
+++ /dev/null
Binary files differ
diff --git a/lib/monitor-x86/plugins/com.android.ide.eclipse.ddms_25.2.2.4311448.jar b/lib/monitor-x86_64/plugins/com.android.ide.eclipse.ddms_25.2.2.4333796.jar
similarity index 64%
copy from lib/monitor-x86/plugins/com.android.ide.eclipse.ddms_25.2.2.4311448.jar
copy to lib/monitor-x86_64/plugins/com.android.ide.eclipse.ddms_25.2.2.4333796.jar
index f2ee1e3..7e5c967 100644
--- a/lib/monitor-x86/plugins/com.android.ide.eclipse.ddms_25.2.2.4311448.jar
+++ b/lib/monitor-x86_64/plugins/com.android.ide.eclipse.ddms_25.2.2.4333796.jar
Binary files differ
diff --git a/lib/monitor-x86_64/plugins/com.android.ide.eclipse.gldebugger_25.2.2.4311448.jar b/lib/monitor-x86_64/plugins/com.android.ide.eclipse.gldebugger_25.2.2.4333796.jar
similarity index 95%
rename from lib/monitor-x86_64/plugins/com.android.ide.eclipse.gldebugger_25.2.2.4311448.jar
rename to lib/monitor-x86_64/plugins/com.android.ide.eclipse.gldebugger_25.2.2.4333796.jar
index 5de9302..d16f080 100644
--- a/lib/monitor-x86_64/plugins/com.android.ide.eclipse.gldebugger_25.2.2.4311448.jar
+++ b/lib/monitor-x86_64/plugins/com.android.ide.eclipse.gldebugger_25.2.2.4333796.jar
Binary files differ
diff --git a/lib/monitor-x86_64/plugins/com.android.ide.eclipse.hierarchyviewer_25.4.0.4311448.jar b/lib/monitor-x86_64/plugins/com.android.ide.eclipse.hierarchyviewer_25.4.0.4311448.jar
deleted file mode 100644
index d269e85..0000000
--- a/lib/monitor-x86_64/plugins/com.android.ide.eclipse.hierarchyviewer_25.4.0.4311448.jar
+++ /dev/null
Binary files differ
diff --git a/lib/monitor-x86_64/plugins/com.android.ide.eclipse.hierarchyviewer_25.4.0.4333796.jar b/lib/monitor-x86_64/plugins/com.android.ide.eclipse.hierarchyviewer_25.4.0.4333796.jar
new file mode 100644
index 0000000..0e5c6cc
--- /dev/null
+++ b/lib/monitor-x86_64/plugins/com.android.ide.eclipse.hierarchyviewer_25.4.0.4333796.jar
Binary files differ
diff --git a/lib/monitor-x86_64/plugins/com.android.ide.eclipse.monitor_25.2.2.4311448.jar b/lib/monitor-x86_64/plugins/com.android.ide.eclipse.monitor_25.2.2.4311448.jar
deleted file mode 100644
index 6654cb5..0000000
--- a/lib/monitor-x86_64/plugins/com.android.ide.eclipse.monitor_25.2.2.4311448.jar
+++ /dev/null
Binary files differ
diff --git a/lib/monitor-x86/plugins/com.android.ide.eclipse.monitor_25.2.2.4311448.jar b/lib/monitor-x86_64/plugins/com.android.ide.eclipse.monitor_25.2.2.4333796.jar
similarity index 96%
copy from lib/monitor-x86/plugins/com.android.ide.eclipse.monitor_25.2.2.4311448.jar
copy to lib/monitor-x86_64/plugins/com.android.ide.eclipse.monitor_25.2.2.4333796.jar
index 6654cb5..233df4d 100644
--- a/lib/monitor-x86/plugins/com.android.ide.eclipse.monitor_25.2.2.4311448.jar
+++ b/lib/monitor-x86_64/plugins/com.android.ide.eclipse.monitor_25.2.2.4333796.jar
Binary files differ
diff --git a/lib/monitor-x86_64/plugins/com.android.ide.eclipse.traceview_25.2.2.4311448.jar b/lib/monitor-x86_64/plugins/com.android.ide.eclipse.traceview_25.2.2.4311448.jar
deleted file mode 100644
index 2d5f2ec..0000000
--- a/lib/monitor-x86_64/plugins/com.android.ide.eclipse.traceview_25.2.2.4311448.jar
+++ /dev/null
Binary files differ
diff --git a/lib/monitor-x86_64/plugins/com.android.ide.eclipse.traceview_25.2.2.4333796.jar b/lib/monitor-x86_64/plugins/com.android.ide.eclipse.traceview_25.2.2.4333796.jar
new file mode 100644
index 0000000..cb4b4ea
--- /dev/null
+++ b/lib/monitor-x86_64/plugins/com.android.ide.eclipse.traceview_25.2.2.4333796.jar
Binary files differ
diff --git a/lib/monkeyrunner-26.0.0-dev.jar b/lib/monkeyrunner-26.0.0-dev.jar
index 093d4f6..9b61673 100644
--- a/lib/monkeyrunner-26.0.0-dev.jar
+++ b/lib/monkeyrunner-26.0.0-dev.jar
Binary files differ
diff --git a/lib/proguard-project.txt b/lib/proguard-project.txt
index f2fe155..37a7e5a 100644
--- a/lib/proguard-project.txt
+++ b/lib/proguard-project.txt
@@ -1,6 +1,10 @@
 # To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
+# This file is no longer maintained and is not used by new (2.2+) versions of the
+# Android plugin for Gradle. Instead, the Android plugin for Gradle generates the
+# default rules at build time and stores them in the build directory.
+#
 # Add project specific ProGuard rules here.
 # By default, the flags in this file are appended to flags specified
 # in ${sdk.dir}/tools/proguard/proguard-android.txt
diff --git a/lib/repository-26.0.0-dev.jar b/lib/repository-26.0.0-dev.jar
index 4356c6c..0df029c 100644
--- a/lib/repository-26.0.0-dev.jar
+++ b/lib/repository-26.0.0-dev.jar
Binary files differ
diff --git a/lib/screenshot2-26.0.0-dev.jar b/lib/screenshot2-26.0.0-dev.jar
index 3b56427..b76082a 100644
--- a/lib/screenshot2-26.0.0-dev.jar
+++ b/lib/screenshot2-26.0.0-dev.jar
Binary files differ
diff --git a/lib/sdk-common-26.0.0-dev.jar b/lib/sdk-common-26.0.0-dev.jar
index 99f446e..9a8534a 100644
--- a/lib/sdk-common-26.0.0-dev.jar
+++ b/lib/sdk-common-26.0.0-dev.jar
Binary files differ
diff --git a/lib/sdklib-26.0.0-dev.jar b/lib/sdklib-26.0.0-dev.jar
index 682e388..71cc96f 100644
--- a/lib/sdklib-26.0.0-dev.jar
+++ b/lib/sdklib-26.0.0-dev.jar
Binary files differ
diff --git a/lib/swtmenubar-26.0.0-dev.jar b/lib/swtmenubar-26.0.0-dev.jar
index 2089601..6f8052d 100644
--- a/lib/swtmenubar-26.0.0-dev.jar
+++ b/lib/swtmenubar-26.0.0-dev.jar
Binary files differ
diff --git a/lib/traceview-26.0.0-dev.jar b/lib/traceview-26.0.0-dev.jar
index 1f71913..67189c2 100644
--- a/lib/traceview-26.0.0-dev.jar
+++ b/lib/traceview-26.0.0-dev.jar
Binary files differ
diff --git a/lib/uast-26.0.0-dev.jar b/lib/uast-26.0.0-dev.jar
index 6c1a1b4..ee79a0f 100644
--- a/lib/uast-26.0.0-dev.jar
+++ b/lib/uast-26.0.0-dev.jar
Binary files differ
diff --git a/lib/uiautomatorviewer-26.0.0-dev.jar b/lib/uiautomatorviewer-26.0.0-dev.jar
index 8b2c345..60d977d 100644
--- a/lib/uiautomatorviewer-26.0.0-dev.jar
+++ b/lib/uiautomatorviewer-26.0.0-dev.jar
Binary files differ
diff --git a/package.xml b/package.xml
index cd61186..40f1ba6 100644
--- a/package.xml
+++ b/package.xml
@@ -138,4 +138,4 @@
 14.7 The License Agreement, and your relationship with Google under the License Agreement, shall be governed by the laws of the State of California without regard to its conflict of laws provisions. You and Google agree to submit to the exclusive jurisdiction of the courts located within the county of Santa Clara, California to resolve any legal matter arising from the License Agreement. Notwithstanding this, you agree that Google shall still be allowed to apply for injunctive remedies (or an equivalent type of urgent legal relief) in any jurisdiction.
 
 
-November 20, 2015</license><localPackage path="tools" obsolete="false"><type-details xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns5:genericDetailsType"/><revision><major>26</major><minor>1</minor><micro>0</micro></revision><display-name>Android SDK Tools</display-name><uses-license ref="android-sdk-license"/><dependencies><dependency path="emulator"/><dependency path="platform-tools"><min-revision><major>20</major></min-revision></dependency></dependencies></localPackage></ns2:repository>
+November 20, 2015</license><localPackage path="tools" obsolete="false"><type-details xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ns5:genericDetailsType"/><revision><major>26</major><minor>1</minor><micro>1</micro></revision><display-name>Android SDK Tools</display-name><uses-license ref="android-sdk-license"/><dependencies><dependency path="emulator"/><dependency path="platform-tools"><min-revision><major>20</major></min-revision></dependency></dependencies></localPackage></ns2:repository>
diff --git a/proguard/proguard-android-optimize.txt b/proguard/proguard-android-optimize.txt
index 0872335..756a209 100644
--- a/proguard/proguard-android-optimize.txt
+++ b/proguard/proguard-android-optimize.txt
@@ -1,5 +1,9 @@
 # This is a configuration file for ProGuard.
 # http://proguard.sourceforge.net/index.html#manual/usage.html
+#
+# This file is no longer maintained and is not used by new (2.2+) versions of the
+# Android plugin for Gradle. Instead, the Android plugin for Gradle generates the
+# default rules at build time and stores them in the build directory.
 
 # Optimizations: If you don't want to optimize, use the
 # proguard-android.txt configuration file instead of this one, which
diff --git a/proguard/proguard-android.txt b/proguard/proguard-android.txt
index 860c49f..c72df63 100644
--- a/proguard/proguard-android.txt
+++ b/proguard/proguard-android.txt
@@ -1,5 +1,9 @@
 # This is a configuration file for ProGuard.
 # http://proguard.sourceforge.net/index.html#manual/usage.html
+#
+# This file is no longer maintained and is not used by new (2.2+) versions of the
+# Android plugin for Gradle. Instead, the Android plugin for Gradle generates the
+# default rules at build time and stores them in the build directory.
 
 -dontusemixedcaseclassnames
 -dontskipnonpubliclibraryclasses
diff --git a/proguard/proguard-project.txt b/proguard/proguard-project.txt
index f2fe155..37a7e5a 100644
--- a/proguard/proguard-project.txt
+++ b/proguard/proguard-project.txt
@@ -1,6 +1,10 @@
 # To enable ProGuard in your project, edit project.properties
 # to define the proguard.config property as described in that file.
 #
+# This file is no longer maintained and is not used by new (2.2+) versions of the
+# Android plugin for Gradle. Instead, the Android plugin for Gradle generates the
+# default rules at build time and stores them in the build directory.
+#
 # Add project specific ProGuard rules here.
 # By default, the flags in this file are appended to flags specified
 # in ${sdk.dir}/tools/proguard/proguard-android.txt
diff --git a/source.properties b/source.properties
index 27bf3d2..2c1388f 100644
--- a/source.properties
+++ b/source.properties
@@ -1,5 +1,5 @@
 Pkg.UserSrc=false
-Pkg.Revision=26.1.0
+Pkg.Revision=26.1.1
 Platform.MinPlatformToolsRev=20
 Pkg.Dependencies=emulator
 Pkg.Path=tools
diff --git a/support/annotations.jar b/support/annotations.jar
index 44a093c..9c03615 100644
--- a/support/annotations.jar
+++ b/support/annotations.jar
Binary files differ
